packages feed

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

{-# LANGUAGE CPP #-}
{-# LINE 1 "FixedForm.x" #-}

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE UndecidableInstances #-}

module Language.Fortran.Lexer.FixedForm where

import Data.Word (Word8)
import Data.Char (toLower, isDigit, ord)
import Data.List (isPrefixOf, isSuffixOf, any)
import Data.Maybe (fromJust, isNothing)
import Data.Data
import Data.Typeable
import qualified Data.Bits

import Control.Exception
import Control.Monad.State
import Control.Monad (liftM2)

import GHC.Exts
import GHC.Generics

import Language.Fortran.ParserMonad

import Language.Fortran.Util.FirstParameter
import Language.Fortran.Util.Position

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,588) [-9,237,316,429,-59,-44,424,-98,-99,-86,552,-97,-101,1,-80,-95,-88,-89,0,665,13,-79,-67,-92,-87,-73,-84,0,730,203,23,-18,-15,-14,-11,-10,-8,-7,14,35,36,37,38,60,986,922,0,0,0,252,268,326,336,0,0,0,0,0,39,40,0,0,0,0,0,343,0,1130,1158,1233,1261,1336,1364,1439,1467,1542,1570,1645,1673,1748,1776,1851,1879,1954,1982,2057,2085,2160,2188,2263,2291,2366,2394,2469,2497,2572,2600,2675,2703,2778,2806,2881,2909,2984,3012,3087,3115,3190,3218,3293,3321,3396,3424,3499,3527,3602,3630,3705,3733,3808,3836,3911,3939,4014,4042,4117,4145,4220,4248,4323,4351,4426,4454,4529,4557,4632,4660,4735,4763,4838,4866,4941,4969,5044,5072,5147,5175,5250,5278,5353,5381,5456,5484,5559,5587,5662,5690,5765,5793,5868,5896,5971,5999,6074,6102,6177,6205,6280,6308,6383,6411,6486,6514,6589,6617,6692,6720,6795,6823,6898,6926,7001,7029,7104,7132,7207,7235,7310,7338,7413,7441,7516,7544,7619,7647,7722,7750,7825,7853,7928,7956,8031,8059,8134,8162,8237,8265,8340,8368,8443,8471,8546,8574,8649,8677,8752,8780,8855,8883,8958,8986,9061,9089,9164,9192,9267,9295,9370,9398,9473,9501,9576,9604,9679,9707,9782,9810,9885,9913,9988,10016,10091,10119,10194,10222,10297,10325,10400,10428,10503,10531,10606,10634,10709,10737,10812,10840,10915,0,10943,11018,11046,11121,11149,11224,11252,11327,11355,11430,11458,11533,11561,11636,11664,11739,11767,11842,11870,11945,11973,12048,12076,12151,12179,12254,12282,12357,12385,12460,12488,12563,12591,12666,12694,12769,12797,12872,12900,12975,13003,13078,13106,13181,13209,13284,13312,13387,13415,13490,13518,13593,13621,13696,13724,13799,13827,13902,13930,14005,14033,14108,14136,14211,14239,14314,14342,14417,14445,14520,14548,14623,14651,14726,14754,14829,14857,14932,14960,15035,15063,15138,15166,24,15241,15269,15344,15372,15447,15475,15550,15578,15653,346,446,15681,15758,15786,15861,15889,15966,15994,16071,16099,16176,16204,16281,16309,16386,16414,16491,16519,16596,16624,16701,16729,16806,16834,16911,16939,17016,17044,17121,17149,17226,17254,17331,17359,17436,17464,17541,17569,17646,17674,17751,17779,17856,17884,17961,17989,18066,18094,18171,18199,18276,18304,18381,18409,18486,456,468,1140,18512,0,0,0,212,0,0,46,48,0,0,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,1243,18585,18613,18688,18716,18791,18819,18894,18922,18997,19025,19100,19128,19203,19231,19306,19334,19409,19437,19512,19540,19615,19643,19718,19746,19821,19849,19924,1346,0,0,19952,20027,20055,20130,20158,20233,20261,20336,20364,20439,20467,20542,20570,20645,20673,20748,20776,20851,20879,20954,20982,21057,21085,21160,21188,21263,21291,21366,21394,21469,21497,21572,21600,21675,21703,21778,21806,21883,21911,21988,22016,22091,22119,22194,22222,22302,22330,22405,22433,22508,22536,22611,22639,22714,22742,22817,22845,22920,22948,23023,23051,23126,23154,0,1451,23229,23257,23332,23360,23435,23463,23538,23566,23641,23669,23744,23772,23847,23875,23950,23978,24053,24081,24156,24184,24259,24287,24362,24390,24465,24493,24568,24596,24673,24701,24778,24806,24883,24911,24988,25016,25093,25121,25198,25226,25303,25331,25408,25436,25513,25541,25618,25646,25723,25751,25826,25854,25929,25957,26032,0]

alex_table :: Array Int Int
alex_table = listArray (0,26287) [0,56,428,42,55,465,465,465,465,465,465,465,465,465,34,33,7,16,7,12,11,25,31,54,47,24,37,40,436,39,41,435,434,47,35,433,432,32,431,424,52,52,52,52,52,52,52,52,52,36,20,20,20,20,20,20,20,20,20,30,423,20,20,20,20,20,20,20,20,20,20,437,437,437,437,437,437,437,437,437,437,422,421,420,413,427,62,62,417,63,47,47,426,430,0,0,0,0,0,23,0,0,0,0,0,0,0,38,352,352,352,352,352,352,352,352,352,352,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,44,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,45,6,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,10,18,18,18,19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,56,0,0,57,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,4,0,0,0,0,0,412,59,61,418,414,64,416,65,419,410,410,410,410,410,410,410,410,410,410,66,0,425,342,429,50,50,50,50,50,50,50,50,50,50,0,0,0,0,0,467,51,51,51,51,51,51,51,51,51,51,56,0,0,57,0,0,0,0,496,496,496,512,512,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,64,0,0,0,410,410,410,410,410,410,410,410,410,410,48,48,48,48,48,48,48,48,48,48,49,49,49,49,49,49,49,49,49,49,352,352,352,352,352,352,352,352,352,352,0,0,0,0,0,0,0,0,0,131,135,121,223,198,132,125,134,93,134,134,133,134,134,167,128,134,116,117,168,134,134,148,134,134,134,56,17,0,57,0,8,14,21,0,0,0,0,22,0,9,26,0,0,0,0,15,0,0,4,0,0,0,0,0,412,58,60,418,414,64,415,65,419,410,411,411,411,411,411,411,411,411,411,66,0,425,342,429,30,0,353,353,353,353,353,353,353,353,353,353,352,352,352,352,352,352,352,352,352,352,30,0,353,353,353,353,353,353,353,353,353,353,471,496,485,513,514,492,492,496,520,496,496,470,496,480,496,496,496,477,496,468,496,496,496,496,496,496,44,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,6,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,45,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,289,289,289,289,289,289,289,289,289,289,410,410,410,410,410,410,410,410,410,410,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,336,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,336,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,437,437,437,437,437,437,437,437,437,437,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,336,289,289,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,318,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,465,465,465,465,465,465,465,465,465,465,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,259,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,262,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,30,0,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,265,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,315,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,267,289,289,289,289,289,289,289,289,0,268,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,270,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,289,289,282,289,289,289,289,289,289,289,289,289,289,289,289,304,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,289,289,289,289,289,289,289,289,289,289,289,277,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,275,289,289,289,289,289,289,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,273,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,272,289,289,289,289,289,289,289,0,289,289,289,289,289,289,289,289,289,289,289,289,323,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,328,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,289,289,289,289,330,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,331,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,286,0,179,179,179,247,179,179,179,179,179,179,179,254,179,179,179,179,179,179,179,179,179,179,179,179,179,179,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,288,0,79,79,79,249,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,285,0,158,158,158,231,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,190,158,158,158,158,158,158,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,238,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,288,0,79,79,79,79,79,237,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,284,0,141,141,141,141,141,234,141,141,141,141,141,141,143,145,141,141,141,141,141,141,141,141,141,141,141,141,286,0,179,179,179,179,179,179,179,179,179,179,179,239,179,179,179,179,179,179,179,179,179,179,179,179,179,179,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,253,79,79,79,79,79,79,79,79,79,79,79,79,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,250,179,179,179,179,179,179,179,179,179,179,179,179,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,240,79,79,79,79,79,79,79,79,79,79,79,79,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,235,179,179,179,179,179,179,179,179,179,179,179,179,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,232,79,79,79,79,79,79,79,79,79,79,79,79,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,242,179,179,179,179,179,179,179,179,179,179,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,257,79,79,79,79,79,79,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,252,210,210,210,210,210,210,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,243,179,179,179,179,179,179,285,0,88,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,123,158,158,115,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,225,158,158,158,158,158,158,158,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,227,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,229,179,179,179,179,179,179,179,287,0,210,210,210,210,210,210,99,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,98,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,285,0,158,158,158,158,96,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,95,210,210,210,210,210,210,210,210,210,210,210,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,100,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,103,158,158,158,158,158,158,158,158,158,158,150,158,158,158,158,158,158,287,0,101,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,197,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,284,0,141,141,141,141,104,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,284,0,196,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,112,142,141,141,141,141,141,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,155,158,158,106,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,195,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,107,158,158,158,158,158,158,158,158,158,158,158,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,284,0,194,141,141,141,141,141,141,139,141,141,141,120,141,141,130,141,141,141,141,141,141,141,141,141,141,141,286,0,179,179,179,179,179,179,179,179,108,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,193,179,179,179,179,179,286,0,179,179,179,179,179,179,179,179,179,179,179,179,111,179,179,169,179,179,179,179,179,179,179,179,179,179,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,192,141,141,141,141,141,141,141,141,141,141,141,285,0,158,158,158,158,158,158,158,158,191,158,158,158,158,158,165,158,158,158,158,158,158,158,158,158,158,158,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,114,179,179,179,179,179,179,179,179,179,179,179,179,179,284,0,118,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,126,141,141,141,141,141,141,141,141,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,122,158,158,158,158,158,158,158,285,0,158,158,158,158,158,158,158,158,158,158,158,158,124,162,158,158,158,158,158,158,158,158,158,158,158,158,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,129,141,141,141,141,141,141,141,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,147,141,141,141,141,141,144,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,146,141,141,141,141,141,141,141,141,141,141,141,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,284,0,137,141,141,141,141,141,141,141,141,141,141,136,141,141,141,141,141,141,141,141,141,141,141,141,141,141,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,152,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,153,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,285,0,158,158,158,158,158,158,158,158,158,158,158,158,154,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,160,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,156,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,285,0,158,159,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,161,158,158,158,158,158,158,158,158,158,158,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,151,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,163,158,158,166,158,158,158,158,158,158,285,0,158,158,158,158,158,158,164,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,127,158,158,158,158,158,158,158,158,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,119,141,141,141,141,141,141,141,141,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,186,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,184,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,183,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,173,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,175,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,182,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,177,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,179,179,179,179,181,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,180,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,178,179,179,179,179,179,179,179,179,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,176,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,172,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,171,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,185,179,179,179,179,179,286,0,179,179,179,179,179,179,179,179,189,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,170,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,188,179,179,179,179,179,179,179,179,179,179,179,179,174,179,179,179,179,179,179,179,179,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,284,0,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,110,141,141,141,141,141,141,141,141,141,141,284,0,141,141,141,141,141,141,141,109,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,217,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,219,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,216,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,204,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,214,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,213,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,212,210,210,210,210,210,210,210,287,0,206,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,207,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,208,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,210,210,210,211,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,209,210,210,210,210,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,205,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,203,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,215,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,202,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,201,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,200,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,218,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,287,0,210,210,220,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,221,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,102,179,179,179,179,179,179,179,179,179,179,179,179,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,222,158,158,158,158,158,158,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,97,210,210,210,210,210,210,210,210,285,0,158,158,158,158,158,158,158,158,158,158,158,94,158,158,158,158,158,158,158,158,158,158,158,158,158,158,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,228,179,179,179,179,179,179,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,226,158,158,158,158,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,89,210,210,210,210,210,210,210,210,210,210,210,210,284,0,141,141,141,141,141,141,141,141,141,141,141,105,141,90,141,141,140,141,141,141,141,141,141,113,141,141,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,230,158,158,158,158,158,158,288,0,79,79,79,79,79,79,79,79,79,79,79,86,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,85,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,87,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,72,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,73,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,77,79,79,79,79,79,79,79,288,0,79,79,83,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,82,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,81,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,80,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,76,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,75,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,74,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,71,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,70,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,69,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,68,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,84,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,67,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,255,210,286,0,179,179,179,179,179,179,179,179,179,179,179,179,179,179,233,179,179,179,179,179,179,179,179,179,179,179,141,141,141,141,141,141,141,141,141,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,284,0,199,141,141,141,141,141,141,141,138,141,141,141,141,141,245,141,141,141,141,141,141,141,141,141,141,141,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,246,210,210,210,210,210,210,210,210,210,210,210,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,286,0,179,179,179,179,236,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,286,0,179,179,179,179,241,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,244,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,248,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,251,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,286,0,256,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,286,0,179,179,179,224,179,187,179,179,91,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,92,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,158,158,158,158,158,158,158,158,158,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,285,0,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,157,158,149,158,158,158,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,79,79,79,79,79,79,79,79,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,288,0,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,287,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,290,0,290,290,290,290,290,290,290,290,290,290,290,334,290,290,290,290,290,290,290,290,290,290,290,290,290,290,297,297,297,297,297,297,297,297,297,297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,297,0,297,297,297,297,297,297,297,297,297,297,297,297,297,337,297,297,297,297,297,297,297,297,297,297,297,297,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,332,291,291,291,291,291,291,291,291,291,291,291,291,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,324,290,290,290,290,290,290,290,290,290,290,290,290,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,341,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,339,291,291,291,291,291,291,291,291,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,340,290,290,290,290,290,290,295,295,295,295,295,295,295,295,295,295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,295,0,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,338,295,295,290,0,290,290,290,290,290,290,290,290,321,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,290,0,290,290,319,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,0,292,292,320,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296,296,296,296,296,296,296,296,296,296,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,261,290,290,290,290,290,290,290,290,290,290,290,296,0,296,296,296,296,296,296,296,296,296,296,296,296,296,296,260,296,296,296,296,296,296,296,296,296,296,296,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,264,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,0,290,290,290,290,263,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,294,294,294,294,294,294,294,294,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,294,0,294,294,294,294,266,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,290,0,290,290,290,290,290,290,290,290,314,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,295,295,295,295,295,295,295,295,295,295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,295,0,295,295,295,295,295,295,295,295,271,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,290,0,290,290,290,290,312,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,294,294,294,294,294,294,294,294,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,293,293,293,293,293,293,293,293,293,293,0,0,0,0,0,0,0,0,0,294,0,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,276,294,294,294,294,294,294,294,293,0,293,293,293,293,293,293,293,293,278,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,309,291,291,291,291,291,291,291,291,291,291,291,291,291,292,0,292,292,279,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,280,290,290,290,290,290,290,290,290,290,290,290,291,0,291,291,291,291,281,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,285,285,285,285,285,285,285,285,285,285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,286,286,286,286,286,286,286,286,286,286,0,0,0,0,0,0,0,0,0,285,0,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,286,0,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,287,287,287,287,287,287,287,287,287,287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,288,288,288,288,288,288,288,288,288,288,0,0,0,0,0,0,0,0,0,287,0,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,288,0,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,289,289,289,289,289,289,289,289,289,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,289,0,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,293,293,293,293,293,293,293,293,293,293,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,294,294,294,294,294,294,294,294,0,0,0,0,0,0,0,0,0,293,0,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,0,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,295,295,295,295,295,295,295,295,295,295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296,296,296,296,296,296,296,296,296,296,0,0,0,0,0,0,0,0,0,295,0,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,296,0,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,297,297,297,297,297,297,297,297,297,297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,298,298,298,298,298,298,298,298,298,298,0,0,0,0,0,0,0,0,0,297,0,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,298,0,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,299,299,299,299,299,299,299,299,299,299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300,300,300,300,300,300,300,300,300,300,0,0,0,0,0,0,0,0,0,299,0,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,300,0,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,301,301,301,301,301,301,301,301,301,301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,302,302,302,302,302,302,302,302,302,302,0,0,0,0,0,0,0,0,0,301,0,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,302,0,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,303,303,303,303,303,303,303,303,303,303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,305,305,305,305,305,305,305,305,305,305,0,0,0,0,0,0,0,0,0,303,0,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,305,0,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,306,306,306,306,306,306,306,306,306,306,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,283,290,290,290,290,290,290,290,290,306,0,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,307,307,307,307,307,307,307,307,307,307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,308,308,308,308,308,308,308,308,308,308,0,0,0,0,0,0,0,0,0,307,0,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,308,0,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,310,310,310,310,310,310,310,310,310,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,310,0,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,311,292,292,292,292,292,292,292,292,292,292,313,313,313,313,313,313,313,313,313,313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,293,293,293,293,293,293,293,293,293,293,0,0,0,0,0,0,0,0,0,313,0,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,293,0,293,293,293,293,293,293,293,293,293,293,293,274,293,293,293,293,293,293,293,293,293,293,293,293,293,293,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,316,316,316,316,316,316,316,316,316,316,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,269,291,291,291,291,291,291,291,291,291,291,291,291,316,0,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,317,291,291,291,291,291,291,291,291,291,291,291,291,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,322,290,290,290,290,290,290,258,258,258,258,258,258,258,258,258,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,258,0,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,292,0,292,292,292,292,325,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,327,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,0,291,291,291,291,329,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,293,293,293,293,293,293,293,293,293,293,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,293,0,293,293,293,293,333,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,291,0,291,291,335,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,291,0,326,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,293,293,293,293,293,293,293,293,293,293,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,293,0,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,294,294,294,294,294,294,294,294,0,0,0,0,0,0,0,0,0,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,294,0,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,290,290,290,290,290,290,290,290,290,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,298,298,298,298,298,298,298,298,298,298,0,0,0,0,0,0,0,0,0,290,0,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,298,0,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,296,296,296,296,296,296,296,296,296,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,296,0,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,291,291,291,291,291,291,291,291,291,291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,292,292,292,292,292,292,292,292,292,0,0,0,0,0,0,0,0,0,291,0,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,0,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,539,539,539,539,539,539,539,539,539,539,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,547,547,547,547,547,547,547,547,547,547,0,0,0,0,0,0,0,0,0,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,547,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,545,545,545,545,545,545,545,545,545,545,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,0,0,0,0,0,0,0,0,0,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,364,364,364,364,364,364,364,364,364,0,0,0,0,0,0,0,0,0,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,30,0,365,365,365,365,365,365,365,365,365,365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,357,357,357,357,357,357,357,357,357,357,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,358,358,358,358,358,358,358,358,358,358,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,362,362,362,362,362,362,362,362,362,362,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,30,0,360,360,360,360,360,360,360,360,360,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,361,361,361,361,361,361,361,361,361,361,0,0,0,0,0,0,0,0,0,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,30,0,363,363,363,363,363,363,363,363,363,363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,354,354,354,354,354,354,354,354,354,354,0,0,0,0,0,0,0,0,0,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,537,0,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,30,0,355,355,355,355,355,355,355,355,355,355,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,366,366,366,366,366,366,366,366,366,366,0,0,0,0,0,0,0,0,0,537,0,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,30,0,367,367,367,367,367,367,367,367,367,367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,368,368,368,368,368,368,368,0,0,0,0,0,0,0,0,0,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,540,0,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,30,0,369,369,369,369,369,369,369,369,369,369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,370,370,370,370,370,370,370,370,370,370,0,0,0,0,0,0,0,0,0,540,0,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,30,0,371,371,371,371,371,371,371,371,371,371,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,372,372,372,372,372,372,372,372,372,372,0,0,0,0,0,0,0,0,0,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,542,0,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,30,0,373,373,373,373,373,373,373,373,373,373,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,374,374,374,374,374,374,374,374,374,374,0,0,0,0,0,0,0,0,0,542,0,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,543,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,30,0,375,375,375,375,375,375,375,375,375,375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,376,376,376,376,376,376,376,376,376,376,0,0,0,0,0,0,0,0,0,543,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,544,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,30,0,377,377,377,377,377,377,377,377,377,377,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,378,378,378,378,378,378,378,378,378,0,0,0,0,0,0,0,0,0,544,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,30,0,379,379,379,379,379,379,379,379,379,379,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,380,380,380,380,380,380,380,380,380,380,0,0,0,0,0,0,0,0,0,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,546,0,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,30,0,381,381,381,381,381,381,381,381,381,381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,382,382,382,382,382,382,382,382,382,382,0,0,0,0,0,0,0,0,0,546,0,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,547,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,30,0,383,383,383,383,383,383,383,383,383,383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,384,384,384,384,384,384,384,384,384,384,0,0,0,0,0,0,0,0,0,547,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,548,0,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,30,0,385,385,385,385,385,385,385,385,385,385,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,386,386,386,386,386,386,386,386,386,386,0,0,0,0,0,0,0,0,0,548,0,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,549,0,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,30,0,387,387,387,387,387,387,387,387,387,387,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,388,388,388,388,388,388,388,388,388,388,0,0,0,0,0,0,0,0,0,549,0,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,550,0,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,30,0,389,389,389,389,389,389,389,389,389,389,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,390,390,390,390,390,390,390,390,390,390,0,0,0,0,0,0,0,0,0,550,0,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,551,0,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,30,0,391,391,391,391,391,391,391,391,391,391,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,392,392,392,392,392,392,392,392,392,392,0,0,0,0,0,0,0,0,0,551,0,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,0,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,30,0,393,393,393,393,393,393,393,393,393,393,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,394,394,394,394,394,394,394,394,394,394,0,0,0,0,0,0,0,0,0,552,0,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,553,0,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,30,0,395,395,395,395,395,395,395,395,395,395,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,396,396,396,396,396,396,396,396,396,396,0,0,0,0,0,0,0,0,0,553,0,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,554,0,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,30,0,397,397,397,397,397,397,397,397,397,397,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,398,398,398,398,398,398,398,398,398,398,0,0,0,0,0,0,0,0,0,554,0,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,555,0,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,30,0,399,399,399,399,399,399,399,399,399,399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,400,400,400,400,400,400,400,400,400,400,0,0,0,0,0,0,0,0,0,555,0,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,556,0,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,30,0,401,401,401,401,401,401,401,401,401,401,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,402,402,402,402,402,402,402,402,402,402,0,0,0,0,0,0,0,0,0,556,0,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,557,0,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,30,0,403,403,403,403,403,403,403,403,403,403,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,404,404,404,404,404,404,404,404,404,404,0,0,0,0,0,0,0,0,0,557,0,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,558,0,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,30,0,405,405,405,405,405,405,405,405,405,405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,406,406,406,406,406,406,406,406,406,406,0,0,0,0,0,0,0,0,0,558,0,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,559,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,30,0,407,407,407,407,407,407,407,407,407,407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,408,408,408,408,408,408,408,408,408,408,0,0,0,0,0,0,0,0,0,559,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,531,0,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,30,0,409,409,409,409,409,409,409,409,409,409,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,411,411,411,411,411,411,411,411,411,411,0,0,0,0,0,0,0,0,0,0,0,531,0,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,5,0,0,13,13,13,13,588,5,0,0,5,0,0,0,467,0,0,0,0,0,0,0,466,464,464,464,464,464,464,464,464,464,464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,440,440,440,440,440,440,440,440,440,440,0,0,0,0,0,0,0,0,0,537,0,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,441,441,441,441,441,441,441,441,441,441,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,438,438,438,438,438,438,438,438,438,438,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,465,465,465,465,465,465,465,465,465,465,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,442,442,442,442,442,442,442,442,442,442,0,0,0,0,0,0,0,0,0,531,0,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,559,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,443,443,443,443,443,443,443,443,443,443,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,444,444,444,444,444,444,444,444,444,444,0,0,0,0,0,0,0,0,0,558,0,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,557,0,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,445,445,445,445,445,445,445,445,445,445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,446,446,446,446,446,446,446,446,446,446,0,0,0,0,0,0,0,0,0,556,0,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,555,0,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,447,447,447,447,447,447,447,447,447,447,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,448,448,448,448,448,448,448,448,448,448,0,0,0,0,0,0,0,0,0,554,0,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,553,0,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,449,449,449,449,449,449,449,449,449,449,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450,450,450,450,450,450,450,450,450,450,0,0,0,0,0,0,0,0,0,552,0,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,551,0,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,451,451,451,451,451,451,451,451,451,451,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,452,452,452,452,452,452,452,452,452,452,0,0,0,0,0,0,0,0,0,550,0,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,549,0,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,453,453,453,453,453,453,453,453,453,453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,454,454,454,454,454,454,454,454,454,454,0,0,0,0,0,0,0,0,0,548,0,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,547,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,455,455,455,455,455,455,455,455,455,455,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,456,456,456,456,456,456,456,456,456,456,0,0,0,0,0,0,0,0,0,546,0,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,457,457,457,457,457,457,457,457,457,457,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,458,458,458,458,458,458,458,458,458,458,0,0,0,0,0,0,0,0,0,544,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,543,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,459,459,459,459,459,459,459,459,459,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,460,460,460,460,460,460,460,460,460,460,0,0,0,0,0,0,0,0,0,542,0,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,461,461,461,461,461,461,461,461,461,461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,462,462,462,462,462,462,462,462,462,462,0,0,0,0,0,0,0,0,0,540,0,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,463,463,463,463,463,463,463,463,463,463,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,497,497,497,497,497,497,497,497,497,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,533,0,497,497,497,497,497,497,497,472,497,497,497,497,497,497,343,497,497,497,497,497,497,497,497,497,497,497,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,439,439,439,439,439,439,439,439,439,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,351,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,483,497,497,497,497,497,497,497,497,497,497,497,497,439,439,439,439,439,439,439,439,439,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,534,0,498,498,498,498,519,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,487,487,487,487,487,487,487,487,487,487,0,0,0,0,0,0,0,0,0,534,0,518,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,537,0,517,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,487,487,487,487,487,487,487,487,487,487,0,0,0,0,0,0,0,0,0,537,0,487,487,487,487,516,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,537,0,487,487,487,487,515,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,497,497,497,497,497,497,497,497,497,497,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,533,0,497,497,497,497,473,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,536,0,503,503,474,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,497,497,497,497,497,497,497,497,497,0,0,0,0,0,0,0,0,0,536,0,503,503,503,503,503,503,475,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,511,497,497,497,497,497,497,497,497,497,497,497,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,501,501,501,501,478,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,535,0,501,501,501,501,479,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,534,0,498,498,498,498,498,498,481,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,534,0,498,498,498,498,498,498,498,498,498,498,498,498,509,498,498,498,498,498,498,498,498,498,498,498,498,498,497,497,497,497,497,497,497,497,497,497,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,533,0,497,497,497,497,497,497,497,494,497,497,497,497,497,497,484,497,497,497,497,497,497,497,497,497,497,497,538,0,538,538,529,538,538,538,538,538,538,538,538,538,538,538,538,582,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,560,560,560,560,560,560,560,560,560,560,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,487,487,487,487,487,487,487,487,487,487,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,523,538,538,538,538,538,538,537,0,487,487,489,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,504,504,504,504,504,504,504,504,504,0,0,0,0,0,0,0,0,0,537,0,487,487,487,487,486,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,536,0,490,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,534,0,500,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,497,497,497,497,497,497,497,497,497,0,0,0,0,0,0,0,0,0,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,499,498,498,498,498,498,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,535,0,501,502,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,493,501,501,501,501,501,501,501,501,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,536,0,503,503,503,503,503,503,503,503,503,503,503,491,503,503,503,503,503,503,503,503,503,503,503,503,503,503,487,487,487,487,487,487,487,487,487,487,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,505,505,505,505,505,505,505,505,505,505,0,0,0,0,0,0,0,0,0,537,0,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,30,0,506,506,506,506,506,506,506,506,506,506,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,507,507,507,507,507,507,507,507,507,507,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,536,0,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,30,0,488,488,488,488,488,488,488,488,488,488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,537,0,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,482,498,498,498,498,498,498,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,503,503,503,503,503,503,503,503,503,503,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,510,501,501,501,501,501,501,501,501,501,501,536,0,503,503,503,503,503,503,503,503,503,503,503,476,503,503,503,503,503,503,503,503,503,503,503,503,503,503,498,498,498,498,498,498,498,498,498,498,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,43,0,0,356,356,356,356,356,356,356,356,356,356,0,0,0,0,0,0,0,0,0,534,0,498,498,498,498,498,498,498,498,498,498,498,498,498,469,498,498,498,498,498,498,498,498,498,498,498,498,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,43,0,43,0,0,356,359,359,359,359,359,359,359,359,359,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,43,0,0,356,359,359,359,359,359,359,359,359,359,0,0,0,0,0,0,0,0,0,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,495,497,497,497,497,497,497,497,497,497,497,497,533,0,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,347,538,538,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,347,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,347,538,538,538,538,538,538,538,538,538,538,538,538,538,538,535,0,501,501,501,501,501,501,501,501,501,501,501,346,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,439,439,439,439,439,439,439,439,439,0,0,0,0,0,0,0,0,0,535,0,501,501,501,501,501,501,501,501,501,501,501,501,501,345,501,501,501,501,501,501,501,501,501,501,501,501,533,0,497,497,497,497,497,344,497,497,497,497,497,497,497,508,497,497,497,497,497,497,497,497,497,497,497,497,545,545,545,545,545,545,545,545,545,545,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,543,543,543,543,543,543,543,543,543,543,0,0,0,0,0,0,0,0,0,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,587,545,545,545,545,545,545,545,545,545,545,545,543,0,543,543,543,543,586,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,539,539,539,539,539,539,539,539,539,539,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,544,544,544,544,544,544,544,544,544,544,0,0,0,0,0,0,0,0,0,539,0,539,539,539,539,585,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,544,0,544,544,544,544,544,544,544,544,521,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,543,543,543,543,543,543,543,543,543,543,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,542,542,542,542,542,542,542,542,542,542,0,0,0,0,0,0,0,0,0,543,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,524,543,543,543,543,543,543,543,542,0,542,542,542,542,542,542,542,542,525,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,540,540,540,540,540,540,540,540,540,540,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,0,0,0,0,0,0,0,0,0,540,0,540,540,540,540,540,540,540,540,540,540,540,540,583,540,540,540,540,540,540,540,540,540,540,540,540,540,541,0,541,541,526,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,539,539,539,539,539,539,539,539,539,539,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,540,540,540,540,540,540,540,540,540,540,0,0,0,0,0,0,0,0,0,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,527,539,539,539,539,539,539,539,539,539,539,539,540,0,540,540,540,540,528,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,534,534,534,534,534,534,534,534,534,534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,535,535,535,535,535,535,535,535,535,535,0,0,0,0,0,0,0,0,0,534,0,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,535,0,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,536,536,536,536,536,536,536,536,536,536,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,537,537,537,537,537,537,537,537,537,0,0,0,0,0,0,0,0,0,536,0,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,537,0,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,538,538,538,538,538,538,538,538,538,538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,539,539,539,539,539,539,539,539,539,539,0,0,0,0,0,0,0,0,0,538,0,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,540,540,540,540,540,540,540,540,540,540,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,0,0,0,0,0,0,0,0,0,540,0,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,542,542,542,542,542,542,542,542,542,542,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,543,543,543,543,543,543,543,543,543,543,0,0,0,0,0,0,0,0,0,542,0,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,543,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,544,544,544,544,544,544,544,544,544,544,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,545,545,545,545,545,545,545,545,545,545,0,0,0,0,0,0,0,0,0,544,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,546,546,546,546,546,546,546,546,546,546,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,547,547,547,547,547,547,547,547,547,547,0,0,0,0,0,0,0,0,0,546,0,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,547,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,548,548,548,548,548,548,548,548,548,548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,549,549,549,549,549,549,549,549,549,0,0,0,0,0,0,0,0,0,548,0,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,549,0,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,550,550,550,550,550,550,550,550,550,550,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,551,551,551,551,551,551,551,551,551,551,0,0,0,0,0,0,0,0,0,550,0,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,551,0,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,552,552,552,552,552,552,552,552,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,553,553,553,553,553,553,553,553,553,553,0,0,0,0,0,0,0,0,0,552,0,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,553,0,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,554,554,554,554,554,554,554,554,554,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,555,555,555,555,555,555,555,555,555,555,0,0,0,0,0,0,0,0,0,554,0,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,555,0,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,556,556,556,556,556,556,556,556,556,556,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557,557,557,557,557,557,557,557,557,557,0,0,0,0,0,0,0,0,0,556,0,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,557,0,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,558,558,558,558,558,558,558,558,558,558,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,559,559,559,559,559,559,559,559,559,559,0,0,0,0,0,0,0,0,0,558,0,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,559,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,531,531,531,531,531,531,531,531,531,531,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,561,561,561,561,561,561,561,561,561,561,0,0,0,0,0,0,0,0,0,531,0,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,30,0,562,562,562,562,562,562,562,562,562,562,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,563,563,563,563,563,563,563,563,563,563,0,0,0,0,0,0,0,0,0,540,0,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,30,0,564,564,564,564,564,564,564,564,564,564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,565,565,565,565,565,565,565,565,565,565,0,0,0,0,0,0,0,0,0,542,0,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,543,0,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,30,0,566,566,566,566,566,566,566,566,566,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,567,567,567,567,567,567,567,567,567,567,0,0,0,0,0,0,0,0,0,544,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,545,0,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,30,0,568,568,568,568,568,568,568,568,568,568,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,569,569,569,569,569,569,569,569,569,569,0,0,0,0,0,0,0,0,0,546,0,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,547,0,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,30,0,570,570,570,570,570,570,570,570,570,570,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,571,571,571,571,571,571,571,571,571,571,0,0,0,0,0,0,0,0,0,548,0,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,549,0,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,30,0,572,572,572,572,572,572,572,572,572,572,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,573,573,573,573,573,573,573,573,573,573,0,0,0,0,0,0,0,0,0,550,0,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,551,0,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,30,0,574,574,574,574,574,574,574,574,574,574,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,575,575,575,575,575,575,575,575,575,575,0,0,0,0,0,0,0,0,0,552,0,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,553,0,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,30,0,576,576,576,576,576,576,576,576,576,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,577,577,577,577,577,577,577,577,577,577,0,0,0,0,0,0,0,0,0,554,0,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,555,0,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,30,0,578,578,578,578,578,578,578,578,578,578,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,579,579,579,579,579,579,579,579,579,579,0,0,0,0,0,0,0,0,0,556,0,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,557,0,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,30,0,580,580,580,580,580,580,580,580,580,580,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,581,581,581,581,581,581,581,581,581,581,0,0,0,0,0,0,0,0,0,558,0,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,559,0,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,30,0,532,532,532,532,532,532,532,532,532,532,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,539,539,539,539,539,539,539,539,539,539,0,0,0,0,0,0,0,0,0,531,0,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,539,0,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,530,539,539,539,539,539,539,539,539,541,541,541,541,541,541,541,541,541,541,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,542,542,542,542,542,542,542,542,542,542,0,0,0,0,0,0,0,0,0,541,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,584,541,541,541,541,541,541,541,541,541,541,542,0,542,542,542,542,542,542,542,542,542,542,542,522,542,542,542,542,542,542,542,542,542,542,542,542,542,542,540,540,540,540,540,540,540,540,540,540,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,544,544,544,544,544,544,544,544,544,544,0,0,0,0,0,0,0,0,0,540,0,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,350,540,540,540,540,540,540,540,540,544,0,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,349,544,544,546,546,546,546,546,546,546,546,546,546,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,546,0,546,546,546,546,546,546,546,546,546,546,546,546,546,348,546,546,546,546,546,546,546,546,546,546,546,546,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,26287) [-1,10,61,101,13,49,50,51,52,53,54,55,56,57,113,101,117,97,115,114,108,110,101,32,33,111,118,100,46,116,114,46,46,42,101,46,46,116,46,46,49,50,51,52,53,54,55,56,57,116,49,50,51,52,53,54,55,56,57,46,46,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,46,46,46,46,61,47,47,42,41,99,100,61,61,-1,-1,-1,-1,-1,113,-1,-1,-1,-1,-1,-1,-1,118,48,49,50,51,52,53,54,55,56,57,-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,10,-1,-1,13,48,49,50,51,52,53,54,55,56,57,49,50,51,52,53,54,55,56,57,33,-1,-1,-1,-1,-1,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,-1,60,61,62,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,112,48,49,50,51,52,53,54,55,56,57,10,-1,-1,13,-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,44,-1,-1,-1,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,48,49,50,51,52,53,54,55,56,57,-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,10,97,-1,13,-1,101,102,103,-1,-1,-1,-1,108,-1,110,111,-1,-1,-1,-1,116,-1,-1,33,-1,-1,-1,-1,-1,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,-1,60,61,62,46,-1,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,46,-1,48,49,50,51,52,53,54,55,56,57,97,98,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,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,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,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,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,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,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,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,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,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,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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,95,-1,97,98,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,-1,-1,100,101,102,103,104,105,-1,-1,108,-1,-1,-1,112,-1,-1,-1,-1,-1,-1,-1,120,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,43,-1,45,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,43,-1,45,-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,43,-1,45,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,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,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,95,-1,97,98,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,588) [53,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,27,27,-1,-1,-1,-1,-1,-1,-1,46,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,53,53,53,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-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,588) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccPred  (alex_action_0) ( commentP )(AlexAccPred  (alex_action_2) ( \_ ai _ _ -> atColP 6 ai )(AlexAccNone)),AlexAccPred  (alex_action_1) ( withinLabelColsP )(AlexAccNone),AlexAccPred  (alex_action_1) ( withinLabelColsP )(AlexAccNone),AlexAccPred  (alex_action_1) ( withinLabelColsP )(AlexAccNone),AlexAccPred  (alex_action_1) ( withinLabelColsP )(AlexAccNone),AlexAccPred  (alex_action_1) ( withinLabelColsP )(AlexAccPred  (alex_action_2) ( \_ ai _ _ -> atColP 6 ai )(AlexAccNone)),AlexAccPred  (alex_action_2) ( \_ ai _ _ -> atColP 6 ai )(AlexAccNone),AlexAccPred  (alex_action_2) ( \_ ai _ _ -> atColP 6 ai )(AlexAccSkip),AlexAccPred  (alex_action_2) ( \_ ai _ _ -> atColP 6 ai )(AlexAccSkip),AlexAcc (alex_action_4),AlexAccSkip,AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAccPred  (alex_action_10) ( formatExtendedP )(AlexAccNone),AlexAccPred  (alex_action_11) ( formatExtendedP )(AlexAccNone),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAccPred  (alex_action_14) ( fortran77P )(AlexAccNone),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone)),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_21))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_22))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_25))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_26))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_28) ( fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_29) (fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_30) (fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_31) (fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_32))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_33))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_34) ( fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_36))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_37) ( extended77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_38))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_39))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_41) ( extended77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_42))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_43))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_44))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_48) ( fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_49) ( fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_50) ( fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_52))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_56))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_65) ( fortran77P )(AlexAccNone))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_66))),AlexAccPred  (alex_action_15) ( idP )(AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_67))),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccNone),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_17)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_18)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_19)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_20)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_35)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_40) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_45)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_46)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_47) ( fortran77P )(AlexAccNone)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_51)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_53)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_54)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_55) ( fortran77P )(AlexAccNone)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_56)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAcc (alex_action_56)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_58) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_60) ( fortran77P )(AlexAccNone)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_62) ( fortran77P )(AlexAccNone)),AlexAccPred  (alex_action_16) ( extendedIdP )(AlexAccPred  (alex_action_64) ( fortran77P )(AlexAccNone)),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAccPred  (alex_action_27) ( fortran77P )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_28) ( fortran77P )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_57) ( implicitStP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_57) ( implicitStP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_57) ( implicitStP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_59) ( implicitTypeExtendedP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_61) ( implicitType77P )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_63) ( fortran77P )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccNone),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccNone),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAcc (alex_action_98)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAccPred  (alex_action_68) ( exponentP )(AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone)),AlexAcc (alex_action_69),AlexAcc (alex_action_69),AlexAccPred  (alex_action_70) ( fortran77P )(AlexAccNone),AlexAcc (alex_action_71),AlexAcc (alex_action_72),AlexAcc (alex_action_73),AlexAcc (alex_action_73),AlexAcc (alex_action_74),AlexAcc (alex_action_75),AlexAcc (alex_action_76),AlexAcc (alex_action_77),AlexAcc (alex_action_78),AlexAcc (alex_action_79),AlexAccPred  (alex_action_80) ( fortran77P )(AlexAccNone),AlexAccPred  (alex_action_81) ( fortran77P )(AlexAccNone),AlexAccPred  (alex_action_82) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_83) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_84) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_85) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_86) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_87) ( extended77P )(AlexAccNone),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAcc (alex_action_91),AlexAcc (alex_action_92),AlexAcc (alex_action_93),AlexAcc (alex_action_94),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_95),AlexAcc (alex_action_96),AlexAcc (alex_action_97),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAcc (alex_action_98),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_99) ( extended77P )(AlexAccNone),AlexAccPred  (alex_action_100) ( fortran66P )(AlexAccNone)]
{-# LINE 202 "FixedForm.x" #-}


--------------------------------------------------------------------------------
-- Predicated lexer helpers
--------------------------------------------------------------------------------

formatExtendedP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
formatExtendedP fv _ _ ai = fv == Fortran77Extended &&
  case xs of
    [ TFormat _, _ ] -> False
    [ TLabel _ _, TFormat _ ] -> False
    _ -> True
  where
    xs = take 2 . reverse . aiPreviousTokensInLine $ ai

implicitType77P :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
implicitType77P fv b c d = fortran77P fv b c d && implicitStP fv b c d

implicitTypeExtendedP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
implicitTypeExtendedP fv b c d = extended77P fv b c d && implicitStP fv b c d

implicitStP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
implicitStP fv _ _ ai = checkPreviousTokensInLine f ai
  where
    f (TImplicit _) = True
    f _ = False

extendedIdP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
extendedIdP fv a b ai = fv == Fortran77Extended && idP fv a b ai

idP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
idP fv _ _ ai = not (doP ai) && equalFollowsP fv ai

doP :: AlexInput -> Bool
doP ai = isPrefixOf "do" (reverse . lexemeMatch . aiLexeme $ ai)

equalFollowsP :: FortranVersion -> AlexInput -> Bool
equalFollowsP fv ai =
    case unParse (lexer $ f False 0) ps of
      ParseOk True _ -> True
      _ -> False
  where
    ps = ParseState
      { psAlexInput = ai { aiStartCode = st}
      , psVersion = fv
      , psFilename = "<unknown>"
      , psParanthesesCount = ParanthesesCount 0 False
      , psContext = [ ConStart ] }
    f False 0 t =
      case t of
        TNewline{} -> return False
        TEOF{} -> return False
        TOpAssign{} -> return True
        TLeftPar{} -> lexer $ f True 1
        _ -> return False
    f True 0 t =
      case t of
        TOpAssign{} -> return True
        _ -> return False
    f True n t =
      case t of
        TNewline{} -> return False
        TEOF{} -> return False
        TLeftPar{} -> lexer $ f True (n + 1)
        TRightPar{} -> lexer $ f True (n - 1)
        _ -> lexer $ f True n

commentP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
commentP _ aiOld _ aiNew = atColP 1 aiOld && _endsWithLine
  where
    _endsWithLine = (posColumn . aiPosition) aiNew /= 1

withinLabelColsP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
withinLabelColsP _ aiOld _ aiNew = getCol aiOld >= 1 && getCol aiNew <= 6
  where
    getCol = posColumn . aiPosition

atColP :: Integer -> AlexInput -> Bool
atColP n ai = (posColumn . aiPosition) ai == n

-- This predicate allows to distinguish identifiers and real exponent tokens
-- by looking at previous token. Since exponent can only follow a "." or an
-- integer token. Anything other previous token will prevent matching the input
-- as an exponent token.
exponentP :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
exponentP _ _ _ ai =
  case aiPreviousToken ai of
    Just (TInt _ _) -> True
    Just (TDot _) -> True
    _ -> False

fortran66P :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
fortran66P fv _ _ _ = fv == Fortran66

fortran77P :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
fortran77P fv _ _ _ = fv == Fortran77 || fv == Fortran77Extended

extended77P :: FortranVersion -> AlexInput -> Int -> AlexInput -> Bool
extended77P fv _ _ _ = fv == Fortran77Extended

--------------------------------------------------------------------------------
-- Lexer helpers
--------------------------------------------------------------------------------

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 }

