You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/11/03 23:52:45 UTC

svn commit: r591706 [2/2] - in /incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/unicode: Generator.java Normalizer.java UnicodeCharacterDatabase.java

Modified: incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/unicode/UnicodeCharacterDatabase.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/unicode/UnicodeCharacterDatabase.java?rev=591706&r1=591705&r2=591706&view=diff
==============================================================================
--- incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/unicode/UnicodeCharacterDatabase.java (original)
+++ incubator/abdera/java/trunk/dependencies/i18n/src/main/java/org/apache/abdera/i18n/unicode/UnicodeCharacterDatabase.java Sat Nov  3 15:52:43 2007
@@ -17,247 +17,2194 @@
 */
 package org.apache.abdera.i18n.unicode;
 
-import java.io.BufferedReader;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.BitSet;
-import java.util.HashMap;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.GZIPOutputStream;
+import java.util.Arrays;
 
 import org.apache.abdera.i18n.io.CharUtils;
-import org.apache.abdera.i18n.unicode.UnicodeCharacterDatabase;
 
 
-/**
- * An implementation of the Unicode Character Database modeled after the 
- * sample normalization demo available at: 
- * 
- * http://www.unicode.org/unicode/reports/tr15/Normalizer.html
- * 
- * for now, this has been implemented and tested against Unicode 3.2.0.  We 
- * need to test is against Unicode 4.0.
- */
-final class UnicodeCharacterDatabase 
-  implements Serializable, 
-             Cloneable {
 
-  private static final long serialVersionUID = 1596950870716625345L;
-
-  private static final String UCD = "org/apache/abdera/i18n/unicode/data/ucd.res";
-  
-  private final HashMap<Integer,Integer> cc = new HashMap<Integer,Integer>();
-  private final HashMap<Integer,String>  decompose = new HashMap<Integer,String>();
-  private final HashMap<Integer,Integer> compose = new HashMap<Integer,Integer>();
-  private final BitSet compatibility = new BitSet();
-  private final BitSet excluded = new BitSet();
+public class UnicodeCharacterDatabase {
   
-  private static UnicodeCharacterDatabase ucd = null;
-  
-  public synchronized static UnicodeCharacterDatabase getInstance() {
-    if (ucd == null) {
-      try {
-        ucd = load();
-      } catch (Exception e) {}
-    }
-    return ucd;
+  private static final int[] compat = getCompat();
+  private static final int[] decomp_idx = getDecompIdx();
+  private static final int[][] decomp_data = getDecompData();
+  private static final int[] cc_idx = getCCIdx();
+  private static final int[] cc_data = getCCData();
+  private static final int[] comp_idx = getComposeIdx();
+  private static final int[] comp_data = getComposeData();
+  private static final int[] hangul_pairs = getHangulPairs();
+  private static final int[] hangul_codepoints = getHangulCodepoints();
+
+  private static int[] getCompat() { return new int[] {160,160
+      ,168,170,175,178,179,180,181,184,185,186,188,189,190,306,307,319,320,329,383,452
+      ,453,454,455,456,457,458,459,460,497,498,499,688,689,690,691,692,693,694,695,696
+      ,728,729,730,731,732,733,736,737,738,739,740,890,900,976,977,978,981,982,1008,1009
+      ,1010,1012,1013,1017,1415,1653,1654,1655,1656,3635,3763,3804,3805,3852,3959,3961,4348,7468,7469,7470
+      ,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7484,7485,7486,7487,7488,7489,7490,7491,7492
+      ,7493,7494,7495,7496,7497,7498,7499,7500,7501,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513
+      ,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7544,7579,7580
+      ,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600
+      ,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7834,8125,8127,8128,8190
+      ,8194,8195,8196,8197,8198,8199,8200,8201,8202,8209,8215,8228,8229,8230,8239,8243,8244,8246,8247,8252
+      ,8254,8263,8264,8265,8279,8287,8304,8305,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319
+      ,8320,8321,8322,8323,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8336,8337,8338,8339,8340
+      ,8360,8448,8449,8450,8451,8453,8454,8455,8457,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469
+      ,8470,8473,8474,8475,8476,8477,8480,8481,8482,8484,8488,8492,8493,8495,8496,8497,8499,8500,8501,8502
+      ,8503,8504,8505,8507,8508,8509,8510,8511,8512,8517,8518,8519,8520,8521,8531,8532,8533,8534,8535,8536
+      ,8537,8538,8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556
+      ,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8748
+      ,8749,8751,8752,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328
+      ,9329,9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348
+      ,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368
+      ,9369,9370,9371,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388
+      ,9389,9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,9407,9408
+      ,9409,9410,9411,9412,9413,9414,9415,9416,9417,9418,9419,9420,9421,9422,9423,9424,9425,9426,9427,9428
+      ,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448
+      ,9449,9450,10764,10868,10869,10870,11631,11935,12019,12032,12033,12034,12035,12036,12037,12038,12039,12040,12041,12042
+      ,12043,12044,12045,12046,12047,12048,12049,12050,12051,12052,12053,12054,12055,12056,12057,12058,12059,12060,12061,12062
+      ,12063,12064,12065,12066,12067,12068,12069,12070,12071,12072,12073,12074,12075,12076,12077,12078,12079,12080,12081,12082
+      ,12083,12084,12085,12086,12087,12088,12089,12090,12091,12092,12093,12094,12095,12096,12097,12098,12099,12100,12101,12102
+      ,12103,12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115,12116,12117,12118,12119,12120,12121,12122
+      ,12123,12124,12125,12126,12127,12128,12129,12130,12131,12132,12133,12134,12135,12136,12137,12138,12139,12140,12141,12142
+      ,12143,12144,12145,12146,12147,12148,12149,12150,12151,12152,12153,12154,12155,12156,12157,12158,12159,12160,12161,12162
+      ,12163,12164,12165,12166,12167,12168,12169,12170,12171,12172,12173,12174,12175,12176,12177,12178,12179,12180,12181,12182
+      ,12183,12184,12185,12186,12187,12188,12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202
+      ,12203,12204,12205,12206,12207,12208,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,12222
+      ,12223,12224,12225,12226,12227,12228,12229,12230,12231,12232,12233,12234,12235,12236,12237,12238,12239,12240,12241,12242
+      ,12243,12244,12245,12288,12342,12344,12345,12346,12443,12444,12447,12543,12593,12594,12595,12596,12597,12598,12599,12600
+      ,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620
+      ,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640
+      ,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660
+      ,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680
+      ,12681,12682,12683,12684,12685,12686,12690,12691,12692,12693,12694,12695,12696,12697,12698,12699,12700,12701,12702,12703
+      ,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819
+      ,12820,12821,12822,12823,12824,12825,12826,12827,12828,12829,12830,12832,12833,12834,12835,12836,12837,12838,12839,12840
+      ,12841,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12858,12859,12860
+      ,12861,12862,12863,12864,12865,12866,12867,12880,12881,12882,12883,12884,12885,12886,12887,12888,12889,12890,12891,12892
+      ,12893,12894,12895,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912
+      ,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926,12928,12929,12930,12931,12932,12933
+      ,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953
+      ,12954,12955,12956,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973
+      ,12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990,12991,12992,12993
+      ,12994,12995,12996,12997,12998,12999,13000,13001,13002,13003,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013
+      ,13014,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,13030,13031,13032,13033
+      ,13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053
+      ,13054,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074
+      ,13075,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094
+      ,13095,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111,13112,13113,13114
+      ,13115,13116,13117,13118,13119,13120,13121,13122,13123,13124,13125,13126,13127,13128,13129,13130,13131,13132,13133,13134
+      ,13135,13136,13137,13138,13139,13140,13141,13142,13143,13144,13145,13146,13147,13148,13149,13150,13151,13152,13153,13154
+      ,13155,13156,13157,13158,13159,13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170,13171,13172,13173,13174
+      ,13175,13176,13177,13178,13179,13180,13181,13182,13183,13184,13185,13186,13187,13188,13189,13190,13191,13192,13193,13194
+      ,13195,13196,13197,13198,13199,13200,13201,13202,13203,13204,13205,13206,13207,13208,13209,13210,13211,13212,13213,13214
+      ,13215,13216,13217,13218,13219,13220,13221,13222,13223,13224,13225,13226,13227,13228,13229,13230,13231,13232,13233,13234
+      ,13235,13236,13237,13238,13239,13240,13241,13242,13243,13244,13245,13246,13247,13248,13249,13250,13251,13252,13253,13254
+      ,13255,13256,13257,13258,13259,13260,13261,13262,13263,13264,13265,13266,13267,13268,13269,13270,13271,13272,13273,13274
+      ,13275,13276,13277,13278,13279,13280,13281,13282,13283,13284,13285,13286,13287,13288,13289,13290,13291,13292,13293,13294
+      ,13295,13296,13297,13298,13299,13300,13301,13302,13303,13304,13305,13306,13307,13308,13309,13310,13311,64256,64257,64258
+      ,64259,64260,64261,64262,64275,64276,64277,64278,64279,64288,64289,64290,64291,64292,64293,64294,64295,64296,64297,64335
+      ,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355
+      ,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375
+      ,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395
+      ,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415
+      ,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468
+      ,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488
+      ,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508
+      ,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528
+      ,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548
+      ,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568
+      ,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588
+      ,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608
+      ,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628
+      ,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648
+      ,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668
+      ,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688
+      ,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708
+      ,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728
+      ,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748
+      ,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768
+      ,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788
+      ,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808
+      ,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828
+      ,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866
+      ,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886
+      ,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906
+      ,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928
+      ,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948
+      ,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008
+      ,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020,65040,65041,65042,65043,65044,65045,65046,65047
+      ,65048,65049,65072,65073,65074,65075,65076,65077,65078,65079,65080,65081,65082,65083,65084,65085,65086,65087,65088,65089
+      ,65090,65091,65092,65095,65096,65097,65098,65099,65100,65101,65102,65103,65104,65105,65106,65108,65109,65110,65111,65112
+      ,65113,65114,65115,65116,65117,65118,65119,65120,65121,65122,65123,65124,65125,65126,65128,65129,65130,65131,65136,65137
+      ,65138,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159
+      ,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179
+      ,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199
+      ,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219
+      ,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239
+      ,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259
+      ,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65281,65282,65283
+      ,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303
+      ,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323
+      ,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65340,65341,65342,65343
+      ,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363
+      ,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65374,65375,65376,65377,65378,65379,65380,65381,65382,65383
+      ,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403
+      ,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423
+      ,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443
+      ,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463
+      ,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490
+      ,65491,65492,65493,65494,65495,65498,65499,65500,65504,65505,65506,65507,65508,65509,65510,65512,65513,65514,65515,65516
+      ,65517,65518,119808,119809,119810,119811,119812,119813,119814,119815,119816,119817,119818,119819,119820,119821,119822,119823,119824,119825
+      ,119826,119827,119828,119829,119830,119831,119832,119833,119834,119835,119836,119837,119838,119839,119840,119841,119842,119843,119844,119845
+      ,119846,119847,119848,119849,119850,119851,119852,119853,119854,119855,119856,119857,119858,119859,119860,119861,119862,119863,119864,119865
+      ,119866,119867,119868,119869,119870,119871,119872,119873,119874,119875,119876,119877,119878,119879,119880,119881,119882,119883,119884,119885
+      ,119886,119887,119888,119889,119890,119891,119892,119894,119895,119896,119897,119898,119899,119900,119901,119902,119903,119904,119905,119906
+      ,119907,119908,119909,119910,119911,119912,119913,119914,119915,119916,119917,119918,119919,119920,119921,119922,119923,119924,119925,119926
+      ,119927,119928,119929,119930,119931,119932,119933,119934,119935,119936,119937,119938,119939,119940,119941,119942,119943,119944,119945,119946
+      ,119947,119948,119949,119950,119951,119952,119953,119954,119955,119956,119957,119958,119959,119960,119961,119962,119963,119964,119966,119967
+      ,119970,119973,119974,119977,119978,119979,119980,119982,119983,119984,119985,119986,119987,119988,119989,119990,119991,119992,119993,119995
+      ,119997,119998,119999,120000,120001,120002,120003,120005,120006,120007,120008,120009,120010,120011,120012,120013,120014,120015,120016,120017
+      ,120018,120019,120020,120021,120022,120023,120024,120025,120026,120027,120028,120029,120030,120031,120032,120033,120034,120035,120036,120037
+      ,120038,120039,120040,120041,120042,120043,120044,120045,120046,120047,120048,120049,120050,120051,120052,120053,120054,120055,120056,120057
+      ,120058,120059,120060,120061,120062,120063,120064,120065,120066,120067,120068,120069,120071,120072,120073,120074,120077,120078,120079,120080
+      ,120081,120082,120083,120084,120086,120087,120088,120089,120090,120091,120092,120094,120095,120096,120097,120098,120099,120100,120101,120102
+      ,120103,120104,120105,120106,120107,120108,120109,120110,120111,120112,120113,120114,120115,120116,120117,120118,120119,120120,120121,120123
+      ,120124,120125,120126,120128,120129,120130,120131,120132,120134,120138,120139,120140,120141,120142,120143,120144,120146,120147,120148,120149
+      ,120150,120151,120152,120153,120154,120155,120156,120157,120158,120159,120160,120161,120162,120163,120164,120165,120166,120167,120168,120169
+      ,120170,120171,120172,120173,120174,120175,120176,120177,120178,120179,120180,120181,120182,120183,120184,120185,120186,120187,120188,120189
+      ,120190,120191,120192,120193,120194,120195,120196,120197,120198,120199,120200,120201,120202,120203,120204,120205,120206,120207,120208,120209
+      ,120210,120211,120212,120213,120214,120215,120216,120217,120218,120219,120220,120221,120222,120223,120224,120225,120226,120227,120228,120229
+      ,120230,120231,120232,120233,120234,120235,120236,120237,120238,120239,120240,120241,120242,120243,120244,120245,120246,120247,120248,120249
+      ,120250,120251,120252,120253,120254,120255,120256,120257,120258,120259,120260,120261,120262,120263,120264,120265,120266,120267,120268,120269
+      ,120270,120271,120272,120273,120274,120275,120276,120277,120278,120279,120280,120281,120282,120283,120284,120285,120286,120287,120288,120289
+      ,120290,120291,120292,120293,120294,120295,120296,120297,120298,120299,120300,120301,120302,120303,120304,120305,120306,120307,120308,120309
+      ,120310,120311,120312,120313,120314,120315,120316,120317,120318,120319,120320,120321,120322,120323,120324,120325,120326,120327,120328,120329
+      ,120330,120331,120332,120333,120334,120335,120336,120337,120338,120339,120340,120341,120342,120343,120344,120345,120346,120347,120348,120349
+      ,120350,120351,120352,120353,120354,120355,120356,120357,120358,120359,120360,120361,120362,120363,120364,120365,120366,120367,120368,120369
+      ,120370,120371,120372,120373,120374,120375,120376,120377,120378,120379,120380,120381,120382,120383,120384,120385,120386,120387,120388,120389
+      ,120390,120391,120392,120393,120394,120395,120396,120397,120398,120399,120400,120401,120402,120403,120404,120405,120406,120407,120408,120409
+      ,120410,120411,120412,120413,120414,120415,120416,120417,120418,120419,120420,120421,120422,120423,120424,120425,120426,120427,120428,120429
+      ,120430,120431,120432,120433,120434,120435,120436,120437,120438,120439,120440,120441,120442,120443,120444,120445,120446,120447,120448,120449
+      ,120450,120451,120452,120453,120454,120455,120456,120457,120458,120459,120460,120461,120462,120463,120464,120465,120466,120467,120468,120469
+      ,120470,120471,120472,120473,120474,120475,120476,120477,120478,120479,120480,120481,120482,120483,120484,120485,120488,120489,120490,120491
+      ,120492,120493,120494,120495,120496,120497,120498,120499,120500,120501,120502,120503,120504,120505,120506,120507,120508,120509,120510,120511
+      ,120512,120513,120514,120515,120516,120517,120518,120519,120520,120521,120522,120523,120524,120525,120526,120527,120528,120529,120530,120531
+      ,120532,120533,120534,120535,120536,120537,120538,120539,120540,120541,120542,120543,120544,120545,120546,120547,120548,120549,120550,120551
+      ,120552,120553,120554,120555,120556,120557,120558,120559,120560,120561,120562,120563,120564,120565,120566,120567,120568,120569,120570,120571
+      ,120572,120573,120574,120575,120576,120577,120578,120579,120580,120581,120582,120583,120584,120585,120586,120587,120588,120589,120590,120591
+      ,120592,120593,120594,120595,120596,120597,120598,120599,120600,120601,120602,120603,120604,120605,120606,120607,120608,120609,120610,120611
+      ,120612,120613,120614,120615,120616,120617,120618,120619,120620,120621,120622,120623,120624,120625,120626,120627,120628,120629,120630,120631
+      ,120632,120633,120634,120635,120636,120637,120638,120639,120640,120641,120642,120643,120644,120645,120646,120647,120648,120649,120650,120651
+      ,120652,120653,120654,120655,120656,120657,120658,120659,120660,120661,120662,120663,120664,120665,120666,120667,120668,120669,120670,120671
+      ,120672,120673,120674,120675,120676,120677,120678,120679,120680,120681,120682,120683,120684,120685,120686,120687,120688,120689,120690,120691
+      ,120692,120693,120694,120695,120696,120697,120698,120699,120700,120701,120702,120703,120704,120705,120706,120707,120708,120709,120710,120711
+      ,120712,120713,120714,120715,120716,120717,120718,120719,120720,120721,120722,120723,120724,120725,120726,120727,120728,120729,120730,120731
+      ,120732,120733,120734,120735,120736,120737,120738,120739,120740,120741,120742,120743,120744,120745,120746,120747,120748,120749,120750,120751
+      ,120752,120753,120754,120755,120756,120757,120758,120759,120760,120761,120762,120763,120764,120765,120766,120767,120768,120769,120770,120771
+      ,120772,120773,120774,120775,120776,120777,120778,120779,120782,120783,120784,120785,120786,120787,120788,120789,120790,120791,120792,120793
+      ,120794,120795,120796,120797,120798,120799,120800,120801,120802,120803,120804,120805,120806,120807,120808,120809,120810,120811,120812,120813
+      ,120814,120815,120816,120817,120818,120819,120820,120821,120822,120823,120824,120825,120826,120827,120828,120829,120830,120831};}
+
+    private static int[] getCCIdx() { return new int[] {768
+      ,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788
+      ,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808
+      ,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828
+      ,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,848,849
+      ,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869
+      ,870,871,872,873,874,875,876,877,878,879,1155,1156,1157,1158,1425,1426,1427,1428,1429,1430
+      ,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450
+      ,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471
+      ,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1611,1612,1613,1614,1615,1616,1617,1618,1619
+      ,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1648,1750,1751,1752,1753,1754,1755,1756,1759
+      ,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1809,1840,1841,1842,1843,1844,1845,1846,1847
+      ,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,2027
+      ,2028,2029,2030,2031,2032,2033,2034,2035,2364,2381,2385,2386,2387,2388,2492,2509,2620,2637,2748,2765
+      ,2876,2893,3021,3149,3157,3158,3260,3277,3405,3530,3640,3641,3642,3656,3657,3658,3659,3768,3769,3784
+      ,3785,3786,3787,3864,3865,3893,3895,3897,3953,3954,3956,3962,3963,3964,3965,3968,3970,3971,3972,3974
+      ,3975,4038,4151,4153,4959,5908,5940,6098,6109,6313,6457,6458,6459,6679,6680,6964,6980,7019,7020,7021
+      ,7022,7023,7024,7025,7026,7027,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7678,7679,8400
+      ,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427
+      ,8428,8429,8430,8431,12330,12331,12332,12333,12334,12335,12441,12442,43014,64286,65056,65057,65058,65059,68109,68111
+      ,68152,68153,68154,68159,119141,119142,119143,119144,119145,119149,119150,119151,119152,119153,119154,119163,119164,119165,119166,119167
+      ,119168,119169,119170,119173,119174,119175,119176,119177,119178,119179,119210,119211,119212,119213,119362,119363,119364};}
+
+    private static int[] getCCData() { return new int[] {230
+      ,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230
+      ,232,220,220,220,220,232,216,220,220,220,220,220,202,202,220,220,220,220,202,202
+      ,220,220,220,220,220,220,220,220,220,220,220,1,1,1,1,1,220,220,220,220
+      ,230,230,230,230,230,230,230,230,240,230,220,220,220,230,230,230,220,220,230,230
+      ,230,220,220,220,220,230,232,220,220,230,233,234,234,233,234,234,233,230,230,230
+      ,230,230,230,230,230,230,230,230,230,230,230,230,230,230,220,230,230,230,230,220
+      ,230,230,230,222,220,230,230,230,230,230,230,220,220,220,220,220,220,230,230,220
+      ,230,230,222,228,230,10,11,12,13,14,15,16,17,18,19,19,20,21,22,23
+      ,24,25,230,220,18,230,230,230,230,230,230,27,28,29,30,31,32,33,34,230
+      ,230,220,220,230,230,230,230,230,220,230,230,35,230,230,230,230,230,230,230,230
+      ,230,230,230,220,230,230,230,220,230,230,220,36,230,220,230,230,220,230,230,220
+      ,220,220,230,220,220,230,220,230,230,230,220,230,220,230,220,230,220,230,230,230
+      ,230,230,230,230,230,230,220,230,7,9,230,220,230,230,7,9,7,9,7,9
+      ,7,9,9,9,84,91,7,9,9,9,103,103,9,107,107,107,107,118,118,122
+      ,122,122,122,220,220,220,220,216,129,130,132,130,130,130,130,130,230,230,9,230
+      ,230,220,7,9,230,9,9,9,230,228,222,230,220,230,220,7,9,230,220,230
+      ,230,230,230,230,230,230,230,230,220,230,230,230,230,230,230,230,220,230,220,230
+      ,230,1,1,230,230,230,230,1,1,1,230,230,230,1,1,230,220,230,1,1
+      ,220,220,220,220,218,228,232,222,224,224,8,8,9,26,230,230,230,230,220,230
+      ,230,1,220,9,216,216,1,1,1,226,216,216,216,216,216,220,220,220,220,220
+      ,220,220,220,230,230,230,230,230,220,220,230,230,230,230,230,230,230};}
+
+    private static int[] getComposeIdx() { return new int[] {59
+      ,75,96,180,183,197,290,697,768,769,787,901,902,904,905,906,908,910,911,912,937
+      ,940,941,942,943,944,953,972,973,974,1308,1317,1355,1594,2052,2270,2604,2915,5348,5800,5866
+      ,6600,6936,7435,7652,7654,8194,8195,8579,8607,9009,9009,9940,10308,10314,11020,11249,12296,12297,12298,12984
+      ,13151,13203,13212,13251,13269,13421,13470,13497,13499,13535,13589,13987,14062,14076,14209,14383,14434,14460,14503,14535
+      ,14563,14620,14650,14894,14956,14989,15076,15098,15112,15129,15177,15261,15261,15384,15438,15548,15646,15667,15766,16044
+      ,16056,16056,16081,16155,16222,16270,16380,16392,16408,16441,16441,16454,16534,16611,16687,16898,16935,16995,17056,17153
+      ,17204,17241,17323,17365,17369,17419,17515,17707,17757,17761,17771,17879,17913,17928,17973,18110,18119,18229,18452,18837
+      ,18918,19054,19062,19122,19251,19406,19510,19602,19662,19693,19704,19798,19981,20006,20018,20024,20025,20029,20033,20098
+      ,20102,20142,20160,20172,20196,20320,20352,20358,20363,20385,20398,20398,20408,20411,20415,20482,20523,20548,20602,20633
+      ,20687,20698,20711,20711,20722,20723,20761,20787,20800,20805,20813,20813,20820,20836,20839,20840,20841,20845,20855,20864
+      ,20877,20882,20885,20887,20900,20908,20917,20917,20919,20937,20940,20956,20958,20981,20995,20999,20999,21015,21033,21050
+      ,21051,21062,21065,21106,21111,21129,21147,21155,21171,21191,21191,21193,21193,21202,21214,21220,21220,21237,21242,21242
+      ,21253,21254,21271,21271,21311,21321,21329,21329,21338,21363,21365,21373,21375,21375,21375,21443,21450,21471,21477,21483
+      ,21489,21510,21519,21533,21533,21560,21570,21576,21608,21662,21666,21693,21750,21776,21843,21845,21859,21892,21892,21895
+      ,21913,21913,21917,21917,21931,21939,21952,21954,21986,22022,22022,22054,22097,22120,22132,22170,22213,22265,22294,22295
+      ,22411,22478,22516,22541,22577,22578,22592,22618,22618,22622,22696,22700,22707,22744,22751,22766,22770,22775,22790,22810
+      ,22818,22852,22856,22865,22868,22882,22899,22908,23000,23020,23067,23079,23138,23142,23207,23207,23221,23304,23336,23358
+      ,23358,23429,23467,23491,23512,23527,23527,23527,23534,23539,23551,23558,23586,23615,23648,23650,23652,23653,23662,23662
+      ,23680,23693,23744,23760,23833,23875,23888,23915,23918,23932,23986,23994,24033,24034,24061,24104,24125,24169,24180,24230
+      ,24240,24243,24246,24265,24266,24266,24274,24275,24281,24300,24318,24324,24354,24354,24403,24418,24425,24427,24454,24459
+      ,24474,24489,24493,24525,24535,24565,24569,24594,24604,24705,24724,24724,24775,24792,24801,24840,24900,24904,24908,24908
+      ,24910,24910,24928,24936,24954,24974,24974,24974,24976,24996,25007,25010,25050,25054,25074,25074,25074,25078,25078,25088
+      ,25104,25115,25128,25134,25140,25159,25181,25265,25289,25295,25299,25300,25305,25340,25342,25405,25406,25424,25448,25467
+      ,25475,25504,25513,25540,25541,25572,25628,25634,25682,25705,25719,25726,25754,25757,25796,25818,25891,25935,25935,25942
+      ,25964,25976,26009,26024,26053,26082,26083,26131,26185,26228,26228,26248,26257,26257,26268,26292,26310,26356,26360,26368
+      ,26391,26391,26391,26395,26395,26401,26446,26451,26454,26462,26491,26501,26519,26535,26549,26611,26618,26647,26655,26706
+      ,26753,26757,26757,26766,26792,26900,26946,27043,27114,27138,27138,27138,27155,27304,27347,27355,27396,27425,27452,27476
+      ,27506,27511,27513,27551,27566,27578,27578,27578,27579,27702,27726,27751,27784,27839,27852,27853,27861,27877,27926,27931
+      ,27934,27956,27966,27969,27969,27969,28009,28010,28011,28023,28023,28024,28037,28107,28122,28138,28153,28186,28207,28270
+      ,28316,28346,28359,28363,28363,28369,28379,28431,28450,28450,28451,28460,28526,28593,28614,28651,28670,28699,28702,28702
+      ,28729,28746,28784,28791,28797,28825,28845,28872,28882,28889,28997,29001,29038,29038,29084,29134,29136,29200,29211,29224
+      ,29227,29237,29237,29264,29282,29312,29333,29359,29376,29436,29482,29482,29557,29562,29575,29575,29579,29605,29618,29642
+      ,29662,29702,29705,29730,29767,29788,29801,29809,29809,29829,29833,29848,29898,29958,29988,30011,30014,30041,30053,30064
+      ,30064,30178,30224,30237,30239,30274,30311,30313,30410,30410,30427,30439,30452,30452,30465,30494,30495,30495,30528,30538
+      ,30538,30603,30631,30798,30827,30860,30860,30865,30894,30922,30924,30924,30971,31018,31036,31038,31048,31049,31056,31062
+      ,31062,31069,31070,31077,31078,31103,31117,31118,31119,31119,31150,31178,31211,31260,31296,31296,31306,31311,31361,31409
+      ,31435,31470,31520,31680,31680,31686,31689,31806,31840,31867,31890,31912,31934,31954,31958,31971,31975,31976,32000,32016
+      ,32034,32047,32091,32099,32160,32190,32199,32244,32244,32244,32258,32265,32311,32321,32325,32467,32559,32574,32626,32633
+      ,32634,32645,32661,32666,32701,32762,32769,32773,32773,32773,32838,32864,32879,32880,32894,32907,32941,32946,33027,33086
+      ,33240,33256,33261,33281,33281,33284,33391,33401,33401,33419,33425,33437,33457,33459,33469,33509,33509,33510,33565,33571
+      ,33590,33618,33619,33635,33709,33725,33737,33738,33740,33756,33767,33775,33777,33853,33865,33879,33879,34030,34033,34035
+      ,34044,34070,34148,34253,34258,34285,34298,34310,34322,34349,34367,34384,34396,34396,34407,34409,34440,34473,34530,34574
+      ,34600,34606,34667,34681,34681,34694,34746,34785,34817,34847,34892,34912,34915,35010,35023,35031,35038,35041,35064,35066
+      ,35088,35137,35172,35206,35211,35222,35222,35488,35498,35498,35519,35531,35538,35542,35565,35565,35576,35576,35582,35582
+      ,35585,35585,35641,35641,35672,35712,35722,35722,35834,35912,35925,36011,36033,36034,36040,36051,36104,36104,36123,36215
+      ,36215,36284,36299,36335,36336,36554,36564,36646,36650,36664,36664,36667,36706,36766,36784,36790,36899,36920,36920,36978
+      ,36988,37007,37012,37070,37105,37117,37137,37147,37189,37226,37273,37300,37324,37327,37329,37343,37402,37428,37432,37494
+      ,37500,37591,37592,37636,37706,37881,37898,37909,38038,38283,38317,38326,38327,38446,38475,38477,38517,38520,38524,38534
+      ,38563,38584,38595,38626,38627,38627,38646,38647,38691,38706,38728,38742,38742,38875,38880,38911,38911,38923,38923,38923
+      ,38936,38953,38971,38971,39006,39138,39151,39164,39208,39209,39335,39362,39409,39422,39530,39698,39698,39728,39791,40000
+      ,40023,40189,40295,40372,40442,40478,40575,40599,40607,40635,40654,40697,40702,40709,40719,40726,40763,40771,40845,40846
+      ,40860,40860,40860,41166,41221,41486,41617,41874,42496,3932984,3998520,4064056,4260608,4260609,4260610,4260611,4260612,4260614,4260615,4260616
+      ,4260617,4260618,4260620,4260623,4260625,4260643,4260645,4260648,4326151,4326179,4326193,4391681,4391682,4391687,4391692,4391719,4457223,4457228,4457251,4457255
+      ,4457261,4457265,4522752,4522753,4522754,4522755,4522756,4522758,4522759,4522760,4522761,4522764,4522767,4522769,4522787,4522791,4522792,4522797,4522800,4588295
+      ,4653825,4653826,4653828,4653830,4653831,4653836,4653863,4719362,4719367,4719368,4719372,4719395,4719399,4719406,4784896,4784897,4784898,4784899,4784900,4784902
+      ,4784903,4784904,4784905,4784908,4784911,4784913,4784931,4784936,4784944,4850434,4915969,4915980,4916003,4916007,4916017,4981505,4981516,4981539,4981543,4981549
+      ,4981553,5047041,5047047,5047075,5112576,5112577,5112579,5112583,5112588,5112611,5112615,5112621,5112625,5178112,5178113,5178114,5178115,5178116,5178118,5178119
+      ,5178120,5178121,5178123,5178124,5178127,5178129,5178139,5178147,5178152,5243649,5243655,5374721,5374727,5374732,5374735,5374737,5374755,5374759,5374769,5440257
+      ,5440258,5440263,5440268,5440291,5440294,5440295,5505799,5505804,5505827,5505830,5505831,5505837,5505841,5571328,5571329,5571330,5571331,5571332,5571334,5571336
+      ,5571337,5571338,5571339,5571340,5571343,5571345,5571355,5571363,5571364,5571368,5571373,5571376,5636867,5636899,5702400,5702401,5702402,5702407,5702408,5702435
+      ,5767943,5767944,5833472,5833473,5833474,5833475,5833476,5833479,5833480,5833481,5833507,5899009,5899010,5899015,5899020,5899043,5899057,6357760,6357761,6357762
+      ,6357763,6357764,6357766,6357767,6357768,6357769,6357770,6357772,6357775,6357777,6357795,6357797,6357800,6423303,6423331,6423345,6488833,6488834,6488839,6488844
+      ,6488871,6554375,6554380,6554403,6554407,6554413,6554417,6619904,6619905,6619906,6619907,6619908,6619910,6619911,6619912,6619913,6619916,6619919,6619921,6619939
+      ,6619943,6619944,6619949,6619952,6685447,6750977,6750978,6750980,6750982,6750983,6750988,6751015,6816514,6816519,6816520,6816524,6816547,6816551,6816558,6816561
+      ,6882048,6882049,6882050,6882051,6882052,6882054,6882056,6882057,6882060,6882063,6882065,6882083,6882088,6882096,6947586,6947596,7013121,7013132,7013155,7013159
+      ,7013169,7078657,7078668,7078691,7078695,7078701,7078705,7144193,7144199,7144227,7209728,7209729,7209731,7209735,7209740,7209763,7209767,7209773,7209777,7275264
+      ,7275265,7275266,7275267,7275268,7275270,7275271,7275272,7275273,7275275,7275276,7275279,7275281,7275291,7275299,7275304,7340801,7340807,7471873,7471879,7471884
+      ,7471887,7471889,7471907,7471911,7471921,7537409,7537410,7537415,7537420,7537443,7537446,7537447,7602951,7602952,7602956,7602979,7602982,7602983,7602989,7602993
+      ,7668480,7668481,7668482,7668483,7668484,7668486,7668488,7668489,7668490,7668491,7668492,7668495,7668497,7668507,7668515,7668516,7668520,7668525,7668528,7734019
+      ,7734051,7799552,7799553,7799554,7799559,7799560,7799562,7799587,7865095,7865096,7930624,7930625,7930626,7930627,7930628,7930631,7930632,7930633,7930634,7930659
+      ,7996161,7996162,7996167,7996172,7996195,7996209,11010816,11010817,11010882,12714752,12714753,12714755,12714761,12845828,12911361,12976897,12976900,13042433,13239040,13239041
+      ,13239043,13239049,13566721,13894400,13894401,13894403,13894409,13959937,13959940,13959944,14025476,14156545,14418688,14418689,14418692,14418700,14811904,14811905,14811907,14811913
+      ,14942980,15008513,15074049,15074052,15139585,15336192,15336193,15336195,15336201,15663873,15991552,15991553,15991555,15991561,16057089,16057092,16057096,16122628,16253697,16515840
+      ,16515841,16515844,16515852,16909056,16909057,16909059,16909065,16974592,16974593,16974595,16974601,17957632,17957633,18023168,18023169,21758720,21758721,21824256,21824257,22676231
+      ,22741767,23069447,23134983,23593729,23659265,23724808,23790344,25101063,27263744,27263745,27263747,27263753,27263779,27329280,27329281,27329283,27329289,27329315,28246784,28246785
+      ,28246787,28246793,28246819,28312320,28312321,28312323,28312329,28312355,28771084,32113412,32178948,36045572,36111108,36176646,36242182,36569860,36635396,43123468,50856705,59835136
+      ,59835137,59835140,59835142,59835155,59835156,59835205,60097280,60097281,60097299,60097300,60228352,60228353,60228371,60228372,60228421,60359424,60359425,60359428,60359430,60359432
+      ,60359443,60359444,60752640,60752641,60752659,60752660,60883732,61145856,61145857,61145860,61145862,61145864,61145876,61408000,61408001,61408019,61408020,61408069,61604677,61735749
+      ,61932288,61932289,61932292,61932294,61932307,61932308,61932354,61932357,62194432,62194433,62194451,62194452,62325504,62325505,62325523,62325524,62325570,62325573,62456576,62456577
+      ,62456580,62456582,62456584,62456595,62456596,62456642,62849792,62849793,62849811,62849812,62980883,62980884,63243008,63243009,63243012,63243014,63243016,63243027,63243028,63243074
+      ,63505152,63505153,63505171,63505172,63505218,63505221,63570688,63570689,63570754,63636224,63636225,63636290,63832901,64094977,64094984,67502856,68158214,68158216,68354817,68485888
+      ,68485894,68485896,68551430,68551432,68616968,68682496,68682500,68682502,68682504,68813569,69075720,69403396,69403398,69403400,69403403,69665544,69927688,70058760,70255366,70255368
+      ,70451969,70583040,70583046,70583048,70648582,70648584,70714120,70779648,70779652,70779654,70779656,70910721,71172872,71500548,71500550,71500552,71500555,71762696,72024840,72155912
+      ,72745736,74711823,74777359,81265416,81330952,82313992,82379528,103220819,103220820,103220821,105383508,105514580,113313364,114427476,114624084,153618748,154143036,154339644,164039102,164039127
+      ,189205310,189205334,189205335,194120663,197528510,197528535,197594046,205917270,213847253,214305986,214306005,214306006,214568149,222694718,222694743,222760254,232328650,232328655,232328671,232525258
+      ,259067762,259067764,259067776,270864430,453319477,453450549,453581621,453712693,453843765,454105909,456792885,456923957,457055029,457120565,457317173,506856196,506921732,509215492,509281028,509739783
+      ,509805319,513803010,513803014,513868546,513868550,515375874,515441410,516686594,516752130,520094464,520094465,520094530,520094533,520160000,520160001,520160066,520160069,520225605,520291141,520356677
+      ,520422213,520487749,520553285,520618752,520618753,520618818,520618821,520684288,520684289,520684354,520684357,520749893,520815429,520880965,520946501,521012037,521077573,521143040,521143041,521208576
+      ,521208577,521667328,521667329,521732864,521732865,522191616,522191617,522191682,522191685,522257152,522257153,522257218,522257221,522322757,522388293,522453829,522519365,522584901,522650437,522715904
+      ,522715905,522715970,522715973,522781440,522781441,522781506,522781509,522847045,522912581,522978117,523043653,523109189,523174725,523240192,523240193,523240258,523305728,523305729,523305794,523764480
+      ,523764481,523764546,523830016,523830017,523830082,524288768,524288769,524354304,524354305,524813056,524813057,524878592,524878593,525337344,525337345,525337410,525402880,525402881,525402946,525927168
+      ,525927169,525927234,526385920,526385921,526385986,526385989,526451456,526451457,526451522,526451525,526517061,526582597,526648133,526713669,526779205,526844741,526910208,526910209,526910274,526910277
+      ,526975744,526975745,526975810,526975813,527041349,527106885,527172421,527237957,527303493,527369029,527434565,527696709,528220997,532022085,532611840,532611841,532611906,533070661,536216389,536740608
+      ,536740609,536740674,563086136,563217208,563348280,567280440,567411512,567542584,570622776,570950456,571147064,572719928,572851000,574358328,574817080,574948152,575144760,575472440,576783160,576979768
+      ,577045304,577897272,577962808,578159416,578224952,578421560,578487096,578552632,578618168,578945848,579011384,579207992,579273528,579928888,579994424,581043000,581436216,581501752,581632824,582091576
+      ,582157112,582222648,582288184,809906329,810234009,810365081,810496153,810627225,810758297,810889369,811020441,811151513,811282585,811413657,811544729,811675801,811872409,812003481,812134553,812593305
+      ,812593306,812789913,812789914,812986521,812986522,813183129,813183130,813379737,813379738,815607961,816197785,816525465,816656537,816787609,816918681,817049753,817180825,817311897,817442969,817574041
+      ,817705113,817836185,817967257,818163865,818294937,818426009,818884761,818884762,819081369,819081370,819277977,819277978,819474585,819474586,819671193,819671194,820981913,821047449,821112985,821178521
+      ,821899417};}
+
+    private static int[] getComposeData() { return new int[] {894
+      ,8490,8175,8189,903,8491,194563,884,832,833,835,8174,8123,8137,8139,8155,8185,8171,8187,8147,8486
+      ,8049,8051,8053,8055,8163,8126,8057,8059,8061,194578,194843,194582,194573,195033,195037,194612,194616,194649,194656,194657
+      ,194668,194673,194808,194683,194685,8192,8193,194697,194873,194705,194706,194724,64208,64207,194744,194750,9001,9002,194762,194711
+      ,194944,194953,194954,194781,64209,194787,194572,194579,195018,194591,194596,194796,194663,194664,194678,194691,194696,194698,194800,194710
+      ,194715,194722,194721,194754,194759,194807,194769,194809,194768,194766,194782,64210,194791,194798,194802,194811,194822,194826,194838,194858
+      ,194860,194861,194829,194867,194832,194833,194878,194879,64211,64212,194889,194891,194892,194897,194904,194912,194916,194845,194919,194925
+      ,194929,194932,194847,194945,194775,194948,194958,194983,194990,194991,194994,195007,195010,194851,195016,195021,195022,194854,194855,195055
+      ,195058,195064,195065,195068,195075,195080,194869,194871,195085,195086,195089,195094,63847,64112,63749,194561,63838,194560,194562,63771
+      ,63930,63863,63997,194585,63912,194564,64115,63789,63925,194875,64048,194565,194876,194566,63845,194567,63956,194877,194568,194569
+      ,194571,63931,64049,194570,194882,194881,194883,194884,64012,64116,64050,194574,194575,194576,194580,64114,63864,63953,194577,64117
+      ,194581,194770,194771,194583,194584,194586,64113,194587,63790,63865,63829,63828,64021,194589,194590,64000,194640,63900,63965,63999
+      ,194592,194593,64213,194594,194595,63943,63882,63901,194962,64118,194597,64051,194598,63826,63791,64052,194599,63871,64119,194600
+      ,194601,194602,63843,194603,63979,194604,64053,194605,194606,194607,63772,194608,194609,194610,194611,63851,194614,194615,63750,194617
+      ,194618,194619,63966,63981,194893,194621,63872,194622,194623,194620,194624,63902,194625,194626,194627,64121,194628,194629,194630,63755
+      ,64122,194631,64054,64120,194632,194633,64013,194634,64123,64055,194636,194898,194638,64056,194639,194900,194901,63913,194635,194637
+      ,194645,194642,194643,194644,194647,194646,64057,64016,64124,63852,64058,194648,64125,63818,63810,194641,194650,194651,194652,194653
+      ,194654,64126,63756,63753,64127,194655,63873,194908,194661,194658,194659,194660,64128,194662,194909,194910,194950,194665,64129,194666
+      ,194667,64004,194913,194669,194670,63839,63914,194671,63932,194672,194674,194675,194677,63933,194679,63819,64059,63967,64060,194680
+      ,194917,194682,194681,64214,63957,194684,63777,194687,194686,194688,195060,63915,194689,194690,194692,194693,194694,194695,63886,64001
+      ,194699,194700,194701,63906,63784,194702,64130,64011,64131,63874,194704,63811,194708,194709,194676,194713,64132,194714,194923,63960
+      ,194716,63846,64133,194717,194718,63907,194719,63840,63916,194720,64061,194723,194725,64134,63929,64136,63961,194726,194727,194729
+      ,64135,194728,64138,64062,194730,64063,64137,194731,63887,194733,194734,194732,194712,194735,64064,64139,194736,63757,194737,63888
+      ,194738,194739,194930,63954,64140,194931,194740,194741,63781,63835,64002,194742,194933,194746,63859,194745,194935,194743,194747,63908
+      ,194748,63861,194753,64141,194752,194749,64142,194751,64143,194755,194758,194756,63889,194757,63792,194939,194940,64065,194760,64144
+      ,194761,63849,63934,194942,63875,64066,194763,63968,194765,64018,64145,63941,64067,194767,194773,64006,63883,63745,194764,194772
+      ,63785,64146,194776,64147,194777,194778,63969,194780,64148,194779,63944,194784,63988,194951,194952,63945,194783,63962,194789,194785
+      ,63866,64068,194786,194788,63970,194790,194792,194793,194794,63764,63836,63935,63820,194795,63793,194797,63773,194799,194967,194801
+      ,194803,63884,64149,194804,63909,63856,64150,194805,194806,194980,194810,194814,63858,194812,63848,194813,194982,63971,194815,63765
+      ,64005,194823,194816,63946,64151,194818,194819,63786,194981,64069,194817,194820,194821,63989,63821,63958,194830,64070,194824,194825
+      ,63947,63980,194828,64153,194827,63748,64152,63822,64071,64154,63890,194989,194831,194992,194834,63778,63876,194837,64155,194836
+      ,194835,194839,194613,194841,194840,63995,194842,63903,194993,63766,194844,63891,64072,64156,194846,63936,63982,63794,63774,194848
+      ,64073,64158,194849,194850,63814,194852,194853,64159,63994,63787,64022,64160,63911,194856,63841,63963,194857,194859,63917,194987
+      ,63767,63972,63948,64074,194862,194863,63918,64161,194864,194865,63892,63983,194866,64162,194868,64163,194870,63949,63862,63842
+      ,194872,63973,194874,64164,64165,63937,195013,63758,64023,64166,64167,63795,64168,194880,63853,194885,194886,194887,64170,64169
+      ,194888,194890,64157,194894,63950,63803,194895,64075,195019,63815,64171,194896,63844,63877,64024,64076,64078,64077,64079,64080
+      ,194899,64081,64025,64026,195020,63804,64082,64083,64027,194902,63926,63893,194903,63830,64084,194905,194906,194907,64085,64172
+      ,63991,194911,63992,64086,64173,194914,194915,63910,63812,64174,63993,195027,64029,194918,64003,194921,63867,194920,194922,63951
+      ,63850,63823,64175,194924,63805,63831,194926,63894,64087,64176,194927,64088,63824,64089,194928,64215,195032,64177,64090,63974
+      ,194934,63759,194936,63919,64030,194937,63796,64091,64178,194938,63920,194941,63895,194943,63813,63827,194774,194946,194947,194949
+      ,63782,63990,64092,194707,194955,194956,63868,64093,64094,194960,194959,194961,194963,194964,194965,63860,194968,194966,194969,194972
+      ,63998,64179,194976,194970,194971,194973,63806,194977,194978,194979,194974,64180,63832,63768,63854,64095,194975,63897,194984,194985
+      ,63938,194986,194988,63779,195040,195041,63984,63797,64032,63775,63760,194995,63798,194996,194997,194998,195000,194999,195002,195001
+      ,195004,195045,195005,64181,195003,195006,63761,195008,195009,63783,64008,195011,195012,63904,63975,195014,195015,63976,63762,195017
+      ,64096,64182,63780,64183,64010,64097,64184,195023,63855,63905,64185,64187,63869,63809,64190,195024,64034,64186,63837,64189
+      ,64098,64188,64099,64191,63996,63834,64192,195025,195053,63744,195026,195028,195029,63816,63747,64100,64101,64193,195030,195031
+      ,195057,195035,195034,63799,195036,63746,195038,63896,63959,64194,195039,64007,63885,194957,63857,64102,63898,64037,64103,64195
+      ,63939,63763,195042,63788,195043,64038,195044,195046,195062,63769,64196,63927,63977,63870,63754,194588,195063,63921,195047,64197
+      ,195050,195048,195049,63807,63899,195051,195067,195052,195069,195054,63878,195073,195056,63942,63825,64009,63833,63955,64198,63964
+      ,63985,63928,195059,63978,64104,64199,63922,63817,195061,63800,63923,64028,64200,64201,195066,64105,64202,64203,195070,195071
+      ,63924,195072,64106,64204,63952,195074,64042,64043,64044,195076,195077,195078,63770,195079,63879,64205,195082,195081,63801,195083
+      ,63986,195084,195087,64045,63802,63776,63808,63880,63987,195093,63881,195095,195096,195097,195098,195099,195100,64216,63940,64217
+      ,63751,63752,64206,195088,195090,195091,195092,194703,195101,8814,8800,8815,192,193,194,195,256,258,550,196
+      ,7842,197,461,512,514,7840,7680,260,7682,7684,7686,262,264,266,268,199,7690,270,7692,7696
+      ,7698,7694,200,201,202,7868,274,276,278,203,7866,282,516,518,7864,552,280,7704,7706,7710
+      ,500,284,7712,286,288,486,290,292,7714,7718,542,7716,7720,7722,204,205,206,296,298,300
+      ,304,207,7880,463,520,522,7882,302,7724,308,7728,488,7730,310,7732,313,317,7734,315,7740
+      ,7738,7742,7744,7746,504,323,209,7748,327,7750,325,7754,7752,210,211,212,213,332,334,558
+      ,214,7886,336,465,524,526,416,7884,490,7764,7766,340,7768,344,528,530,7770,342,7774,346
+      ,348,7776,352,7778,536,350,7786,356,7788,538,354,7792,7790,217,218,219,360,362,364,220
+      ,7910,366,368,467,532,534,431,7908,7794,370,7798,7796,7804,7806,7808,7810,372,7814,7812,7816
+      ,7818,7820,7922,221,374,7928,562,7822,376,7926,7924,377,7824,379,381,7826,7828,224,225,226
+      ,227,257,259,551,228,7843,229,462,513,515,7841,7681,261,7683,7685,7687,263,265,267,269
+      ,231,7691,271,7693,7697,7699,7695,232,233,234,7869,275,277,279,235,7867,283,517,519,7865
+      ,553,281,7705,7707,7711,501,285,7713,287,289,487,291,293,7715,7719,543,7717,7721,7723,7830
+      ,236,237,238,297,299,301,239,7881,464,521,523,7883,303,7725,309,496,7729,489,7731,311
+      ,7733,314,318,7735,316,7741,7739,7743,7745,7747,505,324,241,7749,328,7751,326,7755,7753,242
+      ,243,244,245,333,335,559,246,7887,337,466,525,527,417,7885,491,7765,7767,341,7769,345
+      ,529,531,7771,343,7775,347,349,7777,353,7779,537,351,7787,7831,357,7789,539,355,7793,7791
+      ,249,250,251,361,363,365,252,7911,367,369,468,533,535,432,7909,7795,371,7799,7797,7805
+      ,7807,7809,7811,373,7815,7813,7832,7817,7819,7821,7923,253,375,7929,563,7823,255,7927,7833,7925
+      ,378,7825,380,382,7827,7829,8173,901,8129,7846,7844,7850,7848,478,506,508,482,7688,7872,7870
+      ,7876,7874,7726,7890,7888,7894,7892,7756,556,7758,554,510,475,471,469,473,7847,7845,7851,7849
+      ,479,507,509,483,7689,7873,7871,7877,7875,7727,7891,7889,7895,7893,7757,557,7759,555,511,476
+      ,472,470,474,7856,7854,7860,7858,7857,7855,7861,7859,7700,7702,7701,7703,7760,7762,7761,7763,7780
+      ,7781,7782,7783,7800,7801,7802,7803,7835,7900,7898,7904,7902,7906,7901,7899,7905,7903,7907,7914,7912
+      ,7918,7916,7920,7915,7913,7919,7917,7921,494,492,493,480,481,7708,7709,560,561,495,836,8122
+      ,902,8121,8120,7944,7945,8124,8136,904,7960,7961,8138,905,7976,7977,8140,8154,906,8153,8152,938
+      ,7992,7993,8184,908,8008,8009,8172,8170,910,8169,8168,939,8025,8186,911,8040,8041,8188,8116,8132
+      ,8048,940,8113,8112,7936,7937,8118,8115,8050,941,7952,7953,8052,942,7968,7969,8134,8131,8054,943
+      ,8145,8144,970,7984,7985,8150,8056,972,8000,8001,8164,8165,8058,973,8161,8160,971,8016,8017,8166
+      ,8060,974,8032,8033,8182,8179,8146,912,8151,8162,944,8167,8180,979,980,1031,1232,1234,1027,1024
+      ,1238,1025,1217,1244,1246,1037,1250,1049,1252,1036,1254,1262,1038,1264,1266,1268,1272,1260,1233,1235
+      ,1107,1104,1239,1105,1218,1245,1247,1117,1251,1081,1253,1116,1255,1263,1118,1265,1267,1269,1273,1261
+      ,1111,1142,1143,1242,1243,1258,1259,1570,1571,1573,1572,1574,1730,1747,1728,2345,2353,2356,2507,2508
+      ,2891,2888,2892,2964,3018,3020,3019,3144,3264,3274,3271,3272,3275,3402,3404,3403,3546,3548,3550,3549
+      ,3955,3957,3969,4134,6918,6920,6922,6924,6926,6930,6971,6973,6976,6977,6979,7736,7737,7772,7773,7784
+      ,7785,7852,7862,7853,7863,7878,7879,7896,7897,7938,7940,7942,8064,7939,7941,7943,8065,8066,8067,8068
+      ,8069,8070,8071,7946,7948,7950,8072,7947,7949,7951,8073,8074,8075,8076,8077,8078,8079,7954,7956,7955
+      ,7957,7962,7964,7963,7965,7970,7972,7974,8080,7971,7973,7975,8081,8082,8083,8084,8085,8086,8087,7978
+      ,7980,7982,8088,7979,7981,7983,8089,8090,8091,8092,8093,8094,8095,7986,7988,7990,7987,7989,7991,7994
+      ,7996,7998,7995,7997,7999,8002,8004,8003,8005,8010,8012,8011,8013,8018,8020,8022,8019,8021,8023,8027
+      ,8029,8031,8034,8036,8038,8096,8035,8037,8039,8097,8098,8099,8100,8101,8102,8103,8042,8044,8046,8104
+      ,8043,8045,8047,8105,8106,8107,8108,8109,8110,8111,8114,8130,8178,8119,8141,8142,8143,8135,8183,8157
+      ,8158,8159,8602,8603,8622,8653,8655,8654,8708,8713,8716,8740,8742,8769,8772,8775,8777,8813,8802,8816
+      ,8817,8820,8821,8824,8825,8832,8833,8928,8929,8836,8837,8840,8841,8930,8931,8876,8877,8878,8879,8938
+      ,8939,8940,8941,12436,12364,12366,12368,12370,12372,12374,12376,12378,12380,12382,12384,12386,12389,12391,12393,12400
+      ,12401,12403,12404,12406,12407,12409,12410,12412,12413,12446,12532,12460,12462,12464,12466,12468,12470,12472,12474,12476
+      ,12478,12480,12482,12485,12487,12489,12496,12497,12499,12500,12502,12503,12505,12506,12508,12509,12535,12536,12537,12538
+      ,12542};}
+
+    private static int[] getDecompIdx() { return new int[] {160
+      ,168,170,175,178,179,180,181,184,185,186,188,189,190,192,193,194,195,196,197,199
+      ,200,201,202,203,204,205,206,207,209,210,211,212,213,214,217,218,219,220,221,224
+      ,225,226,227,228,229,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246
+      ,249,250,251,252,253,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269
+      ,270,271,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291
+      ,292,293,296,297,298,299,300,301,302,303,304,306,307,308,309,310,311,313,314,315
+      ,316,317,318,319,320,323,324,325,326,327,328,329,332,333,334,335,336,337,340,341
+      ,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,360,361,362,363
+      ,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383
+      ,416,417,431,432,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467
+      ,468,469,470,471,472,473,474,475,476,478,479,480,481,482,483,486,487,488,489,490
+      ,491,492,493,494,495,496,497,498,499,500,501,504,505,506,507,508,509,510,511,512
+      ,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532
+      ,533,534,535,536,537,538,539,542,543,550,551,552,553,554,555,556,557,558,559,560
+      ,561,562,563,688,689,690,691,692,693,694,695,696,728,729,730,731,732,733,736,737
+      ,738,739,740,832,833,835,836,884,890,894,900,901,902,903,904,905,906,908,910,911
+      ,912,938,939,940,941,942,943,944,970,971,972,973,974,976,977,978,979,980,981,982
+      ,1008,1009,1010,1012,1013,1017,1024,1025,1027,1031,1036,1037,1038,1049,1081,1104,1105,1107,1111,1116
+      ,1117,1118,1142,1143,1217,1218,1232,1233,1234,1235,1238,1239,1242,1243,1244,1245,1246,1247,1250,1251
+      ,1252,1253,1254,1255,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1272,1273,1415,1570
+      ,1571,1572,1573,1574,1653,1654,1655,1656,1728,1730,1747,2345,2353,2356,2392,2393,2394,2395,2396,2397
+      ,2398,2399,2507,2508,2524,2525,2527,2611,2614,2649,2650,2651,2654,2888,2891,2892,2908,2909,2964,3018
+      ,3019,3020,3144,3264,3271,3272,3274,3275,3402,3403,3404,3546,3548,3549,3550,3635,3763,3804,3805,3852
+      ,3907,3917,3922,3927,3932,3945,3955,3957,3958,3959,3960,3961,3969,3987,3997,4002,4007,4012,4025,4134
+      ,4348,6918,6920,6922,6924,6926,6930,6971,6973,6976,6977,6979,7468,7469,7470,7472,7473,7474,7475,7476
+      ,7477,7478,7479,7480,7481,7482,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497
+      ,7498,7499,7500,7501,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518
+      ,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7544,7579,7580,7581,7582,7583,7584,7585
+      ,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605
+      ,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689
+      ,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709
+      ,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729
+      ,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749
+      ,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769
+      ,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789
+      ,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809
+      ,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829
+      ,7830,7831,7832,7833,7834,7835,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853
+      ,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873
+      ,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893
+      ,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913
+      ,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7936,7937,7938,7939
+      ,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961
+      ,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983
+      ,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003
+      ,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031
+      ,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051
+      ,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073
+      ,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093
+      ,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113
+      ,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,8128,8129,8130,8131,8132,8134,8135
+      ,8136,8137,8138,8139,8140,8141,8142,8143,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8157,8158
+      ,8159,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8175,8178,8179,8180
+      ,8182,8183,8184,8185,8186,8187,8188,8189,8190,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202
+      ,8209,8215,8228,8229,8230,8239,8243,8244,8246,8247,8252,8254,8263,8264,8265,8279,8287,8304,8305,8308
+      ,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8324,8325,8326,8327,8328
+      ,8329,8330,8331,8332,8333,8334,8336,8337,8338,8339,8340,8360,8448,8449,8450,8451,8453,8454,8455,8457
+      ,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8470,8473,8474,8475,8476,8477,8480,8481,8482
+      ,8484,8486,8488,8490,8491,8492,8493,8495,8496,8497,8499,8500,8501,8502,8503,8504,8505,8507,8508,8509
+      ,8510,8511,8512,8517,8518,8519,8520,8521,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542
+      ,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562
+      ,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8602,8603,8622,8653,8654,8655,8708
+      ,8713,8716,8740,8742,8748,8749,8751,8752,8769,8772,8775,8777,8800,8802,8813,8814,8815,8816,8817,8820
+      ,8821,8824,8825,8832,8833,8836,8837,8840,8841,8876,8877,8878,8879,8928,8929,8930,8931,8938,8939,8940
+      ,8941,9001,9002,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328
+      ,9329,9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348
+      ,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368
+      ,9369,9370,9371,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388
+      ,9389,9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,9407,9408
+      ,9409,9410,9411,9412,9413,9414,9415,9416,9417,9418,9419,9420,9421,9422,9423,9424,9425,9426,9427,9428
+      ,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448
+      ,9449,9450,10764,10868,10869,10870,10972,11631,11935,12019,12032,12033,12034,12035,12036,12037,12038,12039,12040,12041
+      ,12042,12043,12044,12045,12046,12047,12048,12049,12050,12051,12052,12053,12054,12055,12056,12057,12058,12059,12060,12061
+      ,12062,12063,12064,12065,12066,12067,12068,12069,12070,12071,12072,12073,12074,12075,12076,12077,12078,12079,12080,12081
+      ,12082,12083,12084,12085,12086,12087,12088,12089,12090,12091,12092,12093,12094,12095,12096,12097,12098,12099,12100,12101
+      ,12102,12103,12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115,12116,12117,12118,12119,12120,12121
+      ,12122,12123,12124,12125,12126,12127,12128,12129,12130,12131,12132,12133,12134,12135,12136,12137,12138,12139,12140,12141
+      ,12142,12143,12144,12145,12146,12147,12148,12149,12150,12151,12152,12153,12154,12155,12156,12157,12158,12159,12160,12161
+      ,12162,12163,12164,12165,12166,12167,12168,12169,12170,12171,12172,12173,12174,12175,12176,12177,12178,12179,12180,12181
+      ,12182,12183,12184,12185,12186,12187,12188,12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201
+      ,12202,12203,12204,12205,12206,12207,12208,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221
+      ,12222,12223,12224,12225,12226,12227,12228,12229,12230,12231,12232,12233,12234,12235,12236,12237,12238,12239,12240,12241
+      ,12242,12243,12244,12245,12288,12342,12344,12345,12346,12364,12366,12368,12370,12372,12374,12376,12378,12380,12382,12384
+      ,12386,12389,12391,12393,12400,12401,12403,12404,12406,12407,12409,12410,12412,12413,12436,12443,12444,12446,12447,12460
+      ,12462,12464,12466,12468,12470,12472,12474,12476,12478,12480,12482,12485,12487,12489,12496,12497,12499,12500,12502,12503
+      ,12505,12506,12508,12509,12532,12535,12536,12537,12538,12542,12543,12593,12594,12595,12596,12597,12598,12599,12600,12601
+      ,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621
+      ,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641
+      ,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661
+      ,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681
+      ,12682,12683,12684,12685,12686,12690,12691,12692,12693,12694,12695,12696,12697,12698,12699,12700,12701,12702,12703,12800
+      ,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820
+      ,12821,12822,12823,12824,12825,12826,12827,12828,12829,12830,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841
+      ,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12858,12859,12860,12861
+      ,12862,12863,12864,12865,12866,12867,12880,12881,12882,12883,12884,12885,12886,12887,12888,12889,12890,12891,12892,12893
+      ,12894,12895,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913
+      ,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926,12928,12929,12930,12931,12932,12933,12934
+      ,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954
+      ,12955,12956,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973,12974
+      ,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990,12991,12992,12993,12994
+      ,12995,12996,12997,12998,12999,13000,13001,13002,13003,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014
+      ,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,13030,13031,13032,13033,13034
+      ,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053,13054
+      ,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075
+      ,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095
+      ,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111,13112,13113,13114,13115
+      ,13116,13117,13118,13119,13120,13121,13122,13123,13124,13125,13126,13127,13128,13129,13130,13131,13132,13133,13134,13135
+      ,13136,13137,13138,13139,13140,13141,13142,13143,13144,13145,13146,13147,13148,13149,13150,13151,13152,13153,13154,13155
+      ,13156,13157,13158,13159,13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170,13171,13172,13173,13174,13175
+      ,13176,13177,13178,13179,13180,13181,13182,13183,13184,13185,13186,13187,13188,13189,13190,13191,13192,13193,13194,13195
+      ,13196,13197,13198,13199,13200,13201,13202,13203,13204,13205,13206,13207,13208,13209,13210,13211,13212,13213,13214,13215
+      ,13216,13217,13218,13219,13220,13221,13222,13223,13224,13225,13226,13227,13228,13229,13230,13231,13232,13233,13234,13235
+      ,13236,13237,13238,13239,13240,13241,13242,13243,13244,13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255
+      ,13256,13257,13258,13259,13260,13261,13262,13263,13264,13265,13266,13267,13268,13269,13270,13271,13272,13273,13274,13275
+      ,13276,13277,13278,13279,13280,13281,13282,13283,13284,13285,13286,13287,13288,13289,13290,13291,13292,13293,13294,13295
+      ,13296,13297,13298,13299,13300,13301,13302,13303,13304,13305,13306,13307,13308,13309,13310,13311,63744,63745,63746,63747
+      ,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767
+      ,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787
+      ,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,63801,63802,63803,63804,63805,63806,63807
+      ,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827
+      ,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847
+      ,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867
+      ,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887
+      ,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907
+      ,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927
+      ,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947
+      ,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967
+      ,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987
+      ,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007
+      ,64008,64009,64010,64011,64012,64013,64016,64018,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64032,64034
+      ,64037,64038,64042,64043,64044,64045,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061
+      ,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081
+      ,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101
+      ,64102,64103,64104,64105,64106,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126
+      ,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146
+      ,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166
+      ,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186
+      ,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206
+      ,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276
+      ,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64297,64298,64299,64300,64301,64302
+      ,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327
+      ,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347
+      ,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367
+      ,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387
+      ,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407
+      ,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427
+      ,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480
+      ,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500
+      ,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520
+      ,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540
+      ,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560
+      ,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580
+      ,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600
+      ,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620
+      ,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640
+      ,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660
+      ,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680
+      ,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700
+      ,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720
+      ,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740
+      ,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760
+      ,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780
+      ,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800
+      ,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820
+      ,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858
+      ,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878
+      ,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898
+      ,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920
+      ,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940
+      ,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960
+      ,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65020
+      ,65040,65041,65042,65043,65044,65045,65046,65047,65048,65049,65072,65073,65074,65075,65076,65077,65078,65079,65080,65081
+      ,65082,65083,65084,65085,65086,65087,65088,65089,65090,65091,65092,65095,65096,65097,65098,65099,65100,65101,65102,65103
+      ,65104,65105,65106,65108,65109,65110,65111,65112,65113,65114,65115,65116,65117,65118,65119,65120,65121,65122,65123,65124
+      ,65125,65126,65128,65129,65130,65131,65136,65137,65138,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151
+      ,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171
+      ,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191
+      ,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211
+      ,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231
+      ,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251
+      ,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271
+      ,65272,65273,65274,65275,65276,65281,65282,65283,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295
+      ,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315
+      ,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335
+      ,65336,65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355
+      ,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65374,65375
+      ,65376,65377,65378,65379,65380,65381,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395
+      ,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415
+      ,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435
+      ,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455
+      ,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478
+      ,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500,65504,65505,65506,65507
+      ,65508,65509,65510,65512,65513,65514,65515,65516,65517,65518,119134,119135,119136,119137,119138,119139,119140,119227,119228,119229
+      ,119230,119231,119232,119808,119809,119810,119811,119812,119813,119814,119815,119816,119817,119818,119819,119820,119821,119822,119823,119824
+      ,119825,119826,119827,119828,119829,119830,119831,119832,119833,119834,119835,119836,119837,119838,119839,119840,119841,119842,119843,119844
+      ,119845,119846,119847,119848,119849,119850,119851,119852,119853,119854,119855,119856,119857,119858,119859,119860,119861,119862,119863,119864
+      ,119865,119866,119867,119868,119869,119870,119871,119872,119873,119874,119875,119876,119877,119878,119879,119880,119881,119882,119883,119884
+      ,119885,119886,119887,119888,119889,119890,119891,119892,119894,119895,119896,119897,119898,119899,119900,119901,119902,119903,119904,119905
+      ,119906,119907,119908,119909,119910,119911,119912,119913,119914,119915,119916,119917,119918,119919,119920,119921,119922,119923,119924,119925
+      ,119926,119927,119928,119929,119930,119931,119932,119933,119934,119935,119936,119937,119938,119939,119940,119941,119942,119943,119944,119945
+      ,119946,119947,119948,119949,119950,119951,119952,119953,119954,119955,119956,119957,119958,119959,119960,119961,119962,119963,119964,119966
+      ,119967,119970,119973,119974,119977,119978,119979,119980,119982,119983,119984,119985,119986,119987,119988,119989,119990,119991,119992,119993
+      ,119995,119997,119998,119999,120000,120001,120002,120003,120005,120006,120007,120008,120009,120010,120011,120012,120013,120014,120015,120016
+      ,120017,120018,120019,120020,120021,120022,120023,120024,120025,120026,120027,120028,120029,120030,120031,120032,120033,120034,120035,120036
+      ,120037,120038,120039,120040,120041,120042,120043,120044,120045,120046,120047,120048,120049,120050,120051,120052,120053,120054,120055,120056
+      ,120057,120058,120059,120060,120061,120062,120063,120064,120065,120066,120067,120068,120069,120071,120072,120073,120074,120077,120078,120079
+      ,120080,120081,120082,120083,120084,120086,120087,120088,120089,120090,120091,120092,120094,120095,120096,120097,120098,120099,120100,120101
+      ,120102,120103,120104,120105,120106,120107,120108,120109,120110,120111,120112,120113,120114,120115,120116,120117,120118,120119,120120,120121
+      ,120123,120124,120125,120126,120128,120129,120130,120131,120132,120134,120138,120139,120140,120141,120142,120143,120144,120146,120147,120148
+      ,120149,120150,120151,120152,120153,120154,120155,120156,120157,120158,120159,120160,120161,120162,120163,120164,120165,120166,120167,120168
+      ,120169,120170,120171,120172,120173,120174,120175,120176,120177,120178,120179,120180,120181,120182,120183,120184,120185,120186,120187,120188
+      ,120189,120190,120191,120192,120193,120194,120195,120196,120197,120198,120199,120200,120201,120202,120203,120204,120205,120206,120207,120208
+      ,120209,120210,120211,120212,120213,120214,120215,120216,120217,120218,120219,120220,120221,120222,120223,120224,120225,120226,120227,120228
+      ,120229,120230,120231,120232,120233,120234,120235,120236,120237,120238,120239,120240,120241,120242,120243,120244,120245,120246,120247,120248
+      ,120249,120250,120251,120252,120253,120254,120255,120256,120257,120258,120259,120260,120261,120262,120263,120264,120265,120266,120267,120268
+      ,120269,120270,120271,120272,120273,120274,120275,120276,120277,120278,120279,120280,120281,120282,120283,120284,120285,120286,120287,120288
+      ,120289,120290,120291,120292,120293,120294,120295,120296,120297,120298,120299,120300,120301,120302,120303,120304,120305,120306,120307,120308
+      ,120309,120310,120311,120312,120313,120314,120315,120316,120317,120318,120319,120320,120321,120322,120323,120324,120325,120326,120327,120328
+      ,120329,120330,120331,120332,120333,120334,120335,120336,120337,120338,120339,120340,120341,120342,120343,120344,120345,120346,120347,120348
+      ,120349,120350,120351,120352,120353,120354,120355,120356,120357,120358,120359,120360,120361,120362,120363,120364,120365,120366,120367,120368
+      ,120369,120370,120371,120372,120373,120374,120375,120376,120377,120378,120379,120380,120381,120382,120383,120384,120385,120386,120387,120388
+      ,120389,120390,120391,120392,120393,120394,120395,120396,120397,120398,120399,120400,120401,120402,120403,120404,120405,120406,120407,120408
+      ,120409,120410,120411,120412,120413,120414,120415,120416,120417,120418,120419,120420,120421,120422,120423,120424,120425,120426,120427,120428
+      ,120429,120430,120431,120432,120433,120434,120435,120436,120437,120438,120439,120440,120441,120442,120443,120444,120445,120446,120447,120448
+      ,120449,120450,120451,120452,120453,120454,120455,120456,120457,120458,120459,120460,120461,120462,120463,120464,120465,120466,120467,120468
+      ,120469,120470,120471,120472,120473,120474,120475,120476,120477,120478,120479,120480,120481,120482,120483,120484,120485,120488,120489,120490
+      ,120491,120492,120493,120494,120495,120496,120497,120498,120499,120500,120501,120502,120503,120504,120505,120506,120507,120508,120509,120510
+      ,120511,120512,120513,120514,120515,120516,120517,120518,120519,120520,120521,120522,120523,120524,120525,120526,120527,120528,120529,120530
+      ,120531,120532,120533,120534,120535,120536,120537,120538,120539,120540,120541,120542,120543,120544,120545,120546,120547,120548,120549,120550
+      ,120551,120552,120553,120554,120555,120556,120557,120558,120559,120560,120561,120562,120563,120564,120565,120566,120567,120568,120569,120570
+      ,120571,120572,120573,120574,120575,120576,120577,120578,120579,120580,120581,120582,120583,120584,120585,120586,120587,120588,120589,120590
+      ,120591,120592,120593,120594,120595,120596,120597,120598,120599,120600,120601,120602,120603,120604,120605,120606,120607,120608,120609,120610
+      ,120611,120612,120613,120614,120615,120616,120617,120618,120619,120620,120621,120622,120623,120624,120625,120626,120627,120628,120629,120630
+      ,120631,120632,120633,120634,120635,120636,120637,120638,120639,120640,120641,120642,120643,120644,120645,120646,120647,120648,120649,120650
+      ,120651,120652,120653,120654,120655,120656,120657,120658,120659,120660,120661,120662,120663,120664,120665,120666,120667,120668,120669,120670
+      ,120671,120672,120673,120674,120675,120676,120677,120678,120679,120680,120681,120682,120683,120684,120685,120686,120687,120688,120689,120690
+      ,120691,120692,120693,120694,120695,120696,120697,120698,120699,120700,120701,120702,120703,120704,120705,120706,120707,120708,120709,120710
+      ,120711,120712,120713,120714,120715,120716,120717,120718,120719,120720,120721,120722,120723,120724,120725,120726,120727,120728,120729,120730
+      ,120731,120732,120733,120734,120735,120736,120737,120738,120739,120740,120741,120742,120743,120744,120745,120746,120747,120748,120749,120750
+      ,120751,120752,120753,120754,120755,120756,120757,120758,120759,120760,120761,120762,120763,120764,120765,120766,120767,120768,120769,120770
+      ,120771,120772,120773,120774,120775,120776,120777,120778,120779,120782,120783,120784,120785,120786,120787,120788,120789,120790,120791,120792
+      ,120793,120794,120795,120796,120797,120798,120799,120800,120801,120802,120803,120804,120805,120806,120807,120808,120809,120810,120811,120812
+      ,120813,120814,120815,120816,120817,120818,120819,120820,120821,120822,120823,120824,120825,120826,120827,120828,120829,120830,120831,194560
+      ,194561,194562,194563,194564,194565,194566,194567,194568,194569,194570,194571,194572,194573,194574,194575,194576,194577,194578,194579,194580
+      ,194581,194582,194583,194584,194585,194586,194587,194588,194589,194590,194591,194592,194593,194594,194595,194596,194597,194598,194599,194600
+      ,194601,194602,194603,194604,194605,194606,194607,194608,194609,194610,194611,194612,194613,194614,194615,194616,194617,194618,194619,194620
+      ,194621,194622,194623,194624,194625,194626,194627,194628,194629,194630,194631,194632,194633,194634,194635,194636,194637,194638,194639,194640
+      ,194641,194642,194643,194644,194645,194646,194647,194648,194649,194650,194651,194652,194653,194654,194655,194656,194657,194658,194659,194660
+      ,194661,194662,194663,194664,194665,194666,194667,194668,194669,194670,194671,194672,194673,194674,194675,194676,194677,194678,194679,194680
+      ,194681,194682,194683,194684,194685,194686,194687,194688,194689,194690,194691,194692,194693,194694,194695,194696,194697,194698,194699,194700
+      ,194701,194702,194703,194704,194705,194706,194707,194708,194709,194710,194711,194712,194713,194714,194715,194716,194717,194718,194719,194720
+      ,194721,194722,194723,194724,194725,194726,194727,194728,194729,194730,194731,194732,194733,194734,194735,194736,194737,194738,194739,194740
+      ,194741,194742,194743,194744,194745,194746,194747,194748,194749,194750,194751,194752,194753,194754,194755,194756,194757,194758,194759,194760
+      ,194761,194762,194763,194764,194765,194766,194767,194768,194769,194770,194771,194772,194773,194774,194775,194776,194777,194778,194779,194780
+      ,194781,194782,194783,194784,194785,194786,194787,194788,194789,194790,194791,194792,194793,194794,194795,194796,194797,194798,194799,194800
+      ,194801,194802,194803,194804,194805,194806,194807,194808,194809,194810,194811,194812,194813,194814,194815,194816,194817,194818,194819,194820
+      ,194821,194822,194823,194824,194825,194826,194827,194828,194829,194830,194831,194832,194833,194834,194835,194836,194837,194838,194839,194840
+      ,194841,194842,194843,194844,194845,194846,194847,194848,194849,194850,194851,194852,194853,194854,194855,194856,194857,194858,194859,194860
+      ,194861,194862,194863,194864,194865,194866,194867,194868,194869,194870,194871,194872,194873,194874,194875,194876,194877,194878,194879,194880
+      ,194881,194882,194883,194884,194885,194886,194887,194888,194889,194890,194891,194892,194893,194894,194895,194896,194897,194898,194899,194900
+      ,194901,194902,194903,194904,194905,194906,194907,194908,194909,194910,194911,194912,194913,194914,194915,194916,194917,194918,194919,194920
+      ,194921,194922,194923,194924,194925,194926,194927,194928,194929,194930,194931,194932,194933,194934,194935,194936,194937,194938,194939,194940
+      ,194941,194942,194943,194944,194945,194946,194947,194948,194949,194950,194951,194952,194953,194954,194955,194956,194957,194958,194959,194960
+      ,194961,194962,194963,194964,194965,194966,194967,194968,194969,194970,194971,194972,194973,194974,194975,194976,194977,194978,194979,194980

[... 1666 lines stripped ...]