{-# LANGUAGE CPP #-} {-# LINE 1 "FreeForm.x" #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DeriveGeneric #-} module Language.Fortran.Lexer.FreeForm where import Data.Data import Data.Typeable import Data.Maybe (isJust, isNothing, fromJust, fromMaybe) import Data.Char (toLower) import Data.Word (Word8) import Control.Monad (join) import Control.Monad.State (get) import GHC.Generics import Language.Fortran.ParserMonad import Language.Fortran.Util.Position import Language.Fortran.Util.FirstParameter import Debug.Trace #if __GLASGOW_HASKELL__ >= 603 #include "ghcconfig.h" #elif defined(__GLASGOW_HASKELL__) #include "config.h" #endif #if __GLASGOW_HASKELL__ >= 503 import Data.Array import Data.Char (ord) import Data.Array.Base (unsafeAt) #else import Array import Char (ord) #endif alex_base :: Array Int Int alex_base = listArray (0,973) [-8,18,132,158,45,-106,-97,-91,-90,-93,-92,-89,-22,-88,-87,-100,-86,-85,-94,-83,-81,-80,153,-75,-84,-76,-2,-73,-71,-82,-66,-69,-68,-79,44,-78,-65,-64,361,389,357,-54,-52,-63,-61,-57,-58,-56,-59,-43,-47,-38,-41,-34,47,-17,-16,-19,-18,-27,37,-20,-15,-14,-29,38,48,124,125,35,49,34,53,41,61,58,62,69,60,76,59,73,72,75,77,64,117,67,68,93,99,121,108,115,129,311,581,582,306,307,314,325,308,312,313,315,318,316,317,320,583,327,321,323,332,334,347,584,586,333,335,340,336,585,339,0,552,342,344,341,776,778,345,507,506,513,508,510,512,0,620,831,857,934,960,1037,1063,1140,1166,1243,1269,1346,1372,1449,1475,1552,1578,1655,1681,1758,1784,1861,1887,1964,1990,2067,2093,2170,2196,2273,2301,589,2376,587,597,2402,607,609,2477,2487,2513,511,563,527,515,514,519,558,557,560,555,561,660,2636,2572,0,662,0,2818,661,0,870,628,0,0,0,0,0,618,0,616,0,0,2781,2809,3026,3054,3129,3157,3232,3260,3335,3363,3438,3466,3541,3569,3644,3672,3747,3775,3850,3878,3953,3981,4056,4084,4159,4187,4262,4290,4365,4393,4468,4496,4571,4599,4674,4702,4777,4805,4880,4908,4983,5011,5086,5114,5189,5217,5292,5320,5395,5423,5498,5526,5601,5629,5704,5732,5807,5835,5910,5938,6013,6041,6116,6144,6219,6247,6322,6350,6425,6453,6528,6556,6631,6659,6734,6762,6837,6865,6940,6968,7043,7071,7146,7174,7249,7277,7352,7380,7455,7483,7558,7586,7661,7689,7764,7792,7867,7895,7970,7998,8073,8101,8176,8204,8279,8307,8382,8410,8485,8513,8588,8616,8691,8719,8794,8822,8897,8925,9000,9028,9103,9131,9206,9234,9309,9337,9412,9440,9515,9543,9618,9646,9721,9749,9824,9852,9927,9955,10030,10058,10133,10161,10236,10264,10339,10367,10442,10470,10545,10573,10648,10676,10751,10779,10854,10882,10957,10985,11060,11088,11163,11191,11266,11294,11369,11397,11472,11500,11575,11603,11678,11706,11781,11809,11884,11912,11987,12015,12090,12118,12193,12221,12296,12324,12399,12427,12502,12530,12605,12633,12708,12736,12811,12839,12914,12942,13017,13045,13120,13148,13223,13251,13326,13354,13429,13457,13532,13560,13635,13663,13738,13766,13841,13869,13944,13972,14047,14075,14150,14178,14253,14281,14356,14384,14459,14487,14562,14590,14665,14693,14768,14796,14871,14899,14974,15002,15077,15105,15180,15208,15283,15311,15386,15414,15489,15517,15592,15620,15695,15723,15798,15826,15901,15929,16004,16032,16107,16135,16210,16238,16313,16341,16416,16444,16519,16547,16622,16650,16725,16753,16828,16856,16931,16959,17034,17062,17137,17165,17240,17268,17343,17371,17446,17474,17549,17577,17652,17680,17755,17783,17874,17902,17977,18005,18080,18108,18183,18211,18286,18314,18389,18417,18492,18520,18595,18623,18698,18726,18801,18829,18904,18932,19007,19035,19110,19138,19213,19241,19316,19344,19419,19447,19522,19550,19625,19653,19728,19756,19831,19859,19934,19962,20037,20065,20140,20168,20243,20271,20362,20390,20465,20493,20568,20596,20671,20699,20774,20802,20877,20905,20980,21008,21083,21111,21186,21214,21289,21317,21408,21436,21511,21539,21614,21642,21717,21745,21820,21848,21923,21951,22026,22054,22129,22157,22232,22260,22335,22363,22438,22466,22541,22569,22644,22672,22747,22775,22850,22878,22953,22981,23056,23084,23159,23187,23262,23290,23365,23393,23468,23496,23571,23599,23674,23702,23777,23805,23880,23908,23983,24011,24086,24114,24189,24217,24292,24320,24395,24423,24498,24526,24601,24629,24704,24732,24807,24835,24910,24938,25013,25041,25116,25144,25219,25247,25322,25350,25425,25453,25528,25556,25631,25659,25734,25762,25837,25865,25940,25968,26043,26071,26146,26174,26249,26277,26352,26380,26455,26483,26558,26586,26661,26689,26764,26792,26867,26895,26970,26998,27073,27101,27192,27220,27295,27323,27398,27426,27501,27529,27604,27632,27707,27735,27810,27838,27913,27941,28016,28044,28119,28147,28222,28250,28325,28353,28444,28472,28547,28575,28650,28678,28753,28781,28856,28884,28959,28987,29062,29090,29165,29193,29268,29296,29371,29399,29474,29502,29577,29605,29680,29708,29783,29811,29886,29914,29989,30017,30092,0,30120,0,30195,30223,0,0,0,0,30298,0,0,0,30326,0,0,0,0,0,0,0,0,30401,30429,30504,30532,30607,30635,30710,30738,30813,30841,30916,30944,31019,31047,0,31122,31150,31225,31253,0,31328,31356,0,0,0,0,31431,0,31459,0,31534,0,0,0,0,856,866,933,943,31562,1036,959,31639,631,969,17863,31649,1139,31724,1046,31734,0,588,31744,1062,0,0,0,639,840,0,0,0,0,0,0,0,0,0,0,0,0,0,0,621,0,626,0,31819,31847,31922,31950,32025,32053,32128,32156,32231,32259,32334,32362,32437,32465,32540,32568,32643,32671,32746,32774,32849,32877,32952,32980,33055,33083,33158,33186,33261,33289,33364,33392,33467,33495,33570,33598,33673,33701,33776,33804,33879,33907,33982,34010,34085,34113,34188,34216,34291,34319,34394,34422,34497,34525,34600,34628,34703,34731,34806,34834,34909,34937,35012,35040,35115,35143,35218,35246,35330,35358,35433,35461,35536,35564,35639,35667,35742,35770,35861,35889,35964,35992,36067,36095,36170,36198,36273,36301,36376,36404,36479,36507,36582,36610,36685,36713,36788,36816,36891,36919,36994,37022,37097,37125,37200,37228,37303,37331,37406,37434,37509,37537,37612,37640,37715,37743,37818,37846,37921,37949,38024,38052,38127,38155,38230,38258,38333,38361,38436,38464,38539,38567,38642,38670] alex_table :: Array Int Int alex_table = listArray (0,38925) [0,201,199,740,745,192,746,747,748,750,12,781,751,754,755,786,787,791,793,752,794,795,5,10,201,198,189,191,190,188,26,187,186,185,137,181,136,16,184,25,797,797,797,797,797,797,797,797,797,797,17,24,813,138,201,199,27,813,192,12,135,134,133,28,29,30,39,39,39,39,39,39,39,39,39,39,34,201,132,54,35,36,37,129,128,127,52,50,124,466,508,398,600,593,492,419,500,317,500,500,482,453,487,556,432,500,385,396,393,346,500,541,500,500,500,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,201,127,53,86,93,62,122,120,183,105,119,116,85,106,59,67,68,33,51,117,48,114,64,201,65,66,201,199,113,71,192,72,109,74,76,75,112,81,83,802,802,802,802,802,802,802,802,802,802,201,198,813,101,84,212,104,813,202,203,820,818,206,819,175,821,804,804,804,804,804,804,804,804,804,804,208,207,836,210,838,90,96,55,56,94,92,95,78,261,266,245,267,281,268,248,268,270,268,268,268,268,263,283,252,268,233,282,284,268,268,280,268,268,268,919,908,914,847,922,902,914,914,960,914,868,853,914,914,863,889,914,888,873,850,914,914,932,914,914,907,193,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,38,38,38,38,38,38,38,38,38,38,91,89,88,87,103,82,108,80,77,70,57,69,58,47,63,115,121,46,39,39,39,39,39,39,39,39,39,39,45,32,42,21,41,31,23,20,19,170,14,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,171,22,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,96,97,110,117,123,118,13,11,9,6,813,8,26,7,789,813,784,174,776,174,760,761,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,805,805,806,806,806,806,806,806,806,806,785,759,758,757,756,200,742,197,102,200,204,209,834,211,805,805,817,837,168,44,61,43,839,0,0,0,0,0,98,99,140,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,130,0,131,194,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,100,833,15,201,60,205,0,182,0,0,0,73,0,0,107,0,18,79,49,0,0,111,0,0,0,835,201,833,798,798,798,798,798,798,798,798,798,798,799,799,799,799,799,799,799,799,799,799,0,0,0,0,147,147,147,147,169,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,162,147,147,147,147,147,147,147,147,147,833,800,800,800,800,800,800,800,800,800,800,796,796,796,796,796,796,796,796,796,796,0,0,0,0,0,833,803,803,803,803,803,803,803,803,803,803,806,806,806,806,806,806,806,806,0,0,0,0,0,0,147,147,147,147,161,147,147,147,147,147,147,147,147,147,154,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,141,147,147,147,147,147,147,147,833,802,802,802,802,802,802,802,802,802,802,811,811,811,811,811,811,811,811,811,811,0,0,0,0,0,833,816,816,816,816,816,816,816,816,816,816,0,0,0,0,0,0,0,0,0,0,0,179,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,141,147,147,147,147,147,149,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,833,809,809,809,809,809,809,809,809,809,809,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,145,147,147,147,147,147,147,147,147,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,144,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,155,147,147,147,147,147,147,147,147,147,147,147,147,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,157,147,147,147,147,147,147,147,147,147,147,147,147,147,147,158,147,147,147,147,147,147,147,147,147,147,159,147,147,147,147,147,147,147,147,147,147,147,147,147,147,160,147,147,147,147,147,147,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,163,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,165,147,147,147,147,147,147,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,166,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,167,147,147,147,147,147,147,147,147,832,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,830,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,828,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,827,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,153,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,164,147,147,147,147,826,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,824,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,823,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,822,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,816,816,816,816,816,816,816,816,816,816,0,0,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,814,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,813,0,0,0,0,813,0,0,0,0,0,0,0,0,38,38,38,38,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0,0,0,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,170,0,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,811,811,811,811,811,811,811,811,811,811,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,810,810,810,810,810,810,810,810,810,810,0,0,0,0,0,0,0,0,0,0,0,0,0,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,150,147,147,147,142,146,151,147,147,147,147,152,147,143,156,147,147,147,147,148,147,147,147,147,147,147,807,807,807,807,807,807,807,807,807,807,803,803,803,803,803,803,803,803,803,803,0,0,813,0,0,0,0,813,0,0,0,0,0,0,0,0,803,803,803,803,803,803,803,803,803,803,0,0,0,807,807,807,807,807,807,0,0,0,0,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,737,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,733,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,193,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,194,22,139,139,139,139,139,139,139,139,139,139,139,139,139,139,140,40,125,125,125,126,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,717,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,731,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,723,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,719,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,718,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,725,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,735,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,721,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,214,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,246,268,268,234,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,302,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,303,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,307,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,309,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,218,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,217,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,216,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,220,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,222,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,223,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,298,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,297,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,225,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,296,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,295,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,294,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,226,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,293,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,227,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,292,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,291,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,290,268,268,268,268,268,268,268,268,268,268,240,268,268,273,268,268,268,268,268,268,268,268,268,235,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,289,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,229,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,288,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,287,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,286,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,285,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,236,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,249,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,238,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,239,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,243,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,247,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,253,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,254,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,279,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,255,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,272,268,268,268,268,268,268,256,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,259,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,274,268,268,268,268,268,268,0,268,268,262,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,269,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,264,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,265,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,271,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,260,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,258,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,257,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,276,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,277,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,278,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,251,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,250,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,244,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,242,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,237,268,268,268,268,268,268,268,268,268,241,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,275,268,268,268,268,268,268,268,268,268,232,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,231,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,230,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,228,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,224,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,299,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,221,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,300,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,219,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,215,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,311,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,310,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,308,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,306,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,305,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,304,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,301,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,213,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,730,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,722,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,720,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,724,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,726,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,727,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,728,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,729,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,732,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,734,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,736,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,738,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,739,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,500,0,500,500,500,710,500,500,500,500,500,500,500,663,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,714,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,707,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,567,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,685,500,500,500,500,500,500,500,511,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,684,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,682,500,500,500,500,500,500,514,533,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,676,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,673,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,665,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,656,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,708,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,706,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,692,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,672,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,664,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,657,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,644,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,643,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,694,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,677,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,670,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,666,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,662,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,712,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,704,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,703,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,690,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,688,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,679,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,674,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,667,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,636,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,637,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,312,500,474,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,414,500,500,384,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,610,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,611,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,612,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,615,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,619,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,620,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,321,500,500,500,500,500,500,621,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,623,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,624,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,630,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,631,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,633,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,320,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,319,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,318,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,603,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,604,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,329,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,328,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,326,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,325,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,324,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,323,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,322,500,500,500,500,500,500,500,500,500,500,500,500,500,500,461,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,330,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,334,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,333,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,332,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,331,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,340,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,339,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,338,500,500,500,500,500,500,500,500,500,500,460,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,337,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,336,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,342,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,596,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,595,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,344,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,592,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,345,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,591,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,590,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,589,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,588,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,587,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,347,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,348,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,532,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,586,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,585,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,584,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,582,500,500,500,478,500,500,500,500,500,500,500,500,500,500,500,500,500,500,370,506,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,351,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,352,500,500,500,500,500,500,495,500,500,500,406,500,500,444,500,500,500,500,500,500,500,500,500,399,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,581,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,485,500,500,354,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,580,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,579,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,578,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,577,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,576,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,356,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,575,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,357,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,574,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,573,500,500,500,500,500,500,500,500,500,500,500,516,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,358,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,363,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,364,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,572,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,365,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,366,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,367,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,368,500,500,552,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,571,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,570,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,569,500,500,500,500,500,500,500,500,500,500,500,500,450,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,375,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,376,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,378,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,379,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,568,500,500,500,500,500,439,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,566,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,386,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,564,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,397,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,420,500,500,500,500,500,500,500,562,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,400,500,500,500,500,500,500,500,500,500,500,500,500,500,469,500,500,426,500,500,549,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,404,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,405,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,561,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,409,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,411,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,559,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,558,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,557,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,415,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,416,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,417,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,418,525,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,555,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,554,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,425,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,551,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,550,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,548,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,547,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,546,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,545,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,544,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,429,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,433,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,434,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,538,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,437,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,537,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,438,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,440,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,536,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,535,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,441,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,520,500,500,500,500,500,500,443,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,445,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,446,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,534,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,531,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,505,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,530,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,448,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,449,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,528,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,451,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,452,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,527,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,490,500,500,500,500,455,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,526,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,524,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,458,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,459,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,465,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,523,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,468,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,471,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,486,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,521,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,472,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,473,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,479,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,481,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,517,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,483,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,484,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,515,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,510,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,509,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,497,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,503,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,502,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,499,500,500,500,500,500,500,500,500,500,500,500,500,500,500,96,0,0,0,0,807,807,807,807,807,807,807,807,807,807,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,807,807,807,807,807,807,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,504,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,493,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,512,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,513,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,489,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,491,500,500,500,500,500,500,500,500,500,500,488,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,480,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,519,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,477,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,476,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,475,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,522,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,467,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,464,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,463,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,462,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,457,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,456,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,529,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,447,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,442,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,435,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,431,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,430,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,542,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,428,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,427,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,424,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,423,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,422,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,436,500,500,421,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,553,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,413,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,412,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,560,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,408,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,403,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,402,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,401,500,500,500,500,500,500,500,500,500,407,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,392,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,391,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,390,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,389,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,388,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,387,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,383,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,565,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,382,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,381,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,380,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,374,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,373,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,372,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,369,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,362,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,361,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,360,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,359,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,355,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,353,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,583,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,349,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,343,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,598,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,597,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,335,500,500,500,500,500,500,500,395,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,371,500,500,500,500,500,500,341,500,500,500,543,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,599,500,500,500,500,500,500,500,500,500,500,500,500,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,602,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,327,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,635,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,634,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,632,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,629,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,628,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,627,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,626,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,625,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,622,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,618,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,617,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,616,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,614,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,613,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,609,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,608,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,607,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,606,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,605,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,313,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,350,500,314,500,500,498,500,500,500,500,500,500,377,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,640,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,639,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,638,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,658,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,702,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,652,500,500,500,500,500,500,500,500,0,594,500,500,500,496,500,500,500,494,500,500,500,500,500,680,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,681,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,691,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,641,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,642,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,645,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,646,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,647,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,650,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,651,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,653,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,654,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,655,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,659,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,660,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,661,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,669,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,671,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,678,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,683,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,686,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,687,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,689,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,693,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,695,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,696,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,697,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,698,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,563,500,500,500,700,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,701,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,705,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,709,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,711,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,713,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,715,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,716,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,668,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,675,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,648,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,649,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,699,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,501,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,316,500,500,500,500,500,500,500,500,500,500,500,500,500,540,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,507,500,601,500,410,500,500,315,500,500,500,454,500,500,518,500,500,470,394,500,500,539,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,500,500,500,500,500,500,500,500,500,500,0,0,0,0,0,0,0,0,0,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,0,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,268,0,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,862,914,914,914,914,871,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,801,801,801,801,801,801,801,801,801,801,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,801,0,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,812,0,804,804,804,804,804,804,804,804,804,804,808,808,808,808,808,808,808,808,808,808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,0,0,0,0,173,173,0,0,0,808,0,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,815,815,815,815,815,815,815,815,815,815,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,0,0,0,0,173,173,0,0,0,172,0,0,0,0,173,173,0,0,0,815,0,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,744,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,749,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,764,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,765,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,767,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,771,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,774,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,926,914,914,914,904,914,914,914,914,914,780,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,782,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,788,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,933,914,914,914,914,914,914,914,914,914,914,914,914,914,792,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,973,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,971,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,969,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,842,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,968,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,967,914,914,914,914,914,914,914,914,914,914,914,957,0,966,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,845,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,964,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,963,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,962,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,961,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,954,914,897,914,914,914,914,959,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,849,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,851,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,956,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,955,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,953,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,952,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,856,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,950,914,914,914,914,914,914,914,914,914,914,914,914,893,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,858,914,914,914,914,914,914,914,957,0,949,914,914,914,921,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,861,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,948,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,864,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,947,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,896,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,866,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,867,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,946,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,944,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,943,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,870,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,941,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,876,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,877,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,939,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,878,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,923,914,914,914,914,914,914,914,914,914,914,914,914,914,895,914,914,890,914,914,938,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,937,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,881,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,936,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,935,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,884,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,934,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,931,914,914,914,914,914,957,0,914,914,914,914,930,914,914,914,914,914,914,914,914,914,914,914,914,914,914,894,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,891,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,929,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,928,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,927,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,925,914,914,914,914,914,957,0,914,914,899,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,900,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,901,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,178,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,903,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,176,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,916,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,909,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,915,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,911,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,912,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,910,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,917,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,918,914,914,914,914,914,914,123,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,920,914,914,914,914,914,914,913,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,906,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,905,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,924,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,898,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,892,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,887,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,886,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,885,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,883,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,882,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,880,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,879,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,875,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,874,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,940,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,872,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,942,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,869,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,945,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,865,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,860,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,859,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,857,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,951,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,855,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,854,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,852,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,958,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,848,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,846,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,965,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,844,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,843,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,970,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,841,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,840,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,813,0,0,0,0,813,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,972,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,790,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,779,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,783,914,914,914,914,914,914,914,778,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,777,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,775,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,773,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,772,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,770,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,769,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,768,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,766,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,763,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,762,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,753,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,914,743,914,914,914,914,914,914,957,0,914,914,914,914,914,914,914,914,914,914,914,914,914,741,914,914,914,914,914,914,914,914,914,914,914,914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] alex_check :: Array Int Int alex_check = listArray (0,38925) [-1,9,10,109,101,13,97,97,101,101,32,111,101,101,101,101,101,111,101,41,101,101,97,99,32,33,97,111,101,111,32,97,101,101,97,99,97,115,117,97,48,49,50,51,52,53,54,55,56,57,115,105,34,105,9,10,103,39,13,61,117,117,121,101,105,99,48,49,50,51,52,53,54,55,56,57,32,32,121,32,97,97,101,101,111,105,115,101,103,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,9,105,105,99,100,111,99,99,105,105,117,111,108,117,110,32,32,111,114,107,116,101,105,32,103,97,9,10,109,111,13,99,101,99,111,99,101,111,111,48,49,50,51,52,53,54,55,56,57,32,33,34,117,101,37,97,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,104,101,99,99,117,111,98,111,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,108,114,114,108,98,116,110,114,114,110,108,114,104,100,116,114,112,102,48,49,50,51,52,53,54,55,56,57,100,108,116,108,116,116,114,110,114,95,112,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,32,32,32,32,32,32,112,114,108,110,34,116,40,116,116,39,102,43,116,45,114,120,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,48,49,50,51,52,53,54,55,102,108,110,108,114,10,110,10,110,13,47,58,61,62,48,49,42,61,95,100,102,100,61,-1,-1,-1,-1,-1,112,112,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,32,-1,32,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,98,46,100,9,102,41,-1,105,-1,-1,-1,109,-1,-1,112,-1,116,115,116,-1,-1,119,-1,-1,-1,61,32,46,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,46,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,46,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,34,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,-1,-1,34,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,97,98,99,100,101,102,-1,-1,-1,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,10,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,46,-1,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,-1,-1,-1,100,101,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,-1,-1,-1,100,101,-1,-1,-1,95,-1,-1,-1,-1,100,101,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,32,-1,-1,-1,-1,-1,-1,-1,40,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,34,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] alex_deflt :: Array Int Int alex_deflt = listArray (0,973) [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,139,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,195,195,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,198,198,198,-1,-1,198,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] alex_accept = listArray (0::Int,973) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccPred (alex_action_0) (alexRightContext 196)(AlexAccNone),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAccSkip,AlexAcc (alex_action_3),AlexAccPred (alex_action_4) ( ifConditionEndP )(AlexAcc (alex_action_5)),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccNone),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAccNone)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_17))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_18))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_19))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_21))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_23))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_25))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_26))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_27))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_28))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_29))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_30))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_31))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_32))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_34))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_35))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_39))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_40))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_41))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_42))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_43))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_44))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_45))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_46))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_47))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_48))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_49))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_50))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_53))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_55))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_57))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_59))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_61))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_63))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_65))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_67))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_69))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_71))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_73))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_75))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_80))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_82))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_84))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_87))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_88))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_89))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_90))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_92))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_93))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_95))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_96))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_97))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_98))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_100))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_101))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_102))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_103))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_104))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_105))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_106))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_107))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_108))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_109))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_110))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_111))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_112))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_113))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_114))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_116))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_117))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_118))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_119))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_120))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_121))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_122))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_123))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAccPred (alex_action_16) ( constructNameP )(AlexAcc (alex_action_124))),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_39)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_40)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_86)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_95)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_96)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_97)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_98)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_100)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_101)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_102)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_103)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_107)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_108)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_109)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_116)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_117)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_118)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_119)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_120)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_121)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_122)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_123)),AlexAccPred (alex_action_15) ( partOfExpOrPointerAssignmentP )(AlexAcc (alex_action_124)),AlexAcc (alex_action_18),AlexAccPred (alex_action_20) ( typeSpecP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_21),AlexAccPred (alex_action_22) ( resultP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_24) ( typeSpecP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_30),AlexAccPred (alex_action_33) ( useStP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAccPred (alex_action_37) ( genericSpecP )(AlexAccNone),AlexAccPred (alex_action_38) ( genericSpecP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAccPred (alex_action_51) ( selectorP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_52) ( selectorP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_54) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_56) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_58) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_60) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_62) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_64) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_66) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_68) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_70) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_72) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_74) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_76) ( attributeP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_77) ( followsIntentP )(AlexAccNone),AlexAccPred (alex_action_77) ( followsIntentP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_78) ( followsIntentP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_79) ( followsIntentP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_81) ( followsColonP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_82),AlexAccPred (alex_action_83) ( followsDoP )(AlexAcc (alex_action_150)),AlexAccPred (alex_action_85) ( followsColonP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAccPred (alex_action_91) ( followsColonP )(AlexAccNone),AlexAccPred (alex_action_91) ( followsColonP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_93),AlexAccPred (alex_action_94) ( caseStP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_97),AlexAccPred (alex_action_99) ( assignStP )(AlexAcc (alex_action_150)),AlexAcc (alex_action_105),AlexAcc (alex_action_115),AlexAcc (alex_action_124),AlexAcc (alex_action_125),AlexAcc (alex_action_125),AlexAcc (alex_action_125),AlexAcc (alex_action_125),AlexAcc (alex_action_125),AlexAcc (alex_action_126),AlexAcc (alex_action_126),AlexAcc (alex_action_126),AlexAcc (alex_action_126),AlexAcc (alex_action_127),AlexAcc (alex_action_127),AlexAcc (alex_action_127),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAccPred (alex_action_129) ( notPrecedingDotP )(AlexAccNone),AlexAcc (alex_action_130),AlexAcc (alex_action_131),AlexAcc (alex_action_131),AlexAcc (alex_action_131),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_133)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_134)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_135)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_136)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_137)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_138)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_139)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_140)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_141)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_142)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_143)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_144)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_145)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_146)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_147)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_148)),AlexAccPred (alex_action_132) ( opP )(AlexAcc (alex_action_149)),AlexAcc (alex_action_143),AlexAcc (alex_action_144),AlexAcc (alex_action_145),AlexAcc (alex_action_146),AlexAcc (alex_action_147),AlexAcc (alex_action_148),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150),AlexAcc (alex_action_150)] {-# LINE 262 "FreeForm.x" #-} -------------------------------------------------------------------------------- -- Predicated lexer helpers -------------------------------------------------------------------------------- followsDoP :: User -> AlexInput -> Int -> AlexInput -> Bool followsDoP _ _ _ ai | Just TDo {} <- aiPreviousToken ai = True | otherwise = False followsColonP :: User -> AlexInput -> Int -> AlexInput -> Bool followsColonP _ _ _ ai | Just TColon{} <- aiPreviousToken ai = True | otherwise = False selectorP :: User -> AlexInput -> Int -> AlexInput -> Bool selectorP user _ _ ai = followsType && nextTokenIsOpAssign && precedesDoubleColon ai where nextTokenIsOpAssign = nextTokenConstr user ai == (Just . fillConstr $ TOpAssign) followsType = case searchBeforePar (aiPreviousTokensInLine ai) of Just x -> isTypeSpec x Nothing -> False searchBeforePar [] = Nothing searchBeforePar (x:xs) | TLeftPar{} <- x = if null xs then Nothing else (Just $ head xs) | otherwise = searchBeforePar xs ifConditionEndP :: User -> AlexInput -> Int -> AlexInput -> Bool ifConditionEndP (User _ pc) _ _ ai | (TIf{}:_) <- prevTokens = pc == ParanthesesCount 1 False | (TId{}:TColon{}:TIf{}:_) <- prevTokens = pc == ParanthesesCount 1 False | (TElsif{}:_) <- prevTokens = pc == ParanthesesCount 1 False | otherwise = False where prevTokens = reverse . aiPreviousTokensInLine $ ai opP :: User -> AlexInput -> Int ->AlexInput -> Bool opP _ _ _ ai | (TLeftPar{}:TOperator{}:_) <- aiPreviousTokensInLine ai = True | otherwise = False partOfExpOrPointerAssignmentP :: User -> AlexInput -> Int -> AlexInput -> Bool partOfExpOrPointerAssignmentP (User fv pc) _ _ ai = case unParse (lexer $ f False 0) ps of ParseOk True _ -> True _ -> False where ps = ParseState { psAlexInput = ai { aiStartCode = StartCode scN Return } , psVersion = fv , psFilename = "" , psParanthesesCount = pc , psContext = [ ConStart ] } f leftParSeen parCount token | not leftParSeen = case token of TNewline{} -> return False TEOF{} -> return False TPercent{} -> return True TArrow{} -> return True TOpAssign{} -> return True TLeftPar{} -> lexer $ f True 1 TLeftPar2{} -> lexer $ f True 1 _ -> return False | parCount == 0 = case token of TOpAssign{} -> return True TArrow{} -> return True TPercent{} -> return True _ -> return False | parCount > 0 = case token of TNewline{} -> return False TEOF{} -> return False TLeftPar{} -> lexer $ f True (parCount + 1) TLeftPar2{} -> lexer $ f True (parCount + 1) TRightPar{} -> lexer $ f True (parCount - 1) _ -> lexer $ f True parCount | otherwise = error "Error while executing part of expression assignment predicate." precedesDoubleColon :: AlexInput -> Bool precedesDoubleColon ai = not . flip seenConstr ai . fillConstr $ TDoubleColon attributeP :: User -> AlexInput -> Int -> AlexInput -> Bool attributeP _ _ _ ai = followsComma && precedesDoubleColon ai && startsWithTypeSpec where followsComma | Just TComma{} <- aiPreviousToken ai = True | otherwise = False startsWithTypeSpec | (token:_) <- prevTokens = isTypeSpec token || fillConstr TType == toConstr token | otherwise = False prevTokens = reverse . aiPreviousTokensInLine $ ai constructNameP :: User -> AlexInput -> Int -> AlexInput -> Bool constructNameP user _ _ ai = case nextTokenConstr user ai of Just constr -> constr == fillConstr TColon _ -> False genericSpecP :: User -> AlexInput -> Int -> AlexInput -> Bool genericSpecP _ _ _ ai = Just True == do constr <- prevTokenConstr ai if constr `elem` fmap fillConstr [ TInterface, TPublic, TPrivate ] then return True else if constr `elem` fmap fillConstr [ TComma, TDoubleColon ] then return $ seenConstr (fillConstr TPublic) ai || seenConstr (fillConstr TPrivate) ai else Nothing typeSpecP :: User -> AlexInput -> Int -> AlexInput -> Bool typeSpecP _ _ _ ai | (prevToken:_) <- prevTokens , isTypeSpec prevToken = True | otherwise = isTypeSpecImmediatelyBefore $ reverse prevTokens where isTypeSpecImmediatelyBefore tokens@(x:xs) | isTypeSpec tokens = True | otherwise = isTypeSpecImmediatelyBefore xs isTypeSpecImmediatelyBefore [] = False prevTokens = aiPreviousTokensInLine ai resultP :: User -> AlexInput -> Int -> AlexInput -> Bool resultP _ _ _ ai = (flip seenConstr ai . fillConstr $ TFunction) && prevTokenConstr ai == (Just $ fillConstr TRightPar) notPrecedingDotP :: User -> AlexInput -> Int -> AlexInput -> Bool notPrecedingDotP user _ _ ai = not $ nextTokenConstr user ai == (Just $ toConstr (TId undefined undefined)) followsIntentP :: User -> AlexInput -> Int -> AlexInput -> Bool followsIntentP _ _ _ ai = (map toConstr . take 2 . aiPreviousTokensInLine) ai == map fillConstr [ TLeftPar, TIntent ] useStP :: User -> AlexInput -> Int -> AlexInput -> Bool useStP _ _ _ ai = seenConstr (toConstr $ TUse undefined) ai caseStP :: User -> AlexInput -> Int -> AlexInput -> Bool caseStP _ _ _ ai = prevTokenConstr ai == (Just $ fillConstr TCase) assignStP :: User -> AlexInput -> Int -> AlexInput -> Bool assignStP _ _ _ ai = seenConstr (fillConstr TAssign) ai prevTokenConstr :: AlexInput -> Maybe Constr prevTokenConstr ai = toConstr <$> aiPreviousToken ai nextTokenConstr :: User -> AlexInput -> Maybe Constr nextTokenConstr (User fv pc) ai = case unParse lexer' parseState of ParseOk token _ -> Just $ toConstr token _ -> Nothing where parseState = ParseState { psAlexInput = ai , psParanthesesCount = pc , psVersion = fv , psFilename = "" , psContext = [ ConStart ] } seenConstr :: Constr -> AlexInput -> Bool seenConstr candidateConstr ai = candidateConstr `elem` (toConstr <$> aiPreviousTokensInLine ai) fillConstr = toConstr . ($ undefined) -------------------------------------------------------------------------------- -- Lexer helpers -------------------------------------------------------------------------------- leftPar :: LexAction (Maybe Token) leftPar = do incPar context <- topContext if context == ConImplicit then do parseState <- get case unParse f parseState of ParseOk tokenCons _ -> do span <- getLexemeSpan return $ Just $ tokenCons span ParseFailed e -> fail "Left parantheses is not matched." else addSpan TLeftPar where f :: LexAction (SrcSpan -> Token) f = do (ParanthesesCount pc _) <- getParanthesesCount mPrevToken <- aiPreviousToken <$> getAlex case mPrevToken of Just TRightPar{} | pc == 0 -> do span <- getLexemeSpan curToken <- lexer' case curToken of TComma{} -> return TLeftPar2 TNewline{} -> return TLeftPar2 TEOF{} -> return TLeftPar2 _ -> return TLeftPar _ -> lexer' >> f comma :: LexAction (Maybe Token) comma = do context <- topContext case context of ConImplicit -> do mToken <- aiPreviousToken <$> getAlex case mToken of Just TRightPar{} -> toSC scT >> addSpan TComma _ -> addSpan TComma ConNamelist -> secondCommaIfSlashFollows ConCommon -> secondCommaIfSlashFollows _ -> addSpan TComma where secondCommaIfSlashFollows = do parseState <- get case unParse lexer' parseState of ParseOk TOpDivision{} _ -> addSpan TComma2 ParseFailed _ -> fail "Expecting variable name or slash." _ -> addSpan TComma slashOrDivision :: LexAction (Maybe Token) slashOrDivision = do context <- topContext case context of ConData -> addSpan TSlash _ -> addSpan TOpDivision addSpan :: (SrcSpan -> Token) -> LexAction (Maybe Token) addSpan cons = do s <- getLexemeSpan return $ Just $ cons s addSpanAndMatch :: (SrcSpan -> String -> Token) -> LexAction (Maybe Token) addSpanAndMatch cons = do s <- getLexemeSpan m <- getMatch return $ Just $ cons s m getLexeme :: LexAction Lexeme getLexeme = do ai <- getAlex return $ aiLexeme ai putLexeme :: Lexeme -> LexAction () putLexeme lexeme = do ai <- getAlex putAlex $ ai { aiLexeme = lexeme } resetLexeme :: LexAction () resetLexeme = putLexeme initLexeme getMatch :: LexAction String getMatch = do lexeme <- getLexeme return $ (reverse . lexemeMatch) lexeme putMatch :: String -> LexAction () putMatch newMatch = do lexeme <- getLexeme putLexeme $ lexeme { lexemeMatch = reverse newMatch } instance Spanned Lexeme where getSpan lexeme = let ms = lexemeStart lexeme me = lexemeEnd lexeme in case ms of Just s -> SrcSpan s (fromJust me) Nothing -> error $ "Span access on nonexistant lexeme." ++ lexemeMatch lexeme setSpan _ = error "Lexeme span cannot be set." updatePreviousToken :: Maybe Token -> LexAction () updatePreviousToken maybeToken = do ai <- getAlex putAlex $ ai { aiPreviousToken = maybeToken } addToPreviousTokensInLine :: Token -> LexAction () addToPreviousTokensInLine token = do ai <- getAlex putAlex $ case token of TNewline _ -> updatePrevTokens ai [ ] t -> updatePrevTokens ai $ t : aiPreviousTokensInLine ai where updatePrevTokens ai tokens = ai { aiPreviousTokensInLine = tokens } checkPreviousTokensInLine :: (Token -> Bool) -> AlexInput -> Bool checkPreviousTokensInLine prop ai = any prop $ aiPreviousTokensInLine ai getLexemeSpan :: LexAction SrcSpan getLexemeSpan = do lexeme <- getLexeme return $ getSpan lexeme -- Automata for character literal parsing is given below. Wherever it says ' -- you can replace ", whichever is used depends on what the first matched -- character is and they are dual in their nature. -- -- else -- +-+ -- | v -- +-+ Nothing +-+ -- +---> |0|---------->|3| -- +-> +-+ +-+ -- | | -- ' | | ' -- | v -- | +-+ Nothing +-+ -- +---|1|---------->|2| -- +-+ +-+ -- | ^ -- +-------------+ -- else -- -- For more information please refer to Fortran 90 standard's section related -- to character constants. lexCharacter :: LexAction (Maybe Token) lexCharacter = do alex <- getAlex putAlex $ alex { aiStartCode = StartCode scC Stable } match <- getMatch let boundaryMarker = last match _lexChar 0 boundaryMarker where _lexChar 0 bm = do alex <- getAlex case alexGetByte alex of Just (_, newAlex) -> do putAlex newAlex m <- getMatch if last m == bm then _lexChar 1 bm else _lexChar 0 bm Nothing -> fail "Unmatched character literal." _lexChar 1 bm = do alex <- getAlex case alexGetByte alex of Just (_, newAlex) -> do let m = lexemeMatch . aiLexeme $ newAlex if head m == bm then do putAlex newAlex putMatch . reverse . tail $ m _lexChar 0 bm else _lexChar 2 bm Nothing -> _lexChar 2 bm _lexChar 2 _ = do alex <- getAlex putAlex $ alex { aiStartCode = StartCode scN Return } match <- getMatch putMatch . init . tail $ match addSpanAndMatch TString toSC :: Int -> LexAction () toSC startCode = do alex <- getAlex putAlex $ alex { aiStartCode = StartCode startCode Return } stabiliseStartCode :: LexAction () stabiliseStartCode = do alex <- getAlex let sc = aiStartCode alex putAlex $ alex { aiStartCode = sc { scStatus = Stable } } normaliseStartCode :: LexAction () normaliseStartCode = do alex <- getAlex let startCode = aiStartCode alex case scStatus startCode of Return -> putAlex $ alex { aiStartCode = StartCode scN Stable } Stable -> return () -------------------------------------------------------------------------------- -- AlexInput & related definitions -------------------------------------------------------------------------------- data Lexeme = Lexeme { lexemeMatch :: String , lexemeStart :: Maybe Position , lexemeEnd :: Maybe Position } deriving (Show) initLexeme :: Lexeme initLexeme = Lexeme { lexemeMatch = "" , lexemeStart = Nothing , lexemeEnd = Nothing } data StartCodeStatus = Return | Stable deriving (Show) data StartCode = StartCode { scActual :: Int , scStatus :: StartCodeStatus } deriving (Show) data AlexInput = AlexInput { aiSourceInput :: String , aiPosition :: Position , aiPreviousChar :: Char , aiLexeme :: Lexeme , aiStartCode :: StartCode , aiPreviousToken :: Maybe Token , aiPreviousTokensInLine :: [ Token ] } deriving (Show) instance Loc AlexInput where getPos = aiPosition instance LastToken AlexInput Token where getLastToken = aiPreviousToken type LexAction a = Parse AlexInput Token a vanillaAlexInput :: AlexInput vanillaAlexInput = AlexInput { aiSourceInput = "" , aiPosition = initPosition , aiPreviousChar = '\n' , aiLexeme = initLexeme , aiStartCode = StartCode 0 Return , aiPreviousToken = Nothing , aiPreviousTokensInLine = [ ] } updateLexeme :: Char -> Position -> AlexInput -> AlexInput updateLexeme char p ai = let lexeme = aiLexeme ai match = lexemeMatch lexeme newMatch = char : match start = lexemeStart lexeme newStart = if isNothing start then Just p else start newEnd = Just p in ai { aiLexeme = Lexeme newMatch newStart newEnd } -- Fortran version and parantheses count to be used by alexScanUser data User = User FortranVersion ParanthesesCount -------------------------------------------------------------------------------- -- Definitions needed for alexScanUser -------------------------------------------------------------------------------- data Move = Continuation | Char | Newline alexGetByte :: AlexInput -> Maybe (Word8, AlexInput) alexGetByte ai -- When all characters are already read | posAbsoluteOffset _position == (toInteger . length . aiSourceInput) ai = Nothing -- Skip the continuation line altogether | isContinuation ai = alexGetByte . skipContinuation $ ai -- Read genuine character and advance. Also covers white sensitivity. | otherwise = Just ( fromIntegral . fromEnum $ _curChar , updateLexeme _curChar _position ai { aiPosition = case _curChar of '\n' -> advance Newline _position _ -> advance Char _position , aiPreviousChar = _curChar }) where _curChar = currentChar ai _position = aiPosition ai alexInputPrevChar :: AlexInput -> Char alexInputPrevChar ai = aiPreviousChar ai takeNChars :: Integer -> AlexInput -> String takeNChars n ai = take (fromIntegral n) . drop (fromIntegral _dropN) $ aiSourceInput ai where _dropN = posAbsoluteOffset . aiPosition $ ai currentChar :: AlexInput -> Char currentChar ai -- case sensitivity matters only in character literals | (scActual . aiStartCode) ai == scC = _currentChar | otherwise = toLower _currentChar where _currentChar = head . takeNChars 1 $ ai advanceWithoutContinuation :: AlexInput -> Maybe AlexInput advanceWithoutContinuation ai -- When all characters are already read | posAbsoluteOffset _position == (toInteger . length . aiSourceInput) ai = Nothing -- Read genuine character and advance. Also covers white sensitivity. | otherwise = Just $ ai { aiPosition = case _curChar of '\n' -> advance Newline _position _ -> advance Char _position , aiPreviousChar = _curChar } where _curChar = currentChar ai _position = aiPosition ai isContinuation :: AlexInput -> Bool isContinuation ai = -- No continuation while lexing a character literal. (scActual . aiStartCode) ai /= scC -- No continuation while lexing a comment. && (let lexeme = lexemeMatch . aiLexeme $ ai in null lexeme || last lexeme /= '!') && _isContinuation ai 0 where _isContinuation ai 0 = if currentChar ai == '&' then _advance ai else False _isContinuation ai 1 = case currentChar ai of ' ' -> _advance ai '\t' -> _advance ai '\r' -> _advance ai '!' -> True '\n' -> True _ -> False _advance :: AlexInput -> Bool _advance ai = case advanceWithoutContinuation ai of Just ai' -> _isContinuation ai' 1 Nothing -> False -- Here's the skip continuation automaton: -- -- white white,\n -- +-+ +-+ -- | v | v +---+ -- +-+ & +-+ \n +-+ & |---| -- +-->|0|------>|1|------->|3|------->||4|| -- +-+ +-+ +-+----+ |---| -- | ^ | +---+ -- |! | | -- v | |else -- +->+-+ | v -- else| |2|---------+ +---+ -- +--+-+ |---| -- ||5|| -- |---| -- +---+ -- -- For more information refer to Fortran 90 standard. -- This version is more permissive than the specification -- as it allows empty lines to be used between continuations. skipContinuation :: AlexInput -> AlexInput skipContinuation ai = _skipCont ai 0 where _skipCont ai 0 = if currentChar ai == '&' then _advance ai 1 else error "This case is excluded by isContinuation." _skipCont ai 1 = let _curChar = currentChar ai in if _curChar `elem` [' ', '\t', '\r'] then _advance ai 1 else if _curChar == '!' then _advance ai 2 else if _curChar == '\n' then _advance ai 3 else error $ join [ "Did not expect non-blank/non-comment character after " , "continuation symbol (&)." ] _skipCont ai 2 = if currentChar ai == '\n' then _advance ai 3 else _advance ai 2 _skipCont ai 3 = let _curChar = currentChar ai in if _curChar `elem` [' ', '\t', '\r', '\n'] then _advance ai 3 else if _curChar == '!' then _advance ai 2 else if _curChar == '&' -- This state accepts as if there were no spaces between the broken -- line and whatever comes after second &. This is implicitly state (4) then fromMaybe (error "File has ended prematurely during a continuation.") (advanceWithoutContinuation ai) -- This state accepts but the broken line delimits the previous token. -- This is implicitly state (5). To achieve this, it returns the -- previous ai, which either has whitespace or newline, so it will -- nicely delimit. else ai _advance ai state = case advanceWithoutContinuation ai of Just ai' -> _skipCont ai' state Nothing -> error "File has ended prematurely during a continuation." advance :: Move -> Position -> Position advance move position = case move of Newline -> position { posAbsoluteOffset = _absl + 1 , posColumn = 1 , posLine = _line + 1 } Char -> position { posAbsoluteOffset = _absl + 1 , posColumn = _col + 1 } where _col = posColumn position _line = posLine position _absl = posAbsoluteOffset position -------------------------------------------------------------------------------- -- Lexer definition -------------------------------------------------------------------------------- lexer :: (Token -> LexAction a) -> LexAction a lexer cont = cont =<< lexer' lexer' :: LexAction Token lexer' = do resetLexeme alex <- getAlex let startCode = scActual . aiStartCode $ alex normaliseStartCode newAlex <- getAlex version <- getVersion paranthesesCount <- getParanthesesCount let user = User version paranthesesCount case alexScanUser user newAlex startCode of AlexEOF -> return $ TEOF $ SrcSpan (getPos alex) (getPos alex) AlexError _ -> fail $ "Lexing failed. " #ifdef DEBUG ++ '\n' : show newAlex ++ "\n" #endif AlexSkip newAlex _ -> do putAlex $ newAlex { aiStartCode = StartCode startCode Return } lexer' AlexToken newAlex _ action -> do putAlex newAlex maybeToken <- action case maybeToken of Just token -> do updatePreviousToken maybeToken addToPreviousTokensInLine token return token Nothing -> lexer' alexScanUser :: User -> AlexInput -> Int -> AlexReturn (LexAction (Maybe Token)) -------------------------------------------------------------------------------- -- Tokens -------------------------------------------------------------------------------- data Token = TId SrcSpan String | TComment SrcSpan String | TString SrcSpan String | TIntegerLiteral SrcSpan String | TRealLiteral SrcSpan String | TBozLiteral SrcSpan String | TComma SrcSpan | TComma2 SrcSpan | TSemiColon SrcSpan | TColon SrcSpan | TDoubleColon SrcSpan | TOpAssign SrcSpan | TArrow SrcSpan | TPercent SrcSpan | TLeftPar SrcSpan | TLeftPar2 SrcSpan | TRightPar SrcSpan | TLeftInitPar SrcSpan | TRightInitPar SrcSpan -- Mainly operators | TOpCustom SrcSpan String | TOpExp SrcSpan | TOpPlus SrcSpan | TOpMinus SrcSpan | TStar SrcSpan | TOpDivision SrcSpan | TSlash SrcSpan | TOpOr SrcSpan | TOpAnd SrcSpan | TOpNot SrcSpan | TOpEquivalent SrcSpan | TOpNotEquivalent SrcSpan | TOpLT SrcSpan | TOpLE SrcSpan | TOpEQ SrcSpan | TOpNE SrcSpan | TOpGT SrcSpan | TOpGE SrcSpan | TLogicalLiteral SrcSpan String -- Keywords -- Program unit related | TProgram SrcSpan | TEndProgram SrcSpan | TFunction SrcSpan | TEndFunction SrcSpan | TResult SrcSpan | TRecursive SrcSpan | TSubroutine SrcSpan | TEndSubroutine SrcSpan | TBlockData SrcSpan | TEndBlockData SrcSpan | TModule SrcSpan | TEndModule SrcSpan | TContains SrcSpan | TUse SrcSpan | TOnly SrcSpan | TInterface SrcSpan | TEndInterface SrcSpan | TModuleProcedure SrcSpan | TAssignment SrcSpan | TOperator SrcSpan | TCall SrcSpan | TReturn SrcSpan | TEntry SrcSpan -- Attributes | TPublic SrcSpan | TPrivate SrcSpan | TParameter SrcSpan | TAllocatable SrcSpan | TDimension SrcSpan | TExternal SrcSpan | TIntent SrcSpan | TIntrinsic SrcSpan | TOptional SrcSpan | TPointer SrcSpan | TSave SrcSpan | TTarget SrcSpan -- Attribute values | TIn SrcSpan | TOut SrcSpan | TInOut SrcSpan -- Beginning keyword | TData SrcSpan | TNamelist SrcSpan | TImplicit SrcSpan | TEquivalence SrcSpan | TCommon SrcSpan | TAllocate SrcSpan | TDeallocate SrcSpan | TNullify SrcSpan -- Misc | TNone SrcSpan -- Control flow | TGoto SrcSpan | TAssign SrcSpan | TTo SrcSpan | TContinue SrcSpan | TStop SrcSpan | TPause SrcSpan | TDo SrcSpan | TEndDo SrcSpan | TWhile SrcSpan | TIf SrcSpan | TThen SrcSpan | TElse SrcSpan | TElsif SrcSpan | TEndIf SrcSpan | TCase SrcSpan | TSelectCase SrcSpan | TEndSelect SrcSpan | TDefault SrcSpan | TCycle SrcSpan | TExit SrcSpan -- Where construct | TWhere SrcSpan | TElsewhere SrcSpan | TEndWhere SrcSpan -- Type related | TType SrcSpan | TEndType SrcSpan | TSequence SrcSpan -- Selector | TKind SrcSpan | TLen SrcSpan -- Intrinsic types | TInteger SrcSpan | TReal SrcSpan | TDoublePrecision SrcSpan | TLogical SrcSpan | TCharacter SrcSpan | TComplex SrcSpan -- I/O | TOpen SrcSpan | TClose SrcSpan | TRead SrcSpan | TWrite SrcSpan | TPrint SrcSpan | TBackspace SrcSpan | TRewind SrcSpan | TInquire SrcSpan | TEndfile SrcSpan -- Etc. | TEnd SrcSpan | TNewline SrcSpan | TEOF SrcSpan deriving (Eq, Show, Data, Typeable, Generic) instance FirstParameter Token SrcSpan instance FirstParameter Token SrcSpan => Spanned Token where getSpan = getFirstParameter setSpan = setFirstParameter instance Tok Token where eofToken TEOF{} = True eofToken _ = False class SpecifiesType a where isTypeSpec :: a -> Bool instance SpecifiesType Token where isTypeSpec TInteger{} = True isTypeSpec TReal{} = True isTypeSpec TDoublePrecision{} = True isTypeSpec TLogical{} = True isTypeSpec TCharacter{} = True isTypeSpec TComplex{} = True isTypeSpec _ = False instance SpecifiesType [ Token ] where isTypeSpec tokens | [ TType{}, TLeftPar{}, _, TRightPar{} ] <- tokens = True -- This is an approximation but should hold for almost all legal programs. | (typeToken:TLeftPar{}:rest) <- tokens = isTypeSpec typeToken && case last rest of TRightPar{} -> True _ -> False | (TCharacter{}:TStar{}:rest) <- tokens = case rest of [ TIntegerLiteral{} ] -> True (TLeftPar{}:rest') | TRightPar{} <- last rest' -> True _ -> False | otherwise = False -------------------------------------------------------------------------------- -- Functions to help testing & output -------------------------------------------------------------------------------- initParseState :: String -> FortranVersion -> String -> ParseState AlexInput initParseState srcInput fortranVersion filename = _vanillaParseState { psAlexInput = vanillaAlexInput { aiSourceInput = srcInput } } where _vanillaParseState = ParseState { psAlexInput = undefined , psVersion = fortranVersion , psFilename = filename , psParanthesesCount = ParanthesesCount 0 False , psContext = [ ConStart ] } collectFreeTokens :: FortranVersion -> String -> [Token] collectFreeTokens version srcInput = collectTokens lexer' $ initParseState srcInput version "" scC,scI,scN,scT :: Int scC = 1 scI = 2 scN = 3 scT = 4 alex_action_0 = addSpanAndMatch TComment alex_action_1 = resetPar >> toSC 0 >> addSpan TNewline alex_action_3 = leftPar alex_action_4 = decPar >> toSC scI >> addSpan TRightPar alex_action_5 = decPar >> addSpan TRightPar alex_action_6 = addSpan TLeftInitPar alex_action_7 = addSpan TRightInitPar alex_action_8 = comma alex_action_9 = addSpan TSemiColon alex_action_10 = addSpan TColon alex_action_11 = addSpan TDoubleColon alex_action_12 = addSpan TOpAssign alex_action_13 = addSpan TArrow alex_action_14 = addSpan TPercent alex_action_15 = addSpanAndMatch TId alex_action_16 = addSpanAndMatch TId alex_action_17 = addSpan TProgram alex_action_18 = addSpan TEndProgram alex_action_19 = addSpan TFunction alex_action_20 = addSpan TFunction alex_action_21 = addSpan TEndFunction alex_action_22 = addSpan TResult alex_action_23 = toSC 0 >> addSpan TRecursive alex_action_24 = toSC 0 >> addSpan TRecursive alex_action_25 = addSpan TSubroutine alex_action_26 = addSpan TEndSubroutine alex_action_27 = addSpan TBlockData alex_action_28 = addSpan TEndBlockData alex_action_29 = addSpan TModule alex_action_30 = addSpan TEndModule alex_action_31 = addSpan TContains alex_action_32 = addSpan TUse alex_action_33 = addSpan TOnly alex_action_34 = addSpan TInterface alex_action_35 = addSpan TEndInterface alex_action_36 = addSpan TModuleProcedure alex_action_37 = addSpan TAssignment alex_action_38 = addSpan TOperator alex_action_39 = addSpan TCall alex_action_40 = addSpan TReturn alex_action_41 = addSpan TEntry alex_action_42 = addSpan TType alex_action_43 = addSpan TEndType alex_action_44 = addSpan TSequence alex_action_45 = addSpan TInteger alex_action_46 = addSpan TReal alex_action_47 = addSpan TDoublePrecision alex_action_48 = addSpan TLogical alex_action_49 = addSpan TCharacter alex_action_50 = addSpan TComplex alex_action_51 = addSpan TKind alex_action_52 = addSpan TLen alex_action_53 = addSpan TPublic alex_action_54 = addSpan TPublic alex_action_55 = addSpan TPrivate alex_action_56 = addSpan TPrivate alex_action_57 = addSpan TParameter alex_action_58 = addSpan TParameter alex_action_59 = addSpan TAllocatable alex_action_60 = addSpan TAllocatable alex_action_61 = addSpan TDimension alex_action_62 = addSpan TDimension alex_action_63 = addSpan TExternal alex_action_64 = addSpan TExternal alex_action_65 = addSpan TIntent alex_action_66 = addSpan TIntent alex_action_67 = addSpan TIntrinsic alex_action_68 = addSpan TIntrinsic alex_action_69 = addSpan TOptional alex_action_70 = addSpan TOptional alex_action_71 = addSpan TPointer alex_action_72 = addSpan TPointer alex_action_73 = addSpan TSave alex_action_74 = addSpan TSave alex_action_75 = addSpan TTarget alex_action_76 = addSpan TTarget alex_action_77 = addSpan TInOut alex_action_78 = addSpan TIn alex_action_79 = addSpan TOut alex_action_80 = addSpan TDo alex_action_81 = addSpan TDo alex_action_82 = addSpan TEndDo alex_action_83 = addSpan TWhile alex_action_84 = addSpan TIf alex_action_85 = addSpan TIf alex_action_86 = addSpan TThen alex_action_87 = addSpan TElse alex_action_88 = addSpan TElsif alex_action_89 = addSpan TEndIf alex_action_90 = addSpan TSelectCase alex_action_91 = addSpan TSelectCase alex_action_92 = addSpan TCase alex_action_93 = addSpan TEndSelect alex_action_94 = addSpan TDefault alex_action_95 = addSpan TCycle alex_action_96 = addSpan TExit alex_action_97 = addSpan TGoto alex_action_98 = addSpan TAssign alex_action_99 = addSpan TTo alex_action_100 = addSpan TContinue alex_action_101 = addSpan TStop alex_action_102 = addSpan TPause alex_action_103 = addSpan TWhere alex_action_104 = addSpan TElsewhere alex_action_105 = addSpan TEndWhere alex_action_106 = addSpan TData alex_action_107 = addSpan TAllocate alex_action_108 = addSpan TDeallocate alex_action_109 = addSpan TNullify alex_action_110 = addSpan TNamelist alex_action_111 = toSC scT >> addSpan TImplicit alex_action_112 = addSpan TEquivalence alex_action_113 = addSpan TCommon alex_action_114 = addSpan TEnd alex_action_115 = addSpan TNone alex_action_116 = addSpan TOpen alex_action_117 = addSpan TClose alex_action_118 = addSpan TRead alex_action_119 = addSpan TWrite alex_action_120 = addSpan TPrint alex_action_121 = addSpan TBackspace alex_action_122 = addSpan TRewind alex_action_123 = addSpan TInquire alex_action_124 = addSpan TEndfile alex_action_125 = toSC 0 >> addSpanAndMatch TIntegerLiteral alex_action_126 = addSpanAndMatch TIntegerLiteral alex_action_127 = addSpanAndMatch TBozLiteral alex_action_128 = addSpanAndMatch TRealLiteral alex_action_129 = addSpanAndMatch TRealLiteral alex_action_130 = lexCharacter alex_action_131 = addSpanAndMatch TLogicalLiteral alex_action_132 = addSpanAndMatch TOpCustom alex_action_133 = addSpan TOpExp alex_action_134 = addSpan TOpPlus alex_action_135 = addSpan TOpMinus alex_action_136 = addSpan TStar alex_action_137 = slashOrDivision alex_action_138 = addSpan TOpOr alex_action_139 = addSpan TOpAnd alex_action_140 = addSpan TOpNot alex_action_141 = addSpan TOpEquivalent alex_action_142 = addSpan TOpNotEquivalent alex_action_143 = addSpan TOpEQ alex_action_144 = addSpan TOpNE alex_action_145 = addSpan TOpLT alex_action_146 = addSpan TOpLE alex_action_147 = addSpan TOpGT alex_action_148 = addSpan TOpGE alex_action_149 = addSpanAndMatch TOpCustom alex_action_150 = addSpanAndMatch TId {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "" #-} {-# LINE 16 "" #-} {-# LINE 1 "/usr/local/lib/ghc-7.10.2/include/ghcversion.h" #-} {-# LINE 17 "" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- ----------------------------------------------------------------------------- -- ALEX TEMPLATE -- -- This code is in the PUBLIC DOMAIN; you may copy it freely and use -- it for any purpose whatsoever. -- ----------------------------------------------------------------------------- -- INTERNALS and main scanner engine {-# LINE 21 "templates/GenericTemplate.hs" #-} {-# LINE 51 "templates/GenericTemplate.hs" #-} {-# LINE 72 "templates/GenericTemplate.hs" #-} alexIndexInt16OffAddr arr off = arr ! off {-# LINE 93 "templates/GenericTemplate.hs" #-} alexIndexInt32OffAddr arr off = arr ! off {-# LINE 105 "templates/GenericTemplate.hs" #-} quickIndex arr i = arr ! i -- ----------------------------------------------------------------------------- -- Main lexing routines data AlexReturn a = AlexEOF | AlexError !AlexInput | AlexSkip !AlexInput !Int | AlexToken !AlexInput !Int a -- alexScan :: AlexInput -> StartCode -> AlexReturn a alexScan input (sc) = alexScanUser undefined input (sc) alexScanUser user input (sc) = case alex_scan_tkn user input (0) input sc AlexNone of (AlexNone, input') -> case alexGetByte input of Nothing -> AlexEOF Just _ -> AlexError input' (AlexLastSkip input'' len, _) -> AlexSkip input'' len (AlexLastAcc k input''' len, _) -> AlexToken input''' len k -- Push the input through the DFA, remembering the most recent accepting -- state it encountered. alex_scan_tkn user orig_input len input s last_acc = input `seq` -- strict in the input let new_acc = (check_accs (alex_accept `quickIndex` (s))) in new_acc `seq` case alexGetByte input of Nothing -> (new_acc, input) Just (c, new_input) -> case fromIntegral c of { (ord_c) -> let base = alexIndexInt32OffAddr alex_base s offset = (base + ord_c) check = alexIndexInt16OffAddr alex_check offset new_s = if (offset >= (0)) && (check == ord_c) then alexIndexInt16OffAddr alex_table offset else alexIndexInt16OffAddr alex_deflt s in case new_s of (-1) -> (new_acc, input) -- on an error, we want to keep the input *before* the -- character that failed, not after. _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len + (1)) else len) -- note that the length is increased ONLY if this is the 1st byte in a char encoding) new_input new_s new_acc } where check_accs (AlexAccNone) = last_acc check_accs (AlexAcc a ) = AlexLastAcc a input (len) check_accs (AlexAccSkip) = AlexLastSkip input (len) check_accs (AlexAccPred a predx rest) | predx user orig_input (len) input = AlexLastAcc a input (len) | otherwise = check_accs rest check_accs (AlexAccSkipPred predx rest) | predx user orig_input (len) input = AlexLastSkip input (len) | otherwise = check_accs rest data AlexLastAcc a = AlexNone | AlexLastAcc a !AlexInput !Int | AlexLastSkip !AlexInput !Int instance Functor AlexLastAcc where fmap f AlexNone = AlexNone fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z fmap f (AlexLastSkip x y) = AlexLastSkip x y data AlexAcc a user = AlexAccNone | AlexAcc a | AlexAccSkip | AlexAccPred a (AlexAccPred user) (AlexAcc a user) | AlexAccSkipPred (AlexAccPred user) (AlexAcc a user) type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool -- ----------------------------------------------------------------------------- -- Predicates on a rule alexAndPred p1 p2 user in1 len in2 = p1 user in1 len in2 && p2 user in1 len in2 --alexPrevCharIsPred :: Char -> AlexAccPred _ alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input alexPrevCharMatches f _ input _ _ = f (alexInputPrevChar input) --alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input --alexRightContext :: Int -> AlexAccPred _ alexRightContext (sc) user _ _ input = case alex_scan_tkn user input (0) input sc AlexNone of (AlexNone, _) -> False _ -> True -- TODO: there's no need to find the longest -- match when checking the right context, just -- the first match will do. -- used by wrappers iUnbox (i) = i