incWhiteSensitiveCharCount :: LexAction ()
incWhiteSensitiveCharCount = do
  ai <- getAlex
  let wsc = aiWhiteSensitiveCharCount ai
  putAlex $ ai { aiWhiteSensitiveCharCount = wsc + 1 }

resetWhiteSensitiveCharCount :: LexAction ()
resetWhiteSensitiveCharCount = do
  ai <- getAlex
  putAlex $ ai { aiWhiteSensitiveCharCount = 0 }

instance Spanned Lexeme where
  getSpan lexeme =
    let ms = lexemeStart lexeme
        me = lexemeEnd lexeme in
      SrcSpan (fromJust ms) (fromJust me)
  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

-- With the existing alexGetByte implementation comments are matched without
-- whitespace characters. However, we have access to final column number,
-- we know the comment would start at column, and we have access to the absolute
-- offset so instead of using match, lexComment takes a slice from the original
-- source input
lexComment :: Maybe Char -> LexAction (Maybe Token)
lexComment mc = do
  m <- getMatch
  s <- getLexemeSpan
  alex <- getAlex
  let modifiedAlex = alex { aiWhiteSensitiveCharCount = 1 }
  case mc of
    Just '\n' -> return $ Just $ TComment s $ tail m
    Just _ ->
      case alexGetByte modifiedAlex of
        Just (_, newAlex) -> do
          putAlex newAlex
          lexComment Nothing
        Nothing -> fail "Comment abruptly ended."
    Nothing ->
      case alexGetByte modifiedAlex of
        Just (_, newAlex) -> lexComment (Just $ (head . lexemeMatch . aiLexeme) newAlex)
        Nothing -> return $ Just $ TComment s $ tail m


