diff --git a/interface/future.retro b/interface/future.retro index c1e04c9..831c04c 100644 --- a/interface/future.retro +++ b/interface/future.retro @@ -1,4 +1,16 @@ ~~~ +:gc (q-) &Heap swap v:preserve ; + +'NextArray var +'Arrays d:create + #513 #12 n:mul allot + + +:aa:temp (a-a) @NextArray dup #12 [ drop #0 dup !NextArray ] if + #513 n:mul &Arrays n:add over a:length n:inc copy + @NextArray #513 n:mul &Arrays n:add + &NextArray v:inc ; + :aa:make (...n-a) here [ dup comma &comma times ] dip ; :aa:map @@ -49,4 +61,8 @@ :aa:first (a-n) #0 a:fetch ; :aa:last (a-n) dup a:length n:dec a:fetch ; + +:as:first aa:first ; +:as:last aa:last ; +:as:index/c aa:index ; ~~~ diff --git a/vm/nga-c/image.c b/vm/nga-c/image.c index 3961544..3b26188 100644 --- a/vm/nga-c/image.c +++ b/vm/nga-c/image.c @@ -10,8 +10,8 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif -CELL ngaImageCells = 19824; -CELL ngaImage[] = { 1793,19331,19779,19823,202301,410,382,1242,1535,0,10,1,10,2,10,3,10,4,10, +CELL ngaImageCells = 26134; +CELL ngaImage[] = { 1793,25641,26089,26133,202301,410,382,1242,1535,0,10,1,10,2,10,3,10,4,10, 5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234,1,2575, 85000450,1,656912,161,178,268505089,63,62,285281281,0,63,2063,10,101384453,0,9,10,68485378,255,18350338, @@ -20,8 +20,8 @@ CELL ngaImage[] = { 1793,19331,19779,19823,202301,410,382,1242,1535,0,10,1,10,2, 101777669,1,17565186,107,524545,111,64,167838467,-1,134287105,3,59,659457,3,459023,128,2049,56,25,2049, 128,1793,135,2049,135,117506307,0,128,0,524545,26,133,168820993,0,147,1642241,147,134283523,11,133, 1793,128,524545,2049,128,1793,128,16846593,147,161,178,1793,64,16846593,147,133,178,1793,64,7, - 10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19586,17108737,3,2,524559,128,2049,128, - 2049,128,524545,0,128,524545,0,128,2049,142,168820998,2,18567,1242,167841793,211,9,17826049,0,211, + 10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,25896,17108737,3,2,524559,128,2049,128, + 2049,128,524545,0,128,524545,0,128,2049,142,168820998,2,24877,1242,167841793,211,9,17826049,0,211, 2,15,25,524546,188,134287105,212,116,2305,213,459023,221,134287361,212,216,659201,211,10,659969,7, 2049,56,25,17694978,58,237,9,84152833,48,319750404,236,117507601,239,184618754,45,25,16974851,-1,168886532,1, 134284289,1,252,134284289,0,239,660227,32,0,0,115,105,103,105,108,58,105,0,285278479,269, @@ -170,7 +170,7 @@ CELL ngaImage[] = { 1793,19331,19779,19823,202301,410,382,1242,1535,0,10,1,10,2, 110,58,105,110,99,0,659713,1,10,3114,3139,166,16180,210720197721,110,58,100,101,99,0, 659969,1,10,3128,3158,166,16180,8246617666422322998,110,58,98,101,116,119,101,101,110,63,0,67503109, 1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,166,16180,249861296566813883,83,99, - 111,112,101,76,105,115,116,0,19681,19735,10,3172,3198,166,16180,5864091,123,123,0,2049, + 111,112,101,76,105,115,116,0,25991,26045,10,3172,3198,166,16180,5864091,123,123,0,2049, 1576,2,1,3187,2049,59,16,10,3190,3225,166,16180,-6305314778776785742,45,45,45,114,101,118,101, 97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,166,16180,5864159,125, 125,0,1,3187,2049,56,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, @@ -228,7 +228,7 @@ CELL ngaImage[] = { 1793,19331,19779,19823,202301,410,382,1242,1535,0,10,1,10,2, 10,4239,4297,154,16180,-4600587576916820603,84,101,109,112,83,116,114,105,110,103,115,0,32,4280, 4317,154,16180,7474516786580364824,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,4298, 4331,166,16180,229440420829967,83,84,82,73,78,71,83,0,2049,1545,3841,4297,3841,4317,19,18, - 10,4318,4353,154,0,0,67,117,114,114,101,110,116,0,18,10,4340,4370,166,0, + 10,4318,4353,154,0,0,67,117,114,114,101,110,116,0,22,10,4340,4370,166,0, 0,115,58,112,111,105,110,116,101,114,0,3841,4353,3841,4317,19,2049,4331,17,10, 4355,4391,166,0,0,115,58,110,101,120,116,0,1,4353,2049,3864,3841,4353,3841,4297, 11,1793,4407,1,0,4097,4353,10,1,4402,9,10,4318,4423,166,16180,6953962777192,115,58,116, @@ -860,146 +860,461 @@ CELL ngaImage[] = { 1793,19331,19779,19823,202301,410,382,1242,1535,0,10,1,10,2, 58,109,117,108,0,19,10,16913,16937,166,512000,210720197872,110,58,100,105,118,0,197652,10, 16926,16950,166,512000,210720207853,110,58,109,111,100,0,788,10,16939,16966,166,512000,7572651751048528,110,58, 100,105,118,109,111,100,0,20,10,16952,16979,166,0,210709067314,99,111,109,109,97,0, - 2049,128,10,16968,16990,166,0,5863407,103,99,0,1,3,4,2049,3967,10,16982,17009,166, - 0,229458982995167,97,97,58,109,97,107,101,0,2049,1977,1793,17021,2,2049,16979,1,16979,2049, - 2449,10,1,17013,2049,2229,10,16996,17038,166,0,6953302515007,97,97,58,109,97,112,0,4, - 1793,17068,2049,56,1793,17062,1793,17051,15,67502597,8,10,1,17047,2049,2241,1,37,2049,2241, - 2049,3125,10,1,17045,2049,2449,771,10,1,17041,2049,2241,10,17026,17085,166,0,6953323861585,97, - 115,58,109,97,112,0,2049,17038,10,17073,17103,166,0,249880832490975248,97,97,58,109,105,100, - 100,108,101,0,2049,1977,1793,17127,2,2049,16979,1793,17117,2049,3125,2049,16898,10,1,17112, - 2049,2229,2049,1977,4,2049,4018,10,1,17107,2049,2229,2,1,0,16,2049,4423,10,17088, - 17151,166,0,229458982963436,97,97,58,108,101,102,116,0,1,0,4,2049,17103,10,17138,17171, - 166,0,7572146445053471,97,97,58,114,105,103,104,116,0,67502597,2049,102,67502597,2049,16911,4,2049, - 17103,10,17157,17194,166,0,229459687400510,97,115,58,108,101,102,116,0,2049,17151,10,17181,17211, - 166,0,7572169691476913,97,115,58,114,105,103,104,116,0,2049,17171,10,17197,17229,166,0,249881599622948834, - 97,115,58,109,105,100,100,108,101,0,2049,17103,10,17214,17243,154,0,0,67,111, - 117,110,116,0,0,17232,17257,166,0,0,112,114,101,112,97,114,101,0,1,0, - 1,17243,16,10,17244,17276,166,0,0,114,101,115,101,114,118,101,0,4,1,0, - 2049,16979,10,17263,17293,166,0,0,112,97,116,99,104,0,2049,1977,67502597,2049,16911,2049, - 3139,67502597,16,10,17282,17316,166,0,0,99,108,101,97,110,117,112,0,2,2049,4423, - 4,1,0,16,10,17303,17336,166,0,0,109,97,116,99,104,63,0,67502597,11,10, - 17324,17351,166,0,0,114,101,99,111,114,100,0,1,17243,15,2049,16979,10,17339,17370, - 166,0,0,105,116,101,114,97,116,101,0,1793,17382,2049,17336,1,17351,9,1,17243, - 2049,3864,10,1,17372,2049,8681,10,17214,17403,166,0,8246067467232158272,97,97,58,105,110,100,105, - 99,101,115,0,2049,17257,2049,1977,1793,17415,2049,17276,2049,17370,3,10,1,17409,2049,2229, - 2049,17293,2049,17316,10,17387,17438,166,0,7572146434556505,97,97,58,105,110,100,101,120,0,1793, - 17447,2049,17403,1,0,2049,9140,10,1,17440,2049,16990,10,17424,17470,166,0,-3596900463221605921,97,97, - 58,99,111,110,116,97,105,110,115,63,0,4,1,0,4,1793,17488,4,1793,17482, - 67502597,11,10,1,17479,2049,2229,22,10,1,17476,2049,8681,772,10,17452,17512,166,0,-3569332041486845839, - 97,115,58,99,111,110,116,97,105,110,115,63,0,2049,17470,10,17494,17530,166,0, - 249880832217332199,97,97,58,102,105,108,116,101,114,0,1793,17545,67502597,1,25,2049,2229,4,1, - 16979,1,15,2049,64,10,1,17532,2049,8435,2049,1977,1793,17560,67502597,15,2049,16979,2049,8681, - 10,1,17553,2049,2229,2049,1977,67502597,2049,16911,2049,3139,67502597,16,10,17515,17589,166,0,249881599349305785, - 97,115,58,102,105,108,116,101,114,0,2049,17530,10,17574,17606,166,0,7572146430834761,97,97, - 58,102,105,114,115,116,0,1,0,2049,9140,10,17592,17624,166,0,229458982959509,97,97,58, - 108,97,115,116,0,2,2049,8584,2049,3139,2049,9140,10,17611,17644,154,0,0,66,108, - 111,99,107,115,0,0,17632,17660,154,0,0,66,108,111,99,107,70,105,108,101, - 0,0,17645,17671,166,0,0,111,112,101,110,0,3841,17660,4,2049,13441,4097,17644,10, - 17661,17690,166,0,0,99,108,111,115,101,0,3841,17644,2049,13462,10,17679,17705,166,0, - 0,115,101,101,107,0,1,4096,2049,16924,3841,17644,2049,13543,10,17695,17724,166,0,0, - 114,101,97,100,0,1,4,1793,17733,3841,17644,2049,13482,10,1,17728,2049,2449,2049,90, - 10,17714,17751,166,0,0,115,116,111,114,101,0,4,2049,59,10,17740,17766,166,0, - 0,119,114,105,116,101,0,2049,76,2049,4472,97,98,99,100,0,1,17770,2049,4472, - 98,99,100,97,0,1,17779,2049,8417,1,4,1793,17797,3841,17644,2049,13503,10,1,17792, - 2049,2449,10,17611,17822,166,0,-4036225629868593021,98,108,111,99,107,58,115,101,116,45,102,105, - 108,101,0,2049,4500,4097,17660,10,17802,17843,166,0,8246131600073141446,98,108,111,99,107,58,114, - 101,97,100,0,1,0,2049,17671,4,2049,17705,1,1024,1793,17859,2049,17724,2049,17751,10, - 1,17854,2049,2449,3,2049,17690,10,17827,17884,166,0,-4578818303223200395,98,108,111,99,107,58,119, - 114,105,116,101,0,1,3,2049,17671,4,2049,17705,1,1024,1793,17900,2049,56,2049,17766, - 10,1,17895,2049,2449,3,2049,17690,10,17867,17921,166,0,229480770855518,115,58,115,112,108,105, - 116,0,2049,7184,10,17908,17947,166,0,6119006473764520940,115,58,115,112,108,105,116,45,111,110, - 45,115,116,114,105,110,103,0,2049,7218,10,17924,17972,166,0,-2157201768052001381,115,58,99,111, - 110,116,97,105,110,115,45,99,104,97,114,63,0,2049,4857,10,17950,17999,166,0, - -6456228026363444588,115,58,99,111,110,116,97,105,110,115,45,115,116,114,105,110,103,63,0, - 2049,5286,10,17975,18026,166,0,-3160266536000611262,97,58,99,111,110,116,97,105,110,115,45,115, - 116,114,105,110,103,63,0,2049,9003,10,18002,18045,166,0,8246014626430519194,97,58,105,110,100, - 101,120,45,111,102,0,2049,9195,10,18029,18071,166,0,-5025353456659034242,97,58,105,110,100,101, - 120,45,111,102,45,115,116,114,105,110,103,0,2049,9320,10,18048,18090,166,0,8246850033149754348, - 115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,18074,18116,166,0,-94300875658333296,115, - 58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,5069,10, - 18093,18135,166,0,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0,2049,2075,4,2049, - 128,2049,128,10,18119,18161,166,0,-3421095308458227740,100,111,117,98,108,101,58,102,101,116,99, - 104,0,2049,56,4,15,10,18143,18184,166,0,-3421095308442276665,100,111,117,98,108,101,58,115, - 116,111,114,101,0,1,17,2049,2229,2049,59,16,10,18166,18210,166,0,-3421095308461432127,100,111, - 117,98,108,101,58,99,111,110,115,116,0,2049,18135,1,18161,2049,8460,10,18192,18234, - 166,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109,5,67503109,6,10, - 18217,18255,166,0,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0,67503109,67503109,5,5, - 8,6,6,10,18239,18279,166,0,8246228896775123014,100,111,117,98,108,101,58,115,105,112,0, - 1,2217,2049,2229,2049,18255,10,18263,18302,166,0,0,109,101,109,58,105,110,118,111, - 107,101,0,1,15,2049,10655,2049,10636,10,18286,0,154,0,0,65,76,76,79,67, - 0,18309,1,154,0,0,70,82,69,69,0,18320,2,154,0,0,83,84,79,82, - 69,0,18330,3,154,0,0,70,69,84,67,72,0,18341,4,154,0,0,82,69, - 83,73,90,69,0,18263,18379,166,0,249897943727936361,109,101,109,58,97,108,108,111,99,0, - 1,0,2049,18302,10,18364,18399,166,0,249897943749573803,109,101,109,58,115,116,111,114,101,0, - 1,2,2049,18302,10,18384,18419,166,0,249897943733622728,109,101,109,58,102,101,116,99,104,0, - 1,3,2049,18302,10,18404,18438,166,0,7572664961638592,109,101,109,58,102,114,101,101,0,1, - 1,2049,18302,10,18424,18459,166,0,8246632143679146032,109,101,109,58,114,101,115,105,122,101,0, - 1,4,2049,18302,10,18443,18479,166,0,249897943730056489,109,101,109,58,99,101,108,108,43,0, - 1,8,19,17,10,18464,18506,166,0,1050530996183190288,109,101,109,58,102,101,116,99,104,45, - 100,111,117,98,108,101,0,2,1,1,2049,18479,15,5,2049,18419,6,10,18484,18539, - 166,0,1730340976492540563,109,101,109,58,115,116,111,114,101,45,100,111,117,98,108,101,0, - 5,5,2049,2217,1,1,2049,18479,6,2049,18399,6,2049,18399,10,18517,18563,166,19350,193470948, - 84,73,66,0,1,7,15,10,18554,18583,166,19350,8246457295145463473,105,109,97,103,101,58,115, - 97,118,101,0,1,1000,2049,10655,2049,10636,10,18567,18601,166,0,0,101,100,105,116, - 63,0,2,1793,18608,1,8,11,10,1,18604,1793,18616,1,127,11,10,1,18612,2049, - 2255,22,10,18590,18634,166,0,0,103,97,116,104,101,114,0,2049,18601,1,15,1, - 4134,2049,64,10,18622,18654,166,0,0,99,121,99,108,101,0,2049,10985,2049,2217,4, - 8,2049,2644,25,3,2049,18634,1,18654,7,10,18567,18687,166,19350,-4557881830897049127,112,97,114,115, - 101,45,117,110,116,105,108,0,1793,18699,2049,4451,2049,4234,2049,18654,771,2049,4096,10, - 1,18689,2049,4260,10,18670,18715,166,19350,210726130610,115,58,103,101,116,0,1793,18737,1793,18723, - 1,13,11,10,1,18719,1793,18731,1,10,11,10,1,18727,2049,2255,22,10,1,18717, - 2049,18687,10,18704,18753,166,19350,210708950412,99,108,101,97,114,0,2049,4472,92,94,91,50, - 74,92,94,91,48,59,48,72,0,1,18755,2049,8246,2049,10761,10,18742,18787,154,19350, - 6952575930081,78,111,69,99,104,111,0,0,18775,18797,154,0,0,69,79,84,0,0,18788, - 18812,154,0,0,73,103,110,111,114,105,110,103,0,0,18798,18828,166,0,0,105, - 103,110,111,114,105,110,103,63,0,3841,18812,10,18813,18844,166,0,0,118,101,114, - 115,105,111,110,0,3841,4,1,100,20,10,18831,18861,166,0,0,100,111,110,101, - 63,0,2,4097,18797,1793,18870,1,13,11,10,1,18866,1793,18878,1,10,11,10,1, - 18874,1793,18886,1,32,11,10,1,18882,2049,2298,22,22,10,18850,18903,166,0,0,101, - 111,108,63,0,3841,18797,1793,18911,1,13,11,10,1,18907,1793,18919,1,10,11,10, - 1,18915,2049,2255,22,10,18893,18937,166,0,0,118,97,108,105,100,63,0,2,2049, - 102,2049,2812,10,18925,18958,166,0,0,99,104,101,99,107,45,101,111,102,0,2, - 1793,18965,1,-1,11,10,1,18961,1793,18973,1,4,11,10,1,18969,2049,2255,22,1793, - 18983,2049,11052,10,1,18980,9,10,18943,18995,166,0,0,98,115,0,2049,4212,1,2, - 2049,2675,1793,19007,2049,4160,3,10,1,19003,9,2049,4160,3,10,18987,19028,166,0,0, - 99,104,101,99,107,45,98,115,0,2,1793,19035,1,8,11,10,1,19031,1793,19043, - 1,127,11,10,1,19039,2049,2255,22,1793,19053,2049,18995,10,1,19050,9,10,19014,19068, - 166,0,0,99,104,101,99,107,0,2049,18958,2049,19028,10,19057,19088,166,0,0,99, - 104,97,114,97,99,116,101,114,0,2049,10985,2,2049,4134,10,19073,19106,166,0,0, - 98,117,102,102,101,114,0,1793,19116,2049,18563,2049,4234,8,2049,4096,10,1,19108,2049, - 4260,10,19094,19137,166,0,0,114,101,97,100,45,116,111,107,101,110,0,1793,19153, - 1793,19148,2049,19088,2049,19068,2049,18861,10,1,19141,2049,2397,10,1,19139,2049,19106,2049,4587, - 10,19121,19171,166,0,0,105,110,112,117,116,0,2049,19137,2049,18937,10,19160,19189,166, - 0,0,112,114,111,99,101,115,115,0,2049,18828,1793,19207,771,2049,18903,1793,19203,1, - 18812,2049,3931,10,1,19198,9,10,1,19193,2049,2862,1,410,1,15,2049,64,10,18775, - 19226,178,19350,5861507,47,47,0,2049,15624,1,18812,2049,3916,10,19218,19245,166,19350,6953343520347,98, - 97,110,110,101,114,0,2049,18844,2049,4472,82,69,84,82,79,32,49,50,32,40, - 37,110,46,37,110,41,92,110,0,1,19249,2049,8246,2049,10761,2049,10837,2049,1545,2049, - 10837,18,2049,1545,2049,4472,37,110,32,77,97,120,44,32,37,110,32,85,115,101, - 100,44,32,37,110,32,70,114,101,101,92,110,0,1,19285,2049,8246,2049,10761,10, - 19233,19331,166,19350,6953744547860,108,105,115,116,101,110,0,3841,18787,1793,19338,2049,19245,10,1, - 19335,2049,72,2049,19171,2049,19189,1,19342,7,10,105,110,116,101,114,102,97,99,101, - 47,114,101,116,114,111,45,117,110,105,120,46,114,101,116,114,111,0,19319,19390, - 154,0,0,83,111,117,114,99,101,115,0,1,19629,0,0,0,0,0,0,0, + 2049,128,10,16968,16990,166,0,5863407,103,99,0,1,3,4,2049,3967,10,16982,17004,166, + 0,5863407,103,99,0,1,3,4,2049,3967,10,16996,17025,154,0,249854361499043587,78,101,120,116, + 65,114,114,97,121,0,0,17010,17038,154,0,6952072343287,65,114,114,97,121,115,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19377, - 19530,166,0,0,107,110,111,119,110,63,0,2,1,19390,2049,9003,10,19518,19547,166, - 0,0,105,110,100,101,120,0,1,19390,4,2049,9320,1,19390,4,2049,9140,10,19536, - 19570,166,0,0,114,101,99,111,114,100,0,2049,4500,2,1,19390,2049,3864,3841,19390, - 1,19390,17,16,10,1793,19627,2049,15559,2049,19530,1793,19595,2049,19547,10,1,19592,1793,19602, - 2049,19570,10,1,19599,2049,64,1793,19615,1,190,1,2,17,8,10,1,19608,2049,2229, - 2049,1576,2049,184,16,2049,11116,10,1,19586,100,105,99,116,45,119,111,114,100,115, - 45,108,105,115,116,105,110,103,46,102,111,114,116,104,0,19319,19667,166,19629,229461403550098, - 100,58,119,111,114,100,115,0,1793,19676,2049,188,2049,10761,2049,10731,10,1,19669,2049, - 8491,10,19654,19699,166,19629,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116,104,0, - 2049,1977,2049,5573,1793,19730,2049,188,2,2049,1977,2049,5286,1793,19719,2049,10761,2049,10731,10, - 1,19714,1793,19725,3,10,1,19723,2049,64,10,1,19705,2049,8491,10,19681,19756,166,19629, - 2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1977, - 2049,5519,1793,19768,2049,10761,2049,10731,10,1,19763,1793,19774,3,10,1,19772,2049,64,10, - 19681,19807,166,19629,2947807019553410009,100,58,119,111,114,100,115,45,98,101,103,105,110,110,105, - 110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,19818,2049,188,2049,19756,10,1, - 19813,2049,8491,10,0 }; + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17026,23207,166,0,229458983251159, + 97,97,58,116,101,109,112,0,3841,17025,2,1,12,1793,23221,3,1,0,2,4097, + 17025,10,1,23214,9,1,513,2049,16924,1,17038,2049,16898,67502597,2049,8584,2049,3125,2049,4018, + 3841,17025,1,513,2049,16924,1,17038,2049,16898,1,17025,2049,3864,10,23194,23267,166,0,229458982995167, + 97,97,58,109,97,107,101,0,2049,1977,1793,23279,2,2049,16979,1,16979,2049,2449,10, + 1,23271,2049,2229,10,23254,23296,166,0,6953302515007,97,97,58,109,97,112,0,4,1793,23326, + 2049,56,1793,23320,1793,23309,15,67502597,8,10,1,23305,2049,2241,1,37,2049,2241,2049,3125, + 10,1,23303,2049,2449,771,10,1,23299,2049,2241,10,23284,23343,166,0,6953323861585,97,115,58, + 109,97,112,0,2049,23296,10,23331,23361,166,0,249880832490975248,97,97,58,109,105,100,100,108, + 101,0,2049,1977,1793,23385,2,2049,16979,1793,23375,2049,3125,2049,16898,10,1,23370,2049,2229, + 2049,1977,4,2049,4018,10,1,23365,2049,2229,2,1,0,16,2049,4423,10,23346,23409,166, + 0,229458982963436,97,97,58,108,101,102,116,0,1,0,4,2049,23361,10,23396,23429,166,0, + 7572146445053471,97,97,58,114,105,103,104,116,0,67502597,2049,102,67502597,2049,16911,4,2049,23361,10, + 23415,23452,166,0,229459687400510,97,115,58,108,101,102,116,0,2049,23409,10,23439,23469,166,0, + 7572169691476913,97,115,58,114,105,103,104,116,0,2049,23429,10,23455,23487,166,0,249881599622948834,97,115, + 58,109,105,100,100,108,101,0,2049,23361,10,23472,23501,154,0,0,67,111,117,110, + 116,0,0,23490,23515,166,0,0,112,114,101,112,97,114,101,0,1,0,1,23501, + 16,10,23502,23534,166,0,0,114,101,115,101,114,118,101,0,4,1,0,2049,16979, + 10,23521,23551,166,0,0,112,97,116,99,104,0,2049,1977,67502597,2049,16911,2049,3139,67502597, + 16,10,23540,23574,166,0,0,99,108,101,97,110,117,112,0,2,2049,4423,4,1, + 0,16,10,23561,23594,166,0,0,109,97,116,99,104,63,0,67502597,11,10,23582,23609, + 166,0,0,114,101,99,111,114,100,0,1,23501,15,2049,16979,10,23597,23628,166,0, + 0,105,116,101,114,97,116,101,0,1793,23640,2049,23594,1,23609,9,1,23501,2049,3864, + 10,1,23630,2049,8681,10,23472,23661,166,0,8246067467232158272,97,97,58,105,110,100,105,99,101, + 115,0,2049,23515,2049,1977,1793,23673,2049,23534,2049,23628,3,10,1,23667,2049,2229,2049,23551, + 2049,23574,10,23645,23696,166,0,7572146434556505,97,97,58,105,110,100,101,120,0,1793,23705,2049, + 23661,1,0,2049,9140,10,1,23698,2049,17004,10,23682,23728,166,0,-3596900463221605921,97,97,58,99, + 111,110,116,97,105,110,115,63,0,4,1,0,4,1793,23746,4,1793,23740,67502597,11, + 10,1,23737,2049,2229,22,10,1,23734,2049,8681,772,10,23710,23770,166,0,-3569332041486845839,97,115, + 58,99,111,110,116,97,105,110,115,63,0,2049,23728,10,23752,23788,166,0,249880832217332199,97, + 97,58,102,105,108,116,101,114,0,1793,23803,67502597,1,25,2049,2229,4,1,16979,1, + 15,2049,64,10,1,23790,2049,8435,2049,1977,1793,23818,67502597,15,2049,16979,2049,8681,10,1, + 23811,2049,2229,2049,1977,67502597,2049,16911,2049,3139,67502597,16,10,23773,23847,166,0,249881599349305785,97,115, + 58,102,105,108,116,101,114,0,2049,23788,10,23832,23864,166,0,7572146430834761,97,97,58,102, + 105,114,115,116,0,1,0,2049,9140,10,23850,23882,166,0,229458982959509,97,97,58,108,97, + 115,116,0,2,2049,8584,2049,3139,2049,9140,10,23869,23904,166,0,7572169677258203,97,115,58,102, + 105,114,115,116,0,2049,23864,10,23890,23920,166,0,229459687396583,97,115,58,108,97,115,116, + 0,2049,23882,10,23907,23939,166,0,8246092782587163933,97,115,58,105,110,100,101,120,47,99,0, + 2049,23696,10,23923,23954,154,0,0,66,108,111,99,107,115,0,0,23942,23970,154,0, + 0,66,108,111,99,107,70,105,108,101,0,0,23955,23981,166,0,0,111,112,101, + 110,0,3841,23970,4,2049,13441,4097,23954,10,23971,24000,166,0,0,99,108,111,115,101, + 0,3841,23954,2049,13462,10,23989,24015,166,0,0,115,101,101,107,0,1,4096,2049,16924, + 3841,23954,2049,13543,10,24005,24034,166,0,0,114,101,97,100,0,1,4,1793,24043,3841, + 23954,2049,13482,10,1,24038,2049,2449,2049,90,10,24024,24061,166,0,0,115,116,111,114, + 101,0,4,2049,59,10,24050,24076,166,0,0,119,114,105,116,101,0,2049,76,2049, + 4472,97,98,99,100,0,1,24080,2049,4472,98,99,100,97,0,1,24089,2049,8417,1, + 4,1793,24107,3841,23954,2049,13503,10,1,24102,2049,2449,10,23923,24132,166,0,-4036225629868593021,98,108, + 111,99,107,58,115,101,116,45,102,105,108,101,0,2049,4500,4097,23970,10,24112,24153, + 166,0,8246131600073141446,98,108,111,99,107,58,114,101,97,100,0,1,0,2049,23981,4,2049, + 24015,1,1024,1793,24169,2049,24034,2049,24061,10,1,24164,2049,2449,3,2049,24000,10,24137,24194, + 166,0,-4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,0,1,3,2049,23981,4, + 2049,24015,1,1024,1793,24210,2049,56,2049,24076,10,1,24205,2049,2449,3,2049,24000,10,24177, + 24231,166,0,229480770855518,115,58,115,112,108,105,116,0,2049,7184,10,24218,24257,166,0,6119006473764520940, + 115,58,115,112,108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,7218, + 10,24234,24282,166,0,-2157201768052001381,115,58,99,111,110,116,97,105,110,115,45,99,104,97, + 114,63,0,2049,4857,10,24260,24309,166,0,-6456228026363444588,115,58,99,111,110,116,97,105,110, + 115,45,115,116,114,105,110,103,63,0,2049,5286,10,24285,24336,166,0,-3160266536000611262,97,58, + 99,111,110,116,97,105,110,115,45,115,116,114,105,110,103,63,0,2049,9003,10, + 24312,24355,166,0,8246014626430519194,97,58,105,110,100,101,120,45,111,102,0,2049,9195,10,24339, + 24381,166,0,-5025353456659034242,97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110, + 103,0,2049,9320,10,24358,24400,166,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102, + 0,2049,4779,10,24384,24426,166,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45, + 115,116,114,105,110,103,0,2049,5069,10,24403,24445,166,0,8246228896775126019,100,111,117,98,108, + 101,58,118,97,114,0,2049,2075,4,2049,128,2049,128,10,24429,24471,166,0,-3421095308458227740,100, + 111,117,98,108,101,58,102,101,116,99,104,0,2049,56,4,15,10,24453,24494,166, + 0,-3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,17,2049,2229,2049, + 59,16,10,24476,24520,166,0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116, + 0,2049,24445,1,24471,2049,8460,10,24502,24544,166,0,-4575607512064199915,100,111,117,98,108,101,58, + 115,119,97,112,0,67503109,5,67503109,6,10,24527,24565,166,0,8246228896775106679,100,111,117,98,108, + 101,58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,24549,24589,166,0,8246228896775123014,100, + 111,117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,24565,10,24573,24612,166, + 0,0,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10655,2049,10636,10, + 24596,0,154,0,0,65,76,76,79,67,0,24619,1,154,0,0,70,82,69,69, + 0,24630,2,154,0,0,83,84,79,82,69,0,24640,3,154,0,0,70,69,84, + 67,72,0,24651,4,154,0,0,82,69,83,73,90,69,0,24573,24689,166,0,249897943727936361, + 109,101,109,58,97,108,108,111,99,0,1,0,2049,24612,10,24674,24709,166,0,249897943749573803, + 109,101,109,58,115,116,111,114,101,0,1,2,2049,24612,10,24694,24729,166,0,249897943733622728, + 109,101,109,58,102,101,116,99,104,0,1,3,2049,24612,10,24714,24748,166,0,7572664961638592, + 109,101,109,58,102,114,101,101,0,1,1,2049,24612,10,24734,24769,166,0,8246632143679146032,109, + 101,109,58,114,101,115,105,122,101,0,1,4,2049,24612,10,24753,24789,166,0,249897943730056489, + 109,101,109,58,99,101,108,108,43,0,1,8,19,17,10,24774,24816,166,0,1050530996183190288, + 109,101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,1, + 2049,24789,15,5,2049,24729,6,10,24794,24849,166,0,1730340976492540563,109,101,109,58,115,116,111, + 114,101,45,100,111,117,98,108,101,0,5,5,2049,2217,1,1,2049,24789,6,2049, + 24709,6,2049,24709,10,24827,24873,166,25660,193470948,84,73,66,0,1,7,15,10,24864,24893, + 166,25660,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10655,2049,10636, + 10,24877,24911,166,0,0,101,100,105,116,63,0,2,1793,24918,1,8,11,10,1, + 24914,1793,24926,1,127,11,10,1,24922,2049,2255,22,10,24900,24944,166,0,0,103,97, + 116,104,101,114,0,2049,24911,1,15,1,4134,2049,64,10,24932,24964,166,0,0,99, + 121,99,108,101,0,2049,10985,2049,2217,4,8,2049,2644,25,3,2049,24944,1,24964,7, + 10,24877,24997,166,25660,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,25009, + 2049,4451,2049,4234,2049,24964,771,2049,4096,10,1,24999,2049,4260,10,24980,25025,166,25660,210726130610, + 115,58,103,101,116,0,1793,25047,1793,25033,1,13,11,10,1,25029,1793,25041,1,10, + 11,10,1,25037,2049,2255,22,10,1,25027,2049,24997,10,25014,25063,166,25660,210708950412,99,108, + 101,97,114,0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,1, + 25065,2049,8246,2049,10761,10,25052,25097,154,25660,6952575930081,78,111,69,99,104,111,0,0,25085, + 25107,154,0,0,69,79,84,0,0,25098,25122,154,0,0,73,103,110,111,114,105, + 110,103,0,0,25108,25138,166,0,0,105,103,110,111,114,105,110,103,63,0,3841, + 25122,10,25123,25154,166,0,0,118,101,114,115,105,111,110,0,3841,4,1,100,20, + 10,25141,25171,166,0,0,100,111,110,101,63,0,2,4097,25107,1793,25180,1,13,11, + 10,1,25176,1793,25188,1,10,11,10,1,25184,1793,25196,1,32,11,10,1,25192,2049, + 2298,22,22,10,25160,25213,166,0,0,101,111,108,63,0,3841,25107,1793,25221,1,13, + 11,10,1,25217,1793,25229,1,10,11,10,1,25225,2049,2255,22,10,25203,25247,166,0, + 0,118,97,108,105,100,63,0,2,2049,102,2049,2812,10,25235,25268,166,0,0,99, + 104,101,99,107,45,101,111,102,0,2,1793,25275,1,-1,11,10,1,25271,1793,25283, + 1,4,11,10,1,25279,2049,2255,22,1793,25293,2049,11052,10,1,25290,9,10,25253,25305, + 166,0,0,98,115,0,2049,4212,1,2,2049,2675,1793,25317,2049,4160,3,10,1,25313, + 9,2049,4160,3,10,25297,25338,166,0,0,99,104,101,99,107,45,98,115,0,2, + 1793,25345,1,8,11,10,1,25341,1793,25353,1,127,11,10,1,25349,2049,2255,22,1793, + 25363,2049,25305,10,1,25360,9,10,25324,25378,166,0,0,99,104,101,99,107,0,2049, + 25268,2049,25338,10,25367,25398,166,0,0,99,104,97,114,97,99,116,101,114,0,2049, + 10985,2,2049,4134,10,25383,25416,166,0,0,98,117,102,102,101,114,0,1793,25426,2049, + 24873,2049,4234,8,2049,4096,10,1,25418,2049,4260,10,25404,25447,166,0,0,114,101,97, + 100,45,116,111,107,101,110,0,1793,25463,1793,25458,2049,25398,2049,25378,2049,25171,10,1, + 25451,2049,2397,10,1,25449,2049,25416,2049,4587,10,25431,25481,166,0,0,105,110,112,117, + 116,0,2049,25447,2049,25247,10,25470,25499,166,0,0,112,114,111,99,101,115,115,0, + 2049,25138,1793,25517,771,2049,25213,1793,25513,1,25122,2049,3931,10,1,25508,9,10,1,25503, + 2049,2862,1,410,1,15,2049,64,10,25085,25536,178,25660,5861507,47,47,0,2049,15624,1, + 25122,2049,3916,10,25528,25555,166,25660,6953343520347,98,97,110,110,101,114,0,2049,25154,2049,4472, + 82,69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,1, + 25559,2049,8246,2049,10761,2049,10837,2049,1545,2049,10837,18,2049,1545,2049,4472,37,110,32,77, + 97,120,44,32,37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,101, + 92,110,0,1,25595,2049,8246,2049,10761,10,25543,25641,166,25660,6953744547860,108,105,115,116,101, + 110,0,3841,25097,1793,25648,2049,25555,10,1,25645,2049,72,2049,25481,2049,25499,1,25652,7, + 10,105,110,116,101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,105, + 120,46,114,101,116,114,111,0,25629,25700,154,0,0,83,111,117,114,99,101,115, + 0,1,25939,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,25687,25840,166,0,0,107,110,111,119,110,63, + 0,2,1,25700,2049,9003,10,25828,25857,166,0,0,105,110,100,101,120,0,1,25700, + 4,2049,9320,1,25700,4,2049,9140,10,25846,25880,166,0,0,114,101,99,111,114,100, + 0,2049,4500,2,1,25700,2049,3864,3841,25700,1,25700,17,16,10,1793,25937,2049,15559,2049, + 25840,1793,25905,2049,25857,10,1,25902,1793,25912,2049,25880,10,1,25909,2049,64,1793,25925,1, + 190,1,2,17,8,10,1,25918,2049,2229,2049,1576,2049,184,16,2049,11116,10,1,25896, + 100,105,99,116,45,119,111,114,100,115,45,108,105,115,116,105,110,103,46,102, + 111,114,116,104,0,25629,25977,166,25939,229461403550098,100,58,119,111,114,100,115,0,1793,25986, + 2049,188,2049,10761,2049,10731,10,1,25979,2049,8491,10,25964,26009,166,25939,-3502157631813457253,100,58,119, + 111,114,100,115,45,119,105,116,104,0,2049,1977,2049,5573,1793,26040,2049,188,2,2049, + 1977,2049,5286,1793,26029,2049,10761,2049,10731,10,1,26024,1793,26035,3,10,1,26033,2049,64, + 10,1,26015,2049,8491,10,25991,26066,166,25939,2818131571306626127,100,105,115,112,108,97,121,45,105, + 102,45,108,101,102,116,0,2,2049,1977,2049,5519,1793,26078,2049,10761,2049,10731,10,1, + 26073,1793,26084,3,10,1,26082,2049,64,10,25991,26117,166,25939,2947807019553410009,100,58,119,111,114, + 100,115,45,98,101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1977, + 2049,5573,1793,26128,2049,188,2049,26066,10,1,26123,2049,8491,10,0 };