packages feed

fregel-1.2.0: compiler/Lexer.hs

{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}
{-# LANGUAGE CPP #-}
{-# LINE 2 "Lexer.x" #-}

module Lexer where
import Data.Char (chr)

#if __GLASGOW_HASKELL__ >= 603
#include "ghcconfig.h"
#elif defined(__GLASGOW_HASKELL__)
#include "config.h"
#endif
#if __GLASGOW_HASKELL__ >= 503
import Data.Array
import Data.Array.Base (unsafeAt)
#else
import Array
#endif
{-# LINE 1 "templates/wrappers.hs" #-}
-- -----------------------------------------------------------------------------
-- Alex wrapper code.
--
-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
-- it for any purpose whatsoever.


import Control.Applicative as App (Applicative (..))
import qualified Control.Monad (ap)


import Data.Word (Word8)
















import Data.Char (ord)
import qualified Data.Bits

-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
utf8Encode :: Char -> [Word8]
utf8Encode = map fromIntegral . go . ord
 where
  go oc
   | oc <= 0x7f       = [oc]

   | oc <= 0x7ff      = [ 0xc0 + (oc `Data.Bits.shiftR` 6)
                        , 0x80 + oc Data.Bits..&. 0x3f
                        ]

   | oc <= 0xffff     = [ 0xe0 + (oc `Data.Bits.shiftR` 12)
                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
                        , 0x80 + oc Data.Bits..&. 0x3f
                        ]
   | otherwise        = [ 0xf0 + (oc `Data.Bits.shiftR` 18)
                        , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)
                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
                        , 0x80 + oc Data.Bits..&. 0x3f
                        ]



type Byte = Word8

-- -----------------------------------------------------------------------------
-- The input type


type AlexInput = (AlexPosn,     -- current position,
                  Char,         -- previous char
                  [Byte],       -- pending bytes on current char
                  String)       -- current input 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
                                  (b:bs) = utf8Encode c
                              in p' `seq`  Just (b, (p', c, bs, s))





























































-- -----------------------------------------------------------------------------
-- Token positions

-- `Posn' records the location of a token in the input text.  It has three
-- fields: the address (number of chacaters preceding the token), line number
-- and column of a token within the file. `start_pos' gives the position of the
-- start of the file and `eof_pos' a standard encoding for the end of file.
-- `move_pos' calculates the new position after traversing a given character,
-- assuming the usual eight character tab stops.


data AlexPosn = AlexPn !Int !Int !Int
        deriving (Eq,Show)

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-1) `div` alex_tab_size)*alex_tab_size+1)
alexMove (AlexPn a l _) '\n' = AlexPn (a+1) (l+1)   1
alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)


-- -----------------------------------------------------------------------------
-- Default monad


data AlexState = AlexState {
        alex_pos :: !AlexPosn,  -- position at current input location
        alex_inp :: String,     -- the current input
        alex_chr :: !Char,      -- the character before the input
        alex_bytes :: [Byte],
        alex_scd :: !Int        -- the current startcode



    }

-- Compile with -funbox-strict-fields for best results!

runAlex :: String -> Alex a -> Either String a
runAlex input__ (Alex f)
   = case f (AlexState {alex_pos = alexStartPos,
                        alex_inp = input__,
                        alex_chr = '\n',
                        alex_bytes = [],



                        alex_scd = 0}) of Left msg -> Left msg
                                          Right ( _, a ) -> Right a

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

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__))

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__, ())

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}, ())









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

-- -----------------------------------------------------------------------------
-- Useful token actions

type AlexAction result = AlexInput -> Int -> Alex result

-- just ignore this token and scan another one
-- skip :: AlexAction result
skip _input _len = alexMonadScan

-- ignore this token, but set the start code to a new value
-- begin :: Int -> AlexAction result
begin code _input _len = do alexSetStartCode code; alexMonadScan

-- perform an action for this token, and set the start code to a new value
andBegin :: AlexAction result -> Int -> AlexAction result
(action `andBegin` code) input__ len = do
  alexSetStartCode code
  action input__ len

token :: (AlexInput -> Int -> token) -> AlexAction token
token t input__ len = return (t input__ len)



-- -----------------------------------------------------------------------------
-- Monad (with ByteString input)







































































































