{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
{-# OPTIONS_GHC -fno-warn-tabs #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE CPP #-}
{-# LINE 1 "src/Lexer.x" #-}
module Lexer where
import Data.Maybe (fromMaybe)
#include "ghcconfig.h"
import qualified Data.Array
#define ALEX_POSN 1
#if defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT)
import Control.Applicative as App (Applicative (..))
#endif
#if defined(ALEX_STRICT_TEXT) || defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)
import qualified Data.Text
#endif
import Data.Word (Word8)
#if defined(ALEX_BASIC_BYTESTRING) || defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)
import Data.Int (Int64)
import qualified Data.Char
import qualified Data.ByteString.Lazy as ByteString
import qualified Data.ByteString.Internal as ByteString (w2c)
#elif defined(ALEX_STRICT_BYTESTRING)
import qualified Data.Char
import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Internal as ByteString hiding (ByteString)
import qualified Data.ByteString.Unsafe as ByteString
#else
import Data.Char (ord)
import qualified Data.Bits
utf8Encode :: Char -> [Word8]
utf8Encode = uncurry (:) . utf8Encode'
utf8Encode' :: Char -> (Word8, [Word8])
utf8Encode' c = case go (ord c) of
(x, xs) -> (fromIntegral x, map fromIntegral xs)
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
])
#endif
type Byte = Word8
#if defined(ALEX_POSN) || defined(ALEX_MONAD) || defined(ALEX_GSCAN)
type AlexInput = (AlexPosn,
Char,
[Byte],
String)
ignorePendingBytes :: AlexInput -> AlexInput
ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar (_p,c,_bs,_s) = c
alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))
alexGetByte (_,_,[],[]) = Nothing
alexGetByte (p,_,[],(c:s)) = let p' = alexMove p c
in case utf8Encode' c of
(b, bs) -> p' `seq` Just (b, (p', c, bs, s))
#endif
#if defined (ALEX_STRICT_TEXT)
type AlexInput = (Char,
[Byte],
Data.Text.Text)
ignorePendingBytes :: AlexInput -> AlexInput
ignorePendingBytes (c,_ps,s) = (c,[],s)
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar (c,_bs,_s) = c
alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))
alexGetByte (_,[],s) = case Data.Text.uncons s of
Just (c, cs) ->
case utf8Encode' c of
(b, bs) -> Just (b, (c, bs, cs))
Nothing ->
Nothing
#endif
#if defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)
type AlexInput = (AlexPosn,
Char,
[Byte],
Data.Text.Text)
ignorePendingBytes :: AlexInput -> AlexInput
ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar (_p,c,_bs,_s) = c
alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))
alexGetByte (p,_,[],s) = case Data.Text.uncons s of
Just (c, cs) ->
let p' = alexMove p c
in case utf8Encode' c of
(b, bs) -> p' `seq` Just (b, (p', c, bs, cs))
Nothing ->
Nothing
#endif
#if defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)
type AlexInput = (AlexPosn,
Char,
ByteString.ByteString,
Int64)
ignorePendingBytes :: AlexInput -> AlexInput
ignorePendingBytes i = i
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar (_,c,_,_) = c
alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
alexGetByte (p,_,cs,n) =
case ByteString.uncons cs of
Nothing -> Nothing
Just (b, cs') ->
let c = ByteString.w2c b
p' = alexMove p c
n' = n+1
in p' `seq` cs' `seq` n' `seq` Just (b, (p', c, cs',n'))
#endif
#ifdef ALEX_BASIC_BYTESTRING
data AlexInput = AlexInput { alexChar :: {-# UNPACK #-} !Char,
alexStr :: !ByteString.ByteString,
alexBytePos :: {-# UNPACK #-} !Int64}
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar = alexChar
alexGetByte (AlexInput {alexStr=cs,alexBytePos=n}) =
case ByteString.uncons cs of
Nothing -> Nothing
Just (c, rest) ->
Just (c, AlexInput {
alexChar = ByteString.w2c c,
alexStr = rest,
alexBytePos = n+1})
#endif
#ifdef ALEX_STRICT_BYTESTRING
data AlexInput = AlexInput { alexChar :: {-# UNPACK #-} !Char,
alexStr :: {-# UNPACK #-} !ByteString.ByteString,
alexBytePos :: {-# UNPACK #-} !Int}
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar = alexChar
alexGetByte (AlexInput {alexStr=cs,alexBytePos=n}) =
case ByteString.uncons cs of
Nothing -> Nothing
Just (c, rest) ->
Just (c, AlexInput {
alexChar = ByteString.w2c c,
alexStr = rest,
alexBytePos = n+1})
#endif
#if defined(ALEX_POSN) || defined(ALEX_MONAD) || defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_GSCAN) || defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)
data AlexPosn = AlexPn !Int !Int !Int
deriving (Eq, Show, Ord)
alexStartPos :: AlexPosn
alexStartPos = AlexPn 0 1 1
alexMove :: AlexPosn -> Char -> AlexPosn
alexMove (AlexPn a l c) '\t' = AlexPn (a+1) l (c+alex_tab_size-((c-1) `mod` alex_tab_size))
alexMove (AlexPn a l _) '\n' = AlexPn (a+1) (l+1) 1
alexMove (AlexPn a l c) _ = AlexPn (a+1) l (c+1)
#endif
#if defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT)
data AlexState = AlexState {
alex_pos :: !AlexPosn,
#ifdef ALEX_MONAD_STRICT_TEXT
alex_inp :: Data.Text.Text,
alex_chr :: !Char,
alex_bytes :: [Byte],
#endif /* ALEX_MONAD_STRICT_TEXT */
#ifdef ALEX_MONAD
alex_inp :: String,
alex_chr :: !Char,
alex_bytes :: [Byte],
#endif /* ALEX_MONAD */
#ifdef ALEX_MONAD_BYTESTRING
alex_bpos:: !Int64,
alex_inp :: ByteString.ByteString,
alex_chr :: !Char,
#endif /* ALEX_MONAD_BYTESTRING */
alex_scd :: !Int
#ifdef ALEX_MONAD_USER_STATE
, alex_ust :: AlexUserState
#endif
}
#ifdef ALEX_MONAD
runAlex :: String -> Alex a -> Either String a
runAlex input__ (Alex f)
= case f (AlexState {alex_bytes = [],
alex_pos = alexStartPos,
alex_inp = input__,
alex_chr = '\n',
#ifdef ALEX_MONAD_USER_STATE
alex_ust = alexInitUserState,
#endif
alex_scd = 0}) of Left msg -> Left msg
Right ( _, a ) -> Right a
#endif
#ifdef ALEX_MONAD_BYTESTRING
runAlex :: ByteString.ByteString -> Alex a -> Either String a
runAlex input__ (Alex f)
= case f (AlexState {alex_bpos = 0,
alex_pos = alexStartPos,
alex_inp = input__,
alex_chr = '\n',
#ifdef ALEX_MONAD_USER_STATE
alex_ust = alexInitUserState,
#endif
alex_scd = 0}) of Left msg -> Left msg
Right ( _, a ) -> Right a
#endif
#ifdef ALEX_MONAD_STRICT_TEXT
runAlex :: Data.Text.Text -> Alex a -> Either String a
runAlex input__ (Alex f)
= case f (AlexState {alex_bytes = [],
alex_pos = alexStartPos,
alex_inp = input__,
alex_chr = '\n',
#ifdef ALEX_MONAD_USER_STATE
alex_ust = alexInitUserState,
#endif
alex_scd = 0}) of Left msg -> Left msg
Right ( _, a ) -> Right a
#endif
newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }
instance Functor Alex where
fmap f a = Alex $ \s -> case unAlex a s of
Left msg -> Left msg
Right (s', a') -> Right (s', f a')
instance Applicative Alex where
pure a = Alex $ \s -> Right (s, a)
fa <*> a = Alex $ \s -> case unAlex fa s of
Left msg -> Left msg
Right (s', f) -> case unAlex a s' of
Left msg -> Left msg
Right (s'', b) -> Right (s'', f b)
instance Monad Alex where
m >>= k = Alex $ \s -> case unAlex m s of
Left msg -> Left msg
Right (s',a) -> unAlex (k a) s'
return = App.pure
#ifdef ALEX_MONAD
alexGetInput :: Alex AlexInput
alexGetInput
= Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} ->
Right (s, (pos,c,bs,inp__))
#endif
#ifdef ALEX_MONAD_BYTESTRING
alexGetInput :: Alex AlexInput
alexGetInput
= Alex $ \s@AlexState{alex_pos=pos,alex_bpos=bpos,alex_chr=c,alex_inp=inp__} ->
Right (s, (pos,c,inp__,bpos))
#endif
#ifdef ALEX_MONAD_STRICT_TEXT
alexGetInput :: Alex AlexInput
alexGetInput
= Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} ->
Right (s, (pos,c,bs,inp__))
#endif
#ifdef ALEX_MONAD
alexSetInput :: AlexInput -> Alex ()
alexSetInput (pos,c,bs,inp__)
= Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of
state__@(AlexState{}) -> Right (state__, ())
#endif
#ifdef ALEX_MONAD_BYTESTRING
alexSetInput :: AlexInput -> Alex ()
alexSetInput (pos,c,inp__,bpos)
= Alex $ \s -> case s{alex_pos=pos,
alex_bpos=bpos,
alex_chr=c,
alex_inp=inp__} of
state__@(AlexState{}) -> Right (state__, ())
#endif
#ifdef ALEX_MONAD_STRICT_TEXT
alexSetInput :: AlexInput -> Alex ()
alexSetInput (pos,c,bs,inp__)
= Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of
state__@(AlexState{}) -> Right (state__, ())
#endif
alexError :: String -> Alex a
alexError message = Alex $ const $ Left message
alexGetStartCode :: Alex Int
alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)
alexSetStartCode :: Int -> Alex ()
alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())
#if defined(ALEX_MONAD_USER_STATE)
alexGetUserState :: Alex AlexUserState
alexGetUserState = Alex $ \s@AlexState{alex_ust=ust} -> Right (s,ust)
alexSetUserState :: AlexUserState -> Alex ()
alexSetUserState ss = Alex $ \s -> Right (s{alex_ust=ss}, ())
#endif /* defined(ALEX_MONAD_USER_STATE) */
#ifdef ALEX_MONAD
alexMonadScan = do
inp__ <- alexGetInput
sc <- alexGetStartCode
case alexScan inp__ sc of
AlexEOF -> alexEOF
AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
AlexSkip inp__' _len -> do
alexSetInput inp__'
alexMonadScan
AlexToken inp__' len action -> do
alexSetInput inp__'
action (ignorePendingBytes inp__) len
#endif
#ifdef ALEX_MONAD_BYTESTRING
alexMonadScan = do
inp__@(_,_,_,n) <- alexGetInput
sc <- alexGetStartCode
case alexScan inp__ sc of
AlexEOF -> alexEOF
AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
AlexSkip inp__' _len -> do
alexSetInput inp__'
alexMonadScan
AlexToken inp__'@(_,_,_,n') _ action -> let len = n'-n in do
alexSetInput inp__'
action (ignorePendingBytes inp__) len
#endif
#ifdef ALEX_MONAD_STRICT_TEXT
alexMonadScan = do
inp__ <- alexGetInput
sc <- alexGetStartCode
case alexScan inp__ sc of
AlexEOF -> alexEOF
AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
AlexSkip inp__' _len -> do
alexSetInput inp__'
alexMonadScan
AlexToken inp__' len action -> do
alexSetInput inp__'
action (ignorePendingBytes inp__) len
#endif
#ifdef ALEX_MONAD
type AlexAction result = AlexInput -> Int -> Alex result
#endif
#ifdef ALEX_MONAD_BYTESTRING
type AlexAction result = AlexInput -> Int64 -> Alex result
#endif
#ifdef ALEX_MONAD_STRICT_TEXT
type AlexAction result = AlexInput -> Int -> Alex result
#endif
skip _input _len = alexMonadScan
begin code _input _len = do alexSetStartCode code; alexMonadScan
andBegin :: AlexAction result -> Int -> AlexAction result
(action `andBegin` code) input__ len = do
alexSetStartCode code
action input__ len
#ifdef ALEX_MONAD
token :: (AlexInput -> Int -> token) -> AlexAction token
token t input__ len = return (t input__ len)
#endif
#ifdef ALEX_MONAD_BYTESTRING
token :: (AlexInput -> Int64 -> token) -> AlexAction token
token t input__ len = return (t input__ len)
#endif
#ifdef ALEX_MONAD_STRICT_TEXT
token :: (AlexInput -> Int -> token) -> AlexAction token
token t input__ len = return (t input__ len)
#endif
#endif /* defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT) */
#ifdef ALEX_BASIC
type AlexInput = (Char,[Byte],String)
alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar (c,_,_) = c
alexScanTokens str = go ('\n',[],str)
where go inp__@(_,_bs,s) =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError _ -> error "lexical error"
AlexSkip inp__' _ln -> go inp__'
AlexToken inp__' len act -> act (take len s) : go inp__'
alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))
alexGetByte (_,[],[]) = Nothing
alexGetByte (_,[],(c:s)) = case utf8Encode' c of
(b, bs) -> Just (b, (c, bs, s))
#endif
#ifdef ALEX_BASIC_BYTESTRING
alexScanTokens str = go (AlexInput '\n' str 0)
where go inp__ =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError _ -> error "lexical error"
AlexSkip inp__' _len -> go inp__'
AlexToken inp__' _ act ->
let len = alexBytePos inp__' - alexBytePos inp__ in
act (ByteString.take len (alexStr inp__)) : go inp__'
#endif
#ifdef ALEX_STRICT_BYTESTRING
alexScanTokens str = go (AlexInput '\n' str 0)
where go inp__ =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError _ -> error "lexical error"
AlexSkip inp__' _len -> go inp__'
AlexToken inp__' _ act ->
let len = alexBytePos inp__' - alexBytePos inp__ in
act (ByteString.take len (alexStr inp__)) : go inp__'
#endif
#ifdef ALEX_STRICT_TEXT
alexScanTokens str = go ('\n',[],str)
where go inp__@(_,_bs,s) =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError _ -> error "lexical error"
AlexSkip inp__' _len -> go inp__'
AlexToken inp__' len act -> act (Data.Text.take len s) : go inp__'
#endif
#ifdef ALEX_POSN_STRICT_TEXT
alexScanTokens str = go (alexStartPos,'\n',[],str)
where go inp__@(pos,_,_bs,s) =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
AlexSkip inp__' _len -> go inp__'
AlexToken inp__' len act -> act pos (Data.Text.take len s) : go inp__'
#endif
#ifdef ALEX_POSN
alexScanTokens str0 = go (alexStartPos,'\n',[],str0)
where go inp__@(pos,_,_,str) =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
AlexSkip inp__' _ln -> go inp__'
AlexToken inp__' len act -> act pos (take len str) : go inp__'
#endif
#ifdef ALEX_POSN_BYTESTRING
alexScanTokens str0 = go (alexStartPos,'\n',str0,0)
where go inp__@(pos,_,str,n) =
case alexScan inp__ 0 of
AlexEOF -> []
AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
AlexSkip inp__' _len -> go inp__'
AlexToken inp__'@(_,_,_,n') _ act ->
act pos (ByteString.take (n'-n) str) : go inp__'
#endif
#ifdef ALEX_GSCAN
alexGScan stop__ state__ inp__ =
alex_gscan stop__ alexStartPos '\n' [] inp__ (0,state__)
alex_gscan stop__ p c bs inp__ (sc,state__) =
case alexScan (p,c,bs,inp__) sc of
AlexEOF -> stop__ p c inp__ (sc,state__)
AlexError _ -> stop__ p c inp__ (sc,state__)
AlexSkip (p',c',bs',inp__') _len ->
alex_gscan stop__ p' c' bs' inp__' (sc,state__)
AlexToken (p',c',bs',inp__') len k ->
k p c inp__ len (\scs -> alex_gscan stop__ p' c' bs' inp__' scs) (sc,state__)
#endif
alex_tab_size :: Int
alex_tab_size = 8
alex_base :: Data.Array.Array Int Int
alex_base = Data.Array.listArray (0 :: Int, 107)
[ 1
, 207
, 291
, 375
, 0
, 0
, 0
, 0
, 0
, 68
, 69
, 93
, 0
, 8
, 0
, 0
, 88
, 0
, 73
, 0
, 74
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 459
, 0
, 89
, 103
, 0
, 0
, 543
, 627
, 711
, 795
, 0
, 908
, 1154
, 1267
, 1332
, 0
, 1396
, 1509
, 1755
, 1819
, 1884
, 1997
, 0
, 0
, 0
, 2243
, 904
, 1150
, 1751
, 2215
, 2460
, 2544
, 2628
, 2712
, 2796
, 2880
, 2964
, 0
, 2896
, 3009
, 0
, 0
, 3073
, 3329
, 97
, 3266
, 0
, 0
, 113
, 0
, 0
, 0
, 3394
, 3522
, 3650
, 3778
, 3906
, 4034
, 4162
, 4290
, 4546
, 4674
, 162
, 4792
, 4611
, 5048
, 5137
, 5221
, 5305
, 5389
, 5473
, 5557
, 5641
, 5725
, 5809
, 5893
, 5977
, 6061
, 6145
, 6229
]
alex_table :: Data.Array.Array Int Int
alex_table = Data.Array.listArray (0 :: Int, 6484)
[ 0
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 90
, 90
, 38
, 38
, 90
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 38
, 90
, 38
, 39
, 38
, 38
, 19
, 11
, 40
, 23
, 24
, 17
, 15
, 27
, 16
, 38
, 18
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 38
, 29
, 9
, 20
, 10
, 38
, 38
, 37
, 37
, 37
, 37
, 37
, 55
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 57
, 37
, 37
, 37
, 37
, 37
, 37
, 25
, 21
, 26
, 38
, 22
, 38
, 37
, 37
, 34
, 37
, 102
, 37
, 37
, 37
, 63
, 37
, 37
, 59
, 37
, 28
, 64
, 37
, 37
, 37
, 37
, 62
, 37
, 37
, 37
, 37
, 37
, 37
, 38
, 13
, 38
, 38
, 38
, 7
, 8
, 12
, 14
, 91
, 6
, 5
, 32
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 0
, 0
, 76
, 4
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 31
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 30
, 90
, 90
, 0
, 0
, 90
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 90
, 71
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 70
, 82
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 66
, 83
, 69
, 69
, 69
, 67
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 3
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 58
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 105
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 2
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 1
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, -1
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 33
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 53
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 35
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 89
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 47
, 80
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 42
, 81
, 52
, 52
, 52
, 45
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 0
, 0
, 0
, -1
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, -1
, 54
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 88
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 44
, 86
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 48
, 85
, 75
, 75
, 75
, 49
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 73
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 47
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 42
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 33
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 53
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 36
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 89
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 47
, 80
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 42
, 81
, 52
, 52
, 52
, 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
, 44
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 56
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 89
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 47
, 80
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 42
, 81
, 52
, 52
, 52
, 45
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 107
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 95
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 98
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 60
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 61
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 97
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 96
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 106
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 70
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 66
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 92
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 89
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 50
, 80
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 51
, 71
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 82
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 68
, 87
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 86
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 74
, 88
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 43
, 93
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 93
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 77
, 92
, 87
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 78
, 73
, 84
, 79
, 79
, 79
, 41
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 94
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 99
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 100
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 101
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 103
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 104
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 37
, 0
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 37
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 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 :: Data.Array.Array Int Int
alex_check = Data.Array.listArray (0 :: Int, 6484)
[ -1
, 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
, 61
, 61
, 38
, 124
, 45
, 61
, 61
, 39
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, 46
, 62
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 9
, 10
, -1
, -1
, 13
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 32
, 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
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 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
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 34
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, 92
, 97
, 98
, 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
, 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
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 39
, -1
, -1
, -1
, 39
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, 92
, 97
, 98
, 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
, 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
, 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
, 10
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 34
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, 92
, 97
, 98
, 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
, 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
, 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
, 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
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 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
, 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
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 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
, 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
, 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
, 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
, 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
, 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
, 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
, 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
, 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
, 10
, 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
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 128
, 129
, 130
, 131
, 132
, 133
, 134
, 135
, 136
, 137
, 138
, 139
, 140
, 141
, 142
, 143
, 144
, 145
, 146
, 147
, 148
, 149
, 150
, 151
, 152
, 153
, 154
, 155
, 156
, 157
, 158
, 159
, 160
, 161
, 162
, 163
, 164
, 165
, 166
, 167
, 168
, 169
, 170
, 171
, 172
, 173
, 174
, 175
, 176
, 177
, 178
, 179
, 180
, 181
, 182
, 183
, 184
, 185
, 186
, 187
, 188
, 189
, 190
, 191
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 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
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 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
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 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 :: Data.Array.Array Int Int
alex_deflt = Data.Array.listArray (0 :: Int, 107)
[ -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 46
, 72
, 78
, 50
, 72
, 72
, 51
, 46
, 46
, 43
, 74
, 46
, 50
, 51
, 46
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 38
, 65
, 68
, 65
, 68
, 38
, 38
, -1
, 77
, 43
, 74
, -1
, 91
, 77
, 78
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 72
, 46
, -1
, 91
, 91
, 91
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
]
alex_accept = Data.Array.listArray (0 :: Int, 107)
[ AlexAccNone
, AlexAcc 64
, AlexAcc 63
, AlexAcc 62
, AlexAcc 61
, AlexAcc 60
, AlexAcc 59
, AlexAcc 58
, AlexAcc 57
, AlexAcc 56
, AlexAcc 55
, AlexAcc 54
, AlexAcc 53
, AlexAcc 52
, AlexAcc 51
, AlexAcc 50
, AlexAcc 49
, AlexAcc 48
, AlexAcc 47
, AlexAcc 46
, AlexAcc 45
, AlexAcc 44
, AlexAcc 43
, AlexAcc 42
, AlexAcc 41
, AlexAcc 40
, AlexAcc 39
, AlexAcc 38
, AlexAcc 37
, AlexAcc 36
, AlexAcc 35
, AlexAcc 34
, AlexAcc 33
, AlexAcc 32
, AlexAcc 31
, AlexAcc 30
, AlexAcc 29
, AlexAcc 28
, AlexAcc 27
, AlexAcc 26
, AlexAcc 25
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAcc 24
, AlexAcc 23
, AlexAcc 22
, AlexAcc 21
, AlexAcc 20
, AlexAcc 19
, AlexAcc 18
, AlexAcc 17
, AlexAcc 16
, AlexAcc 15
, AlexAcc 14
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccSkip
, AlexAccSkip
, AlexAccNone
, AlexAccNone
, AlexAcc 13
, AlexAcc 12
, AlexAcc 11
, AlexAcc 10
, AlexAcc 9
, AlexAcc 8
, AlexAcc 7
, AlexAcc 6
, AlexAcc 5
, AlexAcc 4
, AlexAcc 3
, AlexAcc 2
, AlexAcc 1
, AlexAcc 0
]
alex_actions = Data.Array.array (0 :: Int, 65)
[ (64,alex_action_10)
, (63,alex_action_39)
, (62,alex_action_11)
, (61,alex_action_12)
, (60,alex_action_13)
, (59,alex_action_14)
, (58,alex_action_15)
, (57,alex_action_16)
, (56,alex_action_17)
, (55,alex_action_18)
, (54,alex_action_41)
, (53,alex_action_19)
, (52,alex_action_41)
, (51,alex_action_20)
, (50,alex_action_21)
, (49,alex_action_22)
, (48,alex_action_23)
, (47,alex_action_24)
, (46,alex_action_25)
, (45,alex_action_26)
, (44,alex_action_27)
, (43,alex_action_28)
, (42,alex_action_29)
, (41,alex_action_30)
, (40,alex_action_31)
, (39,alex_action_32)
, (38,alex_action_33)
, (37,alex_action_39)
, (36,alex_action_34)
, (35,alex_action_35)
, (34,alex_action_36)
, (33,alex_action_37)
, (32,alex_action_38)
, (31,alex_action_39)
, (30,alex_action_39)
, (29,alex_action_39)
, (28,alex_action_39)
, (27,alex_action_41)
, (26,alex_action_41)
, (25,alex_action_41)
, (24,alex_action_39)
, (23,alex_action_39)
, (22,alex_action_39)
, (21,alex_action_39)
, (20,alex_action_39)
, (19,alex_action_39)
, (18,alex_action_39)
, (17,alex_action_39)
, (16,alex_action_39)
, (15,alex_action_39)
, (14,alex_action_39)
, (13,alex_action_2)
, (12,alex_action_39)
, (11,alex_action_3)
, (10,alex_action_4)
, (9,alex_action_5)
, (8,alex_action_6)
, (7,alex_action_39)
, (6,alex_action_39)
, (5,alex_action_39)
, (4,alex_action_7)
, (3,alex_action_39)
, (2,alex_action_39)
, (1,alex_action_8)
, (0,alex_action_9)
]
alex_action_2 = \p _ -> (p, TokenLet)
alex_action_3 = \p _ -> (p, TokenIn)
alex_action_4 = \p _ -> (p, TokenIf)
alex_action_5 = \p _ -> (p, TokenThen)
alex_action_6 = \p _ -> (p, TokenElse)
alex_action_7 = \p _ -> (p, TokenCase)
alex_action_8 = \p _ -> (p, TokenOf)
alex_action_9 = \p _ -> (p, TokenNot)
alex_action_10 = \p _ -> (p, TokenBool True)
alex_action_11 = \p _ -> (p, TokenBool False)
alex_action_12 = \p _ -> (p, TokenArrow)
alex_action_13 = \p _ -> (p, TokenEq)
alex_action_14 = \p _ -> (p, TokenNeq)
alex_action_15 = \p _ -> (p, TokenLe)
alex_action_16 = \p _ -> (p, TokenGe)
alex_action_17 = \p _ -> (p, TokenLt)
alex_action_18 = \p _ -> (p, TokenGt)
alex_action_19 = \p _ -> (p, TokenAnd)
alex_action_20 = \p _ -> (p, TokenOr)
alex_action_21 = \p _ -> (p, TokenPlus)
alex_action_22 = \p _ -> (p, TokenMinus)
alex_action_23 = \p _ -> (p, TokenTimes)
alex_action_24 = \p _ -> (p, TokenDiv)
alex_action_25 = \p _ -> (p, TokenMod)
alex_action_26 = \p _ -> (p, TokenEquals)
alex_action_27 = \p _ -> (p, TokenBackslash)
alex_action_28 = \p _ -> (p, TokenUnderscore)
alex_action_29 = \p _ -> (p, TokenLParen)
alex_action_30 = \p _ -> (p, TokenRParen)
alex_action_31 = \p _ -> (p, TokenLBracket)
alex_action_32 = \p _ -> (p, TokenRBracket)
alex_action_33 = \p _ -> (p, TokenComma)
alex_action_34 = \p _ -> (p, TokenSemi)
alex_action_35 = \p s -> (p, TokenFloat (read s))
alex_action_36 = \p s -> (p, TokenInt (read s))
alex_action_37 = \p s -> (p, TokenChar (read s))
alex_action_38 = \p s -> (p, TokenString (read s))
alex_action_39 = \p s -> (p, TokenIdent s)
alex_action_40 = \p _ -> (p, TokenMinus)
alex_action_41 = \p s -> error ("Erro léxico: caractere inesperado `" ++ s ++ "` em " ++ show p)
#define ALEX_NOPRED 1
#ifdef ALEX_GHC
# define ILIT(n) n#
# define IBOX(n) (I# (n))
# define FAST_INT Int#
# if __GLASGOW_HASKELL__ > 706
# define GTE(n,m) (GHC.Exts.tagToEnum# (n >=# m))
# define EQ(n,m) (GHC.Exts.tagToEnum# (n ==# m))
# else
# define GTE(n,m) (n >=# m)
# define EQ(n,m) (n ==# m)
# endif
# define PLUS(n,m) (n +# m)
# define MINUS(n,m) (n -# m)
# define TIMES(n,m) (n *# m)
# define NEGATE(n) (negateInt# (n))
# define IF_GHC(x) (x)
#else
# define ILIT(n) (n)
# define IBOX(n) (n)
# define FAST_INT Int
# define GTE(n,m) (n >= m)
# define EQ(n,m) (n == m)
# define PLUS(n,m) (n + m)
# define MINUS(n,m) (n - m)
# define TIMES(n,m) (n * m)
# define NEGATE(n) (negate (n))
# define IF_GHC(x)
#endif
#ifdef ALEX_GHC
data AlexAddr = AlexA# Addr#
{-# INLINE alexIndexInt16OffAddr #-}
alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt16OffAddr (AlexA# arr) off =
#if __GLASGOW_HASKELL__ >= 901
GHC.Exts.int16ToInt#
#endif
#ifdef WORDS_BIGENDIAN
(GHC.Exts.word16ToInt16# (GHC.Exts.wordToWord16# (GHC.Exts.byteSwap16# (GHC.Exts.word16ToWord# (GHC.Exts.int16ToWord16#
#endif
(indexInt16OffAddr# arr off)
#ifdef WORDS_BIGENDIAN
)))))
#endif
#else
alexIndexInt16OffAddr = (Data.Array.!)
#endif
#ifdef ALEX_GHC
{-# INLINE alexIndexInt32OffAddr #-}
alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#
alexIndexInt32OffAddr (AlexA# arr) off =
#if __GLASGOW_HASKELL__ >= 901
GHC.Exts.int32ToInt#
#endif
#ifdef WORDS_BIGENDIAN
(GHC.Exts.word32ToInt32# (GHC.Exts.wordToWord32# (GHC.Exts.byteSwap32# (GHC.Exts.word32ToWord# (GHC.Exts.int32ToWord32#
#endif
(indexInt32OffAddr# arr off)
#ifdef WORDS_BIGENDIAN
)))))
#endif
#else
alexIndexInt32OffAddr = (Data.Array.!)
#endif
#ifdef ALEX_GHC
quickIndex = unsafeAt
#else
quickIndex = (Data.Array.!)
#endif
data AlexReturn a
= AlexEOF
| AlexError !AlexInput
| AlexSkip !AlexInput !Int
| AlexToken !AlexInput !Int a
alexScan input__ IBOX(sc)
= alexScanUser (error "alex rule requiring context was invoked by alexScan; use alexScanUser instead?") input__ IBOX(sc)
{-# INLINE alexScanUser #-}
alexScanUser user__ input__ IBOX(sc)
= case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of
(AlexNone, input__') ->
case alexGetByte input__ of
Nothing ->
#ifdef ALEX_DEBUG
Debug.Trace.trace ("End of input.") $
#endif
AlexEOF
Just _ ->
#ifdef ALEX_DEBUG
Debug.Trace.trace ("Error.") $
#endif
AlexError input__'
(AlexLastSkip input__'' len, _) ->
#ifdef ALEX_DEBUG
Debug.Trace.trace ("Skipping.") $
#endif
AlexSkip input__'' len
(AlexLastAcc k input__''' len, _) ->
#ifdef ALEX_DEBUG
Debug.Trace.trace ("Accept.") $
#endif
AlexToken input__''' len ((Data.Array.!) alex_actions k)
alex_scan_tkn user__ orig_input len input__ s last_acc =
input__ `seq`
let
new_acc = (check_accs (alex_accept `quickIndex` IBOX(s)))
in
new_acc `seq`
case alexGetByte input__ of
Nothing -> (new_acc, input__)
Just (c, new_input) ->
#ifdef ALEX_DEBUG
Debug.Trace.trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c ++ " " ++ (show . chr . fromIntegral) c) $
#endif
case fromIntegral c of { IBOX(ord_c) ->
let
base = alexIndexInt32OffAddr alex_base s
offset = PLUS(base,ord_c)
new_s = if GTE(offset,ILIT(0))
&& let check = alexIndexInt16OffAddr alex_check offset
in EQ(check,ord_c)
then alexIndexInt16OffAddr alex_table offset
else alexIndexInt16OffAddr alex_deflt s
in
case new_s of
ILIT(-1) -> (new_acc, input__)
_ -> alex_scan_tkn user__ orig_input
#ifdef ALEX_LATIN1
PLUS(len,ILIT(1))
#else
(if c < 0x80 || c >= 0xC0 then PLUS(len,ILIT(1)) else len)
#endif
new_input new_s new_acc
}
where
check_accs (AlexAccNone) = last_acc
check_accs (AlexAcc a ) = AlexLastAcc a input__ IBOX(len)
check_accs (AlexAccSkip) = AlexLastSkip input__ IBOX(len)
#ifndef ALEX_NOPRED
check_accs (AlexAccPred a predx rest)
| predx user__ orig_input IBOX(len) input__
= AlexLastAcc a input__ IBOX(len)
| otherwise
= check_accs rest
check_accs (AlexAccSkipPred predx rest)
| predx user__ orig_input IBOX(len) input__
= AlexLastSkip input__ IBOX(len)
| otherwise
= check_accs rest
#endif
data AlexLastAcc
= AlexNone
| AlexLastAcc !Int !AlexInput !Int
| AlexLastSkip !AlexInput !Int
data AlexAcc user
= AlexAccNone
| AlexAcc Int
| AlexAccSkip
#ifndef ALEX_NOPRED
| AlexAccPred Int (AlexAccPred user) (AlexAcc user)
| AlexAccSkipPred (AlexAccPred user) (AlexAcc user)
type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
alexAndPred p1 p2 user__ in1 len in2
= p1 user__ in1 len in2 && p2 user__ in1 len in2
alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__
alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)
alexPrevCharIsOneOf arr _ input__ _ _ = arr Data.Array.! alexInputPrevChar input__
alexRightContext IBOX(sc) user__ _ _ input__ =
case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of
(AlexNone, _) -> False
_ -> True
#endif
{-# LINE 67 "src/Lexer.x" #-}
data Token
= TokenLet | TokenIn | TokenIf | TokenThen | TokenElse
| TokenCase | TokenOf
| TokenNot
| TokenBool Bool
| TokenArrow
| TokenEq | TokenNeq | TokenLe | TokenGe | TokenLt | TokenGt
| TokenAnd | TokenOr
| TokenPlus | TokenMinus | TokenTimes | TokenDiv | TokenMod
| TokenEquals
| TokenBackslash
| TokenUnderscore
| TokenLParen | TokenRParen
| TokenLBracket | TokenRBracket
| TokenComma | TokenSemi
| TokenInt Int
| TokenFloat Double
| TokenChar Char
| TokenString String
| TokenIdent String
deriving (Eq)
instance Show Token where
show TokenSemi = ";"
show TokenLet = "let"
show TokenIn = "in"
show TokenIf = "if"
show TokenThen = "then"
show TokenElse = "else"
show TokenCase = "case"
show TokenOf = "of"
show TokenNot = "not"
show (TokenBool b) = show b
show TokenArrow = "->"
show TokenEq = "=="
show TokenNeq = "/="
show TokenLe = "<="
show TokenGe = ">="
show TokenLt = "<"
show TokenGt = ">"
show TokenAnd = "&&"
show TokenOr = "||"
show TokenPlus = "+"
show TokenMinus = "-"
show TokenTimes = "*"
show TokenDiv = "/"
show TokenMod = "%"
show TokenEquals = "="
show TokenBackslash = "\\"
show TokenUnderscore = "_"
show TokenLParen = "("
show TokenRParen = ")"
show TokenLBracket = "["
show TokenRBracket = "]"
show TokenComma = ","
show (TokenInt n) = show n
show (TokenFloat f) = show f
show (TokenChar c) = show c
show (TokenString s) = show s
show (TokenIdent s) = s
type PosnToken = (AlexPosn, Token)
alexScanTokens :: String -> [PosnToken]