{-
     Chars
      +-+
      | |
      | |
      | v
      +-+  Nothing  +-+
+---> |0|---------->+3|
  +-> +++           +-+
  |    |
' |    | '
  |    v
  |   +++  Nothing  +-+
  +---|1|----------->2|
      +++           +++
       |             ^
       +-------------+
            Chars
-}
strAutomaton :: Int -> LexAction (Maybe Token)
strAutomaton 0 = do
  incWhiteSensitiveCharCount
  alex <- getAlex
  case alexGetByte alex of
    Just (_, newAlex) -> do
      putAlex newAlex
      m <- getMatch
      if last m == '\''
      then strAutomaton 1
      else strAutomaton 0
    Nothing -> strAutomaton 3
strAutomaton 1 = do
  incWhiteSensitiveCharCount
  alex <- getAlex
  case alexGetByte alex of
    Just (_, newAlex) -> do
      let m = lexemeMatch . aiLexeme $ newAlex
      if head m == '\''
      then do
        putAlex newAlex
        putMatch $ reverse . tail $ m
        strAutomaton 0
      else strAutomaton 2
    Nothing -> strAutomaton 2
strAutomaton 2 = do
  s <- getLexemeSpan
  m <- getMatch
  resetWhiteSensitiveCharCount
  return $ Just $ TString s $ (init . tail) m