-- -----------------------------------------------------------------------------
-- Basic wrapper

























-- -----------------------------------------------------------------------------
-- Basic wrapper, ByteString version
































-- -----------------------------------------------------------------------------
-- Posn wrapper

-- Adds text positions to the basic model.













-- -----------------------------------------------------------------------------
-- Posn wrapper, ByteString version














-- -----------------------------------------------------------------------------
-- GScan wrapper

-- For compatibility with previous versions of Alex, and because we can.














alex_tab_size :: Int
alex_tab_size = 8
alex_base :: Array Int Int
alex_base = listArray (0 :: Int, 104)
  [ -8
  , -58
  , -73
  , 0
  , 40
  , 0
  , 168
  , 296
  , 552
  , 488
  , 0
  , 734
  , -39
  , 697
  , -31
  , -86
  , -38
  , 746
  , 0
  , 731
  , 951
  , 1035
  , 1119
  , 1203
  , 1287
  , 1371
  , 1455
  , 1539
  , 1623
  , 1707
  , 1791
  , 1875
  , -42
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , -103
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 712
  , -34
  , 0
  , -40
  , 0
  , -33
  , 0
  , 0
  , 0
  , -22
  , 0
  , 0
  , 0
  , 1950
  , 2025
  , 2102
  , 2112
  , 2134
  , 0
  , 2166
  , 2250
  , 2334
  , 2418
  , 2502
  , 2586
  , 2670
  , 2754
  , 2838
  , 2922
  , 3006
  , 3090
  , 3174
  , 3258
  , 3342
  , 3426
  , 3510
  , 3594
  , 3678
  , 3762
  , 3846
  , 3930
  , 4014
  , 4098
  , 4182
  , 4266
  , 4350
  , 4434
  , 4518
  , 4602
  , 4677
  , 4752
  , 4827
  , 4902
  , 4977
  , 5052
  , 5127
  , 5202
  ]

alex_table :: Array Int Int
alex_table = listArray (0 :: Int, 5457)
  [ 0
  , 17
  , 17
  , 44
  , 13
  , 17
  , 13
  , 41
  , 39
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 43
  , 33
  , 42
  , 37
  , 18
  , 17
  , 1
  , 11
  , 47
  , 45
  , 0
  , 14
  , 0
  , 55
  , 56
  , 52
  , 50
  , 34
  , 51
  , 15
  , 53
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 16
  , 35
  , 48
  , 32
  , 49
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 101
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 104
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 59
  , 36
  , 60
  , 0
  , 81
  , 54
  , 81
  , 81
  , 79
  , 77
  , 85
  , 81
  , 76
  , 81
  , 95
  , 81
  , 81
  , 71
  , 81
  , 81
  , 81
  , 84
  , 81
  , 70
  , 81
  , 86
  , 81
  , 75
  , 81
  , 81
  , 81
  , 81
  , 57
  , 40
  , 58
  , 9
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 2
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 7
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 8
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 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
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 17
  , 17
  , 38
  , 0
  , 17
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 66
  , 0
  , 81
  , 0
  , 0
  , 46
  , 0
  , 0
  , 0
  , 0
  , 17
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 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
  , 8
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 10
  , 9
  , 7
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 3
  , 2
  , 6
  , 5
  , 5
  , 5
  , 4
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 64
  , 0
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 63
  , 64
  , 64
  , 64
  , 64
  , 64
  , 64
  , 64
  , 64
  , 64
  , 64
  , 0
  , 12
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 12
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 65
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 12
  , 0
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 12
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 19
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 20
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 25
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 30
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 96
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 94
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 69
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 93
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 91
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 90
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 89
  , 81
  , 81
  , 81
  , 82
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 88
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 87
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 83
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 80
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 78
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 74
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 73
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 72
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 92
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 68
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 67
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 31
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 28
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 27
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 26
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 24
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 23
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 22
  , 81
  , 81
  , 81
  , 81
  , 29
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 0
  , 0
  , 0
  , 0
  , 81
  , 0
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 21
  , 81
  , 81
  , 81
  , 81
  , 81
  , 81
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 61
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 62
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 97
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 98
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 103
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 100
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 102
  , 0
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 99
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 102
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  , 0
  ]

