< Summary

Line coverage
0%
Covered lines: 0
Uncovered lines: 1169
Coverable lines: 1169
Total lines: 1235
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.cctor()100%110%
GetYearInfo(...)0%440%
GetYear(...)100%110%
GetGregorianYear(...)0%880%
.ctor()100%110%
GetEra(...)100%110%

File(s)

https://raw.githubusercontent.com/dotnet/runtime/811a7eabb75c42db53440e8ba3f60c07511cfd1f/src/libraries/System.Private.CoreLib/src/System/Globalization/KoreanLunisolarCalendar.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4namespace System.Globalization
 5{
 6    /// <remarks>
 7    /// Calendar support range:
 8    ///     Calendar           Minimum     Maximum
 9    ///     ==========         ==========  ==========
 10    ///     Gregorian          918/02/19   2051/02/10
 11    ///     KoreanLunisolar    918/01/01   2050/13/29
 12    /// </remarks>
 13    public class KoreanLunisolarCalendar : EastAsianLunisolarCalendar
 14    {
 15        public const int GregorianEra = 1;
 16
 17        private const int MinLunisolarYear = 918;
 18        private const int MaxLunisolarYear = 2050;
 19
 020        private static readonly DateTime s_minDate = new DateTime(918, 2, 19);
 021        private static readonly DateTime s_maxDate = new DateTime((new DateTime(2051, 2, 10, 23, 59, 59, 999)).Ticks + 9
 22
 023        public override DateTime MinSupportedDateTime => s_minDate;
 24
 025        public override DateTime MaxSupportedDateTime => s_maxDate;
 26
 27        protected override int DaysInYearBeforeMinSupportedYear =>
 28            // 917  -- From http://emr.cs.iit.edu/home/reingold/calendar-book/Calendrica.html
 29            //              using ChineseLunisolar
 030            384;
 31
 32        // Data for years 1391-2050 matches that available from
 33        // Korea Astronomy and Space Science Institute (KASI)
 34        // https://astro.kasi.re.kr:444/life/pageView/5
 035        private static readonly int[,] s_yinfo =
 036        {
 037/*Y           LM  Lmon  Lday    DaysPerMonth               D1   D2   D3   D4   D5   D6   D7   D8   D9   D10  D11  D12  D
 0380918     */ { 00,   02,   19,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 0390919     */ { 00,   02,   09,   0b0100010111010000 }, /*   29   30   29   29   29   30   29   30   30   30   29   30    
 0400920     */ { 06,   01,   29,   0b1010001011011000 }, /*   30   29   30   29   29   29   30   29   30   30   29   30   3
 0410921     */ { 00,   02,   16,   0b1010001010110000 }, /*   30   29   30   29   29   29   30   29   30   29   30   30    
 0420922     */ { 00,   02,   05,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 0430923     */ { 04,   01,   25,   0b1011010010101000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29   3
 0440924     */ { 00,   02,   13,   0b0110110100100000 }, /*   29   30   30   29   30   30   29   30   29   29   30   29    
 0450925     */ { 12,   02,   01,   0b1010110101100000 }, /*   30   29   30   29   30   30   29   30   29   30   30   29   2
 0460926     */ { 00,   02,   20,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 0470927     */ { 00,   02,   10,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 0480928     */ { 08,   01,   31,   0b0100010110111000 }, /*   29   30   29   29   29   30   29   30   30   29   30   30   3
 0490929     */ { 00,   02,   18,   0b0100010101110000 }, /*   29   30   29   29   29   30   29   30   29   30   30   30    
 0500930     */ { 00,   02,   07,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 0510931     */ { 05,   01,   27,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30   2
 0520932     */ { 00,   02,   14,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30    
 0530933     */ { 00,   02,   03,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 0540934     */ { 01,   01,   23,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 0550935     */ { 00,   02,   11,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 0560936     */ { 11,   02,   01,   0b0101001101100000 }, /*   29   30   29   30   29   29   30   30   29   30   30   29   2
 0570937     */ { 00,   02,   18,   0b1100101011000000 }, /*   30   30   29   29   30   29   30   29   30   30   29   29    
 0580938     */ { 00,   02,   07,   0b1110010101100000 }, /*   30   30   30   29   29   30   29   30   29   30   30   29    
 0590939     */ { 07,   01,   28,   0b1101001010101000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29   3
 0600940     */ { 00,   02,   16,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 0610941     */ { 00,   02,   04,   0b1101100101010000 }, /*   30   30   29   30   30   29   29   30   29   30   29   30    
 0620942     */ { 03,   01,   25,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 0630943     */ { 00,   02,   13,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 0640944     */ { 12,   02,   02,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30   2
 0650945     */ { 00,   02,   20,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 0660946     */ { 00,   02,   10,   0b0100101011010000 }, /*   29   30   29   29   30   29   30   29   30   30   29   30    
 0670947     */ { 07,   01,   30,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 0680948     */ { 00,   02,   18,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 0690949     */ { 00,   02,   06,   0b1011001001100000 }, /*   30   29   30   30   29   29   30   29   29   30   30   29    
 0700950     */ { 05,   01,   26,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 0710951     */ { 00,   02,   14,   0b1011001101110000 }, /*   30   29   30   30   29   29   30   30   29   30   30   30    
 0720953     */ { 00,   01,   05,   0b1010101011010000 }, /*   30   29   30   29   30   29   30   29   30   30   29   30    
 0730953     */ { 01,   01,   23,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30   2
 0740954     */ { 00,   02,   11,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 0750955     */ { 09,   02,   01,   0b0100101010111000 }, /*   29   30   29   29   30   29   30   29   30   29   30   30   3
 0760956     */ { 00,   02,   20,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 0770957     */ { 00,   02,   08,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 0780958     */ { 07,   01,   28,   0b1010101010011000 }, /*   30   29   30   29   30   29   30   29   30   29   29   30   3
 0790959     */ { 00,   02,   16,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 0800960     */ { 00,   02,   05,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 0810961     */ { 03,   01,   25,   0b0100110110101000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29   3
 0820962     */ { 00,   02,   13,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 0830963     */ { 12,   02,   02,   0b1001010101110000 }, /*   30   29   29   30   29   30   29   30   29   30   30   30   2
 0840964     */ { 00,   02,   21,   0b1010001101110000 }, /*   30   29   30   29   29   29   30   30   29   30   30   30    
 0850965     */ { 00,   02,   10,   0b0101000101110000 }, /*   29   30   29   30   29   29   29   30   29   30   30   30    
 0860966     */ { 08,   01,   30,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   2
 0870967     */ { 00,   02,   17,   0b1101010010110000 }, /*   30   30   29   30   29   30   29   29   30   29   30   30    
 0880968     */ { 00,   02,   07,   0b0101101010010000 }, /*   29   30   29   30   30   29   30   29   30   29   29   30    
 0890969     */ { 05,   01,   26,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30   2
 0900970     */ { 00,   02,   14,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 0910971     */ { 00,   02,   04,   0b0010101011100000 }, /*   29   29   30   29   30   29   30   29   30   30   30   29    
 0920972     */ { 02,   01,   24,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30   2
 0930973     */ { 00,   02,   11,   0b1010001011100000 }, /*   30   29   30   29   29   29   30   29   30   30   30   29    
 0940974     */ { 10,   01,   31,   0b1100100101101000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29   3
 0950975     */ { 00,   02,   19,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 0960976     */ { 00,   02,   08,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 0970977     */ { 07,   01,   27,   0b1101101010010000 }, /*   30   30   29   30   30   29   30   29   30   29   29   30   2
 0980978     */ { 00,   02,   15,   0b1011010110100000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29    
 0990979     */ { 00,   02,   05,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 01000980     */ { 03,   01,   26,   0b0010101011011000 }, /*   29   29   30   29   30   29   30   29   30   30   29   30   3
 01010981     */ { 00,   02,   13,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 01020982     */ { 12,   02,   02,   0b1001001011011000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30   3
 01030983     */ { 00,   02,   21,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 01040984     */ { 00,   02,   10,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 01050985     */ { 09,   01,   29,   0b1011010010101000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29   3
 01060986     */ { 00,   02,   17,   0b1010110010100000 }, /*   30   29   30   29   30   30   29   29   30   29   30   29    
 01070987     */ { 00,   02,   06,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 01080988     */ { 05,   01,   27,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 01090989     */ { 00,   02,   14,   0b0100101110110000 }, /*   29   30   29   29   30   29   30   30   30   29   30   30    
 01100990     */ { 00,   02,   04,   0b0010010110110000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30    
 01110991     */ { 02,   01,   24,   0b1001001010111000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30   3
 01120992     */ { 00,   02,   12,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 01130993     */ { 10,   01,   31,   0b0110100101011000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30   3
 01140994     */ { 00,   02,   19,   0b0101100101010000 }, /*   29   30   29   30   30   29   29   30   29   30   29   30    
 01150995     */ { 00,   02,   08,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 01160996     */ { 07,   01,   28,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30   2
 01170997     */ { 00,   02,   15,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 01180998     */ { 00,   02,   05,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 01190999     */ { 03,   01,   25,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 01201000     */ { 00,   02,   13,   0b0010010101110000 }, /*   29   29   30   29   29   30   29   30   29   30   30   30    
 01211001     */ { 12,   02,   03,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   2
 01221002     */ { 00,   02,   21,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 01231003     */ { 00,   02,   10,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 01241004     */ { 09,   01,   31,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 01251005     */ { 00,   02,   18,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 01261006     */ { 00,   02,   07,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 01271007     */ { 05,   01,   28,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 01281008     */ { 00,   02,   16,   0b0100101011010000 }, /*   29   30   29   29   30   29   30   29   30   30   29   30    
 01291009     */ { 00,   02,   04,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 01301010     */ { 02,   01,   24,   0b1101001001101000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29   3
 01311011     */ { 00,   02,   12,   0b1011001001100000 }, /*   30   29   30   30   29   29   30   29   29   30   30   29    
 01321012     */ { 10,   02,   01,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 01331013     */ { 00,   02,   19,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 01341014     */ { 00,   02,   09,   0b0011010110100000 }, /*   29   29   30   30   29   30   29   30   30   29   30   29    
 01351015     */ { 06,   01,   29,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30   2
 01361016     */ { 00,   02,   17,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 01371017     */ { 00,   02,   06,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 01381018     */ { 04,   01,   26,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 01391019     */ { 00,   02,   14,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 01401020     */ { 12,   02,   03,   0b1010101001011000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30   3
 01411021     */ { 00,   02,   21,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 01421022     */ { 00,   02,   10,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 01431023     */ { 09,   01,   31,   0b0010110110101000 }, /*   29   29   30   29   30   30   29   30   30   29   30   29   3
 01441024     */ { 00,   02,   19,   0b0010101101010000 }, /*   29   29   30   29   30   29   30   30   29   30   29   30    
 01451025     */ { 00,   02,   07,   0b1001010101110000 }, /*   30   29   29   30   29   30   29   30   29   30   30   30    
 01461026     */ { 05,   01,   28,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30   2
 01471027     */ { 00,   02,   15,   0b1100100101110000 }, /*   30   30   29   29   30   29   29   30   29   30   30   30    
 01481028     */ { 00,   02,   05,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 01491029     */ { 02,   01,   24,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 01501030     */ { 00,   02,   11,   0b1101101010010000 }, /*   30   30   29   30   30   29   30   29   30   29   29   30    
 01511031     */ { 10,   02,   01,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30   2
 01521032     */ { 00,   02,   20,   0b0110011011010000 }, /*   29   30   30   29   29   30   30   29   30   30   29   30    
 01531033     */ { 00,   02,   09,   0b0010011011100000 }, /*   29   29   30   29   29   30   30   29   30   30   30   29    
 01541034     */ { 06,   01,   29,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30   2
 01551035     */ { 00,   02,   17,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 01561036     */ { 00,   02,   06,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 01571037     */ { 04,   01,   25,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 01581038     */ { 00,   02,   13,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 01591039     */ { 12,   02,   02,   0b1101011010010000 }, /*   30   30   29   30   29   30   30   29   30   29   29   30   2
 01601040     */ { 00,   02,   21,   0b1011010110000000 }, /*   30   29   30   30   29   30   29   30   30   29   29   29    
 01611041     */ { 00,   02,   09,   0b1101011010110000 }, /*   30   30   29   30   29   30   30   29   30   29   30   30    
 01621042     */ { 09,   01,   31,   0b0010011011011000 }, /*   29   29   30   29   29   30   30   29   30   30   29   30   3
 01631043     */ { 00,   02,   19,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 01641044     */ { 00,   02,   08,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 01651045     */ { 05,   01,   27,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 01661046     */ { 00,   02,   15,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 01671047     */ { 00,   02,   04,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 01681048     */ { 01,   01,   24,   0b1011010101011000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   3
 01691049     */ { 00,   02,   12,   0b0010110101010000 }, /*   29   29   30   29   30   30   29   30   29   30   29   30    
 01701050     */ { 11,   02,   01,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 01711051     */ { 00,   02,   20,   0b0100101110110000 }, /*   29   30   29   29   30   29   30   30   30   29   30   30    
 01721052     */ { 00,   02,   10,   0b0010010110110000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30    
 01731053     */ { 07,   01,   29,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 01741054     */ { 00,   02,   17,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 01751055     */ { 00,   02,   06,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 01761056     */ { 03,   01,   26,   0b0110101010101000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29   3
 01771057     */ { 00,   02,   13,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 01781058     */ { 12,   02,   02,   0b1010101101011000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30   3
 01791059     */ { 00,   02,   22,   0b0010011101010000 }, /*   29   29   30   29   29   30   30   30   29   30   29   30    
 01801060     */ { 00,   02,   11,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 01811061     */ { 08,   01,   30,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 01821062     */ { 00,   02,   18,   0b1010010101100000 }, /*   30   29   30   29   29   30   29   30   29   30   30   29    
 01831063     */ { 00,   02,   07,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 01841064     */ { 05,   01,   27,   0b1110100100110000 }, /*   30   30   30   29   30   29   29   30   29   29   30   30   2
 01851065     */ { 00,   02,   14,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 01861066     */ { 00,   02,   04,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 01871067     */ { 01,   01,   24,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30   2
 01881068     */ { 00,   02,   12,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 01891069     */ { 11,   02,   01,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 01901070     */ { 00,   02,   20,   0b0100100111010000 }, /*   29   30   29   29   30   29   29   30   30   30   29   30    
 01911071     */ { 00,   02,   09,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 01921072     */ { 07,   01,   29,   0b1101001001101000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29   3
 01931073     */ { 00,   02,   16,   0b1010101001100000 }, /*   30   29   30   29   30   29   30   29   29   30   30   29    
 01941074     */ { 00,   02,   05,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 01951075     */ { 04,   01,   26,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 01961076     */ { 00,   02,   14,   0b0011010110100000 }, /*   29   29   30   30   29   30   29   30   30   29   30   29    
 01971077     */ { 00,   02,   02,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 01981078     */ { 01,   01,   23,   0b0100101110011000 }, /*   29   30   29   29   30   29   30   30   30   29   29   30   3
 01991079     */ { 00,   02,   11,   0b0100010110110000 }, /*   29   30   29   29   29   30   29   30   30   29   30   30    
 02001080     */ { 09,   01,   31,   0b1010010010111000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30   3
 02011081     */ { 00,   02,   18,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 02021082     */ { 00,   02,   07,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 02031083     */ { 06,   01,   27,   0b1011010101001000 }, /*   30   29   30   30   29   30   29   30   29   30   29   29   3
 02041084     */ { 00,   02,   15,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30    
 02051085     */ { 00,   02,   04,   0b0010110110100000 }, /*   29   29   30   29   30   30   29   30   30   29   30   29    
 02061086     */ { 02,   01,   24,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30   2
 02071087     */ { 00,   02,   12,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 02081088     */ { 12,   02,   02,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30   2
 02091089     */ { 00,   02,   19,   0b1100100101110000 }, /*   30   30   29   29   30   29   29   30   29   30   30   30    
 02101090     */ { 00,   02,   09,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 02111091     */ { 08,   01,   29,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 02121092     */ { 00,   02,   16,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 02131093     */ { 00,   02,   05,   0b0101101101000000 }, /*   29   30   29   30   30   29   30   30   29   30   29   29    
 02141094     */ { 04,   01,   25,   0b1010101101101000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29   3
 02151095     */ { 00,   02,   14,   0b0010101011100000 }, /*   29   29   30   29   30   29   30   29   30   30   30   29    
 02161096     */ { 00,   02,   03,   0b1110011000010000 }, /*   30   30   30   29   29   30   30   29   29   29   29   30    
 02171097     */ { 02,   01,   22,   0b1100100101110000 }, /*   30   30   29   29   30   29   29   30   29   30   30   30   2
 02181098     */ { 00,   02,   10,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 02191099     */ { 09,   01,   30,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 02201100     */ { 00,   02,   18,   0b0101010010100000 }, /*   29   30   29   30   29   30   29   29   30   29   30   29    
 02211101     */ { 00,   02,   07,   0b1101011001010000 }, /*   30   30   29   30   29   30   30   29   29   30   29   30    
 02221102     */ { 06,   01,   28,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 02231103     */ { 00,   02,   16,   0b0101010111010000 }, /*   29   30   29   30   29   30   29   30   30   30   29   30    
 02241104     */ { 00,   02,   06,   0b0010011011010000 }, /*   29   29   30   29   29   30   30   29   30   30   29   30    
 02251105     */ { 02,   01,   25,   0b1001001011101000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29   3
 02261106     */ { 00,   02,   13,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 02271107     */ { 10,   02,   02,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 02281108     */ { 00,   02,   21,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 02291109     */ { 00,   02,   09,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 02301110     */ { 08,   01,   29,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 02311111     */ { 00,   02,   17,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 02321112     */ { 00,   02,   07,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 02331113     */ { 04,   01,   27,   0b0010010110111000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30   3
 02341114     */ { 00,   02,   15,   0b0100010101110000 }, /*   29   30   29   29   29   30   29   30   29   30   30   30    
 02351115     */ { 00,   02,   04,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 02361116     */ { 01,   01,   24,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 02371117     */ { 00,   02,   11,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 02381118     */ { 09,   01,   31,   0b0111001010101000 }, /*   29   30   30   30   29   29   30   29   30   29   30   29   3
 02391119     */ { 00,   02,   19,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 02401120     */ { 00,   02,   08,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 02411121     */ { 05,   01,   28,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 02421122     */ { 00,   02,   16,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 02431123     */ { 00,   02,   05,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 02441124     */ { 03,   01,   26,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30   2
 02451125     */ { 00,   02,   12,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 02461126     */ { 11,   02,   01,   0b1110100100110000 }, /*   30   30   30   29   30   29   29   30   29   29   30   30   2
 02471127     */ { 00,   02,   20,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 02481128     */ { 00,   02,   10,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 02491129     */ { 08,   01,   29,   0b1001101110010000 }, /*   30   29   29   30   30   29   30   30   30   29   29   30   2
 02501130     */ { 00,   02,   17,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 02511131     */ { 00,   02,   07,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 02521132     */ { 04,   01,   27,   0b1010010011101000 }, /*   30   29   30   29   29   30   29   29   30   30   30   29   3
 02531133     */ { 00,   02,   14,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 02541134     */ { 00,   02,   03,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 02551135     */ { 02,   01,   23,   0b1101100100101000 }, /*   30   30   29   30   30   29   29   30   29   29   30   29   3
 02561136     */ { 00,   02,   11,   0b1011010101000000 }, /*   30   29   30   30   29   30   29   30   29   30   29   29    
 02571137     */ { 10,   01,   30,   0b1101011010101000 }, /*   30   30   29   30   29   30   30   29   30   29   30   29   3
 02581138     */ { 00,   02,   19,   0b0010110110100000 }, /*   29   29   30   29   30   30   29   30   30   29   30   29    
 02591139     */ { 00,   02,   08,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 02601140     */ { 06,   01,   29,   0b0100101011011000 }, /*   29   30   29   29   30   29   30   29   30   30   29   30   3
 02611141     */ { 00,   02,   16,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 02621142     */ { 00,   02,   05,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 02631143     */ { 04,   01,   25,   0b1011001001011000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30   3
 02641144     */ { 00,   02,   13,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30    
 02651145     */ { 11,   02,   01,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 02661146     */ { 00,   02,   20,   0b0110101101000000 }, /*   29   30   30   29   30   29   30   30   29   30   29   29    
 02671147     */ { 00,   02,   09,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 02681148     */ { 08,   01,   30,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30   2
 02691149     */ { 00,   02,   17,   0b1001100101110000 }, /*   30   29   29   30   30   29   29   30   29   30   30   30    
 02701150     */ { 00,   02,   07,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 02711151     */ { 04,   01,   27,   0b0110010010111000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   3
 02721152     */ { 00,   02,   15,   0b0101010010110000 }, /*   29   30   29   30   29   30   29   29   30   29   30   30    
 02731153     */ { 12,   02,   03,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 02741154     */ { 00,   02,   21,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 02751155     */ { 00,   02,   11,   0b0101101011000000 }, /*   29   30   29   30   30   29   30   29   30   30   29   29    
 02761156     */ { 10,   01,   31,   0b1010101101101000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29   3
 02771157     */ { 00,   02,   19,   0b0010011011100000 }, /*   29   29   30   29   29   30   30   29   30   30   30   29    
 02781158     */ { 00,   02,   08,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 02791159     */ { 06,   01,   28,   0b1100100101110000 }, /*   30   30   29   29   30   29   29   30   29   30   30   30   2
 02801160     */ { 00,   02,   16,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 02811161     */ { 00,   02,   04,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 02821162     */ { 02,   01,   24,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30   2
 02831163     */ { 00,   02,   12,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 02841164     */ { 11,   02,   02,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 02851165     */ { 00,   02,   20,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 02861166     */ { 00,   02,   10,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 02871167     */ { 07,   01,   30,   0b1001001011101000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29   3
 02881168     */ { 00,   02,   18,   0b1001001001110000 }, /*   30   29   29   30   29   29   30   29   29   30   30   30    
 02891169     */ { 00,   02,   06,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 02901170     */ { 05,   01,   26,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 02911171     */ { 00,   02,   14,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 02921172     */ { 00,   02,   03,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 02931173     */ { 01,   01,   23,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 02941174     */ { 00,   02,   11,   0b0100110110110000 }, /*   29   30   29   29   30   30   29   30   30   29   30   30    
 02951175     */ { 09,   02,   01,   0b0010010110110000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30   2
 02961176     */ { 00,   02,   19,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 02971177     */ { 00,   02,   08,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 02981178     */ { 06,   01,   28,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 02991179     */ { 00,   02,   16,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 03001180     */ { 00,   02,   05,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 03011181     */ { 03,   01,   24,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 03021182     */ { 00,   02,   12,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 03031183     */ { 11,   02,   02,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 03041184     */ { 00,   02,   21,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 03051185     */ { 00,   02,   09,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 03061186     */ { 07,   01,   30,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30   2
 03071187     */ { 00,   02,   17,   0b1101000010010000 }, /*   30   30   29   30   29   29   29   29   30   29   29   30    
 03081188     */ { 00,   01,   08,   0b0111010010011000 }, /*   29   30   30   30   29   30   29   29   30   29   29   30    
 03091189     */ { 05,   01,   26,   0b0110101010101000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29   3
 03101190     */ { 00,   02,   14,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 03111191     */ { 00,   02,   03,   0b1001101101010000 }, /*   30   29   29   30   30   29   30   30   29   30   29   30    
 03121192     */ { 02,   01,   24,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 03131193     */ { 00,   02,   11,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 03141194     */ { 10,   01,   31,   0b1010010011101000 }, /*   30   29   30   29   29   30   29   29   30   30   30   29   3
 03151195     */ { 00,   02,   19,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 03161196     */ { 00,   02,   08,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 03171197     */ { 06,   01,   27,   0b1101010100101000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29   3
 03181198     */ { 00,   02,   15,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 03191199     */ { 00,   02,   04,   0b1101011010100000 }, /*   30   30   29   30   29   30   30   29   30   29   30   29    
 03201200     */ { 02,   01,   25,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30   2
 03211201     */ { 00,   02,   12,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 03221202     */ { 12,   02,   02,   0b0100100111011000 }, /*   29   30   29   29   30   29   29   30   30   30   29   30   3
 03231203     */ { 00,   02,   21,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 03241204     */ { 00,   02,   10,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 03251205     */ { 08,   01,   29,   0b1010101001011000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30   3
 03261206     */ { 00,   02,   17,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30    
 03271207     */ { 00,   02,   06,   0b1011010101000000 }, /*   30   29   30   30   29   30   29   30   29   30   29   29    
 03281208     */ { 04,   01,   26,   0b1011010110100000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29   2
 03291209     */ { 00,   02,   13,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 03301210     */ { 00,   02,   03,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 03311211     */ { 02,   01,   24,   0b0100100110111000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30   3
 03321212     */ { 00,   02,   12,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 03331213     */ { 09,   01,   31,   0b0110010010111000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   3
 03341214     */ { 00,   02,   19,   0b0101010010110000 }, /*   29   30   29   30   29   30   29   29   30   29   30   30    
 03351215     */ { 00,   02,   08,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30    
 03361216     */ { 07,   01,   28,   0b0110110100101000 }, /*   29   30   30   29   30   30   29   30   29   29   30   29   3
 03371217     */ { 00,   02,   15,   0b0101101011000000 }, /*   29   30   29   30   30   29   30   29   30   30   29   29    
 03381218     */ { 00,   02,   04,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 03391219     */ { 03,   01,   25,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30   2
 03401220     */ { 00,   02,   13,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 03411221     */ { 12,   02,   01,   0b1100100101110000 }, /*   30   30   29   29   30   29   29   30   29   30   30   30   2
 03421222     */ { 00,   02,   20,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 03431223     */ { 00,   02,   09,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 03441224     */ { 08,   01,   29,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30   2
 03451225     */ { 00,   02,   16,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 03461226     */ { 00,   02,   06,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 03471227     */ { 05,   01,   26,   0b1010101011011000 }, /*   30   29   30   29   30   29   30   29   30   30   29   30   3
 03481228     */ { 00,   02,   15,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 03491229     */ { 00,   02,   03,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 03501230     */ { 02,   01,   23,   0b1100100101011000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30   3
 03511231     */ { 00,   02,   11,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 03521232     */ { 09,   01,   31,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 03531233     */ { 00,   02,   18,   0b1011001010100000 }, /*   30   29   30   30   29   29   30   29   30   29   30   29    
 03541234     */ { 00,   02,   07,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 03551235     */ { 07,   01,   28,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 03561236     */ { 00,   02,   16,   0b0100110110100000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29    
 03571237     */ { 00,   02,   04,   0b1010010110110000 }, /*   30   29   30   29   29   30   29   30   30   29   30   30    
 03581238     */ { 04,   01,   25,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 03591239     */ { 00,   02,   13,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 03601240     */ { 12,   02,   02,   0b1010100100111000 }, /*   30   29   30   29   30   29   29   30   29   29   30   30   3
 03611241     */ { 00,   02,   20,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30    
 03621242     */ { 00,   02,   09,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 03631243     */ { 08,   01,   29,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 03641244     */ { 00,   02,   17,   0b1010111001010000 }, /*   30   29   30   29   30   30   30   29   29   30   29   30    
 03651245     */ { 00,   02,   06,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 03661246     */ { 04,   01,   26,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 03671247     */ { 00,   02,   14,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 03681248     */ { 00,   02,   04,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30    
 03691249     */ { 02,   01,   23,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30   2
 03701250     */ { 00,   02,   10,   0b1110010100110000 }, /*   30   30   30   29   29   30   29   30   29   29   30   30    
 03711251     */ { 10,   01,   31,   0b0110110010011000 }, /*   29   30   30   29   30   30   29   29   30   29   29   30   3
 03721252     */ { 00,   02,   19,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 03731253     */ { 00,   02,   07,   0b0101101011010000 }, /*   29   30   29   30   30   29   30   29   30   30   29   30    
 03741254     */ { 06,   01,   28,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 03751255     */ { 00,   02,   16,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 03761256     */ { 00,   02,   05,   0b1010010011100000 }, /*   30   29   30   29   29   30   29   29   30   30   30   29    
 03771257     */ { 04,   01,   24,   0b1101001001101000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29   3
 03781258     */ { 00,   02,   12,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 03791259     */ { 11,   02,   01,   0b1101010100101000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29   3
 03801260     */ { 00,   02,   20,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 03811261     */ { 00,   02,   08,   0b1011011010100000 }, /*   30   29   30   30   29   30   30   29   30   29   30   29    
 03821262     */ { 09,   01,   29,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30   2
 03831263     */ { 00,   02,   17,   0b0101010101110000 }, /*   29   30   29   30   29   30   29   30   29   30   30   30    
 03841264     */ { 00,   02,   07,   0b0100100111010000 }, /*   29   30   29   29   30   29   29   30   30   30   29   30    
 03851265     */ { 05,   01,   26,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 03861266     */ { 00,   02,   14,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 03871267     */ { 00,   02,   03,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 03881268     */ { 01,   01,   23,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 03891269     */ { 00,   02,   10,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 03901270     */ { 11,   01,   30,   0b1011010111000000 }, /*   30   29   30   30   29   30   29   30   30   30   29   29   2
 03911271     */ { 00,   02,   18,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 03921272     */ { 00,   02,   08,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 03931273     */ { 06,   01,   28,   0b0100100110111000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30   3
 03941274     */ { 00,   02,   16,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 03951275     */ { 00,   02,   05,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 03961276     */ { 03,   01,   25,   0b0110101001011000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   3
 03971277     */ { 00,   02,   12,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30    
 03981278     */ { 11,   02,   01,   0b0110101100101000 }, /*   29   30   30   29   30   29   30   30   29   29   30   29   3
 03991279     */ { 00,   02,   20,   0b0101101011000000 }, /*   29   30   29   30   30   29   30   29   30   30   29   29    
 04001280     */ { 00,   02,   09,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 04011281     */ { 08,   01,   29,   0b0010101011101000 }, /*   29   29   30   29   30   29   30   29   30   30   30   29   3
 04021282     */ { 00,   02,   17,   0b0100100111100000 }, /*   29   30   29   29   30   29   29   30   30   30   30   29    
 04031283     */ { 00,   02,   06,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 04041284     */ { 05,   01,   26,   0b1101001001011000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30   3
 04051285     */ { 00,   02,   13,   0b1011001001010000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30    
 04061286     */ { 00,   02,   02,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 04071287     */ { 02,   01,   22,   0b1111001010010000 }, /*   30   30   30   30   29   29   30   29   30   29   29   30   2
 04081288     */ { 00,   02,   10,   0b1011010110100000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29    
 04091289     */ { 10,   01,   30,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30   2
 04101290     */ { 00,   02,   18,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 04111291     */ { 00,   02,   08,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 04121292     */ { 06,   01,   28,   0b1010010010111000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30   3
 04131293     */ { 00,   02,   15,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 04141294     */ { 00,   02,   04,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 04151295     */ { 04,   01,   24,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 04161296     */ { 00,   02,   12,   0b0110110101000000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29    
 04171297     */ { 12,   01,   31,   0b1010110101100000 }, /*   30   29   30   29   30   30   29   30   29   30   30   29   2
 04181298     */ { 00,   02,   19,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 04191299     */ { 00,   02,   09,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 04201300     */ { 08,   01,   30,   0b0000100101111000 }, /*   29   29   29   29   30   29   29   30   29   30   30   30   3
 04211301     */ { 00,   02,   18,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 04221302     */ { 00,   02,   07,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 04231303     */ { 05,   01,   27,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 04241304     */ { 00,   02,   14,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 04251305     */ { 00,   02,   03,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 04261306     */ { 01,   01,   23,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29   2
 04271307     */ { 00,   02,   11,   0b1010011011100000 }, /*   30   29   30   29   29   30   30   29   30   30   30   29    
 04281308     */ { 11,   02,   01,   0b1001001011101000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29   3
 04291309     */ { 00,   02,   19,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 04301310     */ { 00,   02,   08,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 04311311     */ { 07,   01,   28,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 04321312     */ { 00,   02,   16,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 04331313     */ { 00,   02,   04,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 04341314     */ { 03,   01,   25,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 04351315     */ { 00,   02,   13,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 04361316     */ { 00,   02,   02,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30    
 04371317     */ { 01,   01,   22,   0b1001001011101000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29   3
 04381318     */ { 00,   02,   10,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 04391319     */ { 08,   01,   30,   0b1010010101011000 }, /*   30   29   30   29   29   30   29   30   29   30   29   30   3
 04401320     */ { 00,   02,   18,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 04411321     */ { 00,   02,   06,   0b1011001010100000 }, /*   30   29   30   30   29   29   30   29   30   29   30   29    
 04421322     */ { 05,   01,   26,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 04431323     */ { 00,   02,   14,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 04441324     */ { 00,   02,   04,   0b0100110110100000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29    
 04451325     */ { 01,   01,   23,   0b1010010111010000 }, /*   30   29   30   29   29   30   29   30   30   30   29   30   2
 04461326     */ { 00,   02,   11,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 04471327     */ { 09,   02,   01,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 04481328     */ { 00,   02,   20,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30    
 04491329     */ { 00,   02,   08,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30    
 04501330     */ { 07,   01,   28,   0b0110101010011000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   3
 04511331     */ { 00,   02,   16,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 04521332     */ { 00,   02,   05,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 04531333     */ { 03,   01,   25,   0b0100101110101000 }, /*   29   30   29   29   30   29   30   30   30   29   30   29   3
 04541334     */ { 00,   02,   13,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 04551335     */ { 12,   02,   02,   0b1010011001110000 }, /*   30   29   30   29   29   30   30   29   29   30   30   30   2
 04561336     */ { 00,   02,   21,   0b1010001011100000 }, /*   30   29   30   29   29   29   30   29   30   30   30   29    
 04571337     */ { 00,   02,   09,   0b1101000101100000 }, /*   30   30   29   30   29   29   29   30   29   30   30   29    
 04581338     */ { 08,   01,   29,   0b1110100100110000 }, /*   30   30   30   29   30   29   29   30   29   29   30   30   2
 04591339     */ { 00,   02,   17,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 04601340     */ { 00,   02,   06,   0b1101101010100000 }, /*   30   30   29   30   30   29   30   29   30   29   30   29    
 04611341     */ { 05,   01,   26,   0b0101101101010000 }, /*   29   30   29   30   30   29   30   30   29   30   29   30   2
 04621342     */ { 00,   02,   14,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 04631343     */ { 00,   02,   04,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 04641344     */ { 02,   01,   24,   0b1010001011101000 }, /*   30   29   30   29   29   29   30   29   30   30   30   29   3
 04651345     */ { 00,   02,   11,   0b1010001011010000 }, /*   30   29   30   29   29   29   30   29   30   30   29   30    
 04661346     */ { 10,   01,   31,   0b1101000101011000 }, /*   30   30   29   30   29   29   29   30   29   30   29   30   3
 04671347     */ { 00,   02,   19,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 04681348     */ { 00,   02,   08,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 04691349     */ { 07,   01,   27,   0b1101011010100000 }, /*   30   30   29   30   29   30   30   29   30   29   30   29   2
 04701350     */ { 00,   02,   15,   0b1010110110100000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29    
 04711351     */ { 00,   02,   05,   0b0101010111010000 }, /*   29   30   29   30   29   30   29   30   30   30   29   30    
 04721352     */ { 03,   01,   26,   0b0100100111011000 }, /*   29   30   29   29   30   29   29   30   30   30   29   30   3
 04731353     */ { 00,   02,   13,   0b0100010110110000 }, /*   29   30   29   29   29   30   29   30   30   29   30   30    
 04741354     */ { 00,   02,   02,   0b1010001010110000 }, /*   30   29   30   29   29   29   30   29   30   29   30   30    
 04751355     */ { 01,   01,   22,   0b1101000101011000 }, /*   30   30   29   30   29   29   29   30   29   30   29   30   3
 04761356     */ { 00,   02,   10,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 04771357     */ { 09,   01,   29,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 04781358     */ { 00,   02,   17,   0b0110101100100000 }, /*   29   30   30   29   30   29   30   30   29   29   30   29    
 04791359     */ { 00,   02,   06,   0b1010110101100000 }, /*   30   29   30   29   30   30   29   30   29   30   30   29    
 04801360     */ { 05,   01,   27,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 04811361     */ { 00,   02,   14,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 04821362     */ { 00,   02,   04,   0b0100010101110000 }, /*   29   30   29   29   29   30   29   30   29   30   30   30    
 04831363     */ { 03,   01,   24,   0b1010001010111000 }, /*   30   29   30   29   29   29   30   29   30   29   30   30   3
 04841364     */ { 00,   02,   12,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 04851365     */ { 10,   01,   31,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30   2
 04861366     */ { 00,   02,   18,   0b1101100101010000 }, /*   30   30   29   30   30   29   29   30   29   30   29   30    
 04871367     */ { 00,   02,   08,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 04881368     */ { 07,   01,   28,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29   2
 04891369     */ { 00,   02,   15,   0b1010011011100000 }, /*   30   29   30   29   29   30   30   29   30   30   30   29    
 04901370     */ { 00,   02,   05,   0b0101001011100000 }, /*   29   30   29   30   29   29   30   29   30   30   30   29    
 04911371     */ { 03,   01,   25,   0b1100010101110000 }, /*   30   30   29   29   29   30   29   30   29   30   30   30   2
 04921372     */ { 00,   02,   13,   0b1010010101100000 }, /*   30   29   30   29   29   30   29   30   29   30   30   29    
 04931373     */ { 11,   02,   01,   0b1101001010101000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29   3
 04941374     */ { 00,   02,   20,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 04951375     */ { 00,   02,   09,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 04961376     */ { 09,   01,   30,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 04971377     */ { 00,   02,   17,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 04981378     */ { 00,   02,   06,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30    
 04991379     */ { 05,   01,   27,   0b0101001011101000 }, /*   29   30   29   30   29   29   30   29   30   30   30   29   3
 05001380     */ { 00,   02,   15,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 05011381     */ { 00,   02,   03,   0b1010100011010000 }, /*   30   29   30   29   30   29   29   29   30   30   29   30    
 05021382     */ { 02,   01,   23,   0b1101001010101000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29   3
 05031383     */ { 00,   02,   11,   0b1011001010100000 }, /*   30   29   30   30   29   29   30   29   30   29   30   29    
 05041384     */ { 10,   01,   31,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 05051385     */ { 00,   02,   18,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 05061386     */ { 00,   02,   08,   0b0100110110100000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29    
 05071387     */ { 06,   01,   28,   0b1010010111010000 }, /*   30   29   30   29   29   30   29   30   30   30   29   30   2
 05081388     */ { 00,   02,   16,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 05091389     */ { 00,   02,   05,   0b0101000110110000 }, /*   29   30   29   30   29   29   29   30   30   29   30   30    
 05101390     */ { 04,   01,   25,   0b1010100010111000 }, /*   30   29   30   29   30   29   29   29   30   29   30   30   3
 05111391     */ { 00,   02,   13,   0b0110010100110000 }, /*   29   30   30   29   29   30   29   30   29   29   30   30    
 05121392     */ { 12,   02,   02,   0b0110101010011000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   3
 05131393     */ { 00,   02,   20,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 05141394     */ { 00,   02,   09,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 05151395     */ { 09,   01,   30,   0b0010101110101000 }, /*   29   29   30   29   30   29   30   30   30   29   30   29   3
 05161396     */ { 00,   02,   18,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 05171397     */ { 00,   02,   06,   0b1100001101110000 }, /*   30   30   29   29   29   29   30   30   29   30   30   30    
 05181398     */ { 05,   01,   27,   0b0101000101110000 }, /*   29   30   29   30   29   29   29   30   29   30   30   30   2
 05191399     */ { 00,   02,   14,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 05201400     */ { 00,   02,   03,   0b1110010010110000 }, /*   30   30   30   29   29   30   29   29   30   29   30   30    
 05211401     */ { 03,   01,   24,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   2
 05221402     */ { 00,   02,   11,   0b1101101010100000 }, /*   30   30   29   30   30   29   30   29   30   29   30   29    
 05231403     */ { 11,   02,   01,   0b0101101101010000 }, /*   29   30   29   30   30   29   30   30   29   30   29   30   2
 05241404     */ { 00,   02,   20,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 05251405     */ { 00,   02,   09,   0b0010101011100000 }, /*   29   29   30   29   30   29   30   29   30   30   30   29    
 05261406     */ { 07,   01,   29,   0b1010001011101000 }, /*   30   29   30   29   29   29   30   29   30   30   30   29   3
 05271407     */ { 00,   02,   17,   0b1010001011010000 }, /*   30   29   30   29   29   29   30   29   30   30   29   30    
 05281408     */ { 00,   02,   06,   0b1101000101010000 }, /*   30   30   29   30   29   29   29   30   29   30   29   30    
 05291409     */ { 04,   01,   25,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 05301410     */ { 00,   02,   13,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 05311411     */ { 12,   02,   02,   0b1011011010010000 }, /*   30   29   30   30   29   30   30   29   30   29   29   30   2
 05321412     */ { 00,   02,   21,   0b1010110110100000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29    
 05331413     */ { 00,   02,   10,   0b0101010111010000 }, /*   29   30   29   30   29   30   29   30   30   30   29   30    
 05341414     */ { 09,   01,   31,   0b0010010111011000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30   3
 05351415     */ { 00,   02,   19,   0b0100010110110000 }, /*   29   30   29   29   29   30   29   30   30   29   30   30    
 05361416     */ { 00,   02,   08,   0b1010001010110000 }, /*   30   29   30   29   29   29   30   29   30   29   30   30    
 05371417     */ { 05,   01,   27,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 05381418     */ { 00,   02,   15,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 05391419     */ { 00,   02,   04,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 05401420     */ { 01,   01,   24,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 05411421     */ { 00,   02,   11,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 05421422     */ { 12,   02,   01,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 05431423     */ { 00,   02,   20,   0b0100101101110000 }, /*   29   30   29   29   30   29   30   30   29   30   30   30    
 05441424     */ { 00,   02,   10,   0b0100010101110000 }, /*   29   30   29   29   29   30   29   30   29   30   30   30    
 05451425     */ { 07,   01,   29,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 05461426     */ { 00,   02,   17,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 05471427     */ { 00,   02,   06,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 05481428     */ { 04,   01,   26,   0b0110110010101000 }, /*   29   30   30   29   30   30   29   29   30   29   30   29   3
 05491429     */ { 00,   02,   13,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 05501430     */ { 12,   02,   02,   0b1001101101010000 }, /*   30   29   29   30   30   29   30   30   29   30   29   30   2
 05511431     */ { 00,   02,   21,   0b1010011011100000 }, /*   30   29   30   29   29   30   30   29   30   30   30   29    
 05521432     */ { 00,   02,   11,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 05531433     */ { 08,   01,   30,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 05541434     */ { 00,   02,   18,   0b1010010101100000 }, /*   30   29   30   29   29   30   29   30   29   30   30   29    
 05551435     */ { 00,   02,   07,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 05561436     */ { 06,   01,   27,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30   2
 05571437     */ { 00,   02,   14,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 05581438     */ { 00,   02,   04,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 05591439     */ { 02,   01,   24,   0b1010101011010000 }, /*   30   29   30   29   30   29   30   29   30   30   29   30   2
 05601440     */ { 00,   02,   12,   0b1001010111100000 }, /*   30   29   29   30   29   30   29   30   30   30   30   29    
 05611441     */ { 11,   02,   01,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 05621442     */ { 00,   02,   20,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 05631443     */ { 00,   02,   09,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 05641444     */ { 07,   01,   29,   0b1101001001110000 }, /*   30   30   29   30   29   29   30   29   29   30   30   30   2
 05651445     */ { 00,   02,   16,   0b1011001010100000 }, /*   30   29   30   30   29   29   30   29   30   29   30   29    
 05661446     */ { 00,   02,   05,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 05671447     */ { 04,   01,   26,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 05681448     */ { 00,   02,   14,   0b0010110110100000 }, /*   29   29   30   29   30   30   29   30   30   29   30   29    
 05691449     */ { 00,   02,   02,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 05701450     */ { 01,   01,   23,   0b0100101010111000 }, /*   29   30   29   29   30   29   30   29   30   29   30   30   3
 05711451     */ { 00,   02,   11,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 05721452     */ { 09,   01,   31,   0b1010010010111000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30   3
 05731453     */ { 00,   02,   18,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 05741454     */ { 00,   02,   07,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30    
 05751455     */ { 06,   01,   27,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 05761456     */ { 00,   02,   15,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30    
 05771457     */ { 00,   02,   04,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 05781458     */ { 02,   01,   24,   0b1001010101110000 }, /*   30   29   29   30   29   30   29   30   29   30   30   30   2
 05791459     */ { 00,   02,   12,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 05801460     */ { 11,   02,   02,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30   2
 05811461     */ { 00,   02,   19,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 05821462     */ { 00,   02,   08,   0b1110010010110000 }, /*   30   30   30   29   29   30   29   29   30   29   30   30    
 05831463     */ { 07,   01,   29,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   2
 05841464     */ { 00,   02,   16,   0b1101101010100000 }, /*   30   30   29   30   30   29   30   29   30   29   30   29    
 05851465     */ { 00,   02,   05,   0b0101101011010000 }, /*   29   30   29   30   30   29   30   29   30   30   29   30    
 05861466     */ { 03,   01,   26,   0b0010101101101000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29   3
 05871467     */ { 00,   02,   14,   0b0010011011100000 }, /*   29   29   30   29   29   30   30   29   30   30   30   29    
 05881468     */ { 00,   02,   03,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 05891469     */ { 02,   01,   22,   0b1100100101101000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29   3
 05901470     */ { 00,   02,   10,   0b1100100101010000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30    
 05911471     */ { 09,   01,   30,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 05921472     */ { 00,   02,   18,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 05931473     */ { 00,   02,   06,   0b1011011010010000 }, /*   30   29   30   30   29   30   30   29   30   29   29   30    
 05941474     */ { 06,   01,   27,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30   2
 05951475     */ { 00,   02,   15,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 05961476     */ { 00,   02,   05,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 05971477     */ { 02,   01,   24,   0b1001001011011000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30   3
 05981478     */ { 00,   02,   12,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 05991479     */ { 10,   02,   01,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 06001480     */ { 00,   02,   20,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 06011481     */ { 00,   02,   08,   0b0111010010100000 }, /*   29   30   30   30   29   30   29   29   30   29   30   29    
 06021482     */ { 08,   01,   28,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 06031483     */ { 00,   02,   16,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29    
 06041484     */ { 00,   02,   06,   0b0101001110110000 }, /*   29   30   29   30   29   29   30   30   30   29   30   30    
 06051485     */ { 04,   01,   26,   0b0010010110111000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30   3
 06061486     */ { 00,   02,   14,   0b0010010101110000 }, /*   29   29   30   29   29   30   29   30   29   30   30   30    
 06071487     */ { 00,   02,   03,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 06081488     */ { 01,   01,   23,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 06091489     */ { 00,   02,   10,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 06101490     */ { 09,   01,   30,   0b0110101010101000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29   3
 06111491     */ { 00,   02,   18,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 06121492     */ { 00,   02,   07,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 06131493     */ { 05,   01,   27,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 06141494     */ { 00,   02,   15,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 06151495     */ { 00,   02,   04,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 06161496     */ { 03,   01,   25,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30   2
 06171497     */ { 00,   02,   11,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 06181498     */ { 11,   01,   31,   0b1101100101010000 }, /*   30   30   29   30   30   29   29   30   29   30   29   30   2
 06191499     */ { 00,   02,   19,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 06201500     */ { 00,   02,   09,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 06211501     */ { 07,   01,   29,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30   2
 06221502     */ { 00,   02,   17,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 06231503     */ { 00,   02,   07,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 06241504     */ { 04,   01,   27,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 06251505     */ { 00,   02,   14,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 06261506     */ { 00,   02,   03,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 06271507     */ { 01,   01,   23,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30   2
 06281508     */ { 00,   02,   11,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 06291509     */ { 09,   01,   31,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 06301510     */ { 00,   02,   19,   0b0010110110100000 }, /*   29   29   30   29   30   30   29   30   30   29   30   29    
 06311511     */ { 00,   02,   08,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 06321512     */ { 05,   01,   29,   0b0100100110111000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30   3
 06331513     */ { 00,   02,   16,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 06341514     */ { 00,   02,   05,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 06351515     */ { 04,   01,   25,   0b1011001001011000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30   3
 06361516     */ { 00,   02,   13,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30    
 06371517     */ { 12,   02,   01,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 06381518     */ { 00,   02,   20,   0b0101101101010000 }, /*   29   30   29   30   30   29   30   30   29   30   29   30    
 06391519     */ { 00,   02,   10,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 06401520     */ { 08,   01,   30,   0b1001010101110000 }, /*   30   29   29   30   29   30   29   30   29   30   30   30   2
 06411521     */ { 00,   02,   17,   0b1001001011110000 }, /*   30   29   29   30   29   29   30   29   30   30   30   30    
 06421522     */ { 00,   02,   07,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 06431523     */ { 04,   01,   27,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   2
 06441524     */ { 00,   02,   14,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 06451525     */ { 12,   02,   02,   0b1110101001010000 }, /*   30   30   30   29   30   29   30   29   29   30   29   30   2
 06461526     */ { 00,   02,   21,   0b1101011010010000 }, /*   30   30   29   30   29   30   30   29   30   29   29   30    
 06471527     */ { 00,   02,   11,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 06481528     */ { 10,   02,   01,   0b0010101101101000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29   3
 06491529     */ { 00,   02,   19,   0b0010011011100000 }, /*   29   29   30   29   29   30   30   29   30   30   30   29    
 06501530     */ { 00,   02,   08,   0b0101001011100000 }, /*   29   30   29   30   29   29   30   29   30   30   30   29    
 06511531     */ { 06,   01,   28,   0b1100100101101000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29   3
 06521532     */ { 00,   02,   16,   0b1100100101010000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30    
 06531533     */ { 00,   02,   04,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 06541534     */ { 02,   01,   24,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30   2
 06551535     */ { 00,   02,   12,   0b1011010110010000 }, /*   30   29   30   30   29   30   29   30   30   29   29   30    
 06561536     */ { 12,   02,   02,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30   2
 06571537     */ { 00,   02,   20,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 06581538     */ { 00,   02,   10,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 06591539     */ { 07,   01,   30,   0b1001001011011000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30   3
 06601540     */ { 00,   02,   18,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 06611541     */ { 00,   02,   06,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 06621542     */ { 05,   01,   26,   0b1011010010101000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29   3
 06631543     */ { 00,   02,   14,   0b0110110010100000 }, /*   29   30   30   29   30   30   29   29   30   29   30   29    
 06641544     */ { 00,   02,   03,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 06651545     */ { 01,   01,   23,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 06661546     */ { 00,   02,   11,   0b0100101110110000 }, /*   29   30   29   29   30   29   30   30   30   29   30   30    
 06671547     */ { 09,   02,   01,   0b0010010110111000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30   3
 06681548     */ { 00,   02,   20,   0b0010010101110000 }, /*   29   29   30   29   29   30   29   30   29   30   30   30    
 06691549     */ { 00,   02,   08,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 06701550     */ { 06,   01,   28,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   2
 06711551     */ { 00,   02,   15,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30    
 06721552     */ { 00,   02,   05,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 06731553     */ { 03,   01,   24,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 06741554     */ { 00,   02,   12,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 06751555     */ { 11,   02,   02,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 06761556     */ { 00,   02,   21,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 06771557     */ { 00,   02,   09,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 06781558     */ { 07,   01,   30,   0b0101001001101000 }, /*   29   30   29   30   29   29   30   29   29   30   30   29   3
 06791559     */ { 00,   02,   17,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 06801560     */ { 00,   02,   06,   0b1101100101010000 }, /*   30   30   29   30   30   29   29   30   29   30   29   30    
 06811561     */ { 05,   01,   26,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 06821562     */ { 00,   02,   14,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 06831563     */ { 00,   02,   03,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 06841564     */ { 02,   01,   24,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 06851565     */ { 00,   02,   11,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 06861566     */ { 10,   01,   31,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 06871567     */ { 00,   02,   19,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 06881568     */ { 00,   02,   08,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 06891569     */ { 06,   01,   27,   0b1101010101001000 }, /*   30   30   29   30   29   30   29   30   29   30   29   29   3
 06901570     */ { 00,   02,   15,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 06911571     */ { 00,   02,   05,   0b0011010110100000 }, /*   29   29   30   30   29   30   29   30   30   29   30   29    
 06921572     */ { 02,   01,   25,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30   2
 06931573     */ { 00,   02,   12,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 06941574     */ { 12,   02,   02,   0b0100100110111000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30   3
 06951575     */ { 00,   02,   21,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 06961576     */ { 00,   02,   10,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 06971577     */ { 08,   01,   29,   0b1011001001011000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30   3
 06981578     */ { 00,   02,   17,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30    
 06991579     */ { 00,   02,   06,   0b0110110101000000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29    
 07001580     */ { 04,   01,   26,   0b1010110110101000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29   3
 07011581     */ { 00,   02,   14,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 07021582     */ { 00,   02,   03,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 07031583     */ { 02,   01,   24,   0b0100100101111000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30   3
 07041584     */ { 00,   02,   12,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 07051585     */ { 09,   01,   31,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   2
 07061586     */ { 00,   02,   18,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 07071587     */ { 00,   02,   07,   0b1110101001010000 }, /*   30   30   30   29   30   29   30   29   29   30   29   30    
 07081588     */ { 06,   01,   28,   0b0110101101001000 }, /*   29   30   30   29   30   29   30   30   29   30   29   29   3
 07091589     */ { 00,   02,   15,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 07101590     */ { 00,   02,   05,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 07111591     */ { 03,   01,   25,   0b1001001011110000 }, /*   30   29   29   30   29   29   30   29   30   30   30   30   2
 07121592     */ { 00,   02,   13,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 07131593     */ { 11,   02,   01,   0b1100100101101000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29   3
 07141594     */ { 00,   02,   20,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 07151595     */ { 00,   02,   09,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 07161596     */ { 08,   01,   29,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30   2
 07171597     */ { 00,   02,   16,   0b1011010011010000 }, /*   30   29   30   30   29   30   29   29   30   30   29   30    
 07181598     */ { 00,   02,   06,   0b0101011010110000 }, /*   29   30   29   30   29   30   30   29   30   29   30   30    
 07191599     */ { 04,   01,   27,   0b0010011011011000 }, /*   29   29   30   29   29   30   30   29   30   30   29   30   3
 07201600     */ { 00,   02,   15,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 07211601     */ { 00,   02,   03,   0b1001001011010000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30    
 07221602     */ { 02,   01,   23,   0b1100100110011000 }, /*   30   30   29   29   30   29   29   30   30   29   29   30   3
 07231603     */ { 00,   02,   11,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 07241604     */ { 09,   01,   31,   0b1011010010101000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29   3
 07251605     */ { 00,   02,   18,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 07261606     */ { 00,   02,   07,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 07271607     */ { 06,   01,   28,   0b0101010110101000 }, /*   29   30   29   30   29   30   29   30   30   29   30   29   3
 07281608     */ { 00,   02,   16,   0b0100101110110000 }, /*   29   30   29   29   30   29   30   30   30   29   30   30    
 07291609     */ { 00,   02,   05,   0b0010010110110000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30    
 07301610     */ { 03,   01,   25,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 07311611     */ { 00,   02,   13,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 07321612     */ { 11,   02,   02,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   2
 07331613     */ { 00,   02,   19,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30    
 07341614     */ { 00,   02,   09,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 07351615     */ { 08,   01,   29,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 07361616     */ { 00,   02,   17,   0b1001101101010000 }, /*   30   29   29   30   30   29   30   30   29   30   29   30    
 07371617     */ { 00,   02,   06,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 07381618     */ { 04,   01,   26,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 07391619     */ { 00,   02,   14,   0b1010010011110000 }, /*   30   29   30   29   29   30   29   29   30   30   30   30    
 07401620     */ { 00,   02,   04,   0b0101001001100000 }, /*   29   30   29   30   29   29   30   29   29   30   30   29    
 07411621     */ { 02,   01,   22,   0b1110100100110000 }, /*   30   30   30   29   30   29   29   30   29   29   30   30   2
 07421622     */ { 00,   02,   10,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 07431623     */ { 10,   01,   31,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 07441624     */ { 00,   02,   19,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 07451625     */ { 00,   02,   07,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 07461626     */ { 06,   01,   28,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 07471627     */ { 00,   02,   16,   0b0100100111100000 }, /*   29   30   29   29   30   29   29   30   30   30   30   29    
 07481628     */ { 00,   02,   05,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 07491629     */ { 04,   01,   24,   0b1101001001101000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29   3
 07501630     */ { 00,   02,   12,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 07511631     */ { 11,   02,   01,   0b1101010100101000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29   3
 07521632     */ { 00,   02,   20,   0b1011010101000000 }, /*   30   29   30   30   29   30   29   30   29   30   29   29    
 07531633     */ { 00,   02,   08,   0b1011010110100000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29    
 07541634     */ { 08,   01,   29,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30   2
 07551635     */ { 00,   02,   17,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 07561636     */ { 00,   02,   07,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 07571637     */ { 04,   01,   26,   0b1010010010111000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30   3
 07581638     */ { 00,   02,   14,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 07591639     */ { 00,   02,   03,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 07601640     */ { 01,   01,   23,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 07611641     */ { 00,   02,   10,   0b0110110101000000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29    
 07621642     */ { 11,   01,   30,   0b1010110110101000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29   3
 07631643     */ { 00,   02,   19,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 07641644     */ { 00,   02,   08,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 07651645     */ { 06,   01,   28,   0b0100100101111000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30   3
 07661646     */ { 00,   02,   16,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 07671647     */ { 00,   02,   05,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 07681648     */ { 03,   01,   25,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 07691649     */ { 00,   02,   11,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 07701650     */ { 11,   02,   01,   0b0110101101001000 }, /*   29   30   30   29   30   29   30   30   29   30   29   29   3
 07711651     */ { 00,   02,   20,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 07721652     */ { 00,   02,   10,   0b0010101110100000 }, /*   29   29   30   29   30   29   30   30   30   29   30   29    
 07731653     */ { 07,   01,   29,   0b1001001011110000 }, /*   30   29   29   30   29   29   30   29   30   30   30   30   2
 07741654     */ { 00,   02,   17,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 07751655     */ { 00,   02,   06,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 07761656     */ { 05,   01,   26,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 07771657     */ { 00,   02,   13,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 07781658     */ { 00,   02,   02,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 07791659     */ { 03,   01,   23,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 07801660     */ { 00,   02,   11,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 07811661     */ { 07,   01,   30,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30   2
 07821662     */ { 00,   02,   18,   0b1010010111010000 }, /*   30   29   30   29   29   30   29   30   30   30   29   30    
 07831663     */ { 00,   02,   08,   0b1001001011010000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30    
 07841664     */ { 06,   01,   28,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 07851665     */ { 00,   02,   15,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 07861666     */ { 00,   02,   04,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 07871667     */ { 04,   01,   24,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 07881668     */ { 00,   02,   12,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 07891669     */ { 00,   02,   01,   0b0101010110100000 }, /*   29   30   29   30   29   30   29   30   30   29   30   29    
 07901670     */ { 02,   01,   21,   0b1010010111010000 }, /*   30   29   30   29   29   30   29   30   30   30   29   30   2
 07911671     */ { 00,   02,   09,   0b1010010110110000 }, /*   30   29   30   29   29   30   29   30   30   29   30   30    
 07921672     */ { 07,   01,   30,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 07931673     */ { 00,   02,   17,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 07941674     */ { 00,   02,   06,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30    
 07951675     */ { 05,   01,   26,   0b0111010010101000 }, /*   29   30   30   30   29   30   29   29   30   29   30   29   3
 07961676     */ { 00,   02,   14,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 07971677     */ { 00,   02,   02,   0b1010110110010000 }, /*   30   29   30   29   30   30   29   30   30   29   29   30    
 07981678     */ { 03,   01,   23,   0b0100110110101000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29   3
 07991679     */ { 00,   02,   11,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 08001680     */ { 08,   01,   31,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 08011681     */ { 00,   02,   18,   0b1010010011100000 }, /*   30   29   30   29   29   30   29   29   30   30   30   29    
 08021682     */ { 00,   02,   07,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 08031683     */ { 06,   01,   27,   0b1110100100110000 }, /*   30   30   30   29   30   29   29   30   29   29   30   30   2
 08041684     */ { 00,   02,   15,   0b1101010100100000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29    
 08051685     */ { 00,   02,   03,   0b1101101010100000 }, /*   30   30   29   30   30   29   30   29   30   29   30   29    
 08061686     */ { 04,   01,   24,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30   2
 08071687     */ { 00,   02,   12,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 08081688     */ { 00,   02,   02,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 08091689     */ { 03,   01,   21,   0b1010010011101000 }, /*   30   29   30   29   29   30   29   29   30   30   30   29   3
 08101690     */ { 00,   02,   09,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 08111691     */ { 07,   01,   29,   0b1101001001011000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30   3
 08121692     */ { 00,   02,   17,   0b1011001001010000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30    
 08131693     */ { 00,   02,   05,   0b1101010100100000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29    
 08141694     */ { 05,   01,   25,   0b1101011010100000 }, /*   30   30   29   30   29   30   30   29   30   29   30   29   2
 08151695     */ { 00,   02,   13,   0b1011010110100000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29    
 08161696     */ { 00,   02,   03,   0b0101010111010000 }, /*   29   30   29   30   29   30   29   30   30   30   29   30    
 08171697     */ { 03,   01,   23,   0b0100101011011000 }, /*   29   30   29   29   30   29   30   29   30   30   29   30   3
 08181698     */ { 00,   02,   11,   0b0100100111010000 }, /*   29   30   29   29   30   29   29   30   30   30   29   30    
 08191699     */ { 07,   01,   31,   0b1010010010111000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30   3
 08201700     */ { 00,   02,   19,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 08211701     */ { 00,   02,   08,   0b1010101001010000 }, /*   30   29   30   29   30   29   30   29   29   30   29   30    
 08221702     */ { 06,   01,   28,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 08231703     */ { 00,   02,   16,   0b0110110100100000 }, /*   29   30   30   29   30   30   29   30   29   29   30   29    
 08241704     */ { 00,   02,   05,   0b1010110110100000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29    
 08251705     */ { 04,   01,   25,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 08261706     */ { 00,   02,   13,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 08271707     */ { 00,   02,   03,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 08281708     */ { 03,   01,   23,   0b0110010010111000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   3
 08291709     */ { 00,   02,   10,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 08301710     */ { 07,   01,   30,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 08311711     */ { 00,   02,   17,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 08321712     */ { 00,   02,   07,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 08331713     */ { 05,   01,   26,   0b1010101101100000 }, /*   30   29   30   29   30   29   30   30   29   30   30   29   2
 08341714     */ { 00,   02,   14,   0b1010101011100000 }, /*   30   29   30   29   30   29   30   29   30   30   30   29    
 08351715     */ { 00,   02,   04,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 08361716     */ { 03,   01,   24,   0b1100100101110000 }, /*   30   30   29   29   30   29   29   30   29   30   30   30   2
 08371717     */ { 00,   02,   11,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 08381718     */ { 08,   01,   31,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 08391719     */ { 00,   02,   19,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 08401720     */ { 00,   02,   08,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 08411721     */ { 06,   01,   28,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 08421722     */ { 00,   02,   16,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 08431723     */ { 00,   02,   05,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30    
 08441724     */ { 04,   01,   26,   0b0101001011101000 }, /*   29   30   29   30   29   29   30   29   30   30   30   29   3
 08451725     */ { 00,   02,   13,   0b0101001011010000 }, /*   29   30   29   30   29   29   30   29   30   30   29   30    
 08461726     */ { 00,   02,   02,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 08471727     */ { 03,   01,   22,   0b1110010010101000 }, /*   30   30   30   29   29   30   29   29   30   29   30   29   3
 08481728     */ { 00,   02,   10,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 08491729     */ { 07,   01,   29,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 08501730     */ { 00,   02,   17,   0b1001110101010000 }, /*   30   29   29   30   30   30   29   30   29   30   29   30    
 08511731     */ { 00,   02,   07,   0b0101010110100000 }, /*   29   30   29   30   29   30   29   30   30   29   30   29    
 08521732     */ { 05,   01,   27,   0b1010010111010000 }, /*   30   29   30   29   29   30   29   30   30   30   29   30   2
 08531733     */ { 00,   02,   14,   0b1010010110110000 }, /*   30   29   30   29   29   30   29   30   30   29   30   30    
 08541734     */ { 00,   02,   04,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 08551735     */ { 04,   01,   24,   0b1010100010111000 }, /*   30   29   30   29   30   29   29   29   30   29   30   30   3
 08561736     */ { 00,   02,   12,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30    
 08571737     */ { 09,   01,   31,   0b0110101010011000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   3
 08581738     */ { 00,   02,   19,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 08591739     */ { 00,   02,   08,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 08601740     */ { 06,   01,   29,   0b0100110110101000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29   3
 08611741     */ { 00,   02,   16,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 08621742     */ { 00,   02,   05,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 08631743     */ { 04,   01,   26,   0b0101000101110000 }, /*   29   30   29   30   29   29   29   30   29   30   30   30   2
 08641744     */ { 00,   02,   13,   0b1101000101100000 }, /*   30   30   29   30   29   29   29   30   29   30   30   29    
 08651745     */ { 00,   02,   01,   0b1110100100110000 }, /*   30   30   30   29   30   29   29   30   29   29   30   30    
 08661746     */ { 03,   01,   22,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   2
 08671747     */ { 00,   02,   09,   0b1101101010100000 }, /*   30   30   29   30   30   29   30   29   30   29   30   29    
 08681748     */ { 07,   01,   30,   0b0101101101010000 }, /*   29   30   29   30   30   29   30   30   29   30   29   30   2
 08691749     */ { 00,   02,   17,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 08701750     */ { 00,   02,   07,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 08711751     */ { 05,   01,   27,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 08721752     */ { 00,   02,   15,   0b1010001011010000 }, /*   30   29   30   29   29   29   30   29   30   30   29   30    
 08731753     */ { 00,   02,   03,   0b1101000101010000 }, /*   30   30   29   30   29   29   29   30   29   30   29   30    
 08741754     */ { 04,   01,   23,   0b1101010100101000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29   3
 08751755     */ { 00,   02,   11,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 08761756     */ { 09,   01,   31,   0b1101011010010000 }, /*   30   30   29   30   29   30   30   29   30   29   29   30   2
 08771757     */ { 00,   02,   18,   0b1010110110100000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29    
 08781758     */ { 00,   02,   08,   0b0101010111010000 }, /*   29   30   29   30   29   30   29   30   30   30   29   30    
 08791759     */ { 06,   01,   29,   0b0010101011011000 }, /*   29   29   30   29   30   29   30   29   30   30   29   30   3
 08801760     */ { 00,   02,   17,   0b0100010110110000 }, /*   29   30   29   29   29   30   29   30   30   29   30   30    
 08811761     */ { 00,   02,   05,   0b1010001010110000 }, /*   30   29   30   29   29   29   30   29   30   29   30   30    
 08821762     */ { 05,   01,   25,   0b1011000101011000 }, /*   30   29   30   30   29   29   29   30   29   30   29   30   3
 08831763     */ { 00,   02,   13,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 08841764     */ { 00,   02,   02,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 08851765     */ { 02,   01,   21,   0b1011010110010000 }, /*   30   29   30   30   29   30   29   30   30   29   29   30   2
 08861766     */ { 00,   02,   09,   0b1010110101100000 }, /*   30   29   30   29   30   30   29   30   29   30   30   29    
 08871767     */ { 07,   01,   30,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30   2
 08881768     */ { 00,   02,   18,   0b0101001101110000 }, /*   29   30   29   30   29   29   30   30   29   30   30   30    
 08891769     */ { 00,   02,   07,   0b0100010101110000 }, /*   29   30   29   29   29   30   29   30   29   30   30   30    
 08901770     */ { 05,   01,   27,   0b0110001010111000 }, /*   29   30   30   29   29   29   30   29   30   29   30   30   3
 08911771     */ { 00,   02,   15,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 08921772     */ { 00,   02,   04,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 08931773     */ { 03,   01,   23,   0b0110110010101000 }, /*   29   30   30   29   30   30   29   29   30   29   30   29   3
 08941774     */ { 00,   02,   11,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 08951775     */ { 10,   01,   31,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30   2
 08961776     */ { 00,   02,   19,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30    
 08971777     */ { 00,   02,   08,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 08981778     */ { 06,   01,   28,   0b1001010101110000 }, /*   30   29   29   30   29   30   29   30   29   30   30   30   2
 08991779     */ { 00,   02,   16,   0b1010010101100000 }, /*   30   29   30   29   29   30   29   30   29   30   30   29    
 09001780     */ { 00,   02,   05,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 09011781     */ { 05,   01,   24,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30   2
 09021782     */ { 00,   02,   12,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 09031783     */ { 00,   02,   02,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 09041784     */ { 03,   01,   22,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30   2
 09051785     */ { 00,   02,   09,   0b1010011011010000 }, /*   30   29   30   29   29   30   30   29   30   30   29   30    
 09061786     */ { 07,   01,   30,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 09071787     */ { 00,   02,   18,   0b0100101010110000 }, /*   29   30   29   29   30   29   30   29   30   29   30   30    
 09081788     */ { 00,   02,   07,   0b1010100011010000 }, /*   30   29   30   29   30   29   29   29   30   30   29   30    
 09091789     */ { 05,   01,   26,   0b1101001010101000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29   3
 09101790     */ { 00,   02,   14,   0b1011001010100000 }, /*   30   29   30   30   29   29   30   29   30   29   30   29    
 09111791     */ { 00,   02,   03,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 09121792     */ { 04,   01,   24,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 09131793     */ { 00,   02,   11,   0b0100110110100000 }, /*   29   30   29   29   30   30   29   30   30   29   30   29    
 09141794     */ { 00,   01,   31,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 09151795     */ { 02,   01,   21,   0b0100101010111000 }, /*   29   30   29   29   30   29   30   29   30   29   30   30   3
 09161796     */ { 00,   02,   09,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 09171797     */ { 06,   01,   28,   0b1010100010111000 }, /*   30   29   30   29   30   29   29   29   30   29   30   30   3
 09181798     */ { 00,   02,   16,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 09191799     */ { 00,   02,   05,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30    
 09201800     */ { 04,   01,   25,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 09211801     */ { 00,   02,   13,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30    
 09221802     */ { 00,   02,   03,   0b0010101110100000 }, /*   29   29   30   29   30   29   30   30   30   29   30   29    
 09231803     */ { 02,   01,   23,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30   2
 09241804     */ { 00,   02,   11,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 09251805     */ { 06,   01,   31,   0b0101000101110000 }, /*   29   30   29   30   29   29   29   30   29   30   30   30   2
 09261806     */ { 00,   02,   18,   0b1101000101100000 }, /*   30   30   29   30   29   29   29   30   29   30   30   29    
 09271807     */ { 00,   02,   07,   0b1110010010110000 }, /*   30   30   30   29   29   30   29   29   30   29   30   30    
 09281808     */ { 05,   01,   28,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30   2
 09291809     */ { 00,   02,   14,   0b1101101010010000 }, /*   30   30   29   30   30   29   30   29   30   29   29   30    
 09301810     */ { 00,   02,   04,   0b0101101101010000 }, /*   29   30   29   30   30   29   30   30   29   30   29   30    
 09311811     */ { 03,   01,   25,   0b0010101101101000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29   3
 09321812     */ { 00,   02,   13,   0b0010101011100000 }, /*   29   29   30   29   30   29   30   29   30   30   30   29    
 09331813     */ { 00,   02,   01,   0b1010001011100000 }, /*   30   29   30   29   29   29   30   29   30   30   30   29    
 09341814     */ { 02,   01,   21,   0b1101000101101000 }, /*   30   30   29   30   29   29   29   30   29   30   30   29   3
 09351815     */ { 00,   02,   09,   0b1100100101010000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30    
 09361816     */ { 06,   01,   29,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 09371817     */ { 00,   02,   16,   0b1011010100100000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29    
 09381818     */ { 00,   02,   05,   0b1011011010010000 }, /*   30   29   30   30   29   30   30   29   30   29   29   30    
 09391819     */ { 04,   01,   26,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30   2
 09401820     */ { 00,   02,   14,   0b0101010111010000 }, /*   29   30   29   30   29   30   29   30   30   30   29   30    
 09411821     */ { 00,   02,   03,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 09421822     */ { 03,   01,   23,   0b1010001011011000 }, /*   30   29   30   29   29   29   30   29   30   30   29   30   3
 09431823     */ { 00,   02,   11,   0b1010001010110000 }, /*   30   29   30   29   29   29   30   29   30   29   30   30    
 09441824     */ { 07,   01,   31,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 09451825     */ { 00,   02,   18,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 09461826     */ { 00,   02,   07,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 09471827     */ { 05,   01,   27,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30   2
 09481828     */ { 00,   02,   15,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 09491829     */ { 00,   02,   04,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 09501830     */ { 04,   01,   25,   0b0010010110111000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30   3
 09511831     */ { 00,   02,   13,   0b0010010101110000 }, /*   29   29   30   29   29   30   29   30   29   30   30   30    
 09521832     */ { 09,   02,   02,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 09531833     */ { 00,   02,   20,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 09541834     */ { 00,   02,   09,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 09551835     */ { 06,   01,   29,   0b0110110010101000 }, /*   29   30   30   29   30   30   29   29   30   29   30   29   3
 09561836     */ { 00,   02,   17,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 09571837     */ { 00,   02,   05,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 09581838     */ { 04,   01,   26,   0b0101001101101000 }, /*   29   30   29   30   29   29   30   30   29   30   30   29   3
 09591839     */ { 00,   02,   14,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 09601840     */ { 00,   02,   03,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 09611841     */ { 03,   01,   23,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   2
 09621842     */ { 00,   02,   10,   0b1101001010100000 }, /*   30   30   29   30   29   29   30   29   30   29   30   29    
 09631843     */ { 07,   01,   30,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30   2
 09641844     */ { 00,   02,   18,   0b1101010101010000 }, /*   30   30   29   30   29   30   29   30   29   30   29   30    
 09651845     */ { 00,   02,   07,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 09661846     */ { 05,   01,   27,   0b1010101011010000 }, /*   30   29   30   29   30   29   30   29   30   30   29   30   2
 09671847     */ { 00,   02,   15,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 09681848     */ { 00,   02,   05,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 09691849     */ { 04,   01,   24,   0b1010010101011000 }, /*   30   29   30   29   29   30   29   30   29   30   29   30   3
 09701850     */ { 00,   02,   12,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 09711851     */ { 08,   02,   01,   0b1101001001011000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30   3
 09721852     */ { 00,   02,   20,   0b1011001010010000 }, /*   30   29   30   30   29   29   30   29   30   29   29   30    
 09731853     */ { 00,   02,   08,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 09741854     */ { 07,   01,   29,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 09751855     */ { 00,   02,   17,   0b0010110110100000 }, /*   29   29   30   29   30   30   29   30   30   29   30   29    
 09761856     */ { 00,   02,   06,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 09771857     */ { 05,   01,   26,   0b0100101010111000 }, /*   29   30   29   29   30   29   30   29   30   29   30   30   3
 09781858     */ { 00,   02,   14,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 09791859     */ { 00,   02,   03,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 09801860     */ { 03,   01,   23,   0b1011001001011000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30   3
 09811861     */ { 00,   02,   10,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30    
 09821862     */ { 08,   01,   30,   0b1010110101001000 }, /*   30   29   30   29   30   30   29   30   29   30   29   29   3
 09831863     */ { 00,   02,   18,   0b0110101101010000 }, /*   29   30   30   29   30   29   30   30   29   30   29   30    
 09841864     */ { 00,   02,   08,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 09851865     */ { 05,   01,   27,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30   2
 09861866     */ { 00,   02,   15,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30    
 09871867     */ { 00,   02,   05,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 09881868     */ { 04,   01,   25,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   2
 09891869     */ { 00,   02,   11,   0b1110010010100000 }, /*   30   30   30   29   29   30   29   29   30   29   30   29    
 09901870     */ { 10,   01,   31,   0b1110101001010000 }, /*   30   30   30   29   30   29   30   29   29   30   29   30   2
 09911871     */ { 00,   02,   19,   0b1101101010010000 }, /*   30   30   29   30   30   29   30   29   30   29   29   30    
 09921872     */ { 00,   02,   09,   0b0101101011010000 }, /*   29   30   29   30   30   29   30   29   30   30   29   30    
 09931873     */ { 06,   01,   29,   0b0010101101101000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29   3
 09941874     */ { 00,   02,   17,   0b0010101011100000 }, /*   29   29   30   29   30   29   30   29   30   30   30   29    
 09951875     */ { 00,   02,   06,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 09961876     */ { 05,   01,   26,   0b1100100101101000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29   3
 09971877     */ { 00,   02,   13,   0b1100100101010000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30    
 09981878     */ { 00,   02,   02,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 09991879     */ { 03,   01,   22,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30   2
 010001880     */ { 00,   02,   10,   0b1011011010010000 }, /*   30   29   30   30   29   30   30   29   30   29   29   30    
 010011881     */ { 07,   01,   30,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30   2
 010021882     */ { 00,   02,   18,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 010031883     */ { 00,   02,   08,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 010041884     */ { 05,   01,   28,   0b1001001011011000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30   3
 010051885     */ { 00,   02,   15,   0b1001001010110000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30    
 010061886     */ { 00,   02,   04,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 010071887     */ { 04,   01,   24,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 010081888     */ { 00,   02,   12,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 010091889     */ { 00,   01,   31,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 010101890     */ { 02,   01,   21,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 010111891     */ { 00,   02,   09,   0b0101010110110000 }, /*   29   30   29   30   29   30   29   30   30   29   30   30    
 010121892     */ { 06,   01,   30,   0b0010010110111000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30   3
 010131893     */ { 00,   02,   17,   0b0010010101110000 }, /*   29   29   30   29   29   30   29   30   29   30   30   30    
 010141894     */ { 00,   02,   06,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 010151895     */ { 05,   01,   26,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   2
 010161896     */ { 00,   02,   13,   0b1110100101010000 }, /*   30   30   30   29   30   29   29   30   29   30   29   30    
 010171897     */ { 00,   02,   02,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 010181898     */ { 03,   01,   22,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 010191899     */ { 00,   02,   10,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 010201900     */ { 08,   01,   31,   0b0100101101101000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29   3
 010211901     */ { 00,   02,   19,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 010221902     */ { 00,   02,   08,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 010231903     */ { 05,   01,   29,   0b0101001001101000 }, /*   29   30   29   30   29   29   30   29   29   30   30   29   3
 010241904     */ { 00,   02,   16,   0b1101001001100000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29    
 010251905     */ { 00,   02,   04,   0b1101100101010000 }, /*   30   30   29   30   30   29   29   30   29   30   29   30    
 010261906     */ { 04,   01,   25,   0b0110101010101000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29   3
 010271907     */ { 00,   02,   13,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 010281908     */ { 00,   02,   02,   0b1001101011010000 }, /*   30   29   29   30   30   29   30   29   30   30   29   30    
 010291909     */ { 02,   01,   22,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 010301910     */ { 00,   02,   10,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 010311911     */ { 06,   01,   30,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 010321912     */ { 00,   02,   18,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 010331913     */ { 00,   02,   06,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 010341914     */ { 05,   01,   26,   0b1101100101001000 }, /*   30   30   29   30   30   29   29   30   29   30   29   29   3
 010351915     */ { 00,   02,   14,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 010361916     */ { 00,   02,   04,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 010371917     */ { 02,   01,   23,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30   2
 010381918     */ { 00,   02,   11,   0b1001010111010000 }, /*   30   29   29   30   29   30   29   30   30   30   29   30    
 010391919     */ { 07,   02,   01,   0b0100101011011000 }, /*   29   30   29   29   30   29   30   29   30   30   29   30   3
 010401920     */ { 00,   02,   20,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 010411921     */ { 00,   02,   08,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 010421922     */ { 05,   01,   28,   0b1011001001011000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30   3
 010431923     */ { 00,   02,   16,   0b0110101010010000 }, /*   29   30   30   29   30   29   30   29   30   29   29   30    
 010441924     */ { 00,   02,   05,   0b1010110101000000 }, /*   30   29   30   29   30   30   29   30   29   30   29   29    
 010451925     */ { 04,   01,   24,   0b1011010110101000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29   3
 010461926     */ { 00,   02,   13,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 010471927     */ { 00,   02,   02,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 010481928     */ { 02,   01,   23,   0b0100100110111000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30   3
 010491929     */ { 00,   02,   10,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 010501930     */ { 06,   01,   30,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30   2
 010511931     */ { 00,   02,   17,   0b1110010010100000 }, /*   30   30   30   29   29   30   29   29   30   29   30   29    
 010521932     */ { 00,   02,   06,   0b1110101001010000 }, /*   30   30   30   29   30   29   30   29   29   30   29   30    
 010531933     */ { 05,   01,   26,   0b0110110101001000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29   3
 010541934     */ { 00,   02,   14,   0b0101101101010000 }, /*   29   30   29   30   30   29   30   30   29   30   29   30    
 010551935     */ { 00,   02,   04,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 010561936     */ { 03,   01,   24,   0b1001010101110000 }, /*   30   29   29   30   29   30   29   30   29   30   30   30   2
 010571937     */ { 00,   02,   11,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 010581938     */ { 07,   01,   31,   0b1100100101101000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29   3
 010591939     */ { 00,   02,   19,   0b1100100101010000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30    
 010601940     */ { 00,   02,   08,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 010611941     */ { 06,   01,   27,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30   2
 010621942     */ { 00,   02,   15,   0b1011011010010000 }, /*   30   29   30   30   29   30   30   29   30   29   29   30    
 010631943     */ { 00,   02,   05,   0b0101011011010000 }, /*   29   30   29   30   29   30   30   29   30   30   29   30    
 010641944     */ { 04,   01,   26,   0b0010101011011000 }, /*   29   29   30   29   30   29   30   29   30   30   29   30   3
 010651945     */ { 00,   02,   13,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 010661946     */ { 00,   02,   02,   0b1001001011010000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30    
 010671947     */ { 02,   01,   22,   0b1100100101011000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30   3
 010681948     */ { 00,   02,   10,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 010691949     */ { 07,   01,   29,   0b1101010010101000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29   3
 010701950     */ { 00,   02,   17,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 010711951     */ { 00,   02,   06,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 010721952     */ { 05,   01,   27,   0b0101011010101000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29   3
 010731953     */ { 00,   02,   14,   0b0100110110110000 }, /*   29   30   29   29   30   30   29   30   30   29   30   30    
 010741954     */ { 00,   02,   04,   0b0010010110110000 }, /*   29   29   30   29   29   30   29   30   30   29   30   30    
 010751955     */ { 03,   01,   24,   0b1001001010111000 }, /*   30   29   29   30   29   29   30   29   30   29   30   30   3
 010761956     */ { 00,   02,   12,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 010771957     */ { 08,   01,   31,   0b1010100101011000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30   3
 010781958     */ { 00,   02,   19,   0b0110100101010000 }, /*   29   30   30   29   30   29   29   30   29   30   29   30    
 010791959     */ { 00,   02,   08,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 010801960     */ { 06,   01,   28,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30   2
 010811961     */ { 00,   02,   15,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30    
 010821962     */ { 00,   02,   05,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 010831963     */ { 04,   01,   25,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 010841964     */ { 00,   02,   13,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 010851965     */ { 00,   02,   02,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30    
 010861966     */ { 03,   01,   22,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30   2
 010871967     */ { 00,   02,   09,   0b1101100101010000 }, /*   30   30   29   30   30   29   29   30   29   30   29   30    
 010881968     */ { 07,   01,   30,   0b0110101010101000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29   3
 010891969     */ { 00,   02,   17,   0b0101011010100000 }, /*   29   30   29   30   29   30   30   29   30   29   30   29    
 010901970     */ { 00,   02,   06,   0b1001101011010000 }, /*   30   29   29   30   30   29   30   29   30   30   29   30    
 010911971     */ { 05,   01,   27,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 010921972     */ { 00,   02,   15,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 010931973     */ { 00,   02,   03,   0b1010010011100000 }, /*   30   29   30   29   29   30   29   29   30   30   30   29    
 010941974     */ { 04,   01,   23,   0b1101001001101000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29   3
 010951975     */ { 00,   02,   11,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 010961976     */ { 08,   01,   31,   0b1101010101001000 }, /*   30   30   29   30   29   30   29   30   29   30   29   29   3
 010971977     */ { 00,   02,   18,   0b1011010101000000 }, /*   30   29   30   30   29   30   29   30   29   30   29   29    
 010981978     */ { 00,   02,   07,   0b1101011010100000 }, /*   30   30   29   30   29   30   30   29   30   29   30   29    
 010991979     */ { 06,   01,   28,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30   2
 011001980     */ { 00,   02,   16,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 011011981     */ { 00,   02,   05,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 011021982     */ { 04,   01,   25,   0b1010010011011000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30   3
 011031983     */ { 00,   02,   13,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 011041984     */ { 10,   02,   02,   0b1011001001011000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30   3
 011051985     */ { 00,   02,   20,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30    
 011061986     */ { 00,   02,   09,   0b0110110101000000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29    
 011071987     */ { 06,   01,   29,   0b1011010110101000 }, /*   30   29   30   30   29   30   29   30   30   29   30   29   3
 011081988     */ { 00,   02,   18,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 011091989     */ { 00,   02,   06,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30    
 011101990     */ { 05,   01,   27,   0b0100100110111000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30   3
 011111991     */ { 00,   02,   15,   0b0100100101110000 }, /*   29   30   29   29   30   29   29   30   29   30   30   30    
 011121992     */ { 00,   02,   04,   0b0110010010110000 }, /*   29   30   30   29   29   30   29   29   30   29   30   30    
 011131993     */ { 03,   01,   23,   0b0110101001010000 }, /*   29   30   30   29   30   29   30   29   29   30   29   30   2
 011141994     */ { 00,   02,   10,   0b1110101001010000 }, /*   30   30   30   29   30   29   30   29   29   30   29   30    
 011151995     */ { 08,   01,   31,   0b0110110101001000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29   3
 011161996     */ { 00,   02,   19,   0b0101101011010000 }, /*   29   30   29   30   30   29   30   29   30   30   29   30    
 011171997     */ { 00,   02,   08,   0b0010101101100000 }, /*   29   29   30   29   30   29   30   30   29   30   30   29    
 011181998     */ { 05,   01,   28,   0b1001001101110000 }, /*   30   29   29   30   29   29   30   30   29   30   30   30   2
 011191999     */ { 00,   02,   16,   0b1001001011100000 }, /*   30   29   29   30   29   29   30   29   30   30   30   29    
 011202000     */ { 00,   02,   05,   0b1100100101100000 }, /*   30   30   29   29   30   29   29   30   29   30   30   29    
 011212001     */ { 04,   01,   24,   0b1110010010101000 }, /*   30   30   30   29   29   30   29   29   30   29   30   29   3
 011222002     */ { 00,   02,   12,   0b1101010010100000 }, /*   30   30   29   30   29   30   29   29   30   29   30   29    
 011232003     */ { 00,   02,   01,   0b1101101001010000 }, /*   30   30   29   30   30   29   30   29   29   30   29   30    
 011242004     */ { 02,   01,   22,   0b0101101010101000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29   3
 011252005     */ { 00,   02,   09,   0b0101011011000000 }, /*   29   30   29   30   29   30   30   29   30   30   29   29    
 011262006     */ { 07,   01,   29,   0b1010101011011000 }, /*   30   29   30   29   30   29   30   29   30   30   29   30   3
 011272007     */ { 00,   02,   18,   0b0010010111010000 }, /*   29   29   30   29   29   30   29   30   30   30   29   30    
 011282008     */ { 00,   02,   07,   0b1001001011010000 }, /*   30   29   29   30   29   29   30   29   30   30   29   30    
 011292009     */ { 05,   01,   26,   0b1100100101011000 }, /*   30   30   29   29   30   29   29   30   29   30   29   30   3
 011302010     */ { 00,   02,   14,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 011312011     */ { 00,   02,   03,   0b1011010010100000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29    
 011322012     */ { 03,   01,   23,   0b1011101001010000 }, /*   30   29   30   30   30   29   30   29   29   30   29   30   2
 011332013     */ { 00,   02,   10,   0b1011010101010000 }, /*   30   29   30   30   29   30   29   30   29   30   29   30    
 011342014     */ { 09,   01,   31,   0b0101010110101000 }, /*   29   30   29   30   29   30   29   30   30   29   30   29   3
 011352015     */ { 00,   02,   19,   0b0100101110100000 }, /*   29   30   29   29   30   29   30   30   30   29   30   29    
 011362016     */ { 00,   02,   08,   0b1010010110110000 }, /*   30   29   30   29   29   30   29   30   30   29   30   30    
 011372017     */ { 05,   01,   28,   0b0101001010111000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30   3
 011382018     */ { 00,   02,   16,   0b0101001010110000 }, /*   29   30   29   30   29   29   30   29   30   29   30   30    
 011392019     */ { 00,   02,   05,   0b1010100101010000 }, /*   30   29   30   29   30   29   29   30   29   30   29   30    
 011402020     */ { 04,   01,   25,   0b1011010010101000 }, /*   30   29   30   30   29   30   29   29   30   29   30   29   3
 011412021     */ { 00,   02,   12,   0b0110101010100000 }, /*   29   30   30   29   30   29   30   29   30   29   30   29    
 011422022     */ { 00,   02,   01,   0b1010110101010000 }, /*   30   29   30   29   30   30   29   30   29   30   29   30    
 011432023     */ { 02,   01,   22,   0b0101010110101000 }, /*   29   30   29   30   29   30   29   30   30   29   30   29   3
 011442024     */ { 00,   02,   10,   0b0100101101100000 }, /*   29   30   29   29   30   29   30   30   29   30   30   29    
 011452025     */ { 06,   01,   29,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30   2
 011462026     */ { 00,   02,   17,   0b1010010101110000 }, /*   30   29   30   29   29   30   29   30   29   30   30   30    
 011472027     */ { 00,   02,   07,   0b0101001001110000 }, /*   29   30   29   30   29   29   30   29   29   30   30   30    
 011482028     */ { 05,   01,   27,   0b0110100100110000 }, /*   29   30   30   29   30   29   29   30   29   29   30   30   2
 011492029     */ { 00,   02,   13,   0b1101100100110000 }, /*   30   30   29   30   30   29   29   30   29   29   30   30    
 011502030     */ { 00,   02,   03,   0b0101101010100000 }, /*   29   30   29   30   30   29   30   29   30   29   30   29    
 011512031     */ { 03,   01,   23,   0b1010101101010000 }, /*   30   29   30   29   30   29   30   30   29   30   29   30   2
 011522032     */ { 00,   02,   11,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 011532033     */ { 11,   01,   31,   0b0100101011101000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29   3
 011542034     */ { 00,   02,   19,   0b0100101011100000 }, /*   29   30   29   29   30   29   30   29   30   30   30   29    
 011552035     */ { 00,   02,   08,   0b1010010011010000 }, /*   30   29   30   29   29   30   29   29   30   30   29   30    
 011562036     */ { 06,   01,   28,   0b1101001001101000 }, /*   30   30   29   30   29   29   30   29   29   30   30   29   3
 011572037     */ { 00,   02,   15,   0b1101001001010000 }, /*   30   30   29   30   29   29   30   29   29   30   29   30    
 011582038     */ { 00,   02,   04,   0b1101010100100000 }, /*   30   30   29   30   29   30   29   30   29   29   30   29    
 011592039     */ { 05,   01,   24,   0b1101101010100000 }, /*   30   30   29   30   30   29   30   29   30   29   30   29   2
 011602040     */ { 00,   02,   12,   0b1011011010100000 }, /*   30   29   30   30   29   30   30   29   30   29   30   29    
 011612041     */ { 00,   02,   01,   0b1001011011010000 }, /*   30   29   29   30   29   30   30   29   30   30   29   30    
 011622042     */ { 02,   01,   22,   0b0100101011011000 }, /*   29   30   29   29   30   29   30   29   30   30   29   30   3
 011632043     */ { 00,   02,   10,   0b0100100110110000 }, /*   29   30   29   29   30   29   29   30   30   29   30   30    
 011642044     */ { 07,   01,   30,   0b1010010010111000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30   3
 011652045     */ { 00,   02,   17,   0b1010010010110000 }, /*   30   29   30   29   29   30   29   29   30   29   30   30    
 011662046     */ { 00,   02,   06,   0b1011001001010000 }, /*   30   29   30   30   29   29   30   29   29   30   29   30    
 011672047     */ { 05,   01,   26,   0b1011010100101000 }, /*   30   29   30   30   29   30   29   30   29   29   30   29   3
 011682048     */ { 00,   02,   14,   0b0110110101000000 }, /*   29   30   30   29   30   30   29   30   29   30   29   29    
 011692049     */ { 00,   02,   02,   0b1010110110100000 }, /*   30   29   30   29   30   30   29   30   30   29   30   29    
 011702050     */ { 03,   01,   23,   0b1001010110110000 }, /*   30   29   29   30   29   30   29   30   30   29   30   30   2
 01171         */ };
 1172
 01173        internal override int MinCalendarYear => MinLunisolarYear;
 1174
 01175        internal override int MaxCalendarYear => MaxLunisolarYear;
 1176
 01177        internal override DateTime MinDate => s_minDate;
 1178
 01179        internal override DateTime MaxDate => s_maxDate;
 1180
 01181        internal override EraInfo[]? CalEraInfo => null;
 1182
 1183        internal override int GetYearInfo(int lunarYear, int index)
 1184        {
 01185            if (lunarYear < MinLunisolarYear || lunarYear > MaxLunisolarYear)
 1186            {
 01187                throw new ArgumentOutOfRangeException(
 01188                    "year",
 01189                    lunarYear,
 01190                    SR.Format(SR.ArgumentOutOfRange_Range, MinLunisolarYear, MaxLunisolarYear));
 1191            }
 1192
 01193            return s_yinfo[lunarYear - MinLunisolarYear, index];
 1194        }
 1195
 1196        internal override int GetYear(int year, DateTime time)
 1197        {
 01198            return year;
 1199        }
 1200
 1201        internal override int GetGregorianYear(int year, int era)
 1202        {
 01203            if (era != CurrentEra && era != GregorianEra)
 1204            {
 01205                throw new ArgumentOutOfRangeException(nameof(era), era, SR.ArgumentOutOfRange_InvalidEraValue);
 1206            }
 01207            if (year < MinLunisolarYear || year > MaxLunisolarYear)
 1208            {
 01209                throw new ArgumentOutOfRangeException(
 01210                    nameof(year),
 01211                    year,
 01212                    SR.Format(SR.ArgumentOutOfRange_Range, MinLunisolarYear, MaxLunisolarYear));
 1213            }
 1214
 01215            return year;
 1216        }
 1217
 01218        public KoreanLunisolarCalendar()
 1219        {
 01220        }
 1221
 1222        public override int GetEra(DateTime time)
 1223        {
 01224            CheckTicksRange(time.Ticks);
 01225            return GregorianEra;
 1226        }
 1227
 01228        internal override CalendarId BaseCalendarID => CalendarId.KOREA;
 1229
 01230        internal override CalendarId ID => CalendarId.KOREANLUNISOLAR;
 1231
 01232        public override int[] Eras => [GregorianEra];
 1233    }
 1234}
 1235