strAutomaton 3 = fail "Unmatched string."

lexHollerith :: LexAction (Maybe Token)
lexHollerith = do
  match' <- getMatch
  let len = read $ init match' -- Get n of "nH" from string
  putMatch ""
  ai <- getAlex
  putAlex $ ai { aiWhiteSensitiveCharCount = len }
  lexed <- lexN len
  s <- getLexemeSpan
  return $ do
    hollerith <- lexed
    return $ THollerith s hollerith

lexN :: Int -> LexAction (Maybe String)
lexN n = do
  alex <- getAlex
  match' <- getMatch
  let len = length match'
  if n == len
  then return $ Just match'
  else
    case alexGetByte alex of
      Just (_, newAlex) -> do
        putAlex newAlex
        lexN n
      Nothing -> return Nothing

-- Lexing various field descriptors

lexFieldDescriptorDEFG :: LexAction (Maybe Token)
lexFieldDescriptorDEFG = do
  match <- getMatch
  let (repeat, descriptor, width, rest) = takeRepeatDescriptorWidth match
  let fractionWidth = (read $ fst $ takeNumber $ tail rest) :: Integer
  s <- getLexemeSpan
  return $ Just $ TFieldDescriptorDEFG s repeat descriptor width fractionWidth

lexFieldDescriptorAIL :: LexAction (Maybe Token)
lexFieldDescriptorAIL = do
  match <- getMatch
  let (repeat, descriptor, width, rest) = takeRepeatDescriptorWidth match
  s <- getLexemeSpan
  return $ Just $ TFieldDescriptorAIL s repeat descriptor width