alex_check :: Array Int Int
alex_check = listArray (0 :: Int, 5457)
  [ -1
  , 9
  , 10
  , 61
  , 43
  , 13
  , 45
  , 38
  , 94
  , 48
  , 49
  , 50
  , 51
  , 52
  , 53
  , 54
  , 55
  , 56
  , 57
  , 61
  , 58
  , 124
  , 62
  , 45
  , 32
  , 33
  , 34
  , 61
  , 61
  , -1
  , 38
  , -1
  , 40
  , 41
  , 42
  , 43
  , 44
  , 45
  , 46
  , 47
  , 48
  , 49
  , 50
  , 51
  , 52
  , 53
  , 54
  , 55
  , 56
  , 57
  , 58
  , 59
  , 60
  , 61
  , 62
  , -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
  , 91
  , 92
  , 93
  , -1
  , 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
  , 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
  , 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
  , 192
  , 193
  , 194
  , 195
  , 196
  , 197
  , 198
  , 199
  , 200
  , 201
  , 202
  , 203
  , 204
  , 205
  , 206
  , 207
  , 208
  , 209
  , 210
  , 211
  , 212
  , 213
  , 214
  , 215
  , 216
  , 217
  , 218
  , 219
  , 220
  , 221
  , 222
  , 223
  , 224
  , 225
  , 226
  , 227
  , 228
  , 229
  , 230
  , 231
  , 232
  , 233
  , 234
  , 235
  , 236
  , 237
  , 238
  , 239
  , 240
  , 241
  , 242
  , 243
  , 244
  , 245
  , 246
  , 247
  , 248
  , 249
  , 250
  , 251
  , 252
  , 253
  , 254
  , 255
  , 10
  , 48
  , 49
  , 50
  , 51
  , 52
  , 53
  , 54
  , 55
  , 56
  , 57
  , 9
  , 10
  , 45
  , -1
  , 13
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 34
  , -1
  , 39
  , -1
  , -1
  , 61
  , -1
  , -1
  , -1
  , -1
  , 32
  , 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
  , 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
  , 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
  , 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
  , 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
  , 46
  , -1
  , 48
  , 49
  , 50
  , 51
  , 52
  , 53
  , 54
  , 55
  , 56
  , 57
  , 48
  , 49
  , 50
  , 51
  , 52
  , 53
  , 54
  , 55
  , 56
  , 57
  , -1
  , 69
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 69
  , 48
  , 49
  , 50
  , 51
  , 52
  , 53
  , 54
  , 55
  , 56
  , 57
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 101
  , -1
  , 39
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , 101
  , 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
  , 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
  , 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
  , 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
  , 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
  , 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
  , 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
  , 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
  , 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
  , 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
  , 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 :: Array Int Int
alex_deflt = listArray (0 :: Int, 104)
  [ -1
  , -1
  , 10
  , 10
  , 3
  , 3
  , -1
  , -1
  , 11
  , 11
  , 11
  , 11
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  , -1
  ]

alex_accept = listArray (0 :: Int, 104)
  [ AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAccNone
  , AlexAcc 87
  , AlexAcc 86
  , AlexAcc 85
  , AlexAcc 84
  , AlexAcc 83
  , AlexAcc 82
  , AlexAcc 81
  , AlexAcc 80
  , AlexAcc 79
  , AlexAcc 78
  , AlexAcc 77
  , AlexAcc 76
  , AlexAcc 75
  , AlexAcc 74
  , AlexAcc 73
  , AlexAcc 72
  , AlexAcc 71
  , AlexAcc 70
  , AlexAcc 69
  , AlexAcc 68
  , AlexAcc 67
  , AlexAcc 66
  , AlexAcc 65
  , 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
  , AlexAcc 24
  , AlexAcc 23
  , AlexAcc 22
  , AlexAcc 21
  , AlexAcc 20
  , AlexAcc 19
  , AlexAcc 18
  , AlexAcc 17
  , AlexAcc 16
  , AlexAcc 15
  , AlexAcc 14
  , 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 = array (0 :: Int, 88)
  [ (87,alex_action_0)
  , (86,alex_action_1)
  , (85,alex_action_2)
  , (84,alex_action_3)
  , (83,alex_action_4)
  , (82,alex_action_5)
  , (81,alex_action_6)
  , (80,alex_action_7)
  , (79,alex_action_8)
  , (78,alex_action_9)
  , (77,alex_action_10)
  , (76,alex_action_11)
  , (75,alex_action_12)
  , (74,alex_action_13)
  , (73,alex_action_14)
  , (72,alex_action_15)
  , (71,alex_action_16)
  , (70,alex_action_17)
  , (69,alex_action_18)
  , (68,alex_action_19)
  , (67,alex_action_20)
  , (66,alex_action_21)
  , (65,alex_action_22)
  , (64,alex_action_23)
  , (63,alex_action_24)
  , (62,alex_action_25)
  , (61,alex_action_26)
  , (60,alex_action_27)
  , (59,alex_action_28)
  , (58,alex_action_29)
  , (57,alex_action_30)
  , (56,alex_action_31)
  , (55,alex_action_32)
  , (54,alex_action_33)
  , (53,alex_action_34)
  , (52,alex_action_35)
  , (51,alex_action_36)
  , (50,alex_action_37)
  , (49,alex_action_38)
  , (48,alex_action_39)
  , (47,alex_action_40)
  , (46,alex_action_41)
  , (45,alex_action_42)
  , (44,alex_action_43)
  , (43,alex_action_44)
  , (42,alex_action_45)
  , (41,alex_action_46)
  , (40,alex_action_47)
  , (39,alex_action_47)
  , (38,alex_action_48)
  , (37,alex_action_49)
  , (36,alex_action_49)
  , (35,alex_action_49)
  , (34,alex_action_49)
  , (33,alex_action_49)
  , (32,alex_action_49)
  , (31,alex_action_49)
  , (30,alex_action_49)
  , (29,alex_action_49)
  , (28,alex_action_49)
  , (27,alex_action_49)
  , (26,alex_action_49)
  , (25,alex_action_49)
  , (24,alex_action_49)
  , (23,alex_action_49)
  , (22,alex_action_49)
  , (21,alex_action_49)
  , (20,alex_action_49)
  , (19,alex_action_49)
  , (18,alex_action_49)
  , (17,alex_action_49)
  , (16,alex_action_49)
  , (15,alex_action_49)
  , (14,alex_action_49)
  , (13,alex_action_49)
  , (12,alex_action_49)
  , (11,alex_action_49)
  , (10,alex_action_49)
  , (9,alex_action_49)
  , (8,alex_action_49)
  , (7,alex_action_50)
  , (6,alex_action_50)
  , (5,alex_action_50)
  , (4,alex_action_50)
  , (3,alex_action_50)
  , (2,alex_action_50)
  , (1,alex_action_50)
  , (0,alex_action_50)
  ]

{-# LINE 76 "Lexer.x" #-}


mkL :: LexemeClass -> AlexInput -> Int -> Alex Lexeme
mkL c (p,_,_,str) len = return (L p c (take len str))

data Lexeme = L AlexPosn LexemeClass String
     deriving (Eq, Show)
  
data LexemeClass 
   =  L_DATA
   |  L_DERIVING
   |  L_LET
   |  L_IN
   |  L_IF
   |  L_THEN
   |  L_ELSE
   |  L_PREV
   |  L_CURR
   |  L_VAL
   |  L_IS
   |  L_RS
   |  L_GOF
   |  L_EQUAL
   |  L_DBLCOLON  
   |  L_COMMA
   |  L_SEMICOLON
   |  L_BACKSLASH
   |  L_RARROW
   |  L_LARROW
   |  L_DOTHAT
   |  L_PIPE
   |  L_DBLAND
   |  L_DBLOR
   |  L_EQ
   |  L_NE
   |  L_LE
   |  L_GE
   |  L_LT
   |  L_GT
   |  L_PLUS
   |  L_MINUS
   |  L_AST
   |  L_SLASH
   |  L_BACKQUOTE
   |  L_LPAREN  
   |  L_RPAREN  
   |  L_LBRACE  
   |  L_RBRACE  
   |  L_LBRACKET  
   |  L_RBRACKET  
   |  L_IDENT
   |  L_CONSTRUCTOR
   |  L_BOOL
   |  L_INT
   |  L_FLOAT
   |  L_STRING
   |  LEOF
    deriving (Eq, Show)

-- the idea of nested comments is borrowed from an Alex example for Haskell 98:
--  https://github.com/simonmar/alex/blob/master/examples/haskell.x
--
nested_comment :: AlexInput -> Int -> Alex Lexeme
nested_comment _ _ = do
  input <- alexGetInput
  go 1 input
  where go 0 input = do alexSetInput input; alexMonadScan
        go n input = do
          case alexGetByte input of
            Nothing  -> err input
            Just (c,input) -> do
              case chr (fromIntegral c) of
                '-' -> do                     -- checking the end of the commnet ?
                  case alexGetByte input of
                    Nothing  -> err input
                    Just (125,input) -> go (n-1) input
                    Just (c,input)   -> go n input
                '\123' -> do                   -- checking the beginnig of a new comment ?
                  case alexGetByte input of
                    Nothing  -> err input
                    Just (c,input) | c == fromIntegral (ord '-') -> go (n+1) input
                    Just (c,input)   -> go n input
                c -> go n input
        err input = do alexSetInput input; lexError "error in nested comment"  

lexError s = do
  (p,c,_,input) <- alexGetInput
  alexError (showPosn p ++ ": " ++ s ++ 
                   (if (not (null input))
                     then " before " ++ show (head input)
                     else " at end of file"))

scanner str = runAlex str $ do
  let loop i ts = do tok@(L _ cl _) <- alexMonadScan; 
                     if cl == LEOF
                        then return (i, reverse ts)
                        else do loop (i+1) (tok:ts)
  loop 0 []

alexEOF = return (L undefined LEOF "")

showPosn (AlexPn _ line col) = show line ++ ':': show col

main = getContents >>=  print . scanner

alex_action_0 =  skip 
alex_action_1 =  nested_comment 
alex_action_2 =  mkL L_DATA 
alex_action_3 =  mkL L_DERIVING 
alex_action_4 =  mkL L_LET 
alex_action_5 =  mkL L_IN 
alex_action_6 =  mkL L_IF 
alex_action_7 =  mkL L_THEN 
alex_action_8 =  mkL L_ELSE 
alex_action_9 =  mkL L_PREV 
alex_action_10 =  mkL L_CURR 
alex_action_11 =  mkL L_VAL 
alex_action_12 =  mkL L_IS 
alex_action_13 =  mkL L_RS 
alex_action_14 =  mkL L_GOF 
alex_action_15 =  mkL L_EQUAL 
alex_action_16 =  mkL L_DBLCOLON 
alex_action_17 =  mkL L_COMMA 
alex_action_18 =  mkL L_SEMICOLON 
alex_action_19 =  mkL L_BACKSLASH 
alex_action_20 =  mkL L_RARROW 
alex_action_21 =  mkL L_LARROW 
alex_action_22 =  mkL L_DOTHAT 
alex_action_23 =  mkL L_PIPE 
alex_action_24 =  mkL L_DBLAND 
alex_action_25 =  mkL L_DBLOR 
alex_action_26 =  mkL L_EQ 
alex_action_27 =  mkL L_NE 
alex_action_28 =  mkL L_NE 
alex_action_29 =  mkL L_LE 
alex_action_30 =  mkL L_GE 
alex_action_31 =  mkL L_LT 
alex_action_32 =  mkL L_GT 
alex_action_33 =  mkL L_PLUS 
alex_action_34 =  mkL L_MINUS 
alex_action_35 =  mkL L_AST 
alex_action_36 =  mkL L_SLASH 
alex_action_37 =  mkL L_BACKQUOTE 
alex_action_38 =  mkL L_LPAREN 
alex_action_39 =  mkL L_RPAREN 
alex_action_40 =  mkL L_LBRACE 
alex_action_41 =  mkL L_RBRACE 
alex_action_42 =  mkL L_LBRACKET 
alex_action_43 =  mkL L_RBRACKET 
alex_action_44 =  mkL L_BOOL 
alex_action_45 =  mkL L_BOOL 
alex_action_46 =  mkL L_INT 
alex_action_47 =  mkL L_FLOAT 
alex_action_48 =  mkL L_STRING 
alex_action_49 =  mkL L_IDENT 
alex_action_50 =  mkL L_CONSTRUCTOR 
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- -----------------------------------------------------------------------------
-- ALEX TEMPLATE
--
-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
-- it for any purpose whatsoever.

-- -----------------------------------------------------------------------------
-- INTERNALS and main scanner engine































































alexIndexInt16OffAddr arr off = arr ! off




















alexIndexInt32OffAddr arr off = arr ! off











quickIndex arr i = arr ! i


-- -----------------------------------------------------------------------------
-- Main lexing routines

data AlexReturn a
  = AlexEOF
  | AlexError  !AlexInput
  | AlexSkip   !AlexInput !Int
  | AlexToken  !AlexInput !Int a

-- alexScan :: AlexInput -> StartCode -> AlexReturn a
alexScan input__ (sc)
  = alexScanUser undefined input__ (sc)

alexScanUser user__ input__ (sc)
  = case alex_scan_tkn user__ input__ (0) input__ sc AlexNone of
  (AlexNone, input__') ->
    case alexGetByte input__ of
      Nothing ->



                                   AlexEOF
      Just _ ->



                                   AlexError input__'

  (AlexLastSkip input__'' len, _) ->



    AlexSkip input__'' len

  (AlexLastAcc k input__''' len, _) ->



    AlexToken input__''' len (alex_actions ! k)


-- Push the input through the DFA, remembering the most recent accepting
-- state it encountered.

alex_scan_tkn user__ orig_input len input__ s last_acc =
  input__ `seq` -- strict in the input
  let
  new_acc = (check_accs (alex_accept `quickIndex` (s)))
  in
  new_acc `seq`
  case alexGetByte input__ of
     Nothing -> (new_acc, input__)
     Just (c, new_input) ->



      case fromIntegral c of { (ord_c) ->
        let
                base   = alexIndexInt32OffAddr alex_base s
                offset = (base + ord_c)
                check  = alexIndexInt16OffAddr alex_check offset

                new_s = if (offset >= (0)) && (check == ord_c)
                          then alexIndexInt16OffAddr alex_table offset
                          else alexIndexInt16OffAddr alex_deflt s
        in
        case new_s of
            (-1) -> (new_acc, input__)
                -- on an error, we want to keep the input *before* the
                -- character that failed, not after.
            _ -> alex_scan_tkn user__ orig_input (if c < 0x80 || c >= 0xC0 then (len + (1)) else len)
                                                -- note that the length is increased ONLY if this is the 1st byte in a char encoding)
                        new_input new_s new_acc
      }
  where
        check_accs (AlexAccNone) = last_acc
        check_accs (AlexAcc a  ) = AlexLastAcc a input__ (len)
        check_accs (AlexAccSkip) = AlexLastSkip  input__ (len)

        check_accs (AlexAccPred a predx rest)
           | predx user__ orig_input (len) input__
           = AlexLastAcc a input__ (len)
           | otherwise
           = check_accs rest
        check_accs (AlexAccSkipPred predx rest)
           | predx user__ orig_input (len) input__
           = AlexLastSkip input__ (len)
           | otherwise
           = check_accs rest


data AlexLastAcc
  = AlexNone
  | AlexLastAcc !Int !AlexInput !Int
  | AlexLastSkip     !AlexInput !Int

data AlexAcc user
  = AlexAccNone
  | AlexAcc Int
  | AlexAccSkip

  | AlexAccPred Int (AlexAccPred user) (AlexAcc user)
  | AlexAccSkipPred (AlexAccPred user) (AlexAcc user)

type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool

-- -----------------------------------------------------------------------------
-- Predicates on a rule

alexAndPred p1 p2 user__ in1 len in2
  = p1 user__ in1 len in2 && p2 user__ in1 len in2

--alexPrevCharIsPred :: Char -> AlexAccPred _
alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__

alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)

--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _
alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__

--alexRightContext :: Int -> AlexAccPred _
alexRightContext (sc) user__ _ _ input__ =
     case alex_scan_tkn user__ input__ (0) input__ sc AlexNone of
          (AlexNone, _) -> False
          _ -> True
        -- TODO: there's no need to find the longest
        -- match when checking the right context, just
        -- the first match will do.