packages feed

fortran-src-0.1.0.1: src/Language/Fortran/Lexer/FreeForm.hs

{-# 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 = "<unknown>"
      , 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 = "<unknown>"
      , 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 "<unknown>"



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 "<built-in>" #-}
{-# LINE 16 "<built-in>" #-}
{-# LINE 1 "/usr/local/lib/ghc-7.10.2/include/ghcversion.h" #-}


















{-# LINE 17 "<built-in>" #-}
{-# 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