lexBlankDescriptor :: LexAction (Maybe Token)
lexBlankDescriptor = do
  match <- getMatch
  let (width, _) = takeNumber match
  s <- getLexemeSpan
  return $ Just $ TBlankDescriptor s (read width :: Integer)

lexScaleFactor :: LexAction (Maybe Token)
lexScaleFactor = do
  match <- getMatch
  let (sign, rest) = if head match == '-' then (-1, tail match) else (1, match)
  let (width, _) = takeNumber rest
  s <- getLexemeSpan
  return $ Just $ TScaleFactor s $ (read width) * sign

takeRepeatDescriptorWidth :: String -> (Maybe Integer, Char, Integer, String)
takeRepeatDescriptorWidth str =
  let (repeatStr, rest) = takeNumber str
      repeat = if repeatStr == [] then Nothing else Just $ (read repeatStr :: Integer)
      descriptor = head rest
      (widthStr, rest') = takeNumber $ tail rest
      width = read widthStr :: Integer in
    (repeat, descriptor, width, rest')

takeNumber :: String -> (String, String)
takeNumber str = span isDigit str

maybeToKeyword :: LexAction (Maybe Token)
maybeToKeyword = do
  decPar
  pcActual <- pcActual . psParanthesesCount <$> get
  if pcActual == 0
  then toSC keyword
  else return Nothing

typeSCChange :: LexAction (Maybe Token)
typeSCChange = do
  ps <- get
  let hypotheticalPs = ps { psAlexInput = (psAlexInput ps) { aiStartCode = keyword } }
  let isFunction = case unParse (lexer f) hypotheticalPs of { ParseOk True _ -> True; _ -> False }
  if isFunction
  then return Nothing
  else toSC st
  where
    f TFunction{} = return True
    f _ = return False

toSC :: Int -> LexAction (Maybe Token)
toSC startCode = do
  ai <- getAlex
  if startCode == 0
  then putAlex $ ai { aiStartCode = startCode, aiWhiteSensitiveCharCount = 6 }
  else putAlex $ ai { aiStartCode = startCode }
  return Nothing

--------------------------------------------------------------------------------
-- Tokens
--------------------------------------------------------------------------------

data Token = TLeftPar             SrcSpan
           | TRightPar            SrcSpan
           | TLeftArrayPar        SrcSpan
           | TRightArrayPar       SrcSpan
           | TComma               SrcSpan
           | TDot                 SrcSpan
           | TColon               SrcSpan
           | TProgram             SrcSpan
           | TFunction            SrcSpan
           | TSubroutine          SrcSpan
           | TBlockData           SrcSpan
           | TEnd                 SrcSpan
           | TAssign              SrcSpan
           | TOpAssign            SrcSpan
           | TTo                  SrcSpan
           | TGoto                SrcSpan
           | TIf                  SrcSpan
           | TThen                SrcSpan
           | TElse                SrcSpan
           | TElsif               SrcSpan
           | TEndif               SrcSpan
           | TCall                SrcSpan
           | TReturn              SrcSpan
           | TSave                SrcSpan
           | TContinue            SrcSpan
           | TStop                SrcSpan
           | TExit                SrcSpan
           | TPause               SrcSpan
           | TDo                  SrcSpan
           | TDoWhile             SrcSpan
           | TEndDo               SrcSpan
           | TRead                SrcSpan
           | TWrite               SrcSpan
           | TRewind              SrcSpan
           | TBackspace           SrcSpan
           | TEndfile             SrcSpan
           | TInquire             SrcSpan
           | TOpen                SrcSpan
           | TClose               SrcSpan
           | TPrint               SrcSpan
           | TDimension           SrcSpan
           | TCommon              SrcSpan
           | TEquivalence         SrcSpan
           | TExternal            SrcSpan
           | TIntrinsic           SrcSpan
           | TType                SrcSpan String
           | TEntry               SrcSpan
           | TImplicit            SrcSpan
           | TNone                SrcSpan
           | TParameter           SrcSpan
           | TData                SrcSpan
           | TFormat              SrcSpan
           | TFieldDescriptorDEFG SrcSpan (Maybe Integer) Char Integer Integer
           | TFieldDescriptorAIL  SrcSpan (Maybe Integer) Char Integer
           | TBlankDescriptor     SrcSpan Integer
           | TScaleFactor         SrcSpan Integer
           | TInt                 SrcSpan String
           | TExponent            SrcSpan String
           | TBool                SrcSpan String
           | TOpPlus              SrcSpan
           | TOpMinus             SrcSpan
           | TOpExp               SrcSpan
           | TStar                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
           | TId                  SrcSpan String
           | TComment             SrcSpan String
           | TString              SrcSpan String
           | THollerith           SrcSpan String
           | TLabel               SrcSpan String
           | TNewline             SrcSpan
           | TEOF                 SrcSpan
           deriving (Show, Eq, Ord, Data, Typeable, Generic)

instance FirstParameter Token SrcSpan
instance FirstParameter Token SrcSpan => Spanned Token where
  getSpan a = getFirstParameter a
  setSpan e a = setFirstParameter e a

instance Tok Token where
  eofToken (TEOF _) = True
  eofToken _ = False

--------------------------------------------------------------------------------
-- 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 AlexInput = AlexInput
  { aiSourceInput               :: String
  , aiPosition                  :: Position
  , aiBytes                     :: [Word8]
  , aiPreviousChar              :: Char
  , aiLexeme                    :: Lexeme
  , aiWhiteSensitiveCharCount   :: Int
  , aiStartCode                 :: Int
  , 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
  , aiBytes = []
  , aiPreviousChar = '\n'
  , aiLexeme = initLexeme
  , aiWhiteSensitiveCharCount = 6
  , aiStartCode = 0
  , aiPreviousToken = Nothing
  , aiPreviousTokensInLine = [ ] }

updateLexeme :: Maybe Char -> Position -> AlexInput -> AlexInput
updateLexeme maybeChar p ai =
  let lexeme = aiLexeme ai
      match = lexemeMatch lexeme
      newMatch =
        case maybeChar of
          Just c -> toLower c : match
          Nothing -> match
      start = lexemeStart lexeme
      newStart = if isNothing start then Just p else start
      newEnd = Just p in
    ai { aiLexeme = Lexeme newMatch newStart newEnd }

--------------------------------------------------------------------------------
-- Definitions needed for alexScanUser
--------------------------------------------------------------------------------

data Move = Continuation | Char | Newline

alexGetByte :: AlexInput -> Maybe (Word8, AlexInput)
alexGetByte ai
  -- The process of reading individual bytes of the character
  | _bytes /= [] = Just (head _bytes, ai { aiBytes = tail _bytes })
  -- When all characters are already read
  | posAbsoluteOffset _position == (toInteger . length . aiSourceInput) ai = Nothing
  -- Skip the continuation line altogether
  | isContinuation ai && _isWhiteInsensitive = skip Continuation ai
  -- If we are not parsing a Hollerith skip whitespace
  | _curChar == ' ' && _isWhiteInsensitive = skip Char ai
  -- Read genuine character and advance. Also covers white sensitivity.
  | otherwise =
      let (_b:_bs) = (utf8Encode . toLower) _curChar in
        Just(_b, updateLexeme (Just _curChar) _position
          ai {
            aiPosition =
              case _curChar of
                '\n'  -> advance Newline _position
                _     -> advance Char _position,
            aiBytes = _bs,
            aiPreviousChar = _curChar,
            aiWhiteSensitiveCharCount =
              if _isWhiteInsensitive
              then 0
              else aiWhiteSensitiveCharCount ai - 1
          })
  where
    _curChar = currentChar ai
    _bytes = aiBytes ai
    _position = aiPosition ai
    _isWhiteInsensitive = aiWhiteSensitiveCharCount ai == 0

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 = head (takeNChars 1 ai)

isContinuation :: AlexInput -> Bool
isContinuation ai =
  take 6 _next7 == "\n     " && not (last _next7 `elem` [' ', '0'])
  where
    _next7 = takeNChars 7 ai

skip :: Move -> AlexInput -> Maybe (Word8, AlexInput)
skip move ai =
  let _newPosition = advance move $ aiPosition ai in
    alexGetByte $ updateLexeme Nothing _newPosition $ ai { aiPosition = _newPosition }

advance :: Move -> Position -> Position
advance move position =
  case move of
    Char ->
      position { posAbsoluteOffset = _absl + 1, posColumn = _col + 1 }
    Continuation ->
      position { posAbsoluteOffset = _absl + 7, posColumn = 7, posLine = _line + 1 }
    Newline ->
      position { posAbsoluteOffset = _absl + 1, posColumn = 1, posLine = _line + 1 }
  where
    _col = posColumn position
    _line = posLine position
    _absl = posAbsoluteOffset position

utf8Encode :: Char -> [Word8]
utf8Encode = map fromIntegral . _go . ord
  where
    _go oc
      | oc <= 0x7f   = [oc]
      | oc <= 0x7ff  = [ 0xc0 + (oc `Data.Bits.shiftR` 6)
                       , 0x80 + oc Data.Bits..&. 0x3f
                       ]
      | oc <= 0xffff = [ 0xe0 + (oc `Data.Bits.shiftR` 12)
                       , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
                       , 0x80 + oc Data.Bits..&. 0x3f
                       ]
      | otherwise    = [ 0xf0 + (oc `Data.Bits.shiftR` 18)
                       , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)
                       , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
                       , 0x80 + oc Data.Bits..&. 0x3f
                       ]

--------------------------------------------------------------------------------
-- Lexer definition
--------------------------------------------------------------------------------

lexer :: (Token -> LexAction a) -> LexAction a
lexer cont = cont =<< lexer'

lexer' :: LexAction Token
lexer' = do
  resetLexeme
  alexInput <- getAlex
  let startCode = aiStartCode alexInput
  version <- getVersion
  case alexScanUser version alexInput startCode of
    AlexEOF -> return $ TEOF $ SrcSpan (getPos alexInput) (getPos alexInput)
    AlexError _ -> fail "Lexing failed. "
    AlexSkip newAlex _ -> putAlex newAlex >> lexer'
    AlexToken newAlex startCode action -> do
      putAlex newAlex
      maybeToken <- action
      case maybeToken of
        Just token -> do
          updatePreviousToken maybeToken
          addToPreviousTokensInLine token
          return token
        Nothing -> lexer'

alexScanUser :: FortranVersion -> AlexInput -> Int -> AlexReturn (LexAction (Maybe Token))

--------------------------------------------------------------------------------
-- 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 ] }

collectFixedTokens :: FortranVersion -> String -> [Token]
collectFixedTokens version srcInput =
    collectTokens lexer' $ initParseState srcInput version "<unknown>"

collectFixedTokensSafe :: FortranVersion -> String -> Maybe [Token]
collectFixedTokensSafe version srcInput =
    collectTokensSafe lexer' $ initParseState srcInput version "<unknown>"



iif,keyword,st :: Int
iif = 1
keyword = 2
st = 3
alex_action_0 =  lexComment Nothing 
alex_action_1 =  addSpanAndMatch TLabel 
alex_action_2 =  toSC keyword 
alex_action_4 =  resetPar >> toSC 0 >> addSpan TNewline 
alex_action_6 =  addSpan TLeftPar 
alex_action_7 =  incPar >> addSpan TLeftPar 
alex_action_8 =  addSpan TRightPar 
alex_action_9 =  maybeToKeyword >> addSpan TRightPar 
alex_action_10 =  addSpan TLeftArrayPar 
alex_action_11 =  addSpan TRightArrayPar 
alex_action_12 =  addSpan TComma 
alex_action_13 =  addSpan TDot 
alex_action_14 =  addSpan TColon 
alex_action_15 =  toSC st >> addSpanAndMatch TId 
alex_action_16 =  toSC st >> addSpanAndMatch TId 
alex_action_17 =  toSC st >> addSpan TProgram 
alex_action_18 =  toSC st >> addSpan TFunction  
alex_action_19 =  toSC st >> addSpan TSubroutine  
alex_action_20 =  toSC st >> addSpan TBlockData  
alex_action_21 =  toSC st >> addSpan TEnd  
alex_action_22 =  toSC st >> addSpan TAssign  
alex_action_23 =  addSpan TOpAssign  
alex_action_24 =  addSpan TTo  
alex_action_25 =  toSC st >> addSpan TGoto  
alex_action_26 =  toSC iif >> addSpan TIf  
alex_action_27 =  toSC iif >> addSpan TIf  
alex_action_28 =  toSC keyword >> addSpan TThen  
alex_action_29 =  addSpan TElse  
alex_action_30 =  toSC st >> addSpan TElsif  
alex_action_31 =  addSpan TEndif  
alex_action_32 =  toSC st >> addSpan TCall  
alex_action_33 =  toSC st >> addSpan TReturn  
alex_action_34 =  toSC st >> addSpan TSave  
alex_action_35 =  toSC st >> addSpan TContinue  
alex_action_36 =  toSC st >> addSpan TStop  
alex_action_37 =  toSC st >> addSpan TExit  
alex_action_38 =  toSC st >> addSpan TPause  
alex_action_39 =  toSC st >> addSpan TDo 
alex_action_40 =  toSC st >> addSpan TDoWhile 
alex_action_41 =  toSC st >> addSpan TEndDo  
alex_action_42 =  toSC st >> addSpan TRead  
alex_action_43 =  toSC st >> addSpan TWrite  
alex_action_44 =  toSC st >> addSpan TRewind  
alex_action_45 =  toSC st >> addSpan TBackspace  
alex_action_46 =  toSC st >> addSpan TEndfile  
alex_action_47 =  toSC st >> addSpan TInquire  
alex_action_48 =  toSC st >> addSpan TOpen  
alex_action_49 =  toSC st >> addSpan TClose  
alex_action_50 =  toSC st >> addSpan TPrint  
alex_action_51 =  toSC st >> addSpan TDimension  
alex_action_52 =  toSC st >> addSpan TCommon  
alex_action_53 =  toSC st >> addSpan TEquivalence  
alex_action_54 =  toSC st >> addSpan TExternal  
alex_action_55 =  toSC st >> addSpan TIntrinsic  
alex_action_56 =  typeSCChange >> addSpanAndMatch TType 
alex_action_57 =  addSpanAndMatch TType 
alex_action_58 =  typeSCChange >> addSpanAndMatch TType 
alex_action_59 =  addSpanAndMatch TType 
alex_action_60 =  toSC st >> addSpanAndMatch TType 
alex_action_61 =  addSpanAndMatch TType 
alex_action_62 =  toSC st >> addSpan TImplicit  
alex_action_63 =  addSpan TNone  
alex_action_64 =  toSC st >> addSpan TParameter  
alex_action_65 =  toSC st >> addSpan TEntry  
alex_action_66 =  toSC st >> addSpan TData  
alex_action_67 =  toSC st >> addSpan TFormat  
alex_action_68 =  addSpanAndMatch TExponent 
alex_action_69 =  addSpanAndMatch TInt 
alex_action_70 =  strAutomaton 0 
alex_action_71 =  addSpanAndMatch TBool  
alex_action_72 =  addSpan TOpPlus  
alex_action_73 =  addSpan TOpMinus  
alex_action_74 =  addSpan TOpExp  
alex_action_75 =  addSpan TStar  
alex_action_76 =  addSpan TSlash  
alex_action_77 =  addSpan TOpOr  
alex_action_78 =  addSpan TOpAnd  
alex_action_79 =  addSpan TOpNot  
alex_action_80 =  addSpan TOpEquivalent  
alex_action_81 =  addSpan TOpNotEquivalent  
alex_action_82 =  addSpan TOpLT  
alex_action_83 =  addSpan TOpLE  
alex_action_84 =  addSpan TOpEQ  
alex_action_85 =  addSpan TOpNE  
alex_action_86 =  addSpan TOpGT  
alex_action_87 =  addSpan TOpGE  
alex_action_88 =  addSpan TOpLT  
alex_action_89 =  addSpan TOpLE  
alex_action_90 =  addSpan TOpEQ  
alex_action_91 =  addSpan TOpNE  
alex_action_92 =  addSpan TOpGT  
alex_action_93 =  addSpan TOpGE  
alex_action_94 =  lexFieldDescriptorDEFG 
alex_action_95 =  lexFieldDescriptorAIL 
alex_action_96 =  lexBlankDescriptor 
alex_action_97 =  lexScaleFactor 
alex_action_98 =  addSpanAndMatch TId 
alex_action_99 =  addSpanAndMatch TId 
alex_action_100 =  lexHollerith 
{-# 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