diff --git a/Example.hs b/Example.hs
new file mode 100644
--- /dev/null
+++ b/Example.hs
@@ -0,0 +1,13 @@
+module Example(main) where
+import Prelude
+
+fac :: Int -> Int
+fac 0 = 1
+fac n = n * fac(n - 1)
+
+main :: IO ()
+main = do
+  let
+    rs = map fac [1,2,3,10]
+  putStrLn "Some factorials"
+  print rs
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,13 @@
+Copyright 2023 Lennart Augustsson
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/Makefile b/Makefile
new file mode 100644
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,109 @@
+# installation prefix
+PREFIX=/usr/local
+#
+CCWARNS= -Wall -Wno-deprecated-declarations
+CCOPTS= -O3
+CCLIBS= -lm
+CCEVAL= $(CC) $(CCWARNS) $(CCOPTS) src/runtime/eval.c $(CCLIBS)
+#
+GHC= ghc
+GHCINCS= -ighc -isrc
+GHCWARNS= -Wall -Wno-unrecognised-warning-flags -Wno-x-partial
+GHCOPTS= -O
+GHCEXTS= -XScopedTypeVariables -XPatternGuards -XTupleSections -XTypeSynonymInstances -XFlexibleInstances
+GHCPKGS= #-package mtl -package pretty -package temporary -package process
+GHCTOOL= -F -pgmF Tools/convertX.sh
+GHCOUTDIR= ghc-out
+GHCOUT= -outputdir $(GHCOUTDIR)
+GHCPROF= # -prof -fprof-late #-prof -fprof-auto
+GHCFLAGS= $(GHCEXTS) $(GHCINCS) $(GHCWARNS) $(GHCOPTS) $(GHCTOOL) $(GHCPKGS) $(GHCOUT) $(GHCPROF)
+#
+.PHONY:	clean bootstrap install ghcgen newmhs cacheprelude
+
+all:	bin/gmhs
+
+newmhs:	ghcgen
+	$(CCEVAL) generated/mhs.c -o bin/mhs
+	$(CC) $(CCWARNS) -g src/runtime/eval.c $(CCLIBS) generated/mhs.c -o bin/mhsgdb
+
+# Compile mhs from distribution, with C compiler
+bin/mhs:	src/runtime/eval.c src/runtime/config*.h #generated/mhs.c
+	@mkdir -p bin
+	$(CCEVAL) generated/mhs.c -o bin/mhs
+
+# Compile combinator evaluator
+bin/mhseval:	src/runtime/eval.c src/runtime/config*.h src/runtime/comb.c
+	@mkdir -p bin
+	$(CCEVAL) src/runtime/comb.c -o bin/mhseval
+
+# Compile mhs with ghc
+bin/gmhs:	src/*/*.hs Tools/convertX.sh
+	@mkdir -p bin
+	$(GHC) $(GHCFLAGS) src/MicroHs/Main.hs -main-is MicroHs.Main -o bin/gmhs
+
+# Generate distribution C file
+generated/mhs.c:	bin/mhs src/*/*.hs
+	@mkdir -p generated
+	bin/mhs -ilib -isrc MicroHs.Main -ogenerated/mhs.c
+
+# Make sure boottrapping works
+bootstrap:	bin/mhs-stage2
+	@echo "*** copy stage2 to bin/mhs"
+	cp bin/mhs-stage2 bin/mhs
+	cp generated/mhs-stage2.c generated/mhs.c 
+
+ghcgen:	bin/gmhs src/*/*.hs lib/*.hs lib/*/*.hs lib/*/*/*.hs
+	bin/gmhs -ilib -isrc MicroHs.Main -ogenerated/mhs.c
+
+# Build stage1 compiler with existing compiler
+bin/mhs-stage1:	bin/mhs src/*/*.hs
+	@mkdir -p generated
+	@echo "*** Build stage1 compiler, using bin/mhs"
+	bin/mhs -ilib -isrc MicroHs.Main -ogenerated/mhs-stage1.c
+	$(CCEVAL) generated/mhs-stage1.c -o bin/mhs-stage1
+
+# Build stage2 compiler with stage1 compiler, and compare
+bin/mhs-stage2:	bin/mhs-stage1 src/*/*.hs
+	@mkdir -p generated
+	@echo "*** Build stage2 compiler, with stage1 compiler"
+	bin/mhs-stage1 -ilib -isrc MicroHs.Main -ogenerated/mhs-stage2.c
+	cmp generated/mhs-stage1.c generated/mhs-stage2.c
+	@echo "*** stage2 equal to stage1"
+	$(CCEVAL) generated/mhs-stage2.c -o bin/mhs-stage2
+
+# Run test examples with ghc-compiled compiler
+runtest:	bin/mhseval bin/gmhs tests/*.hs
+	cd tests; make alltest
+
+# Compress the binary (broken on MacOS)
+bin/umhs: bin/mhs
+	rm -f bin/umhs
+	upx -q -q -obin/umhs bin/mhs
+
+#
+cacheprelude:
+	@mkdir -p cache
+	bin/mhs -c Prelude -ocache/Prelude.comb
+
+#
+clean:
+	rm -rf src/*/*.hi src/*/*.o *.comb *.tmp *~ bin/* a.out $(GHCOUTDIR) tmp/* Tools/*.o Tools/*.hi dist-newstyle generated/*-stage* cache
+	cd tests; make clean
+
+install:
+	mkdir -p $(PREFIX)/bin
+	cp bin/mhs $(PREFIX)/bin
+	mkdir -p $(PREFIX)/lib/mhs/src/runtime
+	cp -r lib $(PREFIX)/lib/mhs
+	cp src/runtime/* $(PREFIX)/lib/mhs/src/runtime
+	@echo "***"
+	@echo "*** Installation complete"
+	@echo "*** Set environment variable MHSDIR to $(PREFIX)/lib/mhs"
+	@echo "***"
+
+everytest:	runtest bootcombtest
+
+bootcombtest:	bin/gmhs bin/mhseval
+	bin/gmhs -ilib -isrc -ogmhs.comb  MicroHs.Main
+	bin/mhseval +RTS -v -rgmhs.comb -RTS -ilib -isrc -omhs.comb MicroHs.Main
+	cmp gmhs.comb mhs.comb
diff --git a/MicroHs.cabal b/MicroHs.cabal
new file mode 100644
--- /dev/null
+++ b/MicroHs.cabal
@@ -0,0 +1,72 @@
+cabal-version:       3.0
+name:                MicroHs
+version:             0.8
+synopsis:            A compiler for a subset of Haskell
+license:             Apache-2.0
+license-file:        LICENSE
+copyright:           2023 Lennart Augustsson
+category:            language
+author:              lennart@augustsson.net
+maintainer:          lennart@augustsson.net
+stability:           experimental
+description:         A compiler for a subset of Haskell.
+                     The compiler translates to combinators and can compile itself.
+build-type:          Simple
+
+extra-source-files:
+      LICENSE
+      Example.hs
+      Makefile
+      README.md
+      Tools/convertX.sh
+      Tools/Addcombs.hs
+      Tools/Compress.hs
+      generated/mhs.c
+      ghc/**/*.hs
+      lib/**/*.hs
+      src/runtime/eval.c
+      src/runtime/*.h
+      tests/Makefile
+      tests/*.hs
+      tests/*.ref
+
+source-repository head
+    type:     git
+    location: https://github.com/augustss/MicroHs
+
+executable mhs
+  default-language:    Haskell98
+  hs-source-dirs:      src ghc
+  ghc-options:         -Wall -Wno-unrecognised-warning-flags -Wno-x-partial -F -pgmF ./Tools/convertX.sh -main-is MicroHs.Main
+  main-is:             MicroHs/Main.hs
+  default-extensions:  ScopedTypeVariables PatternGuards TupleSections TypeSynonymInstances FlexibleInstances
+  other-modules:       MicroHs.Compile
+                       MicroHs.Desugar
+                       MicroHs.Exp
+                       MicroHs.Expr
+                       MicroHs.Graph
+                       MicroHs.Ident
+                       MicroHs.IdentMap
+                       MicroHs.Interactive
+                       MicroHs.Lex
+                       MicroHs.MakeCArray
+                       MicroHs.Parse
+                       MicroHs.StateIO
+                       MicroHs.TCMonad
+                       MicroHs.Translate
+                       MicroHs.TypeCheck
+                       Text.ParserComb
+                       System.Console.SimpleReadline
+                       Control.Alternative
+                       Data.Double
+                       Compat
+                       PrimTable
+  build-depends:       base         >= 4.10 && < 4.20,
+                       containers   >= 0.5 && < 0.8,
+                       deepseq      >= 1.1 && < 1.6,
+                       ghc-prim     >= 0.5 && < 0.12,
+                       mtl          >= 2.0 && < 2.4,
+                       time         >= 1.1 && < 1.15,
+                       pretty       >= 1.0 && < 1.2,
+                       process      >= 1.6 && < 1.8,
+                       directory    >= 1.2 && < 1.5
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,250 @@
+# Micro Haskell
+This directory contains an implementation of a small subset of Haskell.
+It uses combinators for the runtime execution.
+
+The compiler can compile itself.
+
+## Compiling MicroHs
+There are two different ways to compile MicroHs
+* Using GHC with standard `Prelude` and libraries. `Makefile` target `bin/gmhs`
+* Using the included combinator file and runtime.  `Makefile` target `bin/mhs`
+
+These different ways of compiling need slightly different imports etc.
+To accomodate this each source file is preprocessed for the first target.
+When compiling with GHC the string `--X` is removed from the source file.
+This way anything special needed with GHC is just treated as comments by mhs.
+
+Compiling MicroHs is really best done using `make`, but there is also a `MicroHs.cabal` file
+for use with `cabal`.  This only builds what corresponds to the first target.
+
+Also note that there is no need to have a Haskell compiler to run MicroHs.
+All you need is a C compiler, and MicroHs can bootstrap, given the included combinator file.
+
+To install `mhs` use `make install`.  You also need to set the environment variable `MHSDIR`.
+
+## Language
+The language is an extended subset of Haskell-98.
+
+Differences:
+ * Top level definitions must have a type signature.
+ * Type variables need an explicit `forall`.
+ * Type variables without a kind annotation are assumed to have kind `Type`.
+ * There is no prefix negation.
+ * There is no `Read` class.
+ * There is no deriving.
+ * The `Prelude` has to be imported explicitly.
+ * Polymorphic types are never inferred; use a type signature if you need it.
+ * A module must have an export list.
+ * Always enabled extension:
+   * ConstraintKinds
+   * EmptyDataDecls
+   * ExtendedDefaultRules
+   * FlexibleContexts
+   * FlexibleInstance
+   * ForeignFunctionInterface
+   * IncoherentInstances
+   * KindSignatures
+   * MonoLocalBinds
+   * MultiParamTypeClasses
+   * NegativeLiterals
+   * NoMonomorphismRestriction
+   * OverlappingInstances
+   * RankNTypes
+   * QualifiedDo
+   * ScopedTypeVariables
+   * StarIsType
+   * TupleSections
+   * TypeSynonymInstances
+   * UndecidableInstances
+   * UndecidableSuperClasses
+ * In the works
+   * FunctionalDependencies
+   * ExistentialQuantification
+ * `main` in the top module given to `mhs` serves at the program entry point.
+ * Many things that should be an error (but which are mostly harmless) are not reported.
+ * More differences that I don't remember right now.
+
+## Example
+The file `Example.hs` contains the following:
+```Haskell
+module Example(main) where
+import Prelude
+
+fac :: Int -> Int
+fac 0 = 1
+fac n = n * fac(n-1)
+
+main :: IO ()
+main = do
+  let
+    rs = map fac [1,2,3,10]
+  putStrLn "Some factorials"
+  print rs
+```
+
+First, make sure the compiler is built by doing `make`.
+Then compile the file by `bin/mhs Example -oEx` which produces `Ex`.
+Finally, run the binary file by `./Ex`.
+This should produce
+```
+Some factorials
+[1,2,6,3628800]
+```
+
+## Libraries
+There are a number of libraries that have some of the standard Haskell functions.
+But in general, the `Prelude` contains less.
+
+## Types
+There are some primitive data types, e.g `Int`, `IO`, `Ptr`, and `Double`.
+These are known by the runtime system and various primitive operations work on them.
+The function type, `->`, is (of course) also built in.
+
+All other types are defined with the language.  They are converted to lambda terms using
+the Scott encoding.   The runtime system knows how lists and booleans are encoded.
+
+
+## Compiler
+The compiler is written in Micro Haskell.
+It takes a name of a module and compiles to a target (see below).
+This module should contain the function `main` of type `IO ()` and
+it will be the entry point to the program.
+
+### Compiler flags
+* `-iDIR` add `DIR` to search path for modules
+* `-oFILE` output file.  If the `FILE` ends in `.comb` it will produce a textual combinator file.  If `FILE` ends in `.c` it will produce a C file with the combinators.  For all other `FILE` it will compiler the combinators together with the runtime system to produce a regular executable.
+* `-r` run directly (does not work if compiled with GHC)
+* `-v` be more verbose, flag can be repeated
+
+With the `-v` flag the processing time for each module is reported.
+E.g.
+  ```
+  importing done MicroHs.Exp, 284ms (91 + 193)
+  ```
+which means that processing the module `MicroHs.Exp` took 284ms,
+with parsing taking 91ms and typecheck&desugar taking 193ms.
+
+### Environment variables
+* `MHSDIR` the directory where `lib/` and `src/` are expected to be.  Defaults to `./`.
+* `MHSCC` command use to compile C file to produce binaries.  Look at the source for more information.
+
+### Compiler modules
+
+* `Compile`, top level compiler.  Maintains a cache of already compiled modules.
+* `Desugar`, desugar full expressions to simple expressions.
+* `Exp`, simple expression type, combinator abstraction and optimization.
+* `Expr`, parsed expression type.
+* `Graph`, strongly connected component algorithm.
+* `Ident`, identifiers and related types.
+* `IdentMap`, map from identifiers to something.
+* `Interactive`, top level for the interactive REPL.
+* `Lex`, lexical analysis and indentation processing.
+* `Main`, the main module.  Decodes flags, compiles, and writes result.
+* `MakeCArray`, generate a C version of the combinator file.
+* `Parse`, parse and build and abstract syntax tree.
+* `StateIO`, state + IO monad.
+* `TCMonad`, type checking monad.
+* `Translate`, convert an expression tree to its value.
+* `TypeCheck`, type checker.
+
+## Interactive mode
+If no module name is given the compiler enters interactive mode.
+You can enter expressions to be evaluated, or top level definitions (including `import`).
+Simple line editing is available.
+
+All definitions are saved in the file `Interactive.hs` and all input
+lines as saved in `.mhsi`.  The latter file is read on startup so
+the command history is persisted.
+
+Available commands:
+
+* `:quit` Quit the interactive system
+* `:clear` Get back to start state
+* `:del STR` Delete all definitions that begin with `STR`
+* `:reload` Reload all modules
+* `expr` Evaluate expression.
+* `defn` Add definition (can also be an `import`)
+
+***NOTE*** When you `import` a module it is cached.
+If the file changes and you import it again it will not reload.
+You can use `:clear` (or `:reload`) to get back to an empty cache.
+This is a bug.
+
+## Runtime
+The runtime system is written in C and is in `src/runtime/eval.c`.
+It uses combinators for handling variables, and has primitive operations
+for built in types and for executing IO operations.
+There is a also a simple mark-scan garbage collector.
+The runtime system is written in a reasonably portable C code.
+
+### Runtime flags
+Runtime flags are given between the flags `+RTS` and `-RTS`.
+Between those the runtime decodes the flags, everything else is available to
+the running program.
+
+* `-HSIZE` set heap size to `SIZE` cells, can be suffixed by `k`, `M`, or `G`, default is `50M`
+* `-KSIZE` set stack size to `SIZE` entries, can be suffixed by `k`, `M`, or `G`, default is`100k`
+* `-rFILE` read combinators from `FILE`, instead of `out.comb`
+* `-v` be more verbose, flag can be repeated
+
+For example, `bin/mhseval +RTS -H1M -v -RTS hello` runs `out.comb` and the program gets the argument `hello`,
+whereas the runtime system sets the heap to 1M cells and is verbose.
+
+### FFI
+MicroHs supports calling C functions, but all such functions must be in a table in the runtime system.
+
+### Features
+The runtime system can serialize and deserialize any expression
+and keep its graph structure (sharing and cycles).
+The only exceptions to this are C pointers file handles, which cannot be serialized (except for `stdin`, `stdout`, and `stderr`).
+
+### Memory layout
+Memory allocation is based on cells.  Each cell has room for two pointers (i.e., two words, typically 16 bytes),
+so it can represent an application node.  One bit is used to indicate if
+the cell is an application or something else.  If it is something else one
+word is a tag indicating what it is, e.g., a combinator or an integer.
+The second word is then used to store any payload, e.g., the number itself for an integer node.
+
+Memory allocation has a bitmap with one bit per cell.
+Allocating a cell consists of finding the next free cell using the bitmap,
+and then marking it as used.  The garbage collector first clears the bitmap
+and then (recursively) marks every used cell in the bitmap.
+There is no explicit scan phase since that is baked into the allocation.
+Allocation is fast assuming the CPU has some kind of FindFirstSet instruction.
+
+It is possible to use smaller cells by using 32 bit "pointers" instead of 64 bit pointers.
+This has a performance penalty, though.
+
+### Portability
+The C code for the evaluator does not use any special features, and should be
+portable to many platforms.  It has mostly been test with MacOS and Linux,
+and somewhat with Windows.
+
+The code has only been tested on 64 bit platforms, so again, there are lurking problems
+with other word sizes, but they should be easy to fix.
+
+The `src/runtime/` directory contains configuration files for different platform.
+Edit `src/runtime/eval.c` to `#include` the right one.
+
+## Bootstrapping
+The compiler can compile itself.  To replace `bin/mhs` with a new version,
+do `make bootstrap`.  This will recompile the compiler twice and compare
+the outputs to make sure the new compiler still works.
+
+
+# FAQ
+* 
+  * Q: When will it get _insert feature_?
+  * A: Maybe some time, maybe never.
+* 
+  * Q: Why are the error messages so bad?
+  * A: Error messages are boring.
+* 
+  * Q: Why is the so much source code?
+  * A: I wonder this myself.  7000+ lines of Haskell seems excessive.
+       2500+ lines of C is also more than I'd like for such a simple system.
+* 
+  * Q: Why are the binaries so big?
+  * A: The combinator file is rather verbose.  The combinator file
+       for the compiler shrinks from 350kB to 75kB when compressed with upx.
+       The evaluator alone is about 70kB (26kB compressed with upx).
diff --git a/Tools/Addcombs.hs b/Tools/Addcombs.hs
new file mode 100644
--- /dev/null
+++ b/Tools/Addcombs.hs
@@ -0,0 +1,30 @@
+module Addcombs(main) where
+import Prelude
+import Data.Char
+import System.Environment
+
+chunkify :: Int -> [Char] -> [[Char]]
+chunkify n [] = []
+chunkify n xs =
+  let (as, bs) = splitAt n xs
+  in  as : chunkify n bs
+
+showChunk :: [Char] -> String
+showChunk = concatMap (\ c -> show (ord c) ++ ",")
+
+main :: IO ()
+main = do
+{-
+  args <- getArgs
+  let fn = case args of { [a] -> a; _ -> error "Usage: Addcombs file" }
+  file <- readFile fn
+-}
+  hSetBinaryMode stdin True
+  file <- hGetContents stdin
+  let size = length file
+      chunks = chunkify 20 file
+  putStrLn $ "unsigned char combexprdata[] = {"
+  mapM_ (putStrLn . showChunk) chunks
+  putStrLn "0 };"
+  putStrLn "unsigned char *combexpr = combexprdata;"
+  putStrLn $ "int combexprlen = " ++ show size ++ ";"
diff --git a/Tools/Compress.hs b/Tools/Compress.hs
new file mode 100644
--- /dev/null
+++ b/Tools/Compress.hs
@@ -0,0 +1,71 @@
+module Compress(main) where
+import Prelude
+import Data.Map as M
+import Data.Char
+import System.IO
+--import Debug.Trace
+
+--
+-- A simple LZW compressor
+-- It uses a dictionary of maximum size 4096.
+-- The 12 bit code words are encoded with 2 code words in 3 bytes.
+-- It can only compress input of printable ASCII + '\n'
+
+type Table = M.Map [Char] Int
+
+-- Don't change this lightly.
+-- It needs to be coordinated with the decompressor transducer in eval.c
+maxDict :: Int
+maxDict = 4096
+
+toChar :: Int -> Char
+toChar i = chr (i + 32)
+
+(!) :: Table -> [Char] -> Int
+(!) t s =
+  case M.lookupBy compare s t of
+    Nothing -> undefined -- error $ "(!): " ++ showString s
+    Just i -> i
+
+compress :: Table -> [Char] -> [Char] -> [Int]
+compress t [] p = [ t ! p ]
+compress t (c:cs) p =
+  let p' = p ++ [c]
+      s = M.size t
+      t' = if s < maxDict then M.insertBy compare p' s t else t
+  in
+--      trace ("compress " ++ showString p') $
+--      trace show (M.toList t)) $
+      case M.lookupBy compare p' t of
+        Just _ ->
+--          trace "found" $
+          compress t cs p'
+        Nothing ->
+--          trace ("not found p=" ++ show p ++ " " ++ show (M.lookupBy compare p t)) $
+          (t ! p) : compress t' cs [c]
+
+-- Initial table is ' ' .. '~', and '\n'
+initTable :: Table
+initTable = M.fromListBy compare $ [([toChar c], c) | c <- [0..94] ] ++ [("\n", 95)]
+
+toBytes :: [Int] -> [Int]
+toBytes [] = []
+toBytes [i] = [i `rem` 256, i `quot` 256, 0]
+toBytes (i1:i2:is) =
+  let i = i1 + 4096*i2
+      b1 = i `rem` 256
+      b2 = (i `quot` 256) `rem` 256
+      b3 = i `quot` (256*256)
+  in  b1 : b2 : b3 : toBytes is
+
+bad :: Char -> Bool
+bad c = not (isPrint c || c == '\n')
+
+main :: IO ()
+main = do
+  f <- hGetContents stdin
+  when (any bad f) $
+    error "Non-printable ASCII in input"
+  let bs = compress initTable f []
+  hSetBinaryMode stdout True
+  putStr $ 'Z' : (map chr $ toBytes bs)
diff --git a/Tools/convertX.sh b/Tools/convertX.sh
new file mode 100644
--- /dev/null
+++ b/Tools/convertX.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+( echo "{-# LINE 1 \"$1\" #-}" ; sed -e 's/--[XW]//' $2 ) > $3
diff --git a/generated/mhs.c b/generated/mhs.c
new file mode 100644
--- /dev/null
+++ b/generated/mhs.c
@@ -0,0 +1,14056 @@
+static unsigned char data[] = {
+118,53,46,49,10,49,54,49,52,10,40,40,65,32,58,48,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,80,41,41,41,41,32,40,40,65,32,58,49,32,40,85,32,40,90,
+32,40,90,32,40,90,32,75,41,41,41,41,41,32,40,40,65,32,58,50,
+32,40,85,32,40,75,32,40,90,32,40,90,32,75,41,41,41,41,41,32,
+40,40,65,32,58,51,32,40,85,32,40,75,32,40,75,32,40,90,32,75,
+41,41,41,41,41,32,40,40,65,32,58,52,32,40,85,32,40,75,32,40,
+75,32,40,75,32,75,41,41,41,41,41,32,40,40,65,32,58,53,32,40,
+85,32,40,75,32,40,75,32,40,75,32,65,41,41,41,41,41,32,40,40,
+65,32,58,54,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+65,108,116,101,114,110,97,116,105,118,101,46,101,109,112,116,121,34,41,41,
+41,32,40,40,65,32,58,55,32,40,75,32,40,110,111,68,101,102,97,117,
+108,116,32,34,65,108,116,101,114,110,97,116,105,118,101,46,60,124,62,34,
+41,41,41,32,40,40,65,32,58,56,32,40,40,83,32,40,40,40,83,39,
+32,83,39,41,32,40,40,66,32,95,49,52,41,32,95,49,41,41,32,40,
+40,40,67,39,32,95,50,55,54,41,32,40,40,66,32,95,49,50,41,32,
+95,49,41,41,32,95,52,54,50,41,41,41,32,95,53,41,41,32,40,40,
+65,32,58,57,32,40,40,83,32,40,40,40,83,39,32,67,39,41,32,95,
+51,41,32,95,52,41,41,32,40,40,40,67,39,32,95,49,51,41,32,95,
+49,41,32,95,52,54,49,41,41,41,32,40,40,65,32,58,49,48,32,40,
+40,40,83,39,32,80,41,32,95,50,41,32,40,40,40,67,39,32,95,49,
+51,41,32,95,49,41,32,95,49,51,52,49,41,41,41,32,40,40,65,32,
+58,49,49,32,40,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,80,41,41,41,41,32,40,40,65,32,58,
+49,50,32,40,85,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,
+41,32,40,40,65,32,58,49,51,32,40,85,32,40,75,32,40,90,32,40,
+90,32,75,41,41,41,41,41,32,40,40,65,32,58,49,52,32,40,85,32,
+40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,32,40,40,65,32,
+58,49,53,32,40,85,32,40,75,32,40,75,32,40,75,32,75,41,41,41,
+41,41,32,40,40,65,32,58,49,54,32,40,85,32,40,75,32,40,75,32,
+40,75,32,65,41,41,41,41,41,32,40,40,65,32,58,49,55,32,40,75,
+32,40,110,111,68,101,102,97,117,108,116,32,34,65,112,112,108,105,99,97,
+116,105,118,101,46,112,117,114,101,34,41,41,41,32,40,40,65,32,58,49,
+56,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,65,112,112,
+108,105,99,97,116,105,118,101,46,60,42,62,34,41,41,41,32,40,40,65,
+32,58,49,57,32,40,40,40,83,39,32,66,41,32,95,49,52,41,32,40,
+40,40,67,39,32,95,50,55,51,41,32,95,49,50,41,32,95,50,54,52,
+41,41,41,32,40,40,65,32,58,50,48,32,40,40,40,83,39,32,66,41,
+32,95,49,52,41,32,40,40,40,67,39,32,95,50,55,54,41,32,95,49,
+50,41,32,95,50,54,53,41,41,41,32,40,40,65,32,58,50,49,32,95,
+49,52,49,51,41,32,40,40,65,32,58,50,50,32,40,40,66,32,95,49,
+52,56,49,41,32,95,50,49,41,41,32,40,40,65,32,58,50,51,32,40,
+40,40,83,39,32,95,49,52,56,49,41,32,95,50,49,41,32,73,41,41,
+32,40,40,65,32,58,50,52,32,95,49,51,57,55,41,32,40,40,65,32,
+58,50,53,32,40,95,50,52,32,34,117,110,100,101,102,105,110,101,100,34,
+41,41,32,40,40,65,32,58,50,54,32,73,41,32,40,40,65,32,58,50,
+55,32,40,40,40,67,39,32,66,41,32,95,49,52,49,50,41,32,40,40,
+67,32,95,50,54,51,41,32,95,50,54,41,41,41,32,40,40,65,32,58,
+50,56,32,40,40,40,67,39,32,95,50,55,41,32,40,40,95,50,55,50,
+32,95,49,52,53,48,41,32,95,49,55,53,41,41,32,40,40,95,50,54,
+51,32,40,95,51,52,32,95,49,52,53,50,41,41,32,95,49,55,52,41,
+41,41,32,40,40,65,32,58,50,57,32,40,40,66,32,40,40,83,32,95,
+49,52,56,49,41,32,40,95,51,52,32,95,49,52,53,50,41,41,41,32,
+95,50,52,41,41,32,40,40,65,32,58,51,48,32,40,40,66,32,40,66,
+32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,
+80,41,41,41,32,40,40,65,32,58,51,49,32,40,85,32,40,90,32,40,
+90,32,75,41,41,41,41,32,40,40,65,32,58,51,50,32,40,85,32,40,
+75,32,40,90,32,75,41,41,41,41,32,40,40,65,32,58,51,51,32,40,
+85,32,40,75,32,40,75,32,75,41,41,41,41,32,40,40,65,32,58,51,
+52,32,40,85,32,40,75,32,40,75,32,65,41,41,41,41,32,40,40,65,
+32,58,51,53,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+77,111,110,97,100,46,62,62,61,34,41,41,41,32,40,40,65,32,58,51,
+54,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,95,51,50,41,
+32,75,41,41,32,40,40,65,32,58,51,55,32,40,40,66,32,95,49,51,
+41,32,95,51,49,41,41,32,40,40,65,32,58,51,56,32,40,40,40,83,
+39,32,40,67,39,32,66,41,41,32,95,51,50,41,32,40,40,40,83,39,
+32,40,67,39,32,66,41,41,32,95,51,50,41,32,40,66,39,32,95,51,
+52,41,41,41,41,32,40,40,65,32,58,51,57,32,80,41,32,40,40,65,
+32,58,52,48,32,40,85,32,75,41,41,32,40,40,65,32,58,52,49,32,
+40,85,32,65,41,41,32,40,40,65,32,58,52,50,32,40,75,32,95,50,
+52,41,41,32,40,40,65,32,58,52,51,32,40,40,66,32,40,66,32,89,
+41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,
+80,41,32,40,40,67,32,95,51,52,41,32,95,52,54,49,41,41,41,41,
+32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,40,67,39,32,66,41,41,41,32,40,66,39,32,95,51,50,41,41,
+41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,66,41,41,41,
+32,40,66,39,32,95,51,50,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,95,51,52,41,41,32,95,52,54,50,41,41,41,41,41,41,
+32,40,40,65,32,58,52,52,32,40,40,66,32,40,66,32,89,41,41,32,
+40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,80,41,32,
+40,40,67,32,95,51,52,41,32,95,49,51,52,49,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,67,39,32,66,41,41,41,32,40,66,39,32,95,51,50,41,41,41,32,
+90,41,41,41,41,32,40,40,65,32,58,52,53,32,40,40,66,32,85,41,
+32,40,40,67,32,95,51,52,41,32,95,49,51,52,49,41,41,41,32,40,
+40,65,32,58,52,54,32,40,40,67,32,95,52,51,41,32,95,50,54,52,
+41,41,32,40,40,65,32,58,52,55,32,40,40,66,32,95,50,54,54,41,
+32,95,51,50,41,41,32,40,40,65,32,58,52,56,32,40,40,66,32,67,
+41,32,40,40,66,32,67,39,41,32,95,51,50,41,41,41,32,40,40,65,
+32,58,52,57,32,40,40,66,32,95,50,54,54,41,32,95,52,56,41,41,
+32,40,40,65,32,58,53,48,32,40,40,66,32,89,41,32,40,40,40,83,
+39,32,66,41,32,40,66,39,32,40,40,66,32,80,41,32,40,40,67,32,
+95,51,52,41,32,95,52,54,49,41,41,41,41,32,40,40,40,83,39,32,
+66,41,32,40,40,66,32,40,83,39,32,40,83,39,32,66,41,41,41,32,
+40,66,39,32,95,51,50,41,41,41,32,40,40,40,83,39,32,40,67,39,
+32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,67,39,32,66,41,41,41,41,32,40,66,39,32,40,66,39,32,95,51,
+50,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,
+66,39,32,40,40,66,32,95,50,54,49,41,32,95,51,52,41,41,41,41,
+32,40,40,66,32,40,67,32,83,41,41,32,95,52,54,50,41,41,41,41,
+41,41,41,32,40,40,65,32,58,53,49,32,40,40,66,32,89,41,32,40,
+40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,80,41,32,40,
+40,67,32,95,51,52,41,32,40,40,80,32,95,52,54,49,41,32,95,52,
+54,49,41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,
+32,40,83,39,32,40,83,39,32,66,41,41,41,32,40,66,39,32,95,51,
+50,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,39,32,66,41,
+41,41,41,32,40,66,39,32,40,66,39,32,95,51,50,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,40,66,32,
+95,50,54,49,41,32,95,51,52,41,41,41,41,41,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,40,40,67,39,32,83,39,41,32,83,39,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,80,41,41,32,95,52,
+54,50,41,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,52,54,
+50,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,50,32,40,
+40,95,50,55,49,32,95,50,54,51,41,32,40,95,50,55,53,32,95,53,
+50,41,41,41,32,40,40,65,32,58,53,51,32,40,40,40,40,40,95,49,
+49,32,95,53,50,41,32,95,50,54,53,41,32,83,41,32,40,95,49,57,
+32,95,53,51,41,41,32,40,95,50,48,32,95,53,51,41,41,41,32,40,
+40,65,32,58,53,52,32,40,40,40,40,95,51,48,32,95,53,51,41,32,
+40,40,40,67,39,32,67,41,32,40,67,32,83,39,41,41,32,73,41,41,
+32,40,95,51,54,32,95,53,52,41,41,32,40,95,51,55,32,95,53,52,
+41,41,41,32,40,40,65,32,58,53,53,32,85,41,32,40,40,65,32,58,
+53,54,32,40,40,95,50,55,49,32,40,40,66,32,40,66,32,40,95,50,
+54,49,32,95,53,53,41,41,41,32,40,40,66,32,40,40,67,39,32,67,
+41,32,95,53,57,41,41,32,40,66,32,80,41,41,41,41,32,40,95,50,
+55,53,32,95,53,54,41,41,41,32,40,40,65,32,58,53,55,32,40,40,
+40,40,40,95,49,49,32,95,53,54,41,32,40,40,66,32,40,95,50,54,
+49,32,95,53,53,41,41,32,80,41,41,32,40,95,51,56,32,95,53,56,
+41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,53,53,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,95,
+53,57,41,41,32,40,90,32,95,53,57,41,41,41,41,32,40,95,50,48,
+32,95,53,55,41,41,41,32,40,40,65,32,58,53,56,32,40,40,40,40,
+95,51,48,32,95,53,55,41,32,40,40,66,32,40,66,32,40,95,50,54,
+49,32,95,53,53,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,67,41,32,95,53,57,41,41,32,40,66,32,95,53,57,41,41,41,
+41,32,40,95,49,53,32,95,53,55,41,41,32,40,95,49,51,32,95,53,
+55,41,41,41,32,40,40,65,32,58,53,57,32,40,85,32,73,41,41,32,
+40,40,65,32,58,54,48,32,40,40,66,32,40,95,50,54,51,32,95,53,
+54,53,41,41,32,95,53,57,41,41,32,40,40,65,32,58,54,49,32,40,
+40,66,32,40,95,50,54,49,32,95,53,53,41,41,32,40,66,32,40,80,
+32,95,49,51,52,49,41,41,41,41,32,40,40,65,32,58,54,50,32,40,
+40,66,32,40,95,50,54,49,32,95,53,53,41,41,32,40,90,32,40,80,
+32,95,49,51,52,49,41,41,41,41,32,40,40,65,32,58,54,51,32,40,
+40,95,50,54,49,32,95,53,53,41,32,40,40,83,32,80,41,32,73,41,
+41,41,32,40,40,65,32,58,54,52,32,40,40,66,32,40,95,50,54,49,
+32,95,53,53,41,41,32,40,40,67,32,40,83,39,32,80,41,41,32,73,
+41,41,41,32,40,40,65,32,58,54,53,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+54,54,32,40,85,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,54,55,32,40,85,
+32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,54,56,32,40,85,32,40,75,32,40,
+75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,54,57,32,40,85,32,40,75,32,40,75,32,40,75,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+55,48,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,49,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,55,50,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,55,51,32,40,85,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+55,52,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,53,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,55,54,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,55,55,32,40,85,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+55,56,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,57,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,56,48,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,56,49,32,40,85,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+56,50,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,
+40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,56,51,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,56,52,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,56,53,32,40,85,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+56,54,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,56,55,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,65,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,56,56,32,40,75,32,40,110,111,68,
+101,102,97,117,108,116,32,34,66,105,116,115,46,46,38,46,34,41,41,41,
+32,40,40,65,32,58,56,57,32,40,75,32,40,110,111,68,101,102,97,117,
+108,116,32,34,66,105,116,115,46,46,124,46,34,41,41,41,32,40,40,65,
+32,58,57,48,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+66,105,116,115,46,120,111,114,34,41,41,41,32,40,40,65,32,58,57,49,
+32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,66,105,116,115,
+46,99,111,109,112,108,101,109,101,110,116,34,41,41,41,32,40,40,65,32,
+58,57,50,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,
+66,32,40,66,32,40,83,32,40,40,67,32,40,95,52,57,55,32,95,50,
+56,50,41,41,32,35,48,41,41,41,41,32,40,40,66,32,40,40,83,39,
+32,83,41,32,40,67,32,40,40,67,32,40,95,52,57,57,32,95,50,56,
+50,41,41,32,35,48,41,41,41,41,32,95,55,57,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,95,56,49,41,32,40,95,52,
+56,50,32,95,50,55,55,41,41,41,41,32,40,40,65,32,58,57,51,32,
+40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,66,32,40,66,
+32,40,83,32,40,40,67,32,40,95,52,57,55,32,95,50,56,50,41,41,
+32,35,48,41,41,41,41,32,40,40,66,32,40,40,83,39,32,83,41,32,
+40,67,32,40,40,67,32,40,95,52,57,57,32,95,50,56,50,41,41,32,
+35,48,41,41,41,41,32,95,56,51,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,66,41,41,32,95,56,52,41,32,40,95,52,56,50,32,95,
+50,55,55,41,41,41,41,32,40,40,65,32,58,57,52,32,40,40,67,32,
+40,40,83,32,95,55,54,41,32,40,40,67,32,95,55,52,41,32,35,48,
+41,41,41,32,35,48,41,41,32,40,40,65,32,58,57,53,32,40,75,32,
+40,110,111,68,101,102,97,117,108,116,32,34,66,105,116,115,46,98,105,116,
+34,41,41,41,32,40,40,65,32,58,57,54,32,40,40,40,83,39,32,40,
+67,39,32,66,41,41,32,95,54,56,41,32,95,55,52,41,41,32,40,40,
+65,32,58,57,55,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,
+95,54,55,41,32,40,40,40,83,39,32,66,41,32,95,55,48,41,32,95,
+55,52,41,41,41,32,40,40,65,32,58,57,56,32,40,40,40,83,39,32,
+40,67,39,32,66,41,41,32,95,54,57,41,32,95,55,52,41,41,32,40,
+40,65,32,58,57,57,32,40,75,32,40,110,111,68,101,102,97,117,108,116,
+32,34,66,105,116,115,46,116,101,115,116,66,105,116,34,41,41,41,32,40,
+40,65,32,58,49,48,48,32,95,55,49,41,32,40,40,65,32,58,49,48,
+49,32,95,55,57,41,32,40,40,65,32,58,49,48,50,32,40,40,40,67,
+39,32,40,67,39,32,66,41,41,32,95,55,49,41,32,40,95,52,56,50,
+32,95,50,55,55,41,41,41,32,40,40,65,32,58,49,48,51,32,95,56,
+49,41,32,40,40,65,32,58,49,48,52,32,95,55,50,41,32,40,40,65,
+32,58,49,48,53,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+95,55,50,41,32,40,95,52,56,50,32,95,50,55,55,41,41,41,32,40,
+40,65,32,58,49,48,54,32,40,75,32,40,110,111,68,101,102,97,117,108,
+116,32,34,66,105,116,115,46,112,111,112,67,111,117,110,116,34,41,41,41,
+32,40,40,65,32,58,49,48,55,32,40,75,32,40,110,111,68,101,102,97,
+117,108,116,32,34,66,105,116,115,46,98,105,116,83,105,122,101,77,97,121,
+98,101,34,41,41,41,32,40,40,65,32,58,49,48,56,32,40,40,66,32,
+40,66,32,40,95,52,55,49,32,40,95,50,52,32,34,98,105,116,83,105,
+122,101,32,105,115,32,117,110,100,101,102,105,110,101,100,34,41,41,41,41,
+32,95,56,54,41,41,32,40,40,65,32,58,49,48,57,32,40,40,66,32,
+40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,80,41,41,41,32,40,40,65,32,58,49,49,48,32,40,85,32,40,
+90,32,40,90,32,75,41,41,41,41,32,40,40,65,32,58,49,49,49,32,
+40,85,32,40,75,32,40,90,32,75,41,41,41,41,32,40,40,65,32,58,
+49,49,50,32,40,85,32,40,75,32,40,75,32,75,41,41,41,41,32,40,
+40,65,32,58,49,49,51,32,40,85,32,40,75,32,40,75,32,65,41,41,
+41,41,32,40,40,65,32,58,49,49,52,32,40,75,32,40,110,111,68,101,
+102,97,117,108,116,32,34,70,105,110,105,116,101,66,105,116,115,46,102,105,
+110,105,116,101,66,105,116,83,105,122,101,34,41,41,41,32,40,40,65,32,
+58,49,49,53,32,40,40,40,83,39,32,40,83,39,32,40,40,83,39,32,
+40,95,52,56,48,32,95,50,55,55,41,41,32,40,40,67,32,40,95,52,
+56,48,32,95,50,55,55,41,41,32,35,49,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,89,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,83,32,40,40,67,32,40,95,
+52,57,55,32,95,50,56,50,41,41,32,40,40,95,52,56,53,32,95,50,
+55,55,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+83,41,41,32,40,40,66,32,95,55,56,41,32,95,49,49,48,41,41,41,
+32,40,40,67,32,66,41,32,40,40,67,32,40,95,52,56,48,32,95,50,
+55,55,41,41,32,35,49,41,41,41,41,32,73,41,41,41,32,73,41,41,
+41,32,40,40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,32,35,
+49,41,41,41,32,95,49,49,49,41,41,32,40,40,65,32,58,49,49,54,
+32,40,40,40,67,39,32,40,67,39,32,89,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,83,39,32,
+40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,83,41,41,32,40,
+40,66,32,40,66,32,40,67,32,40,95,53,48,48,32,95,50,56,50,41,
+41,41,41,32,95,49,49,49,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,83,41,41,32,40,40,66,32,
+95,55,56,41,32,95,49,49,48,41,41,41,32,40,40,67,32,66,41,32,
+40,40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,
+41,41,41,32,73,41,41,41,32,73,41,41,32,35,48,41,41,32,40,40,
+65,32,58,49,49,55,32,40,40,95,50,48,49,32,40,40,67,32,40,40,
+67,32,83,39,41,32,95,49,50,50,41,41,32,73,41,41,32,40,95,50,
+48,53,32,95,49,49,55,41,41,41,32,40,40,65,32,58,49,49,56,32,
+40,40,40,95,49,53,56,56,32,40,75,32,40,40,80,32,40,95,49,53,
+57,55,32,34,70,97,108,115,101,34,41,41,32,40,95,49,53,57,55,32,
+34,84,114,117,101,34,41,41,41,41,32,40,95,49,53,57,51,32,95,49,
+49,56,41,41,32,40,95,49,53,57,52,32,95,49,49,56,41,41,41,32,
+40,40,65,32,58,49,49,57,32,40,40,95,49,50,54,32,95,49,50,52,
+41,32,95,49,50,53,41,41,32,40,40,65,32,58,49,50,48,32,40,82,
+32,95,49,50,53,41,41,32,40,40,65,32,58,49,50,49,32,40,85,32,
+95,49,50,52,41,41,32,40,40,65,32,58,49,50,50,32,40,40,80,32,
+95,49,50,53,41,32,95,49,50,52,41,41,32,40,40,65,32,58,49,50,
+51,32,95,49,50,53,41,32,40,40,65,32,58,49,50,52,32,75,41,32,
+40,40,65,32,58,49,50,53,32,65,41,32,40,40,65,32,58,49,50,54,
+32,80,41,32,40,40,65,32,58,49,50,55,32,40,85,32,75,41,41,32,
+40,40,65,32,58,49,50,56,32,40,85,32,65,41,41,32,40,40,65,32,
+58,49,50,57,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+66,111,117,110,100,101,100,46,109,105,110,66,111,117,110,100,34,41,41,41,
+32,40,40,65,32,58,49,51,48,32,40,75,32,40,110,111,68,101,102,97,
+117,108,116,32,34,66,111,117,110,100,101,100,46,109,97,120,66,111,117,110,
+100,34,41,41,41,32,40,40,65,32,58,49,51,49,32,40,40,95,50,48,
+49,32,95,49,51,57,49,41,32,95,49,51,57,50,41,41,32,40,40,65,
+32,58,49,51,50,32,40,40,40,40,40,40,40,40,95,52,57,52,32,95,
+49,51,49,41,32,95,49,52,48,48,41,32,95,49,51,57,51,41,32,95,
+49,51,57,52,41,32,95,49,51,57,53,41,32,95,49,51,57,54,41,32,
+40,95,53,48,56,32,95,49,51,50,41,41,32,40,95,53,48,57,32,95,
+49,51,50,41,41,41,32,40,40,65,32,58,49,51,51,32,40,40,95,50,
+48,49,32,95,49,52,48,49,41,32,40,95,50,48,53,32,95,49,51,51,
+41,41,41,32,40,40,65,32,58,49,51,52,32,40,40,40,40,40,40,40,
+40,95,52,57,52,32,95,49,51,51,41,32,95,49,52,48,48,41,32,40,
+40,40,67,39,32,40,67,39,32,40,95,50,48,50,32,95,53,49,48,41,
+41,41,32,95,49,52,48,48,41,32,95,53,49,52,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,95,50,48,51,32,95,53,49,48,41,41,41,
+32,95,49,52,48,48,41,32,95,53,49,54,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,95,50,48,50,32,95,53,49,48,41,41,41,32,95,
+49,52,48,48,41,32,95,53,49,54,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,95,50,48,51,32,95,53,49,48,41,41,41,32,95,49,52,
+48,48,41,32,95,53,49,52,41,41,32,40,95,53,48,56,32,95,49,51,
+52,41,41,32,40,95,53,48,57,32,95,49,51,52,41,41,41,32,40,40,
+65,32,58,49,51,53,32,40,40,95,49,50,54,32,40,95,49,51,54,32,
+35,48,41,41,32,40,95,49,51,54,32,35,49,50,55,41,41,41,32,40,
+40,65,32,58,49,51,54,32,95,49,52,48,50,41,32,40,40,65,32,58,
+49,51,55,32,95,49,52,48,51,41,32,40,40,65,32,58,49,51,56,32,
+40,40,40,83,39,32,95,49,50,49,41,32,40,95,49,51,57,52,32,35,
+57,55,41,41,32,40,40,67,32,95,49,51,57,52,41,32,35,49,50,50,
+41,41,41,32,40,40,65,32,58,49,51,57,32,40,40,40,83,39,32,95,
+49,50,49,41,32,40,95,49,51,57,52,32,35,54,53,41,41,32,40,40,
+67,32,95,49,51,57,52,41,32,35,57,48,41,41,41,32,40,40,65,32,
+58,49,52,48,32,40,40,40,83,39,32,95,49,50,48,41,32,95,49,51,
+56,41,32,95,49,51,57,41,41,32,40,40,65,32,58,49,52,49,32,40,
+40,40,83,39,32,95,49,50,49,41,32,40,95,49,51,57,52,32,35,52,
+56,41,41,32,40,40,67,32,95,49,51,57,52,41,32,35,53,55,41,41,
+41,32,40,40,65,32,58,49,52,50,32,40,40,40,83,39,32,95,49,50,
+48,41,32,95,49,52,49,41,32,40,40,40,83,39,32,95,49,50,48,41,
+32,40,40,40,83,39,32,95,49,50,49,41,32,40,95,49,51,57,52,32,
+35,57,55,41,41,32,40,40,67,32,95,49,51,57,52,41,32,35,49,48,
+50,41,41,41,32,40,40,40,83,39,32,95,49,50,49,41,32,40,95,49,
+51,57,52,32,35,55,48,41,41,32,40,40,67,32,95,49,51,57,52,41,
+32,35,55,48,41,41,41,41,41,32,40,40,65,32,58,49,52,51,32,40,
+40,40,83,39,32,95,49,50,48,41,32,95,49,52,48,41,32,95,49,52,
+49,41,41,32,40,40,65,32,58,49,52,52,32,40,40,40,83,39,32,95,
+49,50,49,41,32,40,95,49,51,57,52,32,35,51,50,41,41,32,40,40,
+67,32,95,49,51,57,52,41,32,35,49,50,54,41,41,41,32,40,40,65,
+32,58,49,52,53,32,40,40,40,83,39,32,95,49,50,48,41,32,40,40,
+67,32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,51,50,41,41,
+32,40,40,40,83,39,32,95,49,50,48,41,32,40,40,67,32,40,95,50,
+48,50,32,95,49,51,49,41,41,32,35,57,41,41,32,40,40,67,32,40,
+95,50,48,50,32,95,49,51,49,41,41,32,35,49,48,41,41,41,41,32,
+40,40,65,32,58,49,52,54,32,40,40,83,32,40,40,83,32,40,40,40,
+83,39,32,95,49,50,49,41,32,40,95,49,51,57,52,32,35,52,56,41,
+41,32,40,40,67,32,95,49,51,57,52,41,32,35,53,55,41,41,41,32,
+40,40,83,32,40,40,83,32,40,40,40,83,39,32,95,49,50,49,41,32,
+40,95,49,51,57,52,32,35,57,55,41,41,32,40,40,67,32,95,49,51,
+57,52,41,32,35,49,48,50,41,41,41,32,40,40,83,32,40,40,67,32,
+40,40,40,83,39,32,95,49,50,49,41,32,40,95,49,51,57,52,32,35,
+54,53,41,41,32,40,40,67,32,95,49,51,57,52,41,32,35,55,48,41,
+41,41,32,40,95,50,52,32,34,100,105,103,105,116,84,111,73,110,116,34,
+41,41,41,32,40,40,40,67,39,32,40,95,52,56,48,32,95,50,55,55,
+41,41,32,95,49,51,55,41,32,40,40,40,95,52,56,48,32,95,50,55,
+55,41,32,40,95,49,51,55,32,35,54,53,41,41,32,35,49,48,41,41,
+41,41,41,32,40,40,40,67,39,32,40,95,52,56,48,32,95,50,55,55,
+41,41,32,95,49,51,55,41,32,40,40,40,95,52,56,48,32,95,50,55,
+55,41,32,40,95,49,51,55,32,35,57,55,41,41,32,35,49,48,41,41,
+41,41,41,32,40,40,40,67,39,32,40,95,52,56,48,32,95,50,55,55,
+41,41,32,95,49,51,55,41,32,40,95,49,51,55,32,35,52,56,41,41,
+41,41,32,40,40,65,32,58,49,52,55,32,40,40,83,32,40,40,83,32,
+40,40,40,83,39,32,95,49,50,49,41,32,40,95,49,51,57,52,32,35,
+54,53,41,41,32,40,40,67,32,95,49,51,57,52,41,32,35,57,48,41,
+41,41,32,40,95,49,50,53,32,40,40,40,110,111,77,97,116,99,104,32,
+34,46,47,108,105,98,47,68,97,116,97,47,67,104,97,114,46,104,115,34,
+41,32,35,56,51,41,32,35,49,41,41,41,41,32,40,40,66,32,95,49,
+51,54,41,32,40,40,40,67,39,32,40,95,52,55,57,32,95,50,55,55,
+41,41,32,40,40,40,67,39,32,40,95,52,56,48,32,95,50,55,55,41,
+41,32,95,49,51,55,41,32,40,95,49,51,55,32,35,54,53,41,41,41,
+32,40,95,49,51,55,32,35,57,55,41,41,41,41,41,32,40,40,65,32,
+58,49,52,56,32,40,40,83,32,40,40,83,32,40,40,40,83,39,32,95,
+49,50,49,41,32,40,95,49,51,57,52,32,35,57,55,41,41,32,40,40,
+67,32,95,49,51,57,52,41,32,35,57,55,41,41,41,32,40,95,49,50,
+53,32,40,40,40,110,111,77,97,116,99,104,32,34,46,47,108,105,98,47,
+68,97,116,97,47,67,104,97,114,46,104,115,34,41,32,35,56,55,41,32,
+35,49,41,41,41,41,32,40,40,66,32,95,49,51,54,41,32,40,40,40,
+67,39,32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,40,67,
+39,32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,49,51,55,41,
+32,40,95,49,51,55,32,35,57,55,41,41,41,32,40,95,49,51,55,32,
+35,54,53,41,41,41,41,41,32,40,40,65,32,58,49,52,57,32,40,40,
+40,95,49,53,56,56,32,40,75,32,40,40,67,32,40,40,83,32,40,40,
+67,32,61,61,41,32,35,51,57,41,41,32,40,40,66,32,40,95,50,54,
+51,32,40,95,49,53,57,54,32,35,51,57,41,41,41,32,40,40,40,67,
+39,32,95,50,54,51,41,32,40,40,66,32,95,49,53,57,55,41,32,95,
+49,53,48,41,41,32,40,95,49,53,57,54,32,35,51,57,41,41,41,41,
+41,32,40,95,49,53,57,55,32,34,39,92,57,50,38,39,39,34,41,41,
+41,41,32,40,95,49,53,57,51,32,95,49,52,57,41,41,32,40,40,66,
+32,40,95,50,54,51,32,40,95,49,53,57,54,32,35,51,52,41,41,41,
+32,40,89,32,40,40,66,32,40,80,32,40,95,49,53,57,54,32,35,51,
+52,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,40,40,
+83,39,32,83,39,41,32,40,40,67,32,40,95,50,48,50,32,95,49,51,
+49,41,41,32,35,51,52,41,41,41,32,40,40,67,39,32,66,41,32,40,
+40,66,32,95,50,54,51,41,32,40,40,66,32,95,49,53,57,55,41,32,
+95,49,53,48,41,41,41,41,41,32,40,66,32,40,95,50,54,51,32,40,
+95,49,53,57,55,32,34,92,57,50,38,92,51,52,38,34,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,49,53,48,32,40,40,40,67,39,
+32,89,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,80,41,32,
+40,40,83,32,40,40,83,32,95,49,52,52,41,32,40,40,66,32,40,95,
+52,54,51,32,34,39,92,57,50,38,34,41,41,32,40,40,40,67,39,32,
+95,52,54,51,41,32,40,40,66,32,40,95,49,53,57,48,32,95,50,56,
+51,41,41,32,95,49,51,55,41,41,32,40,40,79,32,35,51,57,41,32,
+75,41,41,41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,32,
+40,40,66,32,40,66,32,40,67,32,66,41,41,41,32,40,66,39,32,40,
+40,66,32,67,41,32,40,67,32,40,95,50,48,50,32,95,49,51,49,41,
+41,41,41,41,41,41,32,40,40,79,32,40,40,80,32,35,49,48,41,32,
+34,92,57,50,38,110,34,41,41,32,40,40,79,32,40,40,80,32,35,49,
+51,41,32,34,92,57,50,38,114,34,41,41,32,40,40,79,32,40,40,80,
+32,35,57,41,32,34,92,57,50,38,116,34,41,41,32,40,40,79,32,40,
+40,80,32,35,56,41,32,34,92,57,50,38,98,34,41,41,32,40,40,79,
+32,40,40,80,32,35,57,50,41,32,34,92,57,50,38,92,57,50,38,34,
+41,41,32,75,41,41,41,41,41,41,41,32,40,40,65,32,58,49,53,49,
+32,40,40,40,40,40,40,40,95,52,55,56,32,95,49,51,52,57,41,32,
+95,49,51,53,48,41,32,95,49,51,53,49,41,32,95,49,51,53,51,41,
+32,40,40,83,32,40,40,83,32,40,40,67,32,40,95,52,57,55,32,95,
+49,53,52,41,41,32,38,48,46,48,41,41,32,73,41,41,32,40,95,52,
+56,50,32,95,49,53,49,41,41,41,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,95,52,57,54,32,95,49,53,52,41,41,32,
+38,48,46,48,41,41,32,38,45,49,46,48,41,41,32,38,48,46,48,41,
+41,32,38,49,46,48,41,41,32,95,51,54,51,41,41,32,40,40,65,32,
+58,49,53,50,32,40,40,40,40,95,50,53,50,32,95,49,53,49,41,32,
+95,49,51,53,50,41,32,40,95,50,53,56,32,95,49,53,50,41,41,32,
+40,40,40,83,39,32,95,49,51,53,50,41,32,40,40,66,32,40,95,52,
+56,53,32,95,49,53,49,41,41,32,95,53,50,54,41,41,32,40,40,66,
+32,40,95,52,56,53,32,95,49,53,49,41,41,32,95,53,50,55,41,41,
+41,41,32,40,40,65,32,58,49,53,51,32,40,40,95,50,48,49,32,95,
+49,51,53,52,41,32,95,49,51,53,53,41,41,32,40,40,65,32,58,49,
+53,52,32,40,40,40,40,40,40,40,40,95,52,57,52,32,95,49,53,51,
+41,32,40,95,53,48,51,32,95,49,53,52,41,41,32,95,49,51,53,54,
+41,32,95,49,51,53,55,41,32,95,49,51,53,56,41,32,95,49,51,53,
+57,41,32,40,95,53,48,56,32,95,49,53,52,41,41,32,40,95,53,48,
+57,32,95,49,53,52,41,41,41,32,40,40,65,32,58,49,53,53,32,40,
+40,40,95,49,53,56,56,32,40,95,49,53,57,50,32,95,49,53,53,41,
+41,32,95,49,51,54,48,41,32,40,95,49,53,57,52,32,95,49,53,53,
+41,41,41,32,40,40,65,32,58,49,53,54,32,40,95,53,51,49,32,40,
+40,66,32,40,40,40,83,39,32,40,95,52,56,49,32,40,95,53,49,57,
+32,95,51,48,57,41,41,41,32,40,40,66,32,40,95,53,51,50,32,95,
+51,49,48,41,41,32,40,85,32,75,41,41,41,32,40,40,66,32,40,40,
+95,50,54,48,32,40,40,67,32,40,40,80,32,40,95,53,50,48,32,40,
+40,80,32,95,51,48,57,41,32,95,51,48,54,41,41,41,32,95,50,55,
+56,41,41,32,95,50,56,50,41,41,32,40,40,95,52,56,53,32,40,95,
+53,49,57,32,95,51,48,57,41,41,32,40,95,51,53,57,32,35,50,41,
+41,41,41,32,40,85,32,65,41,41,41,41,32,95,49,54,56,41,41,41,
+32,40,40,65,32,58,49,53,55,32,40,40,40,40,40,40,40,40,40,40,
+40,40,40,40,40,40,40,40,40,40,40,40,40,95,50,48,54,32,95,49,
+53,50,41,32,40,40,95,50,53,54,32,95,49,53,50,41,32,40,40,95,
+53,51,48,32,40,95,51,53,57,32,35,51,49,52,49,53,57,50,54,53,
+51,53,56,57,55,57,51,41,41,32,40,95,51,53,57,32,35,49,48,48,
+48,48,48,48,48,48,48,48,48,48,48,48,48,41,41,41,41,32,40,40,
+66,32,95,49,52,49,48,41,32,95,49,53,57,41,41,32,40,40,66,32,
+95,49,52,49,48,41,32,95,49,53,56,41,41,32,40,40,66,32,95,49,
+52,49,48,41,32,95,49,54,48,41,41,32,40,95,50,51,52,32,95,49,
+53,55,41,41,32,40,95,50,51,53,32,95,49,53,55,41,41,32,40,40,
+66,32,95,49,52,49,48,41,32,95,49,54,49,41,41,32,40,40,66,32,
+95,49,52,49,48,41,32,95,49,54,50,41,41,32,40,40,66,32,95,49,
+52,49,48,41,32,95,49,54,51,41,41,32,40,40,66,32,95,49,52,49,
+48,41,32,95,49,54,52,41,41,32,40,40,66,32,95,49,52,49,48,41,
+32,95,49,54,53,41,41,32,40,40,66,32,95,49,52,49,48,41,32,95,
+49,54,54,41,41,32,40,95,50,52,50,32,95,49,53,55,41,41,32,40,
+95,50,52,51,32,95,49,53,55,41,41,32,40,95,50,52,52,32,95,49,
+53,55,41,41,32,40,95,50,52,53,32,95,49,53,55,41,41,32,40,95,
+50,52,54,32,95,49,53,55,41,41,32,40,95,50,52,55,32,95,49,53,
+55,41,41,32,40,95,50,52,56,32,95,49,53,55,41,41,32,40,95,50,
+52,57,32,95,49,53,55,41,41,32,40,95,50,53,48,32,95,49,53,55,
+41,41,32,40,95,50,53,49,32,95,49,53,55,41,41,41,32,40,40,65,
+32,58,49,53,56,32,94,108,111,103,41,32,40,40,65,32,58,49,53,57,
+32,94,101,120,112,41,32,40,40,65,32,58,49,54,48,32,94,115,113,114,
+116,41,32,40,40,65,32,58,49,54,49,32,94,115,105,110,41,32,40,40,
+65,32,58,49,54,50,32,94,99,111,115,41,32,40,40,65,32,58,49,54,
+51,32,94,116,97,110,41,32,40,40,65,32,58,49,54,52,32,94,97,115,
+105,110,41,32,40,40,65,32,58,49,54,53,32,94,97,99,111,115,41,32,
+40,40,65,32,58,49,54,54,32,94,97,116,97,110,41,32,40,40,65,32,
+58,49,54,55,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+95,53,51,52,32,40,40,67,32,40,40,80,32,95,49,53,50,41,32,95,
+49,53,52,41,41,32,95,49,53,55,41,41,32,40,75,32,40,95,51,53,
+57,32,35,50,41,41,41,32,40,75,32,35,53,51,41,41,32,40,75,32,
+40,40,80,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,
+53,57,32,35,45,49,48,50,49,41,41,41,32,40,40,95,52,56,53,32,
+95,50,55,55,41,32,40,95,51,53,57,32,35,49,48,50,52,41,41,41,
+41,41,32,95,49,54,56,41,32,95,49,55,51,41,32,40,95,53,53,53,
+32,95,49,54,55,41,41,32,40,95,53,53,54,32,95,49,54,55,41,41,
+32,40,95,53,53,55,32,95,49,54,55,41,41,32,95,49,54,57,41,32,
+95,49,55,48,41,32,95,49,55,49,41,32,95,49,55,50,41,32,40,75,
+32,95,49,50,53,41,41,32,40,95,53,54,51,32,95,49,54,55,41,41,
+41,32,40,40,65,32,58,49,54,56,32,40,40,66,32,40,40,83,32,40,
+40,40,83,39,32,67,41,32,40,40,66,32,40,40,67,39,32,67,41,32,
+40,40,40,83,39,32,40,83,39,32,67,41,41,32,40,40,66,32,40,66,
+32,40,83,32,40,40,67,32,40,95,50,48,50,32,95,53,56,51,41,41,
+32,35,48,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,66,32,40,66,32,40,83,32,40,40,67,32,40,95,50,48,
+50,32,95,53,56,51,41,41,32,35,50,48,52,55,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+80,41,41,32,40,40,67,32,66,41,32,40,40,66,32,95,51,54,49,41,
+32,40,40,67,32,40,95,54,56,32,95,53,56,54,41,41,32,35,52,53,
+48,51,53,57,57,54,50,55,51,55,48,52,57,54,41,41,41,41,41,32,
+40,40,40,67,39,32,40,95,52,56,48,32,95,50,55,55,41,41,32,40,
+40,40,67,39,32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,49,
+51,56,57,41,32,35,49,48,50,51,41,41,32,35,53,50,41,41,41,41,
+32,40,40,80,32,40,40,95,52,56,53,32,95,51,48,56,41,32,40,95,
+51,53,57,32,35,48,41,41,41,32,40,40,95,52,56,53,32,95,50,55,
+55,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,80,41,41,32,40,40,67,32,66,41,32,95,
+51,54,49,41,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,
+95,51,53,57,32,35,48,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,95,56,49,32,95,53,56,54,41,41,32,40,40,67,32,40,95,54,55,
+32,95,53,56,54,41,41,32,35,57,50,50,51,51,55,50,48,51,54,56,
+53,52,55,55,53,56,48,55,41,41,32,35,53,50,41,41,41,32,40,40,
+67,32,40,95,54,55,32,95,53,56,54,41,41,32,35,52,53,48,51,53,
+57,57,54,50,55,51,55,48,52,57,53,41,41,41,32,40,40,67,32,40,
+40,67,32,40,40,40,67,39,32,40,95,50,48,51,32,95,53,56,51,41,
+41,32,40,40,67,32,40,95,54,55,32,95,53,56,54,41,41,32,35,45,
+57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,56,41,
+41,32,35,48,41,41,32,95,50,54,52,41,41,32,40,95,52,56,50,32,
+95,51,48,56,41,41,41,41,32,95,49,51,55,54,41,41,32,40,40,65,
+32,58,49,54,57,32,40,40,66,32,40,40,40,83,39,32,95,49,50,49,
+41,32,40,40,40,67,39,32,40,95,50,48,50,32,95,53,56,51,41,41,
+32,40,40,40,67,39,32,40,95,56,49,32,95,53,56,54,41,41,32,40,
+40,67,32,40,95,54,55,32,95,53,56,54,41,41,32,35,57,50,50,51,
+51,55,50,48,51,54,56,53,52,55,55,53,56,48,55,41,41,32,35,53,
+50,41,41,32,35,50,48,52,55,41,41,32,40,40,40,67,39,32,40,95,
+50,48,51,32,95,53,56,51,41,41,32,40,40,67,32,40,95,54,55,32,
+95,53,56,54,41,41,32,35,52,53,48,51,53,57,57,54,50,55,51,55,
+48,52,57,53,41,41,32,35,48,41,41,41,32,95,49,51,55,54,41,41,
+32,40,40,65,32,58,49,55,48,32,40,40,66,32,40,40,40,83,39,32,
+95,49,50,49,41,32,40,40,40,67,39,32,40,95,50,48,50,32,95,53,
+56,51,41,41,32,40,40,40,67,39,32,40,95,56,49,32,95,53,56,54,
+41,41,32,40,40,67,32,40,95,54,55,32,95,53,56,54,41,41,32,35,
+57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,55,41,
+41,32,35,53,50,41,41,32,35,50,48,52,55,41,41,32,40,40,40,67,
+39,32,40,95,50,48,50,32,95,53,56,51,41,41,32,40,40,67,32,40,
+95,54,55,32,95,53,56,54,41,41,32,35,52,53,48,51,53,57,57,54,
+50,55,51,55,48,52,57,53,41,41,32,35,48,41,41,41,32,95,49,51,
+55,54,41,41,32,40,40,65,32,58,49,55,49,32,40,40,66,32,40,40,
+40,83,39,32,95,49,50,49,41,32,40,40,40,67,39,32,40,95,50,48,
+50,32,95,53,56,51,41,41,32,40,40,40,67,39,32,40,95,56,49,32,
+95,53,56,54,41,41,32,40,40,67,32,40,95,54,55,32,95,53,56,54,
+41,41,32,35,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,
+56,48,55,41,41,32,35,53,50,41,41,32,35,48,41,41,32,40,40,40,
+67,39,32,40,95,50,48,51,32,95,53,56,51,41,41,32,40,40,67,32,
+40,95,54,55,32,95,53,56,54,41,41,32,35,52,53,48,51,53,57,57,
+54,50,55,51,55,48,52,57,53,41,41,32,35,48,41,41,41,32,95,49,
+51,55,54,41,41,32,40,40,65,32,58,49,55,50,32,40,40,66,32,40,
+40,40,83,39,32,95,49,50,49,41,32,40,40,40,67,39,32,40,95,50,
+48,51,32,95,53,56,51,41,41,32,40,40,67,32,40,95,54,55,32,95,
+53,56,54,41,41,32,35,45,57,50,50,51,51,55,50,48,51,54,56,53,
+52,55,55,53,56,48,56,41,41,32,35,48,41,41,32,40,40,40,67,39,
+32,40,95,50,48,50,32,95,53,56,51,41,41,32,40,40,67,32,40,95,
+54,55,32,95,53,56,54,41,41,32,35,57,50,50,51,51,55,50,48,51,
+54,56,53,52,55,55,53,56,48,55,41,41,32,35,48,41,41,41,32,95,
+49,51,55,54,41,41,32,40,40,65,32,58,49,55,51,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,95,52,56,49,32,95,49,53,49,41,
+41,32,40,95,52,56,53,32,95,49,53,49,41,41,41,32,40,40,95,50,
+54,48,32,40,40,67,32,40,40,80,32,95,49,53,50,41,32,95,50,55,
+56,41,41,32,95,50,56,50,41,41,32,40,40,95,52,56,53,32,95,49,
+53,49,41,32,40,95,51,53,57,32,35,50,41,41,41,41,41,32,40,40,
+65,32,58,49,55,52,32,40,40,66,32,90,41,32,85,41,41,32,40,40,
+65,32,58,49,55,53,32,40,90,32,85,41,41,32,40,40,65,32,58,49,
+55,54,32,40,40,40,83,39,32,95,50,48,49,41,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,40,67,32,83,39,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,66,32,40,67,32,67,39,41,41,32,40,40,66,
+32,95,50,48,50,41,32,40,85,32,75,41,41,41,41,32,40,75,32,95,
+49,50,52,41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,
+40,85,32,40,75,32,95,49,50,52,41,41,41,41,32,40,40,66,32,95,
+50,48,50,41,32,40,85,32,65,41,41,41,41,41,32,40,40,66,32,95,
+50,48,53,41,32,40,40,66,32,95,49,55,54,41,32,40,40,40,83,39,
+32,80,41,32,40,85,32,75,41,41,32,40,85,32,65,41,41,41,41,41,
+41,32,40,40,65,32,58,49,55,55,32,80,41,32,40,40,65,32,58,49,
+55,56,32,40,40,83,32,40,40,40,83,39,32,95,49,53,56,56,41,32,
+40,40,40,83,39,32,40,83,39,32,80,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,40,40,66,32,95,49,53,57,56,41,32,40,40,67,
+32,40,95,53,48,48,32,95,50,56,50,41,41,32,95,49,54,48,49,41,
+41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,51,32,40,95,49,
+53,57,55,32,34,76,101,102,116,32,34,41,41,41,41,32,40,40,40,67,
+39,32,95,49,53,56,57,41,32,40,85,32,75,41,41,32,95,49,54,48,
+49,41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,
+66,32,95,49,53,57,56,41,32,40,40,67,32,40,95,53,48,48,32,95,
+50,56,50,41,41,32,95,49,54,48,49,41,41,41,41,32,40,40,66,32,
+40,66,32,40,95,50,54,51,32,40,95,49,53,57,55,32,34,82,105,103,
+104,116,32,34,41,41,41,41,32,40,40,40,67,39,32,95,49,53,56,57,
+41,32,40,85,32,65,41,41,32,95,49,54,48,49,41,41,41,41,41,32,
+40,40,66,32,95,49,53,57,51,41,32,40,40,66,32,95,49,55,56,41,
+32,40,40,40,83,39,32,80,41,32,40,85,32,75,41,41,32,40,85,32,
+65,41,41,41,41,41,41,32,40,40,66,32,95,49,53,57,52,41,32,40,
+40,66,32,95,49,55,56,41,32,40,40,40,83,39,32,80,41,32,40,85,
+32,75,41,41,32,40,85,32,65,41,41,41,41,41,41,32,40,40,65,32,
+58,49,55,57,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,
+40,40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,48,32,40,85,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,49,32,40,85,32,40,75,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,50,32,40,85,32,40,75,32,40,75,32,40,90,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,51,32,40,85,32,40,75,32,40,75,32,40,75,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,52,32,40,85,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,53,32,40,85,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,54,32,40,85,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,55,32,40,85,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,65,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,56,56,32,40,40,40,83,39,32,95,50,54,51,41,
+32,95,49,56,50,41,32,40,40,66,32,40,95,50,54,51,32,40,40,67,
+32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,95,52,56,53,
+32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,41,41,41,
+32,95,49,56,51,41,41,41,32,40,40,65,32,58,49,56,57,32,40,40,
+40,83,39,32,95,50,54,51,41,32,95,49,56,50,41,32,40,40,66,32,
+40,95,50,54,51,32,40,40,95,52,57,51,32,95,50,55,55,41,32,40,
+40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,
+41,41,41,41,41,32,95,49,56,51,41,41,41,32,40,40,65,32,58,49,
+57,48,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,69,110,
+117,109,46,116,111,69,110,117,109,34,41,41,41,32,40,40,65,32,58,49,
+57,49,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,69,110,
+117,109,46,102,114,111,109,69,110,117,109,34,41,41,41,32,40,40,65,32,
+58,49,57,50,32,40,40,40,83,39,32,66,41,32,40,40,66,32,95,51,
+57,53,41,32,95,49,56,50,41,41,32,40,40,66,32,40,66,32,40,95,
+49,56,52,32,95,49,57,56,41,41,41,32,95,49,56,51,41,41,41,32,
+40,40,65,32,58,49,57,51,32,40,40,40,83,39,32,66,41,32,40,66,
+39,32,40,40,66,32,95,51,57,53,41,32,95,49,56,50,41,41,41,32,
+40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,95,49,56,53,32,95,49,57,56,41,41,41,32,95,49,56,51,41,
+41,32,95,49,56,51,41,41,41,32,40,40,65,32,58,49,57,52,32,40,
+40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,95,51,57,53,
+41,32,95,49,56,50,41,41,41,32,40,40,40,83,39,32,40,67,39,32,
+66,41,41,32,40,40,66,32,40,66,32,40,95,49,56,54,32,95,49,57,
+56,41,41,41,32,95,49,56,51,41,41,32,95,49,56,51,41,41,41,32,
+40,40,65,32,58,49,57,53,32,40,40,40,83,39,32,66,41,32,40,66,
+39,32,40,66,39,32,40,40,66,32,95,51,57,53,41,32,95,49,56,50,
+41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,40,95,49,56,55,32,95,49,57,56,41,41,41,32,95,
+49,56,51,41,41,32,95,49,56,51,41,41,32,95,49,56,51,41,41,41,
+32,40,40,65,32,58,49,57,54,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,95,51,57,53,41,32,40,40,66,32,95,49,56,50,41,32,40,
+85,32,75,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,95,
+49,56,54,32,95,49,57,56,41,41,41,32,40,40,66,32,95,49,56,51,
+41,32,40,85,32,75,41,41,41,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,95,49,56,51,41,32,40,85,32,75,41,41,41,32,40,40,66,
+32,95,50,55,48,41,32,40,40,66,32,95,49,50,56,41,32,40,85,32,
+65,41,41,41,41,41,41,41,32,40,40,65,32,58,49,57,55,32,40,40,
+40,83,39,32,40,67,39,32,66,41,41,32,40,40,40,83,39,32,40,83,
+39,32,67,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,
+83,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,83,41,32,
+40,95,53,48,48,32,95,50,56,50,41,41,41,41,32,40,40,40,83,39,
+32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,95,51,57,53,
+41,32,40,40,66,32,95,49,56,50,41,32,40,85,32,75,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,40,67,
+32,40,95,49,56,55,32,95,49,57,56,41,41,41,41,41,32,40,40,40,
+83,39,32,66,41,32,40,40,66,32,95,49,56,51,41,32,40,85,32,75,
+41,41,41,32,40,40,66,32,95,50,55,48,41,32,40,40,66,32,95,49,
+50,55,41,32,40,85,32,65,41,41,41,41,41,41,41,41,32,40,40,40,
+83,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,95,51,
+57,53,41,32,40,40,66,32,95,49,56,50,41,32,40,85,32,75,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,
+40,67,32,40,95,49,56,55,32,95,49,57,56,41,41,41,41,41,32,40,
+40,40,83,39,32,66,41,32,40,40,66,32,95,49,56,51,41,32,40,85,
+32,75,41,41,41,32,40,40,66,32,95,50,55,48,41,32,40,40,66,32,
+95,49,50,56,41,32,40,85,32,65,41,41,41,41,41,41,41,41,32,40,
+40,66,32,95,49,56,51,41,32,40,85,32,75,41,41,41,41,32,40,40,
+66,32,95,49,56,51,41,32,40,85,32,75,41,41,41,41,32,40,40,65,
+32,58,49,57,56,32,40,40,40,40,40,40,40,40,95,49,55,57,32,40,
+40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,95,52,
+56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,41,
+41,32,40,40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,32,40,
+40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,
+41,41,41,41,32,73,41,32,73,41,32,40,40,83,32,95,52,54,50,41,
+32,40,40,66,32,40,95,49,56,52,32,95,49,57,56,41,41,32,40,40,
+67,32,40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,41,
+41,32,40,40,40,83,39,32,40,67,39,32,89,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,83,32,95,52,54,50,41,41,41,41,32,40,40,
+66,32,40,66,32,40,67,32,66,41,41,41,32,40,40,66,32,40,66,32,
+40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,41,41,32,40,67,
+32,40,95,52,56,48,32,95,50,55,55,41,41,41,41,41,41,32,73,41,
+41,32,40,40,66,32,40,40,67,39,32,95,52,50,52,41,32,40,67,32,
+40,95,52,57,56,32,95,50,56,50,41,41,41,41,32,40,95,49,56,52,
+32,95,49,57,56,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,
+40,83,39,32,40,83,39,32,83,39,41,41,32,40,67,32,40,95,52,57,
+57,32,95,50,56,50,41,41,41,32,40,40,66,32,40,66,32,40,40,67,
+39,32,95,52,50,52,41,32,40,67,32,40,95,53,48,48,32,95,50,56,
+50,41,41,41,41,41,32,40,95,49,56,53,32,95,49,57,56,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,95,52,50,52,41,32,
+40,67,32,40,95,52,57,56,32,95,50,56,50,41,41,41,41,41,32,40,
+95,49,56,53,32,95,49,57,56,41,41,41,41,41,32,40,40,65,32,58,
+49,57,57,32,40,40,40,40,40,40,40,40,95,49,55,57,32,40,95,49,
+56,56,32,95,49,57,57,41,41,32,40,95,49,56,57,32,95,49,57,57,
+41,41,32,40,40,67,32,40,40,83,32,40,40,67,32,61,61,41,32,35,
+48,41,41,32,40,40,67,32,40,40,67,32,40,40,67,32,61,61,41,32,
+35,49,41,41,32,40,95,50,52,32,34,69,110,117,109,46,66,111,111,108,
+46,116,111,69,110,117,109,58,32,98,97,100,32,97,114,103,34,41,41,41,
+32,95,49,50,53,41,41,41,32,95,49,50,52,41,41,32,40,40,80,32,
+35,48,41,32,35,49,41,41,32,40,95,49,57,50,32,95,49,57,57,41,
+41,32,40,95,49,57,51,32,95,49,57,57,41,41,32,40,95,49,57,52,
+32,95,49,57,57,41,41,32,40,95,49,57,53,32,95,49,57,57,41,41,
+41,32,40,40,65,32,58,50,48,48,32,40,40,40,40,40,40,40,40,95,
+49,55,57,32,40,95,49,56,56,32,95,50,48,48,41,41,32,40,95,49,
+56,57,32,95,50,48,48,41,41,32,95,49,52,48,50,41,32,95,49,52,
+48,51,41,32,40,95,49,57,50,32,95,50,48,48,41,41,32,40,95,49,
+57,51,32,95,50,48,48,41,41,32,40,95,49,57,52,32,95,50,48,48,
+41,41,32,40,95,49,57,53,32,95,50,48,48,41,41,41,32,40,40,65,
+32,58,50,48,49,32,80,41,32,40,40,65,32,58,50,48,50,32,40,85,
+32,75,41,41,32,40,40,65,32,58,50,48,51,32,40,85,32,65,41,41,
+32,40,40,65,32,58,50,48,52,32,40,75,32,40,110,111,68,101,102,97,
+117,108,116,32,34,69,113,46,61,61,34,41,41,41,32,40,40,65,32,58,
+50,48,53,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,95,50,48,50,41,32,95,49,
+50,53,41,41,32,95,49,50,52,41,41,32,40,40,65,32,58,50,48,54,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,48,55,32,40,85,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,48,56,32,40,85,32,40,75,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,48,57,32,40,85,32,40,75,32,40,75,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,48,32,40,85,32,40,75,32,40,75,32,40,75,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,49,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,50,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,51,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,52,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,53,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,54,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,55,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,56,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,49,57,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,48,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,49,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,50,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,51,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,52,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,53,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,54,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,55,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,56,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,50,57,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,65,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,50,51,48,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+70,108,111,97,116,105,110,103,46,112,105,34,41,41,41,32,40,40,65,32,
+58,50,51,49,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+70,108,111,97,116,105,110,103,46,101,120,112,34,41,41,41,32,40,40,65,
+32,58,50,51,50,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,
+34,70,108,111,97,116,105,110,103,46,108,111,103,34,41,41,41,32,40,40,
+65,32,58,50,51,51,32,40,40,40,83,39,32,67,41,32,95,50,49,50,
+41,32,40,40,83,32,40,40,40,83,39,32,95,50,53,52,41,32,95,50,
+48,55,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,
+95,50,53,51,41,32,95,50,48,55,41,41,32,40,95,51,53,57,32,35,
+49,41,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,
+66,32,95,50,53,51,41,32,95,50,48,55,41,41,32,40,95,51,53,57,
+32,35,50,41,41,41,41,41,32,40,40,65,32,58,50,51,52,32,40,40,
+40,83,39,32,66,41,32,40,66,39,32,95,50,48,57,41,41,32,40,40,
+40,83,39,32,66,41,32,40,40,66,32,95,52,56,49,41,32,40,40,66,
+32,95,50,53,51,41,32,95,50,48,55,41,41,41,32,95,50,49,48,41,
+41,41,32,40,40,65,32,58,50,51,53,32,40,40,40,83,39,32,66,41,
+32,40,40,40,83,39,32,67,39,41,32,40,40,66,32,95,50,53,52,41,
+32,95,50,48,55,41,41,32,95,50,49,48,41,41,32,95,50,49,48,41,
+41,32,40,40,65,32,58,50,51,54,32,40,75,32,40,110,111,68,101,102,
+97,117,108,116,32,34,70,108,111,97,116,105,110,103,46,115,105,110,34,41,
+41,41,32,40,40,65,32,58,50,51,55,32,40,75,32,40,110,111,68,101,
+102,97,117,108,116,32,34,70,108,111,97,116,105,110,103,46,99,111,115,34,
+41,41,41,32,40,40,65,32,58,50,51,56,32,40,40,83,32,40,40,40,
+83,39,32,83,39,41,32,40,40,66,32,95,50,53,52,41,32,95,50,48,
+55,41,41,32,95,50,49,52,41,41,32,95,50,49,53,41,41,32,40,40,
+65,32,58,50,51,57,32,40,75,32,40,110,111,68,101,102,97,117,108,116,
+32,34,70,108,111,97,116,105,110,103,46,97,115,105,110,34,41,41,41,32,
+40,40,65,32,58,50,52,48,32,40,75,32,40,110,111,68,101,102,97,117,
+108,116,32,34,70,108,111,97,116,105,110,103,46,97,99,111,115,34,41,41,
+41,32,40,40,65,32,58,50,52,49,32,40,75,32,40,110,111,68,101,102,
+97,117,108,116,32,34,70,108,111,97,116,105,110,103,46,97,116,97,110,34,
+41,41,41,32,40,40,65,32,58,50,52,50,32,40,40,83,32,40,40,40,
+83,39,32,67,39,41,32,40,40,66,32,95,50,53,52,41,32,95,50,48,
+55,41,41,32,40,40,83,32,40,40,40,83,39,32,83,39,41,32,40,40,
+66,32,95,52,56,48,41,32,40,40,66,32,95,50,53,51,41,32,95,50,
+48,55,41,41,41,32,95,50,48,57,41,41,32,40,40,40,83,39,32,66,
+41,32,95,50,48,57,41,32,40,40,66,32,95,52,56,50,41,32,40,40,
+66,32,95,50,53,51,41,32,95,50,48,55,41,41,41,41,41,41,32,40,
+40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,
+32,95,50,48,55,41,41,32,40,95,51,53,57,32,35,50,41,41,41,41,
+32,40,40,65,32,58,50,52,51,32,40,40,83,32,40,40,40,83,39,32,
+67,39,41,32,40,40,66,32,95,50,53,52,41,32,95,50,48,55,41,41,
+32,40,40,83,32,40,40,40,83,39,32,83,39,41,32,40,40,66,32,95,
+52,55,57,41,32,40,40,66,32,95,50,53,51,41,32,95,50,48,55,41,
+41,41,32,95,50,48,57,41,41,32,40,40,40,83,39,32,66,41,32,95,
+50,48,57,41,32,40,40,66,32,95,52,56,50,41,32,40,40,66,32,95,
+50,53,51,41,32,95,50,48,55,41,41,41,41,41,41,32,40,40,40,67,
+39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,95,50,
+48,55,41,41,32,40,95,51,53,57,32,35,50,41,41,41,41,32,40,40,
+65,32,58,50,52,52,32,40,40,83,32,40,40,40,83,39,32,83,39,41,
+32,40,40,66,32,95,50,53,52,41,32,95,50,48,55,41,41,32,95,50,
+50,48,41,41,32,95,50,50,49,41,41,32,40,40,65,32,58,50,52,53,
+32,40,40,40,83,39,32,66,41,32,95,50,49,48,41,32,40,40,40,83,
+39,32,83,41,32,40,40,66,32,95,52,55,57,41,32,40,40,66,32,95,
+50,53,51,41,32,95,50,48,55,41,41,41,32,40,40,40,83,39,32,66,
+41,32,95,50,49,49,41,32,40,40,83,32,40,40,40,83,39,32,67,39,
+41,32,40,40,66,32,95,52,55,57,41,32,40,40,66,32,95,50,53,51,
+41,32,95,50,48,55,41,41,41,32,40,40,40,67,39,32,83,41,32,40,
+40,66,32,95,52,56,49,41,32,40,40,66,32,95,50,53,51,41,32,95,
+50,48,55,41,41,41,32,73,41,41,41,32,40,40,40,67,39,32,95,52,
+56,53,41,32,40,40,66,32,95,50,53,51,41,32,95,50,48,55,41,41,
+32,40,95,51,53,57,32,35,49,41,41,41,41,41,41,41,32,40,40,65,
+32,58,50,52,54,32,40,40,40,83,39,32,66,41,32,95,50,49,48,41,
+32,40,40,40,83,39,32,83,41,32,40,40,66,32,95,52,55,57,41,32,
+40,40,66,32,95,50,53,51,41,32,95,50,48,55,41,41,41,32,40,40,
+40,83,39,32,66,41,32,95,50,49,49,41,32,40,40,83,32,40,40,40,
+83,39,32,67,39,41,32,40,40,66,32,95,52,56,48,41,32,40,40,66,
+32,95,50,53,51,41,32,95,50,48,55,41,41,41,32,40,40,40,67,39,
+32,83,41,32,40,40,66,32,95,52,56,49,41,32,40,40,66,32,95,50,
+53,51,41,32,95,50,48,55,41,41,41,32,73,41,41,41,32,40,40,40,
+67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,95,
+50,48,55,41,41,32,40,95,51,53,57,32,35,49,41,41,41,41,41,41,
+41,32,40,40,65,32,58,50,52,55,32,40,40,83,32,40,40,40,83,39,
+32,67,39,41,32,40,40,66,32,95,50,53,52,41,32,95,50,48,55,41,
+41,32,40,40,40,83,39,32,66,41,32,95,50,49,48,41,32,40,40,83,
+32,40,40,40,83,39,32,83,39,41,32,40,40,66,32,95,50,53,52,41,
+32,95,50,48,55,41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,
+32,95,52,55,57,41,32,40,40,66,32,95,50,53,51,41,32,95,50,48,
+55,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,
+32,95,50,53,51,41,32,95,50,48,55,41,41,32,40,95,51,53,57,32,
+35,49,41,41,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,
+32,95,52,56,48,41,32,40,40,66,32,95,50,53,51,41,32,95,50,48,
+55,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,
+32,95,50,53,51,41,32,95,50,48,55,41,41,32,40,95,51,53,57,32,
+35,49,41,41,41,41,41,41,41,32,40,40,40,67,39,32,95,52,56,53,
+41,32,40,40,66,32,95,50,53,51,41,32,95,50,48,55,41,41,32,40,
+95,51,53,57,32,35,50,41,41,41,41,32,40,40,65,32,58,50,52,56,
+32,40,40,40,83,39,32,66,41,32,95,50,49,48,41,32,40,40,40,83,
+39,32,95,52,55,57,41,32,40,40,66,32,95,50,53,51,41,32,95,50,
+48,55,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,
+32,95,50,53,51,41,32,95,50,48,55,41,41,32,40,95,51,53,57,32,
+35,49,41,41,41,41,41,32,40,40,65,32,58,50,52,57,32,40,40,83,
+32,40,40,40,83,39,32,67,39,41,32,40,40,66,32,95,52,56,48,41,
+32,40,40,66,32,95,50,53,51,41,32,95,50,48,55,41,41,41,32,95,
+50,48,57,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,
+66,32,95,50,53,51,41,32,95,50,48,55,41,41,32,40,95,51,53,57,
+32,35,49,41,41,41,41,32,40,40,65,32,58,50,53,48,32,40,40,40,
+83,39,32,66,41,32,95,50,50,54,41,32,95,50,48,57,41,41,32,40,
+40,65,32,58,50,53,49,32,40,40,40,83,39,32,66,41,32,95,50,50,
+54,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,95,52,56,50,
+41,32,40,40,66,32,95,50,53,51,41,32,95,50,48,55,41,41,41,32,
+95,50,48,57,41,41,41,32,40,40,65,32,58,50,53,50,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,32,40,40,65,32,58,50,53,51,32,40,85,32,
+40,90,32,40,90,32,75,41,41,41,41,32,40,40,65,32,58,50,53,52,
+32,40,85,32,40,75,32,40,90,32,75,41,41,41,41,32,40,40,65,32,
+58,50,53,53,32,40,85,32,40,75,32,40,75,32,75,41,41,41,41,32,
+40,40,65,32,58,50,53,54,32,40,85,32,40,75,32,40,75,32,65,41,
+41,41,41,32,40,40,65,32,58,50,53,55,32,40,75,32,40,110,111,68,
+101,102,97,117,108,116,32,34,70,114,97,99,116,105,111,110,97,108,46,47,
+34,41,41,41,32,40,40,65,32,58,50,53,56,32,40,40,83,32,95,50,
+53,52,41,32,40,40,40,67,39,32,95,52,56,53,41,32,95,50,53,51,
+41,32,40,95,51,53,57,32,35,49,41,41,41,41,32,40,40,65,32,58,
+50,53,57,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,70,
+114,97,99,116,105,111,110,97,108,46,102,114,111,109,82,97,116,105,111,110,
+97,108,34,41,41,41,32,40,40,65,32,58,50,54,48,32,40,40,40,83,
+39,32,40,83,39,32,83,41,41,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,83,41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,95,
+53,48,48,41,32,40,85,32,40,75,32,65,41,41,41,41,32,40,40,40,
+67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,41,32,
+40,40,66,32,95,51,54,53,41,32,40,85,32,40,75,32,75,41,41,41,
+41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,
+83,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,53,53,41,32,
+40,85,32,40,90,32,75,41,41,41,41,41,32,40,40,40,83,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,95,51,56,52,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,40,66,32,95,
+50,53,51,41,32,40,85,32,40,90,32,75,41,41,41,41,32,40,85,32,
+40,75,32,75,41,41,41,41,32,40,85,32,40,75,32,65,41,41,41,41,
+41,32,40,40,66,32,95,52,56,50,41,32,40,40,66,32,40,85,32,65,
+41,41,32,40,40,66,32,95,51,54,53,41,32,40,85,32,40,75,32,75,
+41,41,41,41,41,41,41,41,41,32,40,40,66,32,95,51,56,52,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,40,
+66,32,95,50,53,51,41,32,40,85,32,40,90,32,75,41,41,41,41,32,
+40,85,32,40,75,32,75,41,41,41,41,32,40,85,32,40,75,32,65,41,
+41,41,41,41,41,32,40,40,65,32,58,50,54,49,32,73,41,32,40,40,
+65,32,58,50,54,50,32,40,83,32,95,49,51,57,57,41,41,32,40,40,
+65,32,58,50,54,51,32,66,41,32,40,40,65,32,58,50,54,52,32,73,
+41,32,40,40,65,32,58,50,54,53,32,75,41,32,40,40,65,32,58,50,
+54,54,32,67,41,32,40,40,65,32,58,50,54,55,32,95,49,51,57,56,
+41,32,40,40,65,32,58,50,54,56,32,85,41,32,40,40,65,32,58,50,
+54,57,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,66,41,41,
+41,32,66,41,32,73,41,41,32,40,40,65,32,58,50,55,48,32,95,50,
+54,53,41,32,40,40,65,32,58,50,55,49,32,80,41,32,40,40,65,32,
+58,50,55,50,32,40,85,32,75,41,41,32,40,40,65,32,58,50,55,51,
+32,40,85,32,65,41,41,32,40,40,65,32,58,50,55,52,32,40,75,32,
+40,110,111,68,101,102,97,117,108,116,32,34,70,117,110,99,116,111,114,46,
+102,109,97,112,34,41,41,41,32,40,40,65,32,58,50,55,53,32,40,40,
+40,67,39,32,95,50,54,51,41,32,95,50,55,50,41,32,95,50,54,53,
+41,41,32,40,40,65,32,58,50,55,54,32,95,50,55,50,41,32,40,40,
+65,32,58,50,55,55,32,40,40,40,40,40,40,40,95,52,55,56,32,95,
+49,51,52,50,41,32,95,49,51,52,51,41,32,95,49,51,52,52,41,32,
+95,49,51,52,56,41,32,40,40,83,32,40,40,83,32,40,40,67,32,40,
+95,52,57,55,32,95,50,56,50,41,41,32,35,48,41,41,32,73,41,41,
+32,40,95,52,56,50,32,95,50,55,55,41,41,41,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,95,52,57,54,32,95,50,56,
+50,41,41,32,35,48,41,41,32,35,45,49,41,41,32,35,48,41,41,32,
+35,49,41,41,32,95,51,54,48,41,41,32,40,40,65,32,58,50,55,56,
+32,40,40,40,40,40,40,40,40,95,51,54,52,32,40,40,80,32,95,50,
+56,49,41,32,95,50,55,55,41,41,32,95,49,51,52,53,41,32,95,49,
+51,52,54,41,32,40,95,51,55,53,32,95,50,55,56,41,41,32,40,95,
+51,55,54,32,95,50,55,56,41,41,32,40,95,51,55,55,32,95,50,55,
+56,41,41,32,40,95,51,55,56,32,95,50,55,56,41,41,32,95,51,53,
+57,41,41,32,40,40,65,32,58,50,55,57,32,40,40,95,49,50,54,32,
+40,40,40,95,52,55,57,32,95,50,55,55,41,32,40,95,49,51,56,57,
+32,40,40,95,49,51,54,54,32,35,45,49,41,32,35,50,41,41,41,32,
+35,49,41,41,32,40,95,49,51,56,57,32,40,40,95,49,51,54,54,32,
+35,45,49,41,32,35,50,41,41,41,41,32,40,40,65,32,58,50,56,48,
+32,40,95,53,51,49,32,40,40,66,32,95,53,50,57,41,32,95,51,53,
+57,41,41,41,32,40,40,65,32,58,50,56,49,32,40,40,95,50,48,49,
+32,95,49,51,55,55,41,32,95,49,51,55,56,41,41,32,40,40,65,32,
+58,50,56,50,32,40,40,40,40,40,40,40,40,95,52,57,52,32,95,50,
+56,49,41,32,95,49,52,48,48,41,32,95,49,51,55,57,41,32,95,49,
+51,56,48,41,32,95,49,51,56,49,41,32,95,49,51,56,50,41,32,40,
+95,53,48,56,32,95,50,56,50,41,41,32,40,95,53,48,57,32,95,50,
+56,50,41,41,41,32,40,40,65,32,58,50,56,51,32,40,40,40,95,49,
+53,56,56,32,40,95,49,53,57,50,32,95,50,56,51,41,41,32,95,50,
+56,52,41,32,40,95,49,53,57,52,32,95,50,56,51,41,41,41,32,40,
+40,65,32,58,50,56,52,32,40,40,83,32,40,40,83,32,40,40,67,32,
+40,95,52,57,55,32,95,50,56,50,41,41,32,35,48,41,41,32,40,40,
+66,32,95,50,56,53,41,32,40,95,52,56,50,32,95,50,55,55,41,41,
+41,41,32,40,40,66,32,40,95,52,54,50,32,35,52,53,41,41,32,95,
+50,56,53,41,41,41,32,40,40,65,32,58,50,56,53,32,40,40,83,32,
+40,40,67,32,40,40,40,83,39,32,83,39,41,32,40,40,67,32,40,95,
+52,57,57,32,95,50,56,50,41,41,32,35,45,49,48,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,40,66,
+32,95,50,56,53,41,32,40,40,67,32,40,95,51,54,54,32,95,50,55,
+56,41,41,32,35,49,48,41,41,41,41,32,40,40,67,32,79,41,32,75,
+41,41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,32,40,40,66,
+32,95,49,52,48,50,41,32,40,40,66,32,40,40,95,52,56,48,32,95,
+50,55,55,41,32,40,95,49,52,48,51,32,35,52,56,41,41,41,32,40,
+40,67,32,40,95,51,54,55,32,95,50,55,56,41,41,32,35,49,48,41,
+41,41,41,41,32,40,40,65,32,58,50,56,54,32,40,90,32,75,41,41,
+32,40,40,65,32,58,50,56,55,32,40,40,66,32,90,41,32,40,40,66,
+32,40,66,32,90,41,41,32,80,41,41,41,32,40,40,65,32,58,50,56,
+56,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,80,41,
+41,41,41,41,32,40,40,65,32,58,50,56,57,32,40,40,40,83,39,32,
+83,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,83,39,32,83,39,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,49,50,48,41,32,40,40,67,32,40,95,53,48,
+48,32,95,50,56,50,41,41,32,35,48,41,41,41,32,40,40,67,32,40,
+95,50,48,50,32,95,50,56,49,41,41,32,35,48,41,41,41,41,32,40,
+40,66,32,40,66,32,40,40,67,39,32,80,41,32,40,40,67,32,40,95,
+52,56,48,32,95,50,55,55,41,41,32,35,49,41,41,41,41,32,40,67,
+32,40,95,52,55,57,32,95,50,55,55,41,41,41,41,41,32,40,67,32,
+80,41,41,41,32,40,95,51,54,54,32,95,50,55,56,41,41,41,32,40,
+95,51,54,55,32,95,50,55,56,41,41,41,32,40,40,65,32,58,50,57,
+48,32,95,50,56,54,41,32,40,40,65,32,58,50,57,49,32,40,40,40,
+83,39,32,67,41,32,40,40,66,32,40,80,32,95,52,55,54,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,40,67,39,32,
+67,41,32,40,95,50,48,50,32,95,50,56,49,41,41,32,95,52,55,54,
+41,41,32,95,52,55,55,41,41,41,32,40,40,66,32,40,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,83,39,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,32,
+40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,40,83,39,32,83,39,41,32,40,40,67,
+32,40,95,50,48,50,32,95,50,56,49,41,41,32,35,48,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,66,32,40,66,32,40,40,83,39,32,83,39,41,32,40,40,67,32,40,
+95,50,48,50,32,95,50,56,49,41,41,32,35,49,41,41,41,41,32,40,
+40,66,32,40,40,67,39,32,67,41,32,40,40,66,32,40,40,67,39,32,
+83,39,41,32,40,40,67,32,40,95,50,48,50,32,95,50,56,49,41,41,
+32,35,50,41,41,41,32,40,67,32,95,50,57,49,41,41,41,41,32,40,
+67,32,95,50,57,49,41,41,41,41,41,32,40,67,32,95,50,57,49,41,
+41,41,41,41,32,40,67,32,95,50,57,49,41,41,41,41,32,40,85,32,
+75,41,41,41,32,40,85,32,65,41,41,41,41,32,40,40,67,32,95,50,
+56,57,41,32,35,52,41,41,41,41,32,40,40,65,32,58,50,57,50,32,
+40,95,50,57,56,32,95,50,54,53,41,41,32,40,40,65,32,58,50,57,
+51,32,40,40,95,51,57,55,32,40,95,50,54,56,32,95,50,57,50,41,
+41,32,95,50,57,48,41,41,32,40,40,65,32,58,50,57,52,32,40,40,
+67,32,40,40,40,67,39,32,66,41,32,40,40,80,32,95,52,54,49,41,
+32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,80,41,32,75,41,
+41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,66,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+95,50,57,53,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,
+67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,50,
+57,53,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,95,50,57,53,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,51,57,53,41,32,40,85,32,40,40,95,52,
+56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,41,41,41,
+41,41,32,95,50,57,52,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,95,51,57,53,41,32,40,85,32,35,49,41,41,41,32,95,
+50,57,52,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,95,51,57,53,41,32,40,85,32,35,50,41,41,41,32,95,50,57,52,
+41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,51,
+57,53,41,32,40,85,32,35,51,41,41,41,32,95,50,57,52,41,41,41,
+41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,80,41,41,32,
+40,40,67,39,32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,
+67,32,40,95,52,56,49,32,95,50,55,55,41,41,32,40,40,95,52,56,
+53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,52,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,50,57,53,32,40,40,66,32,89,41,
+32,40,40,40,83,39,32,66,41,32,83,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,83,39,
+32,66,41,32,40,40,66,32,83,41,32,85,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,67,
+32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,67,39,41,32,83,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,83,32,66,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,41,
+41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,66,39,41,32,66,39,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,83,32,66,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,90,41,41,41,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,66,41,32,40,66,39,32,40,40,66,32,67,41,32,40,95,52,57,
+55,32,95,50,56,50,41,41,41,41,41,32,40,40,67,39,32,66,41,32,
+95,52,54,50,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,
+66,41,32,95,52,54,50,41,41,32,40,67,32,95,50,57,53,41,41,41,
+41,41,41,41,41,41,41,32,40,40,40,110,111,77,97,116,99,104,32,34,
+46,47,108,105,98,47,68,97,116,97,47,73,110,116,77,97,112,46,104,115,
+34,41,32,35,54,53,41,32,35,49,41,41,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,50,57,54,32,40,40,95,50,54,51,32,40,95,51,
+57,53,32,95,53,54,53,41,41,32,95,50,57,52,41,41,32,40,40,65,
+32,58,50,57,55,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,67,32,95,50,57,49,41,41,32,40,95,50,52,32,34,
+68,97,116,97,46,73,110,116,77,97,112,46,33,34,41,41,41,32,73,41,
+41,32,40,40,65,32,58,50,57,56,32,40,40,66,32,40,67,39,32,89,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,83,39,
+32,67,41,41,41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,40,
+40,66,32,40,83,39,32,80,41,41,32,40,67,32,95,50,56,55,41,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,83,39,32,67,
+41,41,32,40,40,66,32,40,40,83,39,32,40,83,39,32,83,39,41,41,
+32,40,95,50,48,50,32,95,50,56,49,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,66,32,
+95,50,54,49,41,41,41,32,40,40,40,67,39,32,40,67,39,32,95,50,
+54,49,41,41,32,95,50,57,50,41,32,40,40,40,40,95,50,56,56,32,
+95,50,56,54,41,32,95,50,56,54,41,32,95,50,56,54,41,32,95,50,
+56,54,41,41,41,41,41,41,41,32,40,66,32,40,40,67,39,32,66,41,
+32,95,50,56,55,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,83,39,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,
+40,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,
+32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,40,83,39,32,83,39,41,32,40,40,67,32,40,95,50,
+48,50,32,95,50,56,49,41,41,32,35,48,41,41,41,41,41,41,41,32,
+40,40,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,83,
+39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,40,83,39,32,83,39,41,32,40,40,67,32,40,95,
+50,48,50,32,95,50,56,49,41,41,32,35,49,41,41,41,41,41,41,41,
+32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,
+83,39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,40,67,39,32,83,39,41,32,40,40,67,32,40,
+95,50,48,50,32,95,50,56,49,41,41,32,35,50,41,41,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,95,50,56,56,
+41,41,41,32,67,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,67,39,41,41,32,95,50,
+56,56,41,41,41,32,67,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,67,41,41,41,41,32,40,40,66,32,40,40,67,39,32,
+66,41,32,40,40,66,32,67,39,41,32,95,50,56,56,41,41,41,32,67,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,
+40,40,66,32,40,66,32,40,67,39,32,95,50,56,56,41,41,41,32,67,
+41,41,41,41,41,41,32,40,85,32,75,41,41,41,32,40,85,32,65,41,
+41,41,41,32,40,40,67,32,95,50,56,57,41,32,35,52,41,41,41,41,
+41,32,40,40,65,32,58,50,57,57,32,73,41,32,40,40,65,32,58,51,
+48,48,32,40,95,50,57,57,32,95,50,57,48,41,41,32,40,40,65,32,
+58,51,48,49,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,95,50,57,49,41,32,95,49,50,52,41,41,32,40,75,32,95,
+49,50,53,41,41,41,32,40,40,65,32,58,51,48,50,32,40,40,66,32,
+40,66,32,95,50,57,57,41,41,32,40,40,67,32,95,50,57,50,41,32,
+95,49,51,52,49,41,41,41,32,40,40,65,32,58,51,48,51,32,40,40,
+66,32,95,50,57,57,41,32,40,40,66,32,95,50,57,51,41,32,40,40,
+67,32,95,52,49,50,41,32,40,95,52,52,55,32,95,49,51,52,49,41,
+41,41,41,41,32,40,40,65,32,58,51,48,52,32,40,40,66,32,40,95,
+51,57,53,32,95,53,54,53,41,41,32,95,50,57,52,41,41,32,40,40,
+65,32,58,51,48,53,32,40,40,95,50,48,49,32,95,51,52,55,41,32,
+95,51,52,56,41,41,32,40,40,65,32,58,51,48,54,32,40,40,40,40,
+40,40,40,40,95,52,57,52,32,95,51,48,53,41,32,40,95,53,48,51,
+32,95,51,48,54,41,41,32,95,51,52,57,41,32,95,51,53,48,41,32,
+95,51,53,49,41,32,95,51,53,50,41,32,40,95,53,48,56,32,95,51,
+48,54,41,41,32,40,95,53,48,57,32,95,51,48,54,41,41,41,32,40,
+40,65,32,58,51,48,55,32,40,40,40,95,49,53,56,56,32,40,95,49,
+53,57,50,32,95,51,48,55,41,41,32,95,51,52,51,41,32,40,95,49,
+53,57,52,32,95,51,48,55,41,41,41,32,40,40,65,32,58,51,48,56,
+32,40,40,40,40,40,40,40,95,52,55,56,32,95,51,49,54,41,32,95,
+51,49,57,41,32,95,51,50,56,41,32,95,51,49,55,41,32,95,51,49,
+56,41,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+95,52,57,54,32,95,51,48,54,41,41,32,95,51,51,56,41,41,32,95,
+51,52,50,41,41,32,95,51,51,56,41,41,32,95,51,51,57,41,41,32,
+73,41,41,32,40,40,65,32,58,51,48,57,32,40,40,40,40,40,40,40,
+40,95,51,54,52,32,40,40,80,32,95,51,48,53,41,32,95,51,48,56,
+41,41,32,40,95,51,55,51,32,95,51,48,57,41,41,32,40,95,51,55,
+52,32,95,51,48,57,41,41,32,40,95,51,55,53,32,95,51,48,57,41,
+41,32,40,95,51,55,54,32,95,51,48,57,41,41,32,95,51,51,50,41,
+32,40,95,51,55,56,32,95,51,48,57,41,41,32,73,41,41,32,40,40,
+65,32,58,51,49,48,32,40,95,53,51,49,32,95,53,50,57,41,41,32,
+40,40,65,32,58,51,49,49,32,40,40,40,40,40,40,40,40,95,49,55,
+57,32,40,40,67,32,40,95,52,55,57,32,95,51,48,56,41,41,32,40,
+40,95,52,56,53,32,95,51,48,56,41,32,40,95,51,53,57,32,35,49,
+41,41,41,41,32,40,40,67,32,40,95,52,56,48,32,95,51,48,56,41,
+41,32,40,40,95,52,56,53,32,95,51,48,56,41,32,40,95,51,53,57,
+32,35,49,41,41,41,41,32,95,51,53,57,41,32,95,51,54,48,41,32,
+40,40,83,32,95,52,54,50,41,32,40,40,66,32,40,95,49,56,52,32,
+95,51,49,49,41,41,32,40,40,67,32,40,95,52,55,57,32,95,51,48,
+56,41,41,32,40,95,51,53,57,32,35,49,41,41,41,41,41,32,40,40,
+40,83,39,32,40,67,39,32,89,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,83,32,95,52,54,50,41,41,41,41,32,40,40,66,32,40,66,
+32,40,67,32,66,41,41,41,32,40,40,66,32,40,66,32,40,67,32,40,
+95,52,55,57,32,95,51,48,56,41,41,41,41,32,40,67,32,40,95,52,
+56,48,32,95,51,48,56,41,41,41,41,41,41,32,73,41,41,32,40,40,
+66,32,40,40,67,39,32,95,52,50,52,41,32,40,67,32,40,95,52,57,
+56,32,95,51,48,54,41,41,41,41,32,40,95,49,56,52,32,95,51,49,
+49,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,40,83,39,32,
+40,83,39,32,83,39,41,41,32,40,67,32,40,95,52,57,57,32,95,51,
+48,54,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,95,52,
+50,52,41,32,40,67,32,40,95,53,48,48,32,95,51,48,54,41,41,41,
+41,41,32,40,95,49,56,53,32,95,51,49,49,41,41,41,41,32,40,40,
+66,32,40,66,32,40,40,67,39,32,95,52,50,52,41,32,40,67,32,40,
+95,52,57,56,32,95,51,48,54,41,41,41,41,41,32,40,95,49,56,53,
+32,95,51,49,49,41,41,41,41,41,32,40,40,65,32,58,51,49,50,32,
+40,85,32,40,75,32,95,51,57,50,41,41,41,32,40,40,65,32,58,51,
+49,51,32,40,40,95,50,48,49,32,40,40,67,32,40,40,67,32,83,39,
+41,32,40,40,80,32,95,49,50,53,41,32,95,49,50,52,41,41,41,32,
+40,40,80,32,95,49,50,52,41,32,95,49,50,53,41,41,41,32,40,95,
+50,48,53,32,95,51,49,51,41,41,41,32,40,40,65,32,58,51,49,52,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,32,40,85,32,
+40,40,95,51,53,53,32,95,51,53,54,41,32,95,52,54,49,41,41,41,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,95,51,53,53,
+41,41,41,41,32,95,51,50,54,41,41,32,40,40,65,32,58,51,49,53,
+32,35,48,41,32,40,40,65,32,58,51,49,54,32,40,40,67,32,40,40,
+40,67,39,32,67,39,41,32,66,41,32,40,40,40,83,39,32,40,83,39,
+32,67,41,41,32,40,40,66,32,40,66,32,40,67,32,83,39,41,41,41,
+32,40,40,40,67,39,32,66,41,32,66,41,32,40,40,66,32,40,40,83,
+39,32,67,41,32,40,40,66,32,40,67,32,83,39,41,41,32,40,40,66,
+32,40,66,32,40,95,51,53,53,32,95,51,53,54,41,41,41,32,95,51,
+50,48,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,83,41,41,
+32,40,40,66,32,40,40,83,39,32,83,41,32,95,51,50,55,41,41,32,
+40,40,40,67,39,32,66,41,32,40,66,39,32,95,49,50,53,41,41,32,
+40,40,66,32,40,66,32,40,95,51,49,52,32,95,51,53,54,41,41,41,
+32,95,51,50,51,41,41,41,41,32,40,40,66,32,40,66,32,40,95,51,
+49,52,32,95,51,53,55,41,41,41,32,40,67,32,95,51,50,51,41,41,
+41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,40,67,39,
+32,83,39,41,32,66,41,32,40,40,40,67,39,32,40,83,39,32,67,41,
+41,32,40,40,66,32,40,66,32,40,67,32,67,39,41,41,41,32,40,40,
+40,83,39,32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,66,41,
+32,40,40,66,32,83,41,32,40,67,32,95,51,50,55,41,41,41,32,40,
+40,66,32,40,40,67,39,32,66,41,32,95,49,50,53,41,41,32,40,40,
+66,32,40,66,32,40,95,51,49,52,32,95,51,53,54,41,41,41,32,40,
+67,32,95,51,50,51,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+95,51,49,52,32,95,51,53,55,41,41,41,32,95,51,50,51,41,41,41,
+41,32,73,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,
+85,41,41,32,40,40,66,32,40,66,32,40,95,51,53,53,32,95,51,53,
+55,41,41,41,32,95,51,50,48,41,41,41,41,41,41,41,32,40,40,40,
+110,111,77,97,116,99,104,32,34,46,47,108,105,98,47,68,97,116,97,47,
+73,110,116,101,103,101,114,46,104,115,34,41,32,35,49,50,50,41,32,35,
+49,41,41,41,32,40,40,65,32,58,51,49,55,32,40,40,83,32,73,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,83,41,32,85,41,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,67,32,40,
+40,67,32,83,39,41,32,40,95,51,53,53,32,95,51,53,55,41,41,41,
+32,40,95,51,53,53,32,95,51,53,54,41,41,41,41,41,41,41,32,40,
+40,65,32,58,51,49,56,32,40,85,32,40,75,32,40,95,51,53,53,32,
+95,51,53,54,41,41,41,41,32,40,40,65,32,58,51,49,57,32,40,40,
+40,67,39,32,66,41,32,95,51,49,54,41,32,95,51,49,55,41,41,32,
+40,40,65,32,58,51,50,48,32,40,95,51,50,49,32,95,51,49,53,41,
+41,32,40,40,65,32,58,51,50,49,32,40,40,40,83,39,32,67,41,32,
+40,40,66,32,40,67,32,83,39,41,41,32,40,40,40,83,39,32,80,41,
+32,40,40,67,32,40,40,83,32,40,40,67,32,40,95,50,48,50,32,95,
+50,56,49,41,41,32,95,51,49,53,41,41,32,40,40,67,32,79,41,32,
+75,41,41,41,32,95,52,54,49,41,41,32,40,40,66,32,40,66,32,40,
+40,67,39,32,40,40,83,39,32,95,52,54,50,41,32,40,85,32,65,41,
+41,41,32,40,67,32,40,40,40,67,39,32,95,51,50,49,41,32,40,85,
+32,75,41,41,32,95,52,54,49,41,41,41,41,41,32,40,40,67,32,95,
+51,50,50,41,32,95,51,49,53,41,41,41,41,41,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,40,40,67,39,32,83,39,41,32,83,39,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,40,83,39,32,95,
+52,54,50,41,32,40,85,32,65,41,41,41,32,40,40,40,67,39,32,67,
+41,32,40,40,67,39,32,95,51,50,49,41,32,40,85,32,75,41,41,41,
+32,95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,67,41,32,95,
+51,50,50,41,32,95,51,49,53,41,41,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,40,83,
+39,32,95,52,54,50,41,32,40,85,32,65,41,41,41,41,32,40,40,66,
+32,67,41,32,40,40,67,39,32,95,51,50,49,41,32,40,85,32,75,41,
+41,41,41,41,41,41,32,95,51,50,50,41,41,41,41,32,40,40,65,32,
+58,51,50,50,32,40,40,66,32,40,66,32,40,66,32,40,40,40,83,39,
+32,80,41,32,40,40,67,32,40,95,51,54,54,32,95,50,55,56,41,41,
+32,95,51,53,56,41,41,32,40,40,67,32,40,95,51,54,55,32,95,50,
+55,56,41,41,32,95,51,53,56,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,95,52,55,57,32,95,50,55,55,41,41,41,32,40,95,52,55,
+57,32,95,50,55,55,41,41,41,41,32,40,40,65,32,58,51,50,51,32,
+40,95,51,50,52,32,95,51,49,53,41,41,32,40,40,65,32,58,51,50,
+52,32,40,40,40,83,39,32,67,41,32,40,40,66,32,40,83,32,83,39,
+41,41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,40,40,66,
+32,67,39,41,32,40,40,66,32,83,41,32,40,40,67,32,61,61,41,32,
+35,48,41,41,41,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,
+32,83,39,41,32,40,40,40,67,39,32,66,41,32,40,85,32,95,52,54,
+49,41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,
+41,32,40,40,80,32,95,50,53,41,32,40,75,32,40,75,32,40,40,40,
+110,111,77,97,116,99,104,32,34,46,47,108,105,98,47,68,97,116,97,47,
+73,110,116,101,103,101,114,46,104,115,34,41,32,35,49,53,56,41,32,35,
+49,41,41,41,41,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,
+66,32,40,40,67,39,32,83,39,41,32,83,39,41,41,32,40,40,66,32,
+40,66,32,40,40,67,39,32,40,40,83,39,32,95,52,54,50,41,32,40,
+85,32,65,41,41,41,32,40,40,40,67,39,32,67,41,32,40,40,67,39,
+32,95,51,50,52,41,32,40,85,32,75,41,41,41,32,95,52,54,49,41,
+41,41,41,32,40,40,40,67,39,32,67,41,32,95,51,50,53,41,32,95,
+51,49,53,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,
+66,41,32,40,40,66,32,40,67,39,32,40,40,83,39,32,95,52,54,50,
+41,32,40,85,32,65,41,41,41,41,32,40,40,66,32,67,41,32,40,40,
+67,39,32,95,51,50,52,41,32,40,85,32,75,41,41,41,41,41,41,41,
+32,95,51,50,53,41,41,41,41,32,40,40,65,32,58,51,50,53,32,40,
+40,66,32,40,66,32,40,66,32,40,40,83,32,40,40,83,32,40,40,67,
+32,40,95,52,57,55,32,95,50,56,50,41,41,32,35,48,41,41,32,40,
+40,40,83,39,32,80,41,32,40,40,67,32,40,95,51,54,54,32,95,50,
+55,56,41,41,32,95,51,53,56,41,41,32,40,40,67,32,40,95,51,54,
+55,32,95,50,55,56,41,41,32,95,51,53,56,41,41,41,41,32,40,40,
+40,83,39,32,80,41,32,40,40,40,67,39,32,40,95,52,56,48,32,95,
+50,55,55,41,41,32,40,40,67,32,40,95,51,54,54,32,95,50,55,56,
+41,41,32,95,51,53,56,41,41,32,35,49,41,41,32,40,40,40,67,39,
+32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,67,32,40,95,
+51,54,55,32,95,50,55,56,41,41,32,95,51,53,56,41,41,32,95,51,
+53,56,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,95,
+52,55,57,32,95,50,55,55,41,41,41,32,40,95,52,56,48,32,95,50,
+55,55,41,41,41,41,32,40,40,65,32,58,51,50,54,32,40,40,95,50,
+54,51,32,95,52,50,51,41,32,40,40,95,50,54,51,32,40,95,52,50,
+53,32,40,40,67,32,40,95,50,48,50,32,95,50,56,49,41,41,32,35,
+48,41,41,41,32,95,52,50,51,41,41,41,32,40,40,65,32,58,51,50,
+55,32,40,40,40,67,39,32,83,41,32,40,40,40,83,39,32,40,67,39,
+32,67,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,83,39,
+32,95,49,50,48,41,41,32,40,67,32,40,95,52,57,55,32,95,50,56,
+50,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,
+67,39,32,95,49,50,49,41,41,32,40,67,32,40,95,50,48,50,32,95,
+50,56,49,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,89,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,66,32,40,67,32,40,40,40,67,39,32,83,39,41,32,83,39,41,32,
+40,40,40,67,39,32,66,41,32,40,85,32,95,49,50,52,41,41,32,40,
+90,32,75,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,66,41,41,32,66,39,41,41,32,40,40,66,32,40,40,83,39,32,
+66,41,32,40,40,66,32,40,83,39,32,66,41,41,32,40,40,66,32,40,
+66,32,95,49,50,48,41,41,32,40,95,52,57,55,32,95,50,56,50,41,
+41,41,41,41,32,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,95,49,50,49,41,41,32,40,
+95,50,48,50,32,95,50,56,49,41,41,41,41,41,41,41,41,32,40,95,
+50,52,32,34,108,116,87,46,99,109,112,34,41,41,41,41,32,95,52,50,
+51,41,41,32,95,52,50,51,41,41,41,41,32,95,52,49,49,41,41,32,
+95,52,49,49,41,41,32,40,40,65,32,58,51,50,56,32,40,40,83,32,
+66,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,40,80,32,
+40,40,95,51,53,53,32,95,51,53,54,41,32,95,52,54,49,41,41,41,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+40,83,32,73,41,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,
+32,40,80,32,40,40,95,51,53,53,32,95,51,53,54,41,32,95,52,54,
+49,41,41,41,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,67,32,66,41,32,40,40,40,83,39,32,40,83,39,32,83,41,41,
+32,40,40,66,32,40,66,32,40,67,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,
+32,80,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,95,51,53,53,41,41,32,95,51,50,57,41,41,41,
+32,40,67,32,40,95,51,51,48,32,95,51,49,53,41,41,41,41,41,41,
+32,40,90,32,75,41,41,41,41,32,40,40,40,67,39,32,66,41,32,66,
+41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,67,32,83,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,67,39,32,80,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,95,51,53,53,41,41,32,95,51,50,57,41,41,
+41,32,40,95,51,51,48,32,95,51,49,53,41,41,41,41,32,40,90,32,
+75,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,51,53,53,41,41,
+32,95,51,50,57,41,41,41,32,95,51,51,49,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,50,57,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,95,50,
+48,50,32,95,51,49,51,41,41,32,95,51,53,55,41,41,32,95,51,53,
+54,41,41,32,40,40,65,32,58,51,51,48,32,40,40,40,83,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,85,41,32,40,40,67,32,40,40,
+83,32,40,40,67,32,40,95,50,48,50,32,95,50,56,49,41,41,32,35,
+48,41,41,32,40,40,67,32,79,41,32,75,41,41,41,32,95,52,54,49,
+41,41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,
+40,67,39,32,40,40,83,39,32,95,52,54,50,41,32,40,40,67,32,40,
+95,51,54,55,32,95,50,55,56,41,41,32,95,51,53,56,41,41,41,41,
+32,40,40,67,39,32,67,41,32,40,40,67,39,32,95,51,51,48,41,32,
+40,40,67,32,40,95,51,54,54,32,95,50,55,56,41,41,32,95,51,53,
+56,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,95,52,
+55,57,32,95,50,55,55,41,41,41,32,40,67,32,40,95,52,56,49,32,
+95,50,55,55,41,41,41,41,41,41,32,40,40,65,32,58,51,51,49,32,
+40,40,66,32,40,66,32,40,95,52,48,48,32,95,51,50,48,41,41,41,
+32,40,40,66,32,40,66,32,40,40,95,52,49,51,32,95,52,54,51,41,
+32,40,40,95,51,57,53,32,40,40,67,32,95,52,52,54,41,32,35,48,
+41,41,32,40,40,95,49,56,52,32,95,49,57,56,41,32,35,48,41,41,
+41,41,41,32,40,40,66,32,95,51,57,53,41,32,40,95,51,51,48,32,
+95,51,49,53,41,41,41,41,41,32,40,40,65,32,58,51,51,50,32,40,
+40,66,32,40,83,32,73,41,41,32,40,40,66,32,90,41,32,40,40,66,
+32,40,66,32,40,80,32,40,95,50,52,32,34,73,110,116,101,103,101,114,
+58,32,100,105,118,105,115,105,111,110,32,98,121,32,48,34,41,41,41,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,67,32,66,
+41,32,40,40,66,32,40,66,32,40,83,32,40,85,32,40,40,80,32,40,
+40,95,51,53,53,32,95,51,53,54,41,32,95,52,54,49,41,41,32,40,
+40,95,51,53,53,32,95,51,53,54,41,32,95,52,54,49,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,40,83,39,32,66,41,32,66,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,
+40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,67,39,32,66,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,67,32,40,95,52,48,56,32,
+40,40,67,32,40,95,50,48,50,32,95,50,56,49,41,41,32,35,48,41,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,95,
+51,51,51,41,41,32,95,51,51,54,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,83,41,32,40,40,66,32,40,40,67,39,
+32,95,51,51,53,41,32,40,85,32,65,41,41,41,32,95,52,53,53,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,66,39,41,32,40,40,66,32,66,39,41,32,95,51,51,51,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,80,41,41,32,40,40,
+66,32,95,52,54,51,41,32,40,85,32,75,41,41,41,41,41,41,41,32,
+40,40,67,39,32,95,52,50,50,41,32,95,52,49,49,41,41,41,32,95,
+52,53,54,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,51,51,51,32,40,40,66,32,40,66,32,85,41,41,32,40,40,40,83,
+39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,80,41,41,41,32,40,40,66,32,40,66,32,95,51,49,
+52,41,41,32,95,51,50,57,41,41,41,32,95,51,49,52,41,41,41,32,
+40,40,65,32,58,51,51,52,32,40,40,40,67,39,32,67,41,32,95,51,
+51,50,41,32,75,41,41,32,40,40,65,32,58,51,51,53,32,40,40,40,
+67,39,32,67,41,32,40,40,66,32,40,67,32,40,40,40,67,39,32,89,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,67,41,32,40,40,66,
+32,40,67,32,83,39,41,41,32,40,40,66,32,40,67,32,80,41,41,32,
+40,40,67,32,79,41,32,75,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,
+66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,
+40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,67,39,32,83,41,41,41,32,40,40,66,32,40,67,32,67,39,41,
+41,32,40,67,32,40,95,51,54,55,32,95,50,55,56,41,41,41,41,41,
+32,40,40,66,32,40,67,39,32,95,52,54,50,41,41,32,40,67,32,40,
+95,51,54,54,32,95,50,55,56,41,41,41,41,41,41,41,32,40,40,66,
+32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,67,32,40,95,
+52,56,49,32,95,50,55,55,41,41,32,95,51,53,56,41,41,41,41,41,
+32,95,51,49,53,41,41,41,32,95,52,50,51,41,41,32,95,52,54,49,
+41,41,32,40,40,65,32,58,51,51,54,32,40,40,66,32,40,67,32,40,
+40,40,83,39,32,67,41,32,40,40,66,32,40,40,67,39,32,67,41,32,
+40,40,40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,32,40,40,
+83,39,32,83,41,32,40,40,66,32,40,40,83,39,32,83,41,32,40,40,
+66,32,40,83,32,40,40,67,32,95,51,52,57,41,32,95,51,51,56,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,80,41,32,95,
+51,51,55,41,41,32,95,51,51,55,41,41,41,41,32,40,40,66,32,40,
+40,67,39,32,66,41,32,40,40,66,32,80,41,32,40,40,66,32,95,51,
+51,55,41,32,40,40,67,32,95,51,49,57,41,32,95,51,51,57,41,41,
+41,41,41,32,40,40,66,32,40,66,32,95,51,51,55,41,41,32,40,67,
+32,95,51,49,54,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,66,39,32,95,51,49,57,41,41,32,40,67,32,95,51,50,56,41,
+41,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,
+40,83,39,32,40,67,39,32,40,83,39,32,89,41,41,41,32,40,40,66,
+32,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,40,83,39,
+32,67,41,41,32,40,40,66,32,67,41,32,40,40,67,39,32,95,51,53,
+50,41,32,95,51,49,56,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,
+67,41,32,40,40,66,32,40,40,67,39,32,67,39,41,32,83,39,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,95,51,51,52,41,
+41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,95,51,49,54,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,51,49,54,41,41,
+32,40,67,32,95,51,51,52,41,41,41,41,32,95,51,52,48,41,41,41,
+32,73,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+95,51,49,57,41,41,32,40,67,32,95,51,50,56,41,41,41,41,41,32,
+95,51,51,52,41,41,32,40,40,67,32,95,51,49,54,41,32,95,51,51,
+57,41,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,40,95,51,
+53,53,32,95,51,53,54,41,41,41,32,40,40,40,83,39,32,95,52,54,
+51,41,32,40,40,40,67,39,32,95,52,52,54,41,32,40,40,40,67,39,
+32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,52,49,49,41,32,
+35,49,41,41,32,35,48,41,41,32,40,40,40,67,39,32,79,41,32,95,
+52,53,53,41,32,75,41,41,41,41,41,32,40,95,51,53,53,32,95,51,
+53,54,41,41,41,41,32,40,95,51,53,53,32,95,51,53,54,41,41,41,
+32,40,40,65,32,58,51,51,55,32,40,85,32,65,41,41,32,40,40,65,
+32,58,51,51,56,32,40,40,95,51,53,53,32,95,51,53,54,41,32,95,
+52,54,49,41,41,32,40,40,65,32,58,51,51,57,32,40,40,95,51,53,
+53,32,95,51,53,54,41,32,40,40,79,32,35,49,41,32,75,41,41,41,
+32,40,40,65,32,58,51,52,48,32,40,40,95,51,53,53,32,95,51,53,
+54,41,32,40,40,79,32,35,50,41,32,75,41,41,41,32,40,40,65,32,
+58,51,52,49,32,40,40,95,51,53,53,32,95,51,53,54,41,32,40,40,
+79,32,35,49,48,41,32,75,41,41,41,32,40,40,65,32,58,51,52,50,
+32,40,40,95,51,53,53,32,95,51,53,55,41,32,40,40,79,32,35,49,
+41,32,75,41,41,41,32,40,40,65,32,58,51,52,51,32,40,85,32,40,
+40,66,32,40,83,32,40,85,32,40,40,79,32,35,52,56,41,32,75,41,
+41,41,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+67,32,40,40,67,32,83,39,41,32,95,51,52,52,41,41,32,40,40,66,
+32,40,95,52,54,50,32,35,52,53,41,41,32,95,51,52,52,41,41,41,
+41,41,41,41,32,40,40,65,32,58,51,52,52,32,40,40,83,32,40,85,
+32,75,41,41,32,40,90,32,40,90,32,40,40,66,32,40,40,40,83,39,
+32,95,52,54,51,41,32,40,40,66,32,95,51,52,52,41,32,40,40,66,
+32,95,51,50,54,41,32,40,40,67,32,40,40,67,32,66,41,32,40,40,
+40,83,39,32,66,41,32,80,41,32,40,40,66,32,90,41,32,40,40,66,
+32,40,67,32,80,41,41,32,40,90,32,75,41,41,41,41,41,41,32,40,
+40,40,110,111,77,97,116,99,104,32,75,41,32,35,48,41,32,35,48,41,
+41,41,41,41,32,40,40,40,67,39,32,79,41,32,40,40,66,32,95,49,
+51,54,41,32,40,40,66,32,40,40,95,52,55,57,32,95,50,55,55,41,
+32,40,95,49,51,55,32,35,52,56,41,41,41,32,40,40,67,32,40,40,
+67,32,66,41,32,40,90,32,40,40,83,32,80,41,32,40,40,66,32,40,
+67,32,80,41,41,32,40,90,32,75,41,41,41,41,41,41,32,40,40,40,
+110,111,77,97,116,99,104,32,75,41,32,35,48,41,32,35,48,41,41,41,
+41,41,32,75,41,41,41,32,40,40,67,32,95,51,51,53,41,32,35,49,
+48,41,41,41,41,41,41,32,40,40,65,32,58,51,52,53,32,40,40,83,
+32,40,40,67,32,83,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,67,32,40,40,67,32,61,61,41,32,35,52,53,41,41,41,32,
+40,40,66,32,40,95,52,56,50,32,95,51,48,56,41,41,32,95,51,52,
+54,41,41,41,41,32,95,51,52,54,41,41,32,40,40,65,32,58,51,52,
+54,32,40,40,95,51,57,57,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,95,52,55,57,32,95,51,48,56,41,41,32,40,40,67,32,40,
+95,52,56,49,32,95,51,48,56,41,41,32,95,51,52,49,41,41,41,32,
+40,40,66,32,95,51,53,57,41,32,40,40,40,67,39,32,40,95,52,56,
+48,32,95,50,55,55,41,41,32,95,49,51,55,41,32,40,95,49,51,55,
+32,35,52,56,41,41,41,41,41,32,95,51,51,56,41,41,32,40,40,65,
+32,58,51,52,55,32,40,40,67,32,66,41,32,40,40,40,67,39,32,66,
+41,32,66,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,95,49,50,49,41,41,32,
+40,95,50,48,50,32,95,51,49,51,41,41,41,41,32,40,95,50,48,50,
+32,40,95,51,56,54,32,95,50,56,49,41,41,41,41,41,41,32,40,40,
+65,32,58,51,52,56,32,40,40,66,32,40,66,32,95,49,50,50,41,41,
+32,95,51,52,55,41,41,32,40,40,65,32,58,51,52,57,32,40,40,67,
+32,66,41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,40,67,32,
+83,39,41,41,32,40,40,67,32,66,41,32,40,40,40,67,39,32,67,41,
+32,40,40,66,32,40,67,32,67,39,41,41,32,95,51,50,55,41,41,32,
+95,49,50,52,41,41,41,41,32,40,40,67,32,66,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,40,85,32,95,49,50,53,41,41,41,32,40,
+67,32,95,51,50,55,41,41,41,41,41,41,32,40,40,65,32,58,51,53,
+48,32,40,40,66,32,40,66,32,95,49,50,50,41,41,32,40,67,32,95,
+51,52,57,41,41,41,32,40,40,65,32,58,51,53,49,32,40,67,32,95,
+51,52,57,41,41,32,40,40,65,32,58,51,53,50,32,40,40,66,32,40,
+66,32,95,49,50,50,41,41,32,95,51,52,57,41,41,32,40,40,65,32,
+58,51,53,51,32,40,85,32,40,40,67,32,83,41,32,40,95,52,54,50,
+32,35,45,49,41,41,41,41,32,40,40,65,32,58,51,53,52,32,40,40,
+83,32,40,40,67,32,83,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,45,49,41,41,41,
+32,40,95,51,53,53,32,95,51,53,55,41,41,41,41,32,40,95,51,53,
+53,32,95,51,53,54,41,41,41,32,40,40,65,32,58,51,53,53,32,80,
+41,32,40,40,65,32,58,51,53,54,32,75,41,32,40,40,65,32,58,51,
+53,55,32,65,41,32,40,40,65,32,58,51,53,56,32,35,50,49,52,55,
+52,56,51,54,52,56,41,32,40,40,65,32,58,51,53,57,32,40,40,83,
+32,40,40,40,67,39,32,67,41,32,40,40,83,32,40,40,40,83,39,32,
+67,39,41,32,40,40,66,32,83,39,41,32,40,40,67,32,95,49,51,56,
+50,41,32,35,48,41,41,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,40,83,39,32,67,39,41,41,32,95,49,51,55,55,41,32,
+40,40,66,32,40,66,32,40,95,49,50,53,32,40,40,40,110,111,77,97,
+116,99,104,32,34,46,47,108,105,98,47,68,97,116,97,47,73,110,116,101,
+103,101,114,95,84,121,112,101,46,104,115,34,41,32,35,49,56,41,32,35,
+49,41,41,41,41,32,40,40,66,32,40,66,32,40,95,51,53,53,32,95,
+51,53,55,41,41,41,32,85,41,41,41,41,32,40,40,95,51,53,53,32,
+95,51,53,55,41,32,40,40,79,32,35,48,41,32,40,40,79,32,35,48,
+41,32,40,40,79,32,35,50,41,32,75,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,95,51,53,53,32,95,51,53,54,41,41,41,32,
+85,41,41,41,32,40,89,32,40,40,40,67,39,32,67,41,32,40,40,66,
+32,40,83,32,40,40,67,32,61,61,41,32,35,48,41,41,41,32,40,40,
+66,32,40,40,83,39,32,95,52,54,50,41,32,40,40,67,32,95,49,51,
+52,54,41,32,95,51,53,56,41,41,41,32,40,40,67,32,66,41,32,40,
+40,67,32,95,49,51,52,53,41,32,95,51,53,56,41,41,41,41,41,32,
+95,52,54,49,41,41,41,41,32,40,95,49,51,52,51,32,35,48,41,41,
+41,32,40,40,65,32,58,51,54,48,32,40,85,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,49,51,52,52,41,32,40,40,80,32,35,49,
+41,32,40,40,95,49,51,52,51,32,35,48,41,32,35,49,41,41,41,41,
+32,40,40,80,32,35,48,41,32,40,40,83,32,80,41,32,40,40,40,83,
+39,32,40,83,39,32,80,41,41,32,40,40,40,67,39,32,66,41,32,95,
+49,51,52,50,41,32,40,95,49,51,52,52,32,95,51,53,56,41,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,67,39,32,66,41,
+32,40,66,39,32,95,49,51,52,50,41,41,32,40,40,66,32,40,66,32,
+40,95,49,51,52,52,32,95,51,53,56,41,41,41,32,40,40,40,67,39,
+32,66,41,32,95,49,51,52,50,41,32,40,95,49,51,52,52,32,95,51,
+53,56,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,
+54,49,32,40,40,66,32,40,95,51,53,53,32,95,51,53,54,41,41,32,
+40,89,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,83,32,40,
+40,67,32,95,49,51,56,51,41,32,35,48,41,41,41,32,40,40,66,32,
+40,40,83,39,32,95,52,54,50,41,32,40,40,66,32,95,49,51,56,57,
+41,32,40,40,67,32,95,49,51,54,55,41,32,40,95,49,51,57,48,32,
+95,51,53,56,41,41,41,41,41,32,40,40,67,32,66,41,32,40,40,67,
+32,95,49,51,54,54,41,32,40,95,49,51,57,48,32,95,51,53,56,41,
+41,41,41,41,41,32,95,52,54,49,41,41,41,41,32,40,40,65,32,58,
+51,54,50,32,40,40,66,32,95,49,51,57,48,41,32,95,51,54,48,41,
+41,32,40,40,65,32,58,51,54,51,32,40,85,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,49,51,53,49,41,32,40,40,80,32,38,49,
+46,48,41,32,40,40,95,49,51,53,48,32,38,48,46,48,41,32,38,49,
+46,48,41,41,41,41,32,40,89,32,40,40,66,32,40,80,32,38,48,46,
+48,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,
+95,49,51,52,57,41,32,95,49,51,54,50,41,41,41,32,40,66,32,40,
+95,49,51,53,49,32,40,95,49,51,54,50,32,95,51,53,56,41,41,41,
+41,41,41,41,41,41,32,40,40,65,32,58,51,54,52,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,67,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,80,41,41,41,41,41,41,41,32,40,40,65,32,58,51,54,53,32,
+40,85,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,54,54,32,
+40,85,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,54,55,32,
+40,85,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,54,56,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,54,57,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,55,48,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,55,49,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,55,50,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,65,41,41,41,41,41,41,41,41,32,40,40,65,32,58,51,55,51,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,95,51,55,48,41,32,
+75,41,41,32,40,40,65,32,58,51,55,52,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,95,51,55,48,41,32,65,41,41,32,40,40,65,
+32,58,51,55,53,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+95,51,55,49,41,32,75,41,41,32,40,40,65,32,58,51,55,54,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,95,51,55,49,41,32,65,
+41,41,32,40,40,65,32,58,51,55,55,32,40,40,40,83,39,32,40,83,
+39,32,40,83,39,32,80,41,41,41,32,95,51,54,54,41,32,95,51,54,
+55,41,41,32,40,40,65,32,58,51,55,56,32,40,40,40,83,39,32,66,
+41,32,40,40,66,32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,67,41,41,32,40,40,40,83,39,32,66,41,32,40,40,40,83,
+39,32,67,39,41,32,40,40,66,32,95,50,48,50,41,32,40,40,66,32,
+40,85,32,75,41,41,32,95,51,54,53,41,41,41,32,40,40,66,32,95,
+52,56,52,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,
+41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,95,52,
+56,50,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,
+41,41,32,40,40,66,32,95,52,56,52,41,32,40,40,66,32,40,85,32,
+65,41,41,32,95,51,54,53,41,41,41,41,41,41,32,40,40,83,32,73,
+41,32,40,90,32,75,41,41,41,41,32,40,40,40,83,39,32,66,41,32,
+40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,80,
+41,41,32,40,40,83,32,40,40,40,67,39,32,67,39,41,32,40,40,66,
+32,95,52,56,48,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,
+54,53,41,41,41,32,40,85,32,75,41,41,41,32,40,40,40,67,39,32,
+95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,
+53,41,41,32,40,95,51,53,57,32,35,49,41,41,41,41,41,41,32,40,
+40,66,32,67,41,32,40,40,66,32,95,52,55,57,41,32,40,40,66,32,
+40,85,32,65,41,41,32,95,51,54,53,41,41,41,41,41,41,32,40,85,
+32,65,41,41,41,41,32,95,51,55,48,41,41,32,40,40,65,32,58,51,
+55,57,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,73,110,
+116,101,103,114,97,108,46,116,111,73,110,116,101,103,101,114,34,41,41,41,
+32,40,40,65,32,58,51,56,48,32,40,40,40,83,39,32,40,67,39,32,
+66,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,89,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,
+40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,83,41,32,40,
+40,40,83,39,32,67,41,32,40,40,66,32,95,50,48,50,41,32,40,40,
+66,32,40,85,32,75,41,41,32,95,51,54,53,41,41,41,32,40,40,40,
+67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,41,32,
+95,51,54,53,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,83,41,41,32,95,51,
+54,55,41,41,41,32,73,41,41,41,32,40,40,66,32,95,52,56,51,41,
+32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,41,
+32,40,40,66,32,95,52,56,51,41,32,40,40,66,32,40,85,32,65,41,
+41,32,95,51,54,53,41,41,41,41,32,40,40,65,32,58,51,56,49,32,
+40,40,40,83,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,
+83,41,32,40,40,40,83,39,32,40,67,39,32,83,39,41,41,32,40,40,
+66,32,40,66,32,95,49,50,48,41,41,32,40,40,40,83,39,32,67,41,
+32,40,40,66,32,95,50,48,50,41,32,40,40,66,32,40,85,32,75,41,
+41,32,95,51,54,53,41,41,41,32,40,40,40,67,39,32,95,52,56,53,
+41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,32,
+40,95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,83,39,32,
+67,41,32,40,40,66,32,95,50,48,50,41,32,40,40,66,32,40,85,32,
+75,41,41,32,95,51,54,53,41,41,41,32,40,40,40,67,39,32,95,52,
+56,53,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,
+41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,83,
+39,32,66,41,32,40,66,39,32,40,40,66,32,95,52,56,51,41,32,40,
+40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,41,32,40,
+40,67,32,40,40,40,83,39,32,67,39,41,32,40,40,66,32,83,39,41,
+32,40,40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,
+41,32,95,51,54,53,41,41,41,41,32,40,40,40,83,39,32,40,83,39,
+32,66,41,41,32,95,51,54,54,41,32,95,51,56,48,41,41,41,32,73,
+41,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,
+32,40,85,32,65,41,41,32,95,51,54,53,41,41,32,40,95,51,53,57,
+32,35,48,41,41,41,41,32,40,40,65,32,58,51,56,50,32,40,40,83,
+32,40,40,40,83,39,32,67,39,41,32,40,40,66,32,95,50,48,50,41,
+32,40,40,66,32,40,85,32,75,41,41,32,95,51,54,53,41,41,41,32,
+40,40,40,83,39,32,67,41,32,95,51,54,55,41,32,40,40,40,67,39,
+32,95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,
+54,53,41,41,32,40,95,51,53,57,32,35,50,41,41,41,41,41,32,40,
+40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,
+41,32,95,51,54,53,41,41,32,40,95,51,53,57,32,35,48,41,41,41,
+41,32,40,40,65,32,58,51,56,51,32,40,40,66,32,40,66,32,95,49,
+50,50,41,41,32,95,51,56,50,41,41,32,40,40,65,32,58,51,56,52,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,
+32,66,41,32,40,40,66,32,83,41,32,40,40,40,83,39,32,67,41,32,
+40,40,66,32,95,52,57,55,41,32,40,85,32,40,75,32,65,41,41,41,
+41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,
+32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,40,85,32,40,75,
+32,75,41,41,41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,
+41,32,40,40,66,32,89,41,32,40,40,40,83,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,
+32,40,40,66,32,83,41,32,40,40,40,83,39,32,67,41,32,40,40,66,
+32,95,50,48,50,41,32,40,40,66,32,40,85,32,75,41,41,32,40,40,
+66,32,95,51,54,53,41,32,40,85,32,40,75,32,75,41,41,41,41,41,
+41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,
+32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,40,85,32,40,75,
+32,75,41,41,41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,
+41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,
+41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,83,
+41,32,40,40,66,32,95,51,56,50,41,32,40,85,32,40,75,32,75,41,
+41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,
+83,39,32,66,41,41,32,40,40,66,32,95,52,56,49,41,32,40,85,32,
+40,90,32,75,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,
+40,67,39,32,66,41,41,41,32,40,40,66,32,40,67,32,66,41,41,32,
+40,40,40,67,39,32,83,41,32,40,40,66,32,95,52,56,49,41,32,40,
+85,32,40,90,32,75,41,41,41,41,32,73,41,41,41,32,40,40,40,83,
+39,32,67,41,32,40,40,66,32,95,51,54,54,41,32,40,85,32,40,75,
+32,75,41,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,
+40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,
+40,85,32,40,75,32,75,41,41,41,41,41,32,40,95,51,53,57,32,35,
+50,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,
+67,39,32,66,41,41,41,32,40,40,66,32,40,67,32,66,41,41,32,40,
+40,40,67,39,32,83,41,32,40,40,66,32,95,52,56,49,41,32,40,85,
+32,40,90,32,75,41,41,41,41,32,73,41,41,41,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,95,51,54,54,41,32,40,85,32,40,75,32,
+75,41,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,
+66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,40,
+85,32,40,75,32,75,41,41,41,41,41,32,40,95,51,53,57,32,35,50,
+41,41,41,41,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,
+40,85,32,40,90,32,75,41,41,41,32,40,95,51,53,57,32,35,49,41,
+41,41,41,41,41,32,40,95,50,52,32,34,68,97,116,97,46,73,110,116,
+101,103,114,97,108,46,94,58,32,110,101,103,97,116,105,118,101,32,101,120,
+112,111,110,101,110,116,34,41,41,41,32,40,40,65,32,58,51,56,53,32,
+40,40,40,83,39,32,66,41,32,40,40,66,32,95,52,56,53,41,32,40,
+85,32,65,41,41,41,32,40,40,66,32,95,51,55,50,41,32,40,85,32,
+75,41,41,41,41,32,40,40,65,32,58,51,56,54,32,40,40,40,83,39,
+32,95,50,48,49,41,32,40,40,66,32,40,67,32,40,40,67,32,83,39,
+41,32,40,40,80,32,95,49,50,53,41,32,40,75,32,40,75,32,95,49,
+50,52,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,
+32,40,66,39,32,40,85,32,95,49,50,52,41,41,41,41,32,40,40,40,
+83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,49,50,
+49,41,41,41,32,95,50,48,50,41,41,41,32,40,40,66,32,95,50,48,
+50,41,32,95,51,56,54,41,41,41,41,41,32,40,40,66,32,95,50,48,
+53,41,32,95,51,56,54,41,41,41,32,40,40,65,32,58,51,56,55,32,
+40,40,95,50,55,49,32,95,51,57,53,41,32,40,95,50,55,53,32,95,
+51,56,55,41,41,41,32,40,40,65,32,58,51,56,56,32,40,40,40,40,
+40,95,49,49,32,95,51,56,55,41,32,40,40,67,32,79,41,32,75,41,
+41,32,40,95,51,56,32,95,51,56,57,41,41,32,40,95,49,57,32,95,
+51,56,56,41,41,32,40,95,50,48,32,95,51,56,56,41,41,41,32,40,
+40,65,32,58,51,56,57,32,40,40,40,40,95,51,48,32,95,51,56,56,
+41,32,40,95,50,54,54,32,95,51,57,52,41,41,32,40,95,51,54,32,
+95,51,56,57,41,41,32,40,95,51,55,32,95,51,56,57,41,41,41,32,
+40,40,65,32,58,51,57,48,32,40,40,95,51,57,32,95,51,56,57,41,
+32,40,75,32,95,52,54,49,41,41,41,32,40,40,65,32,58,51,57,49,
+32,40,40,83,32,40,40,40,83,39,32,95,49,53,56,56,41,32,40,90,
+32,95,49,53,57,49,41,41,32,40,40,66,32,95,49,53,57,51,41,32,
+95,51,57,49,41,41,41,32,40,40,66,32,95,49,53,57,52,41,32,95,
+51,57,49,41,41,41,32,40,40,65,32,58,51,57,50,32,40,40,80,32,
+95,49,50,53,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,
+32,40,40,65,32,58,51,57,51,32,40,40,95,51,57,55,32,95,52,54,
+51,41,32,95,52,54,49,41,41,32,40,40,65,32,58,51,57,52,32,40,
+40,66,32,40,95,50,54,51,32,95,51,57,51,41,41,32,95,51,57,53,
+41,41,32,40,40,65,32,58,51,57,53,32,40,40,66,32,89,41,32,40,
+40,66,32,40,66,32,40,80,32,95,52,54,49,41,41,41,32,40,40,66,
+32,40,67,39,32,66,41,41,32,40,66,32,95,52,54,50,41,41,41,41,
+41,32,40,40,65,32,58,51,57,54,32,40,40,66,32,89,41,32,40,40,
+66,32,40,66,32,40,80,32,95,52,54,49,41,41,41,32,40,40,40,67,
+39,32,40,83,39,32,83,41,41,32,40,67,39,32,83,39,41,41,32,40,
+40,67,39,32,66,41,32,95,52,54,50,41,41,41,41,41,32,40,40,65,
+32,58,51,57,55,32,40,40,66,32,40,66,32,89,41,41,32,40,40,66,
+32,40,40,67,39,32,66,41,32,80,41,41,32,40,67,39,32,66,41,41,
+41,41,32,40,40,65,32,58,51,57,56,32,40,40,66,32,40,80,32,40,
+95,50,52,32,34,102,111,108,100,114,49,34,41,41,41,32,95,51,57,55,
+41,41,32,40,40,65,32,58,51,57,57,32,40,40,66,32,89,41,32,40,
+40,66,32,40,66,32,40,83,32,80,41,41,41,32,40,40,67,39,32,66,
+41,32,66,41,41,41,41,32,40,40,65,32,58,52,48,48,32,40,40,66,
+32,40,80,32,40,95,50,52,32,34,102,111,108,100,108,49,34,41,41,41,
+32,95,51,57,57,41,41,32,40,40,65,32,58,52,48,49,32,40,40,66,
+32,40,80,32,40,95,50,52,32,34,109,105,110,105,109,117,109,34,41,41,
+41,32,40,40,66,32,95,51,57,55,41,32,40,40,40,67,39,32,40,83,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,
+95,52,57,55,41,32,73,41,41,32,73,41,41,41,41,32,40,40,65,32,
+58,52,48,50,32,40,40,66,32,40,80,32,40,95,50,52,32,34,109,97,
+120,105,109,117,109,34,41,41,41,32,40,40,66,32,95,51,57,55,41,32,
+40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,83,41,41,32,95,52,57,57,41,32,73,41,41,32,73,41,
+41,41,41,32,40,40,65,32,58,52,48,51,32,40,40,40,83,39,32,95,
+51,57,55,41,32,95,52,55,57,41,32,40,40,67,32,95,52,56,53,41,
+32,40,95,51,53,57,32,35,48,41,41,41,41,32,40,40,65,32,58,52,
+48,52,32,40,40,40,83,39,32,95,51,57,55,41,32,95,52,56,49,41,
+32,40,40,67,32,95,52,56,53,41,32,40,95,51,53,57,32,35,49,41,
+41,41,41,32,40,40,65,32,58,52,48,53,32,40,40,95,51,57,55,32,
+95,49,50,49,41,32,95,49,50,53,41,41,32,40,40,65,32,58,52,48,
+54,32,40,40,95,51,57,55,32,95,49,50,48,41,32,95,49,50,52,41,
+41,32,40,40,65,32,58,52,48,55,32,40,40,66,32,40,95,50,54,51,
+32,95,52,48,54,41,41,32,95,51,57,53,41,41,32,40,40,65,32,58,
+52,48,56,32,40,40,66,32,40,95,50,54,51,32,95,52,48,53,41,41,
+32,95,51,57,53,41,41,32,40,40,65,32,58,52,48,57,32,40,40,67,
+32,40,40,40,83,39,32,67,39,41,32,40,40,67,32,40,95,52,57,56,
+32,95,50,56,50,41,41,32,35,48,41,41,32,40,40,66,32,40,80,32,
+95,52,54,49,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,
+52,54,50,41,41,32,40,40,66,32,95,52,48,57,41,32,40,40,67,32,
+40,95,52,56,48,32,95,50,55,55,41,41,32,35,49,41,41,41,41,41,
+41,32,95,52,54,49,41,41,32,40,40,65,32,58,52,49,48,32,40,40,
+67,32,40,40,40,83,39,32,83,39,41,32,40,40,67,32,40,95,52,57,
+56,32,95,50,56,50,41,41,32,35,48,41,41,32,40,40,66,32,40,80,
+32,95,52,54,49,41,41,32,40,90,32,40,40,66,32,95,52,49,48,41,
+32,40,40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,32,35,49,
+41,41,41,41,41,41,32,73,41,41,32,40,40,65,32,58,52,49,49,32,
+40,40,89,32,40,40,66,32,40,83,32,80,41,41,32,40,40,66,32,90,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,
+83,32,95,49,51,57,57,41,41,41,32,67,41,41,32,40,40,67,32,40,
+95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,41,41,41,32,
+35,48,41,41,32,40,40,65,32,58,52,49,50,32,40,95,52,49,51,32,
+80,41,41,32,40,40,65,32,58,52,49,51,32,40,40,66,32,89,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,85,32,95,52,
+54,49,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,
+41,32,40,66,39,32,40,85,32,95,52,54,49,41,41,41,41,41,32,40,
+40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,66,41,41,41,32,40,66,32,40,66,32,95,52,54,50,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,52,49,52,32,40,40,80,32,40,
+40,80,32,95,52,54,49,41,32,95,52,54,49,41,41,32,40,40,67,32,
+66,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,95,52,49,52,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,
+66,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,52,54,50,41,
+41,41,32,95,52,54,50,41,41,41,41,41,32,40,40,65,32,58,52,49,
+53,32,40,40,80,32,40,40,67,32,40,40,80,32,95,52,54,49,41,32,
+95,52,54,49,41,41,32,95,52,54,49,41,41,32,40,40,67,32,66,41,
+32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,95,52,
+49,53,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,40,67,39,32,40,67,39,32,66,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,
+32,40,40,66,32,40,66,32,80,41,41,32,95,52,54,50,41,41,41,32,
+95,52,54,50,41,41,41,41,32,95,52,54,50,41,41,41,41,41,32,40,
+40,65,32,58,52,49,54,32,40,40,66,32,95,52,49,55,41,32,95,50,
+48,50,41,41,32,40,40,65,32,58,52,49,55,32,40,40,66,32,89,41,
+32,40,40,66,32,40,66,32,40,67,32,40,40,67,32,83,39,41,32,95,
+52,55,55,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,
+66,41,32,40,66,39,32,40,85,32,95,52,55,54,41,41,41,41,41,32,
+40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,
+67,39,32,66,41,41,41,32,40,40,67,32,40,67,39,32,67,41,41,32,
+95,52,55,54,41,41,41,41,41,41,41,32,40,40,65,32,58,52,49,56,
+32,40,40,66,32,95,52,49,57,41,32,95,50,48,50,41,41,32,40,40,
+65,32,58,52,49,57,32,40,40,66,32,89,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,66,41,32,40,85,32,95,49,50,53,41,41,41,41,
+32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,
+40,85,32,95,49,50,52,41,41,41,41,41,32,40,40,66,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,41,
+32,40,66,32,40,66,32,95,49,50,49,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,52,50,48,32,40,40,66,32,95,52,50,49,41,32,95,
+50,48,50,41,41,32,40,40,65,32,58,52,50,49,32,40,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,40,67,39,32,66,41,32,95,52,
+49,57,41,32,95,52,50,51,41,41,32,95,52,50,51,41,41,32,40,40,
+65,32,58,52,50,50,32,40,40,40,83,39,32,40,83,39,32,80,41,41,
+32,95,52,48,57,41,32,95,52,49,48,41,41,32,40,40,65,32,58,52,
+50,51,32,40,40,89,32,40,40,66,32,40,83,32,80,41,41,32,40,40,
+40,67,39,32,66,41,32,66,41,32,40,67,32,95,52,54,50,41,41,41,
+41,32,95,52,54,49,41,41,32,40,40,65,32,58,52,50,52,32,40,40,
+66,32,89,41,32,40,40,66,32,40,66,32,40,80,32,95,52,54,49,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,
+66,41,41,32,40,82,32,95,52,54,49,41,41,41,32,40,40,67,39,32,
+66,41,32,95,52,54,50,41,41,41,41,41,32,40,40,65,32,58,52,50,
+53,32,40,40,66,32,89,41,32,40,40,66,32,40,66,32,40,80,32,95,
+52,54,49,41,41,41,32,40,40,66,32,67,41,32,40,40,67,32,40,83,
+39,32,83,39,41,41,32,95,52,54,50,41,41,41,41,41,32,40,40,65,
+32,58,52,50,54,32,40,40,40,67,39,32,89,41,32,40,40,66,32,40,
+66,32,40,40,83,39,32,80,41,32,40,40,40,67,39,32,80,41,32,95,
+52,50,51,41,32,95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,83,39,32,83,41,41,32,40,40,40,67,39,
+32,66,41,32,40,83,39,32,83,39,41,41,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,40,40,66,32,80,41,32,95,52,50,51,41,41,41,
+32,95,52,54,50,41,41,41,41,32,40,40,40,67,39,32,66,41,32,66,
+41,32,40,67,32,95,52,54,50,41,41,41,41,41,32,95,52,54,49,41,
+41,32,40,40,65,32,58,52,50,55,32,40,40,40,67,39,32,89,41,32,
+40,40,66,32,40,66,32,40,40,83,39,32,80,41,32,40,40,40,67,39,
+32,80,41,32,95,52,50,51,41,32,95,52,54,49,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,83,41,41,32,
+40,40,40,67,39,32,66,41,32,40,83,39,32,83,39,41,41,32,40,40,
+66,32,40,66,32,80,41,41,32,40,40,66,32,40,66,32,95,52,50,51,
+41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,66,41,32,40,67,32,95,52,54,50,41,41,41,41,
+41,32,95,52,54,49,41,41,32,40,40,65,32,58,52,50,56,32,40,40,
+80,32,40,95,50,52,32,34,104,101,97,100,34,41,41,32,75,41,41,32,
+40,40,65,32,58,52,50,57,32,40,40,80,32,40,95,50,52,32,34,116,
+97,105,108,34,41,41,32,65,41,41,32,40,40,65,32,58,52,51,48,32,
+40,40,66,32,40,80,32,95,52,54,49,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,95,52,54,50,41,41,32,40,40,66,32,89,41,32,
+40,40,66,32,40,66,32,40,80,32,95,52,54,49,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,95,52,54,50,41,
+41,41,32,40,40,67,39,32,66,41,32,95,52,54,50,41,41,41,41,41,
+41,41,32,40,40,65,32,58,52,51,49,32,40,40,66,32,40,66,32,95,
+51,57,51,41,41,32,95,52,51,48,41,41,32,40,40,65,32,58,52,51,
+50,32,40,40,66,32,95,52,51,52,41,32,95,50,48,50,41,41,32,40,
+40,65,32,58,52,51,51,32,40,40,66,32,40,66,32,40,66,32,95,49,
+50,50,41,41,41,32,95,52,51,50,41,41,32,40,40,65,32,58,52,51,
+52,32,40,66,32,95,52,48,55,41,41,32,40,40,65,32,58,52,51,53,
+32,40,40,66,32,89,41,32,40,40,66,32,40,66,32,40,80,32,95,52,
+55,54,41,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,
+40,67,39,32,67,39,41,41,32,95,52,55,55,41,41,41,41,32,40,40,
+65,32,58,52,51,54,32,40,40,66,32,95,52,51,55,41,32,95,50,48,
+50,41,41,32,40,40,65,32,58,52,51,55,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,66,32,40,66,32,95,52,51,53,41,41,32,40,40,67,32,40,
+67,39,32,95,50,54,51,41,41,32,95,53,54,53,41,41,41,32,95,52,
+55,54,41,41,32,40,85,32,40,75,32,95,52,55,55,41,41,41,41,32,
+40,40,65,32,58,52,51,56,32,40,40,66,32,95,52,51,57,41,32,95,
+50,48,50,41,41,32,40,40,65,32,58,52,51,57,32,40,40,66,32,40,
+40,83,39,32,66,41,32,95,52,54,51,41,41,32,40,40,40,83,39,32,
+67,39,41,32,40,40,66,32,95,51,57,57,41,32,40,40,66,32,95,50,
+54,54,41,32,95,52,52,50,41,41,41,32,95,52,52,53,41,41,41,32,
+40,40,65,32,58,52,52,48,32,40,40,66,32,95,52,52,49,41,32,95,
+50,48,50,41,41,32,40,40,65,32,58,52,52,49,32,40,40,66,32,40,
+67,39,32,95,51,57,54,41,41,32,40,40,66,32,40,66,32,40,66,32,
+95,49,50,50,41,41,41,32,40,40,66,32,67,41,32,95,52,51,52,41,
+41,41,41,32,40,40,65,32,58,52,52,50,32,40,40,66,32,89,41,32,
+40,40,66,32,40,66,32,40,66,32,40,80,32,95,52,54,49,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,83,39,32,40,83,39,32,83,39,
+41,41,41,32,40,66,32,40,40,67,39,32,66,41,32,95,52,54,50,41,
+41,41,41,32,73,41,41,41,41,32,40,40,65,32,58,52,52,51,32,40,
+40,66,32,89,41,32,40,40,66,32,40,66,32,40,66,32,40,80,32,95,
+52,54,49,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,
+39,32,67,41,41,41,32,40,40,40,67,39,32,66,41,32,40,83,39,32,
+40,83,39,32,83,39,41,41,41,32,40,66,32,40,40,67,39,32,66,41,
+32,95,52,54,50,41,41,41,41,32,73,41,41,41,41,32,40,40,65,32,
+58,52,52,52,32,40,40,66,32,95,52,52,53,41,32,95,50,48,50,41,
+41,32,40,40,65,32,58,52,52,53,32,40,40,66,32,89,41,32,40,40,
+66,32,40,66,32,40,80,32,95,52,54,49,41,41,41,32,40,40,66,32,
+40,66,32,40,40,83,39,32,66,41,32,95,52,54,50,41,41,41,32,40,
+40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,40,40,66,32,40,
+66,32,95,51,57,54,41,41,32,40,66,32,40,66,32,95,49,50,50,41,
+41,41,41,41,41,41,41,32,40,40,65,32,58,52,52,54,32,40,40,40,
+67,39,32,66,41,32,95,52,48,57,41,32,95,52,52,55,41,41,32,40,
+40,65,32,58,52,52,55,32,40,40,66,32,89,41,32,95,52,54,50,41,
+41,32,40,40,65,32,58,52,52,56,32,40,40,66,32,95,52,52,57,41,
+32,95,50,48,50,41,41,32,40,40,65,32,58,52,52,57,32,40,40,66,
+32,95,51,57,57,41,32,40,40,66,32,95,50,54,54,41,32,95,52,52,
+50,41,41,41,32,40,40,65,32,58,52,53,48,32,40,40,66,32,95,51,
+57,57,41,32,40,40,66,32,95,50,54,54,41,32,95,52,52,51,41,41,
+41,32,40,40,65,32,58,52,53,49,32,40,40,40,67,39,32,67,41,32,
+40,40,66,32,40,83,32,40,40,67,32,40,95,52,57,55,32,95,50,56,
+50,41,41,32,35,48,41,41,41,32,40,67,32,40,89,32,40,40,66,32,
+40,66,32,40,80,32,40,95,50,52,32,34,33,33,58,32,101,109,112,116,
+121,34,41,41,41,41,32,40,40,66,32,40,40,83,39,32,67,39,41,32,
+40,40,67,32,40,95,50,48,50,32,95,50,56,49,41,41,32,35,48,41,
+41,41,32,40,40,67,32,66,41,32,40,40,67,32,40,95,52,56,48,32,
+95,50,55,55,41,41,32,35,49,41,41,41,41,41,41,41,41,32,40,95,
+50,52,32,34,33,33,58,32,60,48,34,41,41,41,32,40,40,65,32,58,
+52,53,50,32,40,40,40,83,39,32,40,83,39,32,80,41,41,32,95,51,
+57,54,41,32,40,40,66,32,95,51,57,54,41,32,40,95,50,54,51,32,
+95,49,50,50,41,41,41,41,32,40,40,65,32,58,52,53,51,32,40,40,
+66,32,95,52,53,52,41,32,95,52,57,56,41,41,32,40,40,65,32,58,
+52,53,52,32,40,40,66,32,89,41,32,40,40,66,32,40,66,32,40,80,
+32,95,52,54,49,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,83,39,32,67,41,41,32,40,66,32,95,52,53,50,41,41,41,
+32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,67,39,32,95,52,
+54,51,41,41,41,32,40,40,67,39,32,66,41,32,95,52,54,50,41,41,
+41,41,41,41,32,40,40,65,32,58,52,53,53,32,40,40,80,32,40,95,
+50,52,32,34,108,97,115,116,58,32,91,93,34,41,41,32,40,40,40,67,
+39,32,83,41,32,85,41,32,40,90,32,40,90,32,95,52,53,53,41,41,
+41,41,41,32,40,40,65,32,58,52,53,54,32,40,40,80,32,40,95,50,
+52,32,34,105,110,105,116,58,32,91,93,34,41,41,32,40,40,66,32,40,
+83,32,40,85,32,95,52,54,49,41,41,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,40,67,39,32,66,41,32,95,52,54,50,
+41,32,95,52,53,54,41,41,41,41,41,41,32,40,40,65,32,58,52,53,
+55,32,40,40,66,32,95,52,53,56,41,32,95,50,48,50,41,41,32,40,
+40,65,32,58,52,53,56,32,40,40,66,32,89,41,32,40,40,66,32,40,
+66,32,40,80,32,95,49,50,52,41,41,41,32,40,40,66,32,40,67,39,
+32,40,83,39,32,95,49,50,48,41,41,41,32,95,52,51,52,41,41,41,
+41,32,40,40,65,32,58,52,53,57,32,40,40,66,32,89,41,32,40,40,
+66,32,40,66,32,40,83,32,95,52,54,50,41,41,41,32,40,67,32,66,
+41,41,41,41,32,40,40,65,32,58,52,54,48,32,40,40,66,32,89,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,83,32,40,85,32,
+95,52,54,49,41,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,83,39,32,40,83,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,40,83,39,32,66,41,41,32,40,40,66,32,
+40,66,32,40,67,39,32,67,39,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,67,39,41,41,41,32,95,52,49,54,41,41,41,41,32,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,95,52,54,50,41,41,41,41,
+41,32,40,66,32,40,40,83,39,32,66,41,32,95,52,54,51,41,41,41,
+41,41,41,32,40,40,65,32,58,52,54,49,32,75,41,32,40,40,65,32,
+58,52,54,50,32,79,41,32,40,40,65,32,58,52,54,51,32,40,40,67,
+32,83,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,52,54,50,
+41,41,32,40,67,32,95,52,54,51,41,41,41,41,32,40,40,65,32,58,
+52,54,52,32,40,40,40,83,39,32,95,50,48,49,41,32,40,40,66,32,
+40,67,32,40,40,67,32,83,39,41,32,40,40,80,32,95,49,50,53,41,
+32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,40,85,32,95,49,50,52,41,41,41,32,95,50,48,
+50,41,41,41,32,40,40,66,32,95,50,48,53,41,32,95,52,54,52,41,
+41,41,32,40,40,65,32,58,52,54,53,32,40,40,83,32,40,40,40,83,
+39,32,95,49,53,56,56,41,32,40,40,66,32,40,66,32,40,80,32,40,
+95,49,53,57,55,32,34,78,111,116,104,105,110,103,34,41,41,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,57,
+56,41,32,40,40,67,32,40,95,53,48,48,32,95,50,56,50,41,41,32,
+35,49,49,41,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,51,
+32,40,95,49,53,57,55,32,34,74,117,115,116,32,34,41,41,41,41,32,
+40,40,67,32,95,49,53,56,57,41,32,35,49,49,41,41,41,41,41,32,
+40,40,66,32,95,49,53,57,51,41,32,95,52,54,53,41,41,41,32,40,
+40,66,32,95,49,53,57,52,41,32,95,52,54,53,41,41,41,32,40,40,
+65,32,58,52,54,54,32,40,40,95,50,55,49,32,40,40,66,32,40,80,
+32,95,52,55,54,41,41,32,40,66,32,95,52,55,55,41,41,41,32,40,
+95,50,55,53,32,95,52,54,54,41,41,41,32,40,40,65,32,58,52,54,
+55,32,40,40,40,40,40,95,49,49,32,95,52,54,54,41,32,95,52,55,
+55,41,32,40,40,40,67,39,32,66,41,32,40,85,32,95,52,55,54,41,
+41,32,40,40,40,67,39,32,66,41,32,40,85,32,95,52,55,54,41,41,
+32,40,66,32,95,52,55,55,41,41,41,41,32,40,95,49,57,32,95,52,
+54,55,41,41,32,40,95,50,48,32,95,52,54,55,41,41,41,32,40,40,
+65,32,58,52,54,56,32,40,40,40,40,95,51,48,32,95,52,54,55,41,
+32,40,85,32,95,52,55,54,41,41,32,40,95,51,54,32,95,52,54,56,
+41,41,32,40,95,49,51,32,95,52,54,55,41,41,41,32,40,40,65,32,
+58,52,54,57,32,40,40,95,51,57,32,95,52,54,56,41,32,40,75,32,
+95,52,55,54,41,41,41,32,40,40,65,32,58,52,55,48,32,80,41,32,
+40,40,65,32,58,52,55,49,32,40,40,67,32,80,41,32,73,41,41,32,
+40,40,65,32,58,52,55,50,32,40,95,51,57,52,32,40,40,80,32,75,
+41,32,40,40,67,32,79,41,32,75,41,41,41,41,32,40,40,65,32,58,
+52,55,51,32,40,40,80,32,95,49,50,52,41,32,40,75,32,95,49,50,
+53,41,41,41,32,40,40,65,32,58,52,55,52,32,40,40,66,32,89,41,
+32,40,40,66,32,40,66,32,40,80,32,95,52,54,49,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,67,41,41,32,40,67,39,32,83,39,41,
+41,32,40,66,32,40,67,32,95,52,54,50,41,41,41,41,41,41,32,40,
+40,65,32,58,52,55,53,32,40,40,80,32,95,52,54,49,41,32,40,40,
+67,32,79,41,32,75,41,41,41,32,40,40,65,32,58,52,55,54,32,75,
+41,32,40,40,65,32,58,52,55,55,32,40,90,32,85,41,41,32,40,40,
+65,32,58,52,55,56,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,67,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,80,41,41,41,41,41,41,32,40,40,65,32,58,52,55,57,32,40,
+85,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,
+41,41,41,41,41,32,40,40,65,32,58,52,56,48,32,40,85,32,40,75,
+32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,
+41,32,40,40,65,32,58,52,56,49,32,40,85,32,40,75,32,40,75,32,
+40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,32,40,40,
+65,32,58,52,56,50,32,40,85,32,40,75,32,40,75,32,40,75,32,40,
+90,32,40,90,32,75,41,41,41,41,41,41,41,32,40,40,65,32,58,52,
+56,51,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,
+32,75,41,41,41,41,41,41,41,32,40,40,65,32,58,52,56,52,32,40,
+85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,
+41,41,41,41,41,32,40,40,65,32,58,52,56,53,32,40,85,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,65,41,41,41,41,41,41,
+41,32,40,40,65,32,58,52,56,54,32,40,75,32,40,110,111,68,101,102,
+97,117,108,116,32,34,78,117,109,46,43,34,41,41,41,32,40,40,65,32,
+58,52,56,55,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+78,117,109,46,45,34,41,41,41,32,40,40,65,32,58,52,56,56,32,40,
+75,32,40,110,111,68,101,102,97,117,108,116,32,34,78,117,109,46,42,34,
+41,41,41,32,40,40,65,32,58,52,56,57,32,40,40,83,32,95,52,56,
+48,41,32,40,40,67,32,95,52,56,53,41,32,40,95,51,53,57,32,35,
+48,41,41,41,41,32,40,40,65,32,58,52,57,48,32,40,75,32,40,110,
+111,68,101,102,97,117,108,116,32,34,78,117,109,46,97,98,115,34,41,41,
+41,32,40,40,65,32,58,52,57,49,32,40,75,32,40,110,111,68,101,102,
+97,117,108,116,32,34,78,117,109,46,115,105,103,110,117,109,34,41,41,41,
+32,40,40,65,32,58,52,57,50,32,40,75,32,40,110,111,68,101,102,97,
+117,108,116,32,34,78,117,109,46,102,114,111,109,73,110,116,101,103,101,114,
+34,41,41,41,32,40,40,65,32,58,52,57,51,32,40,40,66,32,67,41,
+32,95,52,56,48,41,41,32,40,40,65,32,58,52,57,52,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,67,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,41,41,41,41,32,40,40,65,32,58,52,57,53,
+32,40,85,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,52,57,54,
+32,40,85,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,52,57,55,
+32,40,85,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,52,57,56,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,52,57,57,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,48,48,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,48,49,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,48,50,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,65,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,48,51,
+32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,95,52,57,56,41,32,95,53,49,54,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,66,32,67,41,32,95,52,57,
+56,41,41,32,95,53,49,52,41,41,32,95,53,49,53,41,41,41,32,40,
+40,65,32,58,53,48,52,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,
+67,41,32,95,52,57,56,41,41,32,95,49,50,53,41,41,32,95,49,50,
+52,41,41,32,40,40,65,32,58,53,48,53,32,40,75,32,40,110,111,68,
+101,102,97,117,108,116,32,34,79,114,100,46,60,61,34,41,41,41,32,40,
+40,65,32,58,53,48,54,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,95,52,57,56,
+41,32,95,49,50,53,41,41,32,95,49,50,52,41,41,32,40,40,65,32,
+58,53,48,55,32,95,52,57,56,41,32,40,40,65,32,58,53,48,56,32,
+40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,
+40,83,39,32,67,41,41,32,95,52,57,56,41,32,73,41,41,32,73,41,
+41,32,40,40,65,32,58,53,48,57,32,40,40,40,67,39,32,40,83,39,
+32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,95,
+52,57,56,41,32,73,41,41,32,73,41,41,32,40,40,65,32,58,53,49,
+48,32,40,40,95,50,48,49,32,40,40,40,67,39,32,83,41,32,40,40,
+67,32,40,40,67,32,83,39,41,32,40,40,67,32,40,40,80,32,95,49,
+50,53,41,32,95,49,50,52,41,41,32,95,49,50,52,41,41,41,32,40,
+40,67,32,40,40,80,32,95,49,50,52,41,32,95,49,50,53,41,41,32,
+95,49,50,52,41,41,41,32,40,40,67,32,40,40,80,32,95,49,50,52,
+41,32,95,49,50,52,41,41,32,95,49,50,53,41,41,41,32,40,95,50,
+48,53,32,95,53,49,48,41,41,41,32,40,40,65,32,58,53,49,49,32,
+40,40,67,32,40,40,80,32,95,49,50,52,41,32,95,49,50,53,41,41,
+32,95,49,50,52,41,41,32,40,40,65,32,58,53,49,50,32,40,40,40,
+95,49,53,56,56,32,40,75,32,40,40,67,32,40,40,80,32,40,95,49,
+53,57,55,32,34,76,84,34,41,41,32,40,95,49,53,57,55,32,34,69,
+81,34,41,41,41,32,40,95,49,53,57,55,32,34,71,84,34,41,41,41,
+41,32,40,95,49,53,57,51,32,95,53,49,50,41,41,32,40,95,49,53,
+57,52,32,95,53,49,50,41,41,41,32,40,40,65,32,58,53,49,51,32,
+40,40,95,49,50,54,32,95,53,49,52,41,32,95,53,49,54,41,41,32,
+40,40,65,32,58,53,49,52,32,40,90,32,75,41,41,32,40,40,65,32,
+58,53,49,53,32,40,75,32,75,41,41,32,40,40,65,32,58,53,49,54,
+32,40,75,32,65,41,41,32,40,40,65,32,58,53,49,55,32,40,40,40,
+83,39,32,95,50,48,49,41,32,40,40,66,32,40,67,32,66,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,40,40,40,83,
+39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,
+32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,49,50,49,
+41,41,41,32,95,50,48,50,41,41,41,32,95,50,48,50,41,41,41,41,
+32,40,40,66,32,95,50,48,53,41,32,95,53,49,55,41,41,41,32,40,
+40,65,32,58,53,49,56,32,40,40,83,32,40,40,83,32,40,40,83,32,
+40,40,83,32,40,40,83,32,40,40,83,32,40,40,40,83,39,32,95,52,
+57,52,41,32,40,40,66,32,95,53,49,55,41,32,40,40,66,32,40,85,
+32,75,41,41,32,40,40,66,32,95,51,54,53,41,32,40,85,32,75,41,
+41,41,41,41,32,40,40,66,32,95,53,48,51,41,32,40,40,66,32,95,
+53,49,56,41,32,40,40,40,83,39,32,80,41,32,40,85,32,75,41,41,
+32,40,85,32,65,41,41,41,41,41,41,32,40,40,66,32,40,67,32,66,
+41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,40,
+40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,
+32,40,40,40,83,39,32,66,41,32,40,40,66,32,67,39,41,32,40,40,
+66,32,95,52,57,55,41,32,40,85,32,65,41,41,41,41,32,40,40,66,
+32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,40,40,
+66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,41,41,41,32,
+40,40,66,32,67,41,32,40,40,66,32,95,52,56,49,41,32,40,40,66,
+32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,40,85,
+32,75,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,67,32,
+66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,
+40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,
+41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,95,52,57,56,41,32,40,85,32,65,41,41,41,41,32,40,40,
+66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,40,
+40,66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,41,41,41,
+32,40,40,66,32,67,41,32,40,40,66,32,95,52,56,49,41,32,40,40,
+66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,40,
+85,32,75,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,67,
+32,66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,
+32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,
+39,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,67,39,41,32,
+40,40,66,32,95,52,57,57,41,32,40,85,32,65,41,41,41,41,32,40,
+40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,
+40,40,66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,41,41,
+41,32,40,40,66,32,67,41,32,40,40,66,32,95,52,56,49,41,32,40,
+40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,
+40,85,32,75,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+67,32,66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,
+41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+66,39,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,67,39,41,
+32,40,40,66,32,95,53,48,48,41,32,40,85,32,65,41,41,41,41,32,
+40,40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,
+32,40,40,66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,41,
+41,41,32,40,40,66,32,67,41,32,40,40,66,32,95,52,56,49,41,32,
+40,40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,
+32,40,85,32,75,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+95,53,48,56,41,32,40,40,66,32,95,53,49,56,41,32,40,40,40,83,
+39,32,80,41,32,40,85,32,75,41,41,32,40,85,32,65,41,41,41,41,
+41,41,32,40,40,66,32,95,53,48,57,41,32,40,40,66,32,95,53,49,
+56,41,32,40,40,40,83,39,32,80,41,32,40,85,32,75,41,41,32,40,
+85,32,65,41,41,41,41,41,41,32,40,40,65,32,58,53,49,57,32,40,
+40,83,32,40,40,83,32,40,40,83,32,40,40,83,32,40,40,83,32,40,
+40,40,83,39,32,95,52,55,56,41,32,40,40,66,32,40,67,32,66,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,40,40,
+83,32,40,40,40,83,39,32,67,39,41,32,40,40,66,32,83,39,41,32,
+40,40,66,32,67,39,41,32,40,40,66,32,83,39,41,32,95,53,50,53,
+41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,66,39,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+67,39,41,32,40,40,66,32,95,52,55,57,41,32,40,40,66,32,40,85,
+32,65,41,41,32,95,51,54,53,41,41,41,41,32,40,40,66,32,95,52,
+56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,
+41,41,41,41,32,40,40,66,32,67,41,32,40,40,66,32,95,52,56,49,
+41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,
+41,41,41,32,40,40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,
+32,65,41,41,32,95,51,54,53,41,41,41,41,41,41,32,40,40,66,32,
+40,67,32,66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,
+41,41,32,40,40,83,32,40,40,40,83,39,32,67,39,41,32,40,40,66,
+32,83,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,83,39,41,
+32,95,53,50,53,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,
+66,41,41,32,40,40,66,32,66,39,41,32,40,40,40,83,39,32,66,41,
+32,40,40,66,32,67,39,41,32,40,40,66,32,95,52,56,48,41,32,40,
+40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,41,32,40,
+40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,
+95,51,54,53,41,41,41,41,41,32,40,40,66,32,67,41,32,40,40,66,
+32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,
+54,53,41,41,41,41,41,41,32,40,40,66,32,95,52,56,49,41,32,40,
+40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,41,41,41,
+41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,40,40,67,
+39,32,66,41,32,66,41,41,32,40,40,40,83,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,41,32,40,
+40,40,83,39,32,66,41,32,40,66,39,32,95,53,50,53,41,41,32,40,
+40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,
+95,51,54,53,41,41,41,41,41,32,40,40,66,32,95,52,56,49,41,32,
+40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,41,41,
+41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,95,53,50,
+56,41,41,32,40,40,66,32,95,52,56,50,41,32,40,40,66,32,40,85,
+32,65,41,41,32,95,51,54,53,41,41,41,41,41,41,32,40,40,66,32,
+85,41,32,40,40,66,32,40,66,32,95,53,50,56,41,41,32,40,40,66,
+32,95,52,56,51,41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,
+54,53,41,41,41,41,41,41,32,40,40,66,32,85,41,32,40,40,66,32,
+90,41,32,40,40,40,83,39,32,40,67,39,32,95,53,50,56,41,41,32,
+40,40,66,32,95,52,56,52,41,32,40,40,66,32,40,85,32,65,41,41,
+32,95,51,54,53,41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,
+32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,32,40,
+95,51,53,57,32,35,49,41,41,41,41,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,95,53,50,56,41,41,32,40,40,66,32,95,52,56,53,
+41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,
+32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,32,
+65,41,41,32,95,51,54,53,41,41,32,40,95,51,53,57,32,35,49,41,
+41,41,41,41,32,40,40,65,32,58,53,50,48,32,40,40,83,32,40,40,
+83,32,40,40,40,83,39,32,95,50,53,50,41,32,40,40,66,32,95,53,
+49,57,41,32,40,85,32,75,41,41,41,32,40,40,66,32,40,67,32,66,
+41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,40,
+40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,
+32,40,40,40,83,39,32,66,41,32,40,40,66,32,67,39,41,32,40,40,
+66,32,95,53,50,52,41,32,40,85,32,75,41,41,41,41,32,40,40,66,
+32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,32,40,40,
+66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,41,41,41,32,
+40,40,66,32,95,52,56,49,41,32,40,40,66,32,40,85,32,65,41,41,
+32,40,40,66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,85,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,
+41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,95,50,48,50,41,
+32,40,40,66,32,40,85,32,75,41,41,32,40,40,66,32,95,51,54,53,
+41,32,40,85,32,75,41,41,41,41,41,32,40,40,40,67,39,32,95,52,
+56,53,41,32,40,40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,
+51,54,53,41,32,40,85,32,75,41,41,41,41,32,40,95,51,53,57,32,
+35,48,41,41,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,40,
+67,39,32,40,83,39,32,83,39,41,41,32,40,40,40,83,39,32,67,41,
+32,40,40,66,32,95,52,57,55,41,32,40,85,32,65,41,41,41,32,40,
+40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,
+41,32,40,40,66,32,95,51,54,53,41,32,40,85,32,75,41,41,41,41,
+32,40,95,51,53,57,32,35,48,41,41,41,41,32,40,67,32,95,53,50,
+56,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,
+39,32,95,53,50,56,41,41,32,40,40,66,32,95,52,56,50,41,32,40,
+40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,
+40,85,32,75,41,41,41,41,41,41,32,40,40,66,32,95,52,56,50,41,
+32,40,40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,
+41,32,40,85,32,75,41,41,41,41,41,41,41,41,32,40,95,50,52,32,
+34,68,97,116,97,46,82,97,116,105,111,46,114,101,99,105,112,58,32,100,
+105,118,105,115,105,111,110,32,98,121,32,48,34,41,41,41,41,41,32,40,
+40,66,32,85,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,40,40,83,39,32,66,41,32,40,40,66,32,95,53,50,52,41,32,40,
+85,32,75,41,41,41,32,40,40,66,32,95,52,56,53,41,32,40,40,66,
+32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,40,85,
+32,75,41,41,41,41,41,41,32,40,40,66,32,95,52,56,53,41,32,40,
+40,66,32,40,85,32,65,41,41,32,40,40,66,32,95,51,54,53,41,32,
+40,85,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,50,
+49,32,40,40,83,32,40,40,40,83,39,32,95,49,53,56,56,41,32,40,
+40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,40,67,39,32,66,
+41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,40,40,66,32,
+95,49,53,57,56,41,32,40,40,67,32,40,95,52,57,57,32,95,50,56,
+50,41,41,32,35,55,41,41,41,41,41,41,32,40,40,40,83,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,50,54,51,41,41,
+32,40,40,67,32,95,49,53,56,57,41,32,35,56,41,41,41,32,40,40,
+66,32,40,66,32,40,95,50,54,51,32,40,95,49,53,57,55,32,34,32,
+37,32,34,41,41,41,41,32,40,40,67,32,95,49,53,56,57,41,32,35,
+56,41,41,41,41,41,41,32,40,40,66,32,95,49,53,57,51,41,32,95,
+53,50,49,41,41,41,32,40,40,66,32,95,49,53,57,52,41,32,95,53,
+50,49,41,41,41,32,40,40,65,32,58,53,50,50,32,40,40,95,53,50,
+56,32,40,40,95,52,56,53,32,95,51,48,56,41,32,40,95,51,53,57,
+32,35,49,41,41,41,32,40,40,95,52,56,53,32,95,51,48,56,41,32,
+40,95,51,53,57,32,35,48,41,41,41,41,32,40,40,65,32,58,53,50,
+51,32,40,40,95,53,50,56,32,40,40,95,52,56,53,32,95,51,48,56,
+41,32,40,95,51,53,57,32,35,48,41,41,41,32,40,40,95,52,56,53,
+32,95,51,48,56,41,32,40,95,51,53,57,32,35,48,41,41,41,41,32,
+40,40,65,32,58,53,50,52,32,40,40,83,32,40,40,40,83,39,32,67,
+39,41,32,40,40,66,32,83,39,41,32,95,53,50,53,41,41,32,40,40,
+40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,95,52,56,49,
+41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,
+32,40,40,66,32,95,52,56,52,41,32,40,40,66,32,40,85,32,65,41,
+41,32,95,51,54,53,41,41,41,41,41,32,40,40,66,32,95,52,56,51,
+41,32,40,40,66,32,40,85,32,65,41,41,32,95,51,54,53,41,41,41,
+41,32,40,40,65,32,58,53,50,53,32,40,40,40,67,39,32,40,67,39,
+32,67,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,41,
+32,40,40,40,83,39,32,67,41,32,40,40,66,32,95,50,48,50,41,32,
+40,40,66,32,40,85,32,75,41,41,32,95,51,54,53,41,41,41,32,40,
+40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,40,85,32,65,41,
+41,32,95,51,54,53,41,41,32,40,95,51,53,57,32,35,48,41,41,41,
+41,41,32,40,40,40,83,39,32,83,41,32,40,40,40,83,39,32,40,67,
+39,32,83,39,41,41,32,40,40,66,32,40,66,32,40,83,39,32,95,53,
+50,56,41,41,41,32,95,51,54,54,41,41,32,95,51,54,54,41,41,32,
+95,51,56,48,41,41,41,32,40,95,50,52,32,34,68,97,116,97,46,82,
+97,116,105,111,46,37,58,32,48,32,100,101,110,111,109,105,110,97,116,111,
+114,34,41,41,41,32,40,40,65,32,58,53,50,54,32,40,85,32,75,41,
+41,32,40,40,65,32,58,53,50,55,32,40,85,32,65,41,41,32,40,40,
+65,32,58,53,50,56,32,40,40,40,83,39,32,66,41,32,115,101,113,41,
+32,40,40,66,32,40,83,32,115,101,113,41,41,32,80,41,41,41,32,40,
+40,65,32,58,53,50,57,32,40,40,67,32,95,53,50,56,41,32,40,95,
+51,53,57,32,35,49,41,41,41,32,40,40,65,32,58,53,51,48,32,95,
+53,50,56,41,32,40,40,65,32,58,53,51,49,32,85,41,32,40,40,65,
+32,58,53,51,50,32,40,85,32,73,41,41,32,40,40,65,32,58,53,51,
+51,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,82,101,97,
+108,46,116,111,82,97,116,105,111,110,97,108,34,41,41,41,32,40,40,65,
+32,58,53,51,52,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,67,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,67,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,41,
+32,80,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,53,51,53,32,40,85,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,53,51,54,32,40,85,32,40,75,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,51,
+55,32,40,85,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,53,51,56,32,40,85,32,40,75,32,40,75,32,40,
+75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,51,57,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,53,52,48,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,53,52,49,32,40,85,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,52,
+50,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,53,52,51,32,40,85,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,52,52,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,
+75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,53,52,53,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,53,52,54,32,40,85,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,52,
+55,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,53,52,56,32,40,85,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,52,57,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+65,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,53,53,48,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,
+34,82,101,97,108,70,108,111,97,116,46,102,108,111,97,116,82,97,100,105,
+120,34,41,41,41,32,40,40,65,32,58,53,53,49,32,40,75,32,40,110,
+111,68,101,102,97,117,108,116,32,34,82,101,97,108,70,108,111,97,116,46,
+102,108,111,97,116,68,105,103,105,116,115,34,41,41,41,32,40,40,65,32,
+58,53,53,50,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,
+82,101,97,108,70,108,111,97,116,46,102,108,111,97,116,82,97,110,103,101,
+34,41,41,41,32,40,40,65,32,58,53,53,51,32,40,75,32,40,110,111,
+68,101,102,97,117,108,116,32,34,82,101,97,108,70,108,111,97,116,46,100,
+101,99,111,100,101,70,108,111,97,116,34,41,41,41,32,40,40,65,32,58,
+53,53,52,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,82,
+101,97,108,70,108,111,97,116,46,101,110,99,111,100,101,70,108,111,97,116,
+34,41,41,41,32,40,40,65,32,58,53,53,53,32,40,40,40,83,39,32,
+83,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,
+32,40,66,32,40,83,32,40,40,40,67,39,32,40,95,50,48,50,32,95,
+51,48,53,41,41,32,40,85,32,75,41,41,32,40,95,51,53,57,32,35,
+48,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,
+95,52,55,57,32,95,50,55,55,41,41,32,40,85,32,65,41,41,41,41,
+32,95,53,51,55,41,41,41,32,35,48,41,41,32,95,53,51,57,41,41,
+32,40,40,65,32,58,53,53,54,32,40,40,83,32,40,40,40,83,39,32,
+83,39,41,32,95,53,52,48,41,32,40,40,40,67,39,32,67,41,32,95,
+53,51,57,41,32,75,41,41,41,32,40,40,66,32,40,66,32,40,95,52,
+56,50,32,95,50,55,55,41,41,41,32,95,53,51,55,41,41,41,32,40,
+40,65,32,58,53,53,55,32,40,40,40,67,39,32,67,41,32,40,40,66,
+32,40,40,83,39,32,83,39,41,32,40,40,67,32,61,61,41,32,35,48,
+41,41,41,32,40,40,40,83,39,32,40,67,39,32,83,41,41,32,40,40,
+40,83,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,66,41,32,
+40,40,66,32,40,83,39,32,67,39,41,41,32,40,40,66,32,40,66,32,
+67,39,41,41,32,40,40,40,83,39,32,40,83,39,32,95,49,50,48,41,
+41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,95,50,48,50,41,
+32,40,40,66,32,95,52,57,53,41,32,40,40,66,32,40,85,32,40,75,
+32,75,41,41,41,32,95,53,51,53,41,41,41,41,32,40,40,40,67,39,
+32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,
+32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,
+40,95,51,53,57,32,35,48,41,41,41,41,32,40,40,40,83,39,32,40,
+83,39,32,95,49,50,48,41,41,32,95,53,52,52,41,32,95,53,52,53,
+41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,
+66,39,32,40,40,40,67,39,32,83,39,41,32,95,53,52,48,41,32,40,
+85,32,75,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,40,95,52,55,57,32,95,50,55,55,41,41,32,
+40,85,32,65,41,41,41,41,41,41,32,40,40,66,32,40,67,39,32,40,
+67,39,32,95,53,54,52,41,41,41,32,40,40,66,32,40,66,32,40,40,
+67,39,32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,40,83,
+39,32,40,95,52,56,48,32,95,50,55,55,41,41,32,40,85,32,65,41,
+41,32,40,85,32,75,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+40,95,52,56,49,32,95,50,55,55,41,32,40,40,95,52,56,53,32,95,
+50,55,55,41,32,40,95,51,53,57,32,35,52,41,41,41,41,41,32,95,
+53,51,55,41,41,41,41,41,41,41,32,73,41,41,32,95,53,51,57,41,
+41,32,95,53,51,56,41,41,41,32,73,41,41,32,40,40,65,32,58,53,
+53,56,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,82,101,
+97,108,70,108,111,97,116,46,105,115,78,97,78,34,41,41,41,32,40,40,
+65,32,58,53,53,57,32,40,75,32,40,110,111,68,101,102,97,117,108,116,
+32,34,82,101,97,108,70,108,111,97,116,46,105,115,73,110,102,105,110,105,
+116,101,34,41,41,41,32,40,40,65,32,58,53,54,48,32,40,75,32,40,
+110,111,68,101,102,97,117,108,116,32,34,82,101,97,108,70,108,111,97,116,
+46,105,115,68,101,110,111,114,109,97,108,105,122,101,100,34,41,41,41,32,
+40,40,65,32,58,53,54,49,32,40,75,32,40,110,111,68,101,102,97,117,
+108,116,32,34,82,101,97,108,70,108,111,97,116,46,105,115,78,101,103,97,
+116,105,118,101,90,101,114,111,34,41,41,41,32,40,40,65,32,58,53,54,
+50,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,82,101,97,
+108,70,108,111,97,116,46,105,115,73,69,69,69,34,41,41,41,32,40,40,
+65,32,58,53,54,51,32,40,40,40,83,39,32,40,83,39,32,83,41,41,
+32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,40,40,
+83,39,32,67,41,32,40,40,66,32,95,52,57,57,41,32,40,40,66,32,
+40,85,32,40,75,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,
+40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,
+32,40,40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,
+41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,
+40,83,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,40,83,
+39,32,83,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,
+67,39,32,95,49,50,49,41,41,32,40,40,40,83,39,32,67,41,32,40,
+40,66,32,95,50,48,50,41,32,40,40,66,32,95,52,57,53,41,32,40,
+40,66,32,40,85,32,40,75,32,75,41,41,41,32,95,53,51,53,41,41,
+41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,95,
+50,53,51,41,32,40,40,66,32,40,85,32,40,90,32,75,41,41,41,32,
+95,53,51,53,41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,
+41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,95,52,57,57,41,
+32,40,40,66,32,40,85,32,40,75,32,75,41,41,41,32,95,53,51,53,
+41,41,41,32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,
+95,50,53,51,41,32,40,40,66,32,40,85,32,40,90,32,75,41,41,41,
+32,95,53,51,53,41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,
+41,41,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,
+83,39,32,40,83,39,32,83,41,41,32,40,40,40,83,39,32,66,41,32,
+40,40,66,32,40,67,39,32,95,49,50,49,41,41,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,95,52,57,55,41,32,40,40,66,32,40,85,
+32,40,75,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,40,40,
+67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,
+40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,
+41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,83,
+39,32,67,41,32,40,40,66,32,95,52,57,57,41,32,40,40,66,32,40,
+85,32,40,75,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,40,
+40,67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,
+40,40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,
+41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,83,41,41,32,40,40,40,83,39,32,40,83,39,
+32,83,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,95,
+49,50,48,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+40,67,39,32,95,49,50,49,41,41,32,40,40,40,83,39,32,67,41,32,
+40,40,66,32,95,52,57,56,41,32,40,40,66,32,40,85,32,40,75,32,
+75,41,41,41,32,95,53,51,53,41,41,41,32,40,40,40,67,39,32,95,
+52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,32,40,
+85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,95,
+51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,83,39,32,67,41,
+32,40,40,66,32,95,52,57,55,41,32,40,40,66,32,40,85,32,40,75,
+32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,40,40,67,39,32,
+95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,32,
+40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,
+95,51,53,57,32,35,48,41,41,41,41,41,32,40,40,40,83,39,32,40,
+83,39,32,40,83,39,32,95,49,50,48,41,41,41,32,40,40,40,83,39,
+32,66,41,32,40,40,66,32,40,67,39,32,95,49,50,49,41,41,32,40,
+40,40,83,39,32,67,41,32,40,40,66,32,95,52,57,55,41,32,40,40,
+66,32,40,85,32,40,75,32,75,41,41,41,32,95,53,51,53,41,41,41,
+32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,
+51,41,32,40,40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,
+51,53,41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,
+95,53,52,55,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+40,67,39,32,95,49,50,49,41,41,32,95,53,52,55,41,41,32,95,53,
+52,55,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,67,41,41,
+32,40,40,40,83,39,32,83,41,32,40,40,40,83,39,32,40,67,39,32,
+83,39,41,41,32,40,40,66,32,40,66,32,95,49,50,49,41,41,32,40,
+40,40,83,39,32,67,41,32,40,40,66,32,95,50,48,50,41,32,40,40,
+66,32,95,52,57,53,41,32,40,40,66,32,40,85,32,40,75,32,75,41,
+41,41,32,95,53,51,53,41,41,41,41,32,40,40,40,67,39,32,95,52,
+56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,32,40,85,
+32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,95,51,
+53,57,32,35,48,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,
+32,95,49,50,48,41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,
+32,95,52,57,55,41,32,40,40,66,32,40,85,32,40,75,32,75,41,41,
+41,32,95,53,51,53,41,41,41,32,40,40,40,67,39,32,95,52,56,53,
+41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,32,40,85,32,40,
+90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,95,51,53,57,
+32,35,48,41,41,41,41,32,95,53,52,55,41,41,41,32,40,40,40,67,
+39,32,40,83,39,32,67,41,41,32,40,40,40,83,39,32,40,83,39,32,
+83,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,
+32,95,49,50,49,41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,
+32,95,50,48,50,41,32,40,40,66,32,95,52,57,53,41,32,40,40,66,
+32,40,85,32,40,75,32,75,41,41,41,32,95,53,51,53,41,41,41,41,
+32,40,40,40,67,39,32,95,52,56,53,41,32,40,40,66,32,95,50,53,
+51,41,32,40,40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,
+51,53,41,41,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,
+40,40,40,83,39,32,67,41,32,40,40,66,32,95,50,48,50,41,32,40,
+40,66,32,95,52,57,53,41,32,40,40,66,32,40,85,32,40,75,32,75,
+41,41,41,32,95,53,51,53,41,41,41,41,32,40,40,40,67,39,32,95,
+52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,32,40,
+85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,40,95,
+51,53,57,32,35,48,41,41,41,41,41,32,40,40,66,32,67,41,32,40,
+40,66,32,95,52,55,57,41,32,40,40,66,32,95,50,53,51,41,32,40,
+40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,
+41,41,41,41,32,73,41,41,41,32,40,40,66,32,95,50,48,56,41,32,
+40,40,66,32,40,85,32,40,75,32,65,41,41,41,32,95,53,51,53,41,
+41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,
+66,32,95,52,56,50,41,32,40,40,66,32,95,50,53,51,41,32,40,40,
+66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,
+41,41,32,40,40,40,83,39,32,66,41,32,95,53,52,57,41,32,40,40,
+66,32,95,52,56,50,41,32,40,40,66,32,95,50,53,51,41,32,40,40,
+66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,
+41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,
+40,40,83,39,32,95,52,55,57,41,32,40,40,66,32,95,50,53,51,41,
+32,40,40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,
+41,41,41,32,40,40,66,32,95,50,48,56,41,32,40,40,66,32,40,85,
+32,40,75,32,65,41,41,41,32,95,53,51,53,41,41,41,41,41,32,40,
+40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,49,57,
+41,32,40,40,66,32,40,85,32,40,75,32,65,41,41,41,32,95,53,51,
+53,41,41,41,41,32,40,40,66,32,95,50,53,52,41,32,40,40,66,32,
+40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,41,41,
+41,41,32,40,40,83,32,40,40,40,83,39,32,95,50,53,52,41,32,40,
+40,66,32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,
+32,40,40,66,32,95,50,48,56,41,32,40,40,66,32,40,85,32,40,75,
+32,65,41,41,41,32,95,53,51,53,41,41,41,41,32,40,40,40,67,39,
+32,95,52,56,53,41,32,40,40,66,32,95,50,53,51,41,32,40,40,66,
+32,40,85,32,40,90,32,75,41,41,41,32,95,53,51,53,41,41,41,32,
+40,95,51,53,57,32,35,50,41,41,41,41,41,41,32,40,40,40,83,39,
+32,66,41,32,40,66,39,32,40,40,66,32,95,50,49,57,41,32,40,40,
+66,32,40,85,32,40,75,32,65,41,41,41,32,95,53,51,53,41,41,41,
+41,32,40,40,66,32,95,50,53,52,41,32,40,40,66,32,40,85,32,40,
+90,32,75,41,41,41,32,95,53,51,53,41,41,41,41,41,32,40,40,65,
+32,58,53,54,52,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,
+95,53,48,49,32,95,50,56,50,41,41,32,40,95,52,56,50,32,95,50,
+55,55,41,41,41,32,40,95,53,48,50,32,95,50,56,50,41,41,41,32,
+40,40,65,32,58,53,54,53,32,40,85,32,75,41,41,32,40,40,65,32,
+58,53,54,54,32,40,85,32,65,41,41,32,40,40,65,32,58,53,54,55,
+32,40,40,40,83,39,32,95,50,48,49,41,32,40,40,66,32,40,67,32,
+66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,32,
+40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+95,49,50,49,41,41,41,32,40,40,66,32,95,50,48,50,41,32,40,85,
+32,75,41,41,41,41,41,32,40,40,66,32,95,50,48,50,41,32,40,85,
+32,65,41,41,41,41,41,41,32,40,40,66,32,95,50,48,53,41,32,40,
+40,66,32,95,53,54,55,41,32,40,40,40,83,39,32,80,41,32,40,85,
+32,75,41,41,32,40,85,32,65,41,41,41,41,41,41,32,40,40,65,32,
+58,53,54,56,32,40,40,40,83,39,32,95,50,48,49,41,32,40,40,66,
+32,40,67,32,66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,
+40,66,39,32,66,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,
+40,66,32,40,66,32,40,66,32,95,49,50,49,41,41,41,32,40,40,66,
+32,95,50,48,50,41,32,40,85,32,40,90,32,75,41,41,41,41,41,41,
+41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,95,49,50,49,41,41,41,32,40,40,66,32,95,50,48,50,41,
+32,40,85,32,40,75,32,75,41,41,41,41,41,41,32,40,40,66,32,95,
+50,48,50,41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,41,
+32,40,40,66,32,95,50,48,53,41,32,40,40,66,32,95,53,54,56,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,
+85,32,40,90,32,75,41,41,41,32,40,85,32,40,75,32,75,41,41,41,
+41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,32,40,40,65,
+32,58,53,54,57,32,40,40,40,83,39,32,95,50,48,49,41,32,40,40,
+66,32,40,67,32,66,41,41,32,40,40,66,32,40,40,67,39,32,66,41,
+32,40,66,39,32,40,66,39,32,66,41,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,
+32,66,39,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,41,
+32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,
+66,39,41,41,32,40,40,66,32,40,66,32,40,66,32,95,49,50,49,41,
+41,41,32,40,40,66,32,95,50,48,50,41,32,40,85,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,
+32,40,66,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,
+66,39,41,41,32,40,40,66,32,40,66,32,40,66,32,95,49,50,49,41,
+41,41,32,40,40,66,32,95,50,48,50,41,32,40,85,32,40,75,32,40,
+90,32,75,41,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,95,49,50,49,41,41,41,
+32,40,40,66,32,95,50,48,50,41,32,40,85,32,40,75,32,40,75,32,
+75,41,41,41,41,41,41,41,32,40,40,66,32,95,50,48,50,41,32,40,
+85,32,40,75,32,40,75,32,65,41,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,95,50,48,53,41,32,40,40,66,32,95,53,54,57,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,80,41,32,40,85,32,40,90,32,40,90,32,75,41,41,41,
+41,32,40,85,32,40,75,32,40,90,32,75,41,41,41,41,41,32,40,85,
+32,40,75,32,40,75,32,75,41,41,41,41,41,32,40,85,32,40,75,32,
+40,75,32,65,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,55,
+48,32,40,40,40,95,49,53,56,56,32,40,75,32,40,85,32,40,95,49,
+53,57,55,32,34,40,41,34,41,41,41,41,32,40,95,49,53,57,51,32,
+95,53,55,48,41,41,32,40,95,49,53,57,52,32,95,53,55,48,41,41,
+41,32,40,40,65,32,58,53,55,49,32,40,40,83,32,40,40,40,83,39,
+32,95,49,53,56,56,41,32,40,90,32,40,40,66,32,85,41,32,40,40,
+66,32,40,66,32,40,66,32,40,95,49,53,57,56,32,95,49,50,53,41,
+41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,95,50,54,51,41,41,32,40,40,40,67,39,32,95,49,
+53,56,57,41,32,40,85,32,75,41,41,32,35,48,41,41,41,32,40,40,
+66,32,40,66,32,40,95,50,54,51,32,40,95,49,53,57,55,32,40,40,
+79,32,35,52,52,41,32,75,41,41,41,41,41,32,40,40,40,67,39,32,
+95,49,53,56,57,41,32,40,85,32,65,41,41,32,35,48,41,41,41,41,
+41,41,41,32,40,40,66,32,95,49,53,57,51,41,32,40,40,66,32,95,
+53,55,49,41,32,40,40,40,83,39,32,80,41,32,40,85,32,75,41,41,
+32,40,85,32,65,41,41,41,41,41,41,32,40,40,66,32,95,49,53,57,
+52,41,32,40,40,66,32,95,53,55,49,41,32,40,40,40,83,39,32,80,
+41,32,40,85,32,75,41,41,32,40,85,32,65,41,41,41,41,41,41,32,
+40,40,65,32,58,53,55,50,32,40,40,83,32,40,40,40,83,39,32,95,
+49,53,56,56,41,32,40,90,32,40,40,66,32,85,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,95,49,53,57,56,32,95,49,50,53,
+41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,95,50,54,51,41,
+41,32,40,40,40,67,39,32,95,49,53,56,57,41,32,40,85,32,40,90,
+32,75,41,41,41,32,35,48,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,95,50,54,51,32,40,95,49,53,57,55,32,40,40,79,32,
+35,52,52,41,32,75,41,41,41,41,41,41,32,40,40,40,83,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,50,54,51,41,41,
+32,40,40,40,67,39,32,95,49,53,56,57,41,32,40,85,32,40,75,32,
+75,41,41,41,32,35,48,41,41,41,32,40,40,66,32,40,66,32,40,95,
+50,54,51,32,40,95,49,53,57,55,32,40,40,79,32,35,52,52,41,32,
+75,41,41,41,41,41,32,40,40,40,67,39,32,95,49,53,56,57,41,32,
+40,85,32,40,75,32,65,41,41,41,32,35,48,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,95,49,53,57,51,41,32,40,40,66,32,95,53,
+55,50,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,
+41,32,40,85,32,40,90,32,75,41,41,41,32,40,85,32,40,75,32,75,
+41,41,41,41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,32,
+40,40,66,32,95,49,53,57,52,41,32,40,40,66,32,95,53,55,50,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,
+85,32,40,90,32,75,41,41,41,32,40,85,32,40,75,32,75,41,41,41,
+41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,32,40,40,65,
+32,58,53,55,51,32,40,40,83,32,40,40,40,83,39,32,95,49,53,56,
+56,41,32,40,90,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,95,49,53,57,56,32,95,49,50,53,
+41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,
+32,40,40,66,32,66,39,41,32,40,40,66,32,66,39,41,32,40,40,66,
+32,40,66,32,95,50,54,51,41,41,32,40,40,40,67,39,32,95,49,53,
+56,57,41,32,40,85,32,40,90,32,40,90,32,75,41,41,41,41,32,35,
+48,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,95,50,54,51,32,40,95,49,53,57,55,32,40,40,79,32,35,52,52,
+41,32,75,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,
+95,50,54,51,41,41,32,40,40,40,67,39,32,95,49,53,56,57,41,32,
+40,85,32,40,75,32,40,90,32,75,41,41,41,41,32,35,48,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,54,51,32,40,95,
+49,53,57,55,32,40,40,79,32,35,52,52,41,32,75,41,41,41,41,41,
+41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,95,50,54,51,41,41,32,40,40,40,67,39,32,95,49,53,56,
+57,41,32,40,85,32,40,75,32,40,75,32,75,41,41,41,41,32,35,48,
+41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,51,32,40,95,49,
+53,57,55,32,40,40,79,32,35,52,52,41,32,75,41,41,41,41,41,32,
+40,40,40,67,39,32,95,49,53,56,57,41,32,40,85,32,40,75,32,40,
+75,32,65,41,41,41,41,32,35,48,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,95,49,53,57,51,41,32,40,40,66,32,95,53,55,
+51,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,
+32,40,40,40,83,39,32,80,41,32,40,85,32,40,90,32,40,90,32,75,
+41,41,41,41,32,40,85,32,40,75,32,40,90,32,75,41,41,41,41,41,
+32,40,85,32,40,75,32,40,75,32,75,41,41,41,41,41,32,40,85,32,
+40,75,32,40,75,32,65,41,41,41,41,41,41,41,41,32,40,40,66,32,
+95,49,53,57,52,41,32,40,40,66,32,95,53,55,51,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,
+32,80,41,32,40,85,32,40,90,32,40,90,32,75,41,41,41,41,32,40,
+85,32,40,75,32,40,90,32,75,41,41,41,41,41,32,40,85,32,40,75,
+32,40,75,32,75,41,41,41,41,41,32,40,85,32,40,75,32,40,75,32,
+65,41,41,41,41,41,41,41,41,32,40,40,65,32,58,53,55,52,32,40,
+40,95,49,50,54,32,95,49,51,52,49,41,32,95,49,51,52,49,41,41,
+32,40,40,65,32,58,53,55,53,32,40,40,40,83,39,32,95,49,50,54,
+41,32,40,40,40,83,39,32,80,41,32,40,40,66,32,95,49,50,55,41,
+32,40,85,32,75,41,41,41,32,40,40,66,32,95,49,50,55,41,32,40,
+85,32,65,41,41,41,41,32,40,40,40,83,39,32,80,41,32,40,40,66,
+32,95,49,50,56,41,32,40,85,32,75,41,41,41,32,40,40,66,32,95,
+49,50,56,41,32,40,85,32,65,41,41,41,41,41,32,40,40,65,32,58,
+53,55,54,32,40,40,40,83,39,32,95,49,50,54,41,32,40,40,40,83,
+39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,40,66,32,95,49,
+50,55,41,32,40,85,32,40,90,32,75,41,41,41,41,32,40,40,66,32,
+95,49,50,55,41,32,40,85,32,40,75,32,75,41,41,41,41,41,32,40,
+40,66,32,95,49,50,55,41,32,40,85,32,40,75,32,65,41,41,41,41,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,
+40,40,66,32,95,49,50,56,41,32,40,85,32,40,90,32,75,41,41,41,
+41,32,40,40,66,32,95,49,50,56,41,32,40,85,32,40,75,32,75,41,
+41,41,41,41,32,40,40,66,32,95,49,50,56,41,32,40,85,32,40,75,
+32,65,41,41,41,41,41,41,32,40,40,65,32,58,53,55,55,32,40,40,
+40,83,39,32,95,49,50,54,41,32,40,40,40,83,39,32,67,41,32,40,
+40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,40,66,
+32,95,49,50,55,41,32,40,85,32,40,90,32,40,90,32,75,41,41,41,
+41,41,32,40,40,66,32,95,49,50,55,41,32,40,85,32,40,75,32,40,
+90,32,75,41,41,41,41,41,41,32,40,40,66,32,95,49,50,55,41,32,
+40,85,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,40,66,
+32,95,49,50,55,41,32,40,85,32,40,75,32,40,75,32,65,41,41,41,
+41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,
+41,32,40,40,40,83,39,32,80,41,32,40,40,66,32,95,49,50,56,41,
+32,40,85,32,40,90,32,40,90,32,75,41,41,41,41,41,32,40,40,66,
+32,95,49,50,56,41,32,40,85,32,40,75,32,40,90,32,75,41,41,41,
+41,41,41,32,40,40,66,32,95,49,50,56,41,32,40,85,32,40,75,32,
+40,75,32,75,41,41,41,41,41,41,32,40,40,66,32,95,49,50,56,41,
+32,40,85,32,40,75,32,40,75,32,65,41,41,41,41,41,41,41,32,40,
+40,65,32,58,53,55,56,32,40,40,40,40,40,40,40,95,52,55,56,32,
+95,49,51,54,51,41,32,95,49,51,54,52,41,32,95,49,51,54,53,41,
+32,40,95,52,56,57,32,95,53,55,56,41,41,32,73,41,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,95,50,48,50,32,95,53,56,51,41,
+41,32,35,48,41,41,32,35,49,41,41,32,35,48,41,41,32,40,40,66,
+32,95,49,51,57,48,41,32,95,51,54,48,41,41,41,32,40,40,65,32,
+58,53,55,57,32,40,40,40,40,40,40,40,40,95,51,54,52,32,40,40,
+80,32,95,53,56,51,41,32,95,53,55,56,41,41,32,95,49,51,54,54,
+41,32,95,49,51,54,55,41,32,40,95,51,55,53,32,95,53,55,57,41,
+41,32,40,95,51,55,54,32,95,53,55,57,41,41,32,40,95,51,55,55,
+32,95,53,55,57,41,41,32,40,95,51,55,56,32,95,53,55,57,41,41,
+32,95,51,54,49,41,41,32,40,40,65,32,58,53,56,48,32,40,40,95,
+49,50,54,32,35,48,41,32,35,45,49,41,41,32,40,40,65,32,58,53,
+56,49,32,40,95,53,51,49,32,40,40,66,32,95,53,50,57,41,32,95,
+51,54,49,41,41,41,32,40,40,65,32,58,53,56,50,32,40,40,40,40,
+40,40,40,40,95,49,55,57,32,40,40,67,32,40,95,52,55,57,32,95,
+53,55,56,41,41,32,40,40,95,52,56,53,32,95,53,55,56,41,32,40,
+95,51,53,57,32,35,49,41,41,41,41,32,40,40,67,32,40,95,52,56,
+48,32,95,53,55,56,41,41,32,40,40,95,52,56,53,32,95,53,55,56,
+41,32,40,95,51,53,57,32,35,49,41,41,41,41,32,95,49,51,57,48,
+41,32,95,49,51,56,57,41,32,40,40,83,32,95,52,54,50,41,32,40,
+40,66,32,40,95,49,56,52,32,95,53,56,53,41,41,32,40,40,67,32,
+40,95,52,55,57,32,95,53,55,56,41,41,32,35,49,41,41,41,41,32,
+40,40,40,83,39,32,40,67,39,32,89,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,83,32,95,52,54,50,41,41,41,41,32,40,40,66,32,
+40,66,32,40,67,32,66,41,41,41,32,40,40,66,32,40,66,32,40,67,
+32,40,95,52,55,57,32,95,53,55,56,41,41,41,41,32,40,67,32,40,
+95,52,56,48,32,95,53,55,56,41,41,41,41,41,41,32,73,41,41,32,
+40,40,66,32,40,40,67,39,32,95,52,50,52,41,32,40,67,32,40,95,
+52,57,56,32,95,53,56,52,41,41,41,41,32,40,95,49,56,52,32,95,
+53,56,53,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,40,83,
+39,32,40,83,39,32,83,39,41,41,32,40,67,32,40,95,52,57,57,32,
+95,53,56,52,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,
+95,52,50,52,41,32,40,67,32,40,95,53,48,48,32,95,53,56,52,41,
+41,41,41,41,32,40,95,49,56,53,32,95,53,56,53,41,41,41,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,95,52,50,52,41,32,40,67,
+32,40,95,52,57,56,32,95,53,56,52,41,41,41,41,41,32,40,95,49,
+56,53,32,95,53,56,53,41,41,41,41,41,32,40,40,65,32,58,53,56,
+51,32,40,40,95,50,48,49,32,95,49,51,56,51,41,32,95,49,51,56,
+52,41,41,32,40,40,65,32,58,53,56,52,32,40,40,40,40,40,40,40,
+40,95,52,57,52,32,95,53,56,51,41,32,40,95,53,48,51,32,95,53,
+56,52,41,41,32,95,49,51,56,53,41,32,95,49,51,56,54,41,32,95,
+49,51,56,55,41,32,95,49,51,56,56,41,32,40,95,53,48,56,32,95,
+53,56,52,41,41,32,40,95,53,48,57,32,95,53,56,52,41,41,41,32,
+40,40,65,32,58,53,56,53,32,40,40,40,40,40,40,40,40,95,49,55,
+57,32,40,95,49,56,56,32,95,53,56,53,41,41,32,40,95,49,56,57,
+32,95,53,56,53,41,41,32,95,49,51,57,48,41,32,95,49,51,56,57,
+41,32,40,95,49,57,50,32,95,53,56,53,41,41,32,40,95,49,57,51,
+32,95,53,56,53,41,41,32,40,95,49,57,52,32,95,53,56,53,41,41,
+32,40,95,49,57,53,32,95,53,56,53,41,41,41,32,40,40,65,32,58,
+53,56,54,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+40,40,40,40,40,40,95,54,53,32,95,53,56,51,41,32,95,49,51,54,
+56,41,32,95,49,51,54,57,41,32,95,49,51,55,48,41,32,95,49,51,
+55,52,41,32,40,95,57,50,32,95,53,56,54,41,41,32,40,95,57,51,
+32,95,53,56,54,41,41,32,35,48,41,32,40,95,49,51,55,49,32,35,
+49,41,41,32,40,95,57,54,32,95,53,56,54,41,41,32,40,95,57,55,
+32,95,53,56,54,41,41,32,40,95,57,56,32,95,53,56,54,41,41,32,
+40,95,57,57,32,95,53,56,54,41,41,32,95,49,51,55,49,41,32,40,
+95,49,48,49,32,95,53,56,54,41,41,32,95,49,51,55,50,41,32,40,
+95,49,48,51,32,95,53,56,54,41,41,32,40,95,49,48,52,32,95,53,
+56,54,41,41,32,40,95,49,48,53,32,95,53,56,54,41,41,32,40,95,
+49,48,54,32,95,53,56,54,41,41,32,40,95,49,48,55,32,95,53,56,
+54,41,41,32,40,75,32,35,54,52,41,41,41,32,40,40,65,32,58,53,
+56,55,32,40,40,40,95,49,53,56,56,32,40,95,49,53,57,50,32,95,
+53,56,55,41,41,32,40,89,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,67,41,32,40,40,66,32,40,40,83,39,32,83,39,41,32,
+40,40,67,32,40,95,52,57,55,32,95,53,56,52,41,41,32,35,49,48,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,95,52,54,51,41,41,32,40,40,67,32,66,41,32,40,
+40,67,32,40,95,51,54,54,32,95,53,55,57,41,41,32,35,49,48,41,
+41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,32,40,40,67,
+32,79,41,32,75,41,41,41,32,40,40,66,32,95,49,51,54,41,32,40,
+40,66,32,40,40,95,52,55,57,32,95,50,55,55,41,32,40,95,49,51,
+55,32,35,52,56,41,41,41,32,40,40,66,32,95,49,51,56,57,41,32,
+40,40,67,32,40,95,51,54,55,32,95,53,55,57,41,41,32,35,49,48,
+41,41,41,41,41,41,41,32,40,95,49,53,57,52,32,95,53,56,55,41,
+41,41,32,40,40,65,32,58,53,56,56,32,40,40,66,32,40,66,32,73,
+79,46,112,101,114,102,111,114,109,73,79,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,95,51,51,32,95,49,52,53,50,41,41,32,
+95,49,52,55,50,41,41,32,40,95,51,52,32,95,49,52,53,50,41,41,
+41,41,32,40,40,65,32,58,53,56,57,32,40,40,66,32,40,67,32,95,
+53,56,56,41,41,32,40,40,67,32,95,51,52,41,32,95,49,51,52,49,
+41,41,41,32,40,40,65,32,58,53,57,48,32,95,49,52,49,53,41,32,
+40,40,65,32,58,53,57,49,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,95,49,52,48,53,41,32,95,53,57,48,41,41,32,40,40,67,32,
+40,83,39,32,95,49,52,48,53,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,49,52,48,54,41,32,95,53,57,52,41,41,32,95,
+49,52,48,55,41,41,41,41,32,40,40,65,32,58,53,57,50,32,95,49,
+52,49,54,41,32,40,40,65,32,58,53,57,51,32,94,102,114,101,101,41,
+32,40,40,65,32,58,53,57,52,32,95,53,57,51,41,32,40,40,65,32,
+58,53,57,53,32,94,109,97,108,108,111,99,41,32,40,40,65,32,58,53,
+57,54,32,95,53,57,53,41,32,40,40,65,32,58,53,57,55,32,40,40,
+95,50,48,49,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,
+50,48,50,32,95,53,56,51,41,41,32,95,49,52,49,56,41,41,32,95,
+49,52,49,56,41,41,32,40,95,50,48,53,32,95,53,57,55,41,41,41,
+32,40,40,65,32,58,53,57,56,32,40,40,40,95,49,53,56,56,32,40,
+75,32,40,40,66,32,40,95,50,54,51,32,40,95,49,53,57,55,32,34,
+80,84,82,35,34,41,41,41,32,40,40,66,32,40,40,95,49,53,56,57,
+32,95,53,56,55,41,32,35,48,41,41,32,95,49,52,49,56,41,41,41,
+41,32,40,95,49,53,57,51,32,95,53,57,56,41,41,32,40,95,49,53,
+57,52,32,95,53,57,56,41,41,41,32,40,40,65,32,58,53,57,57,32,
+40,95,49,52,49,55,32,35,48,41,41,32,40,40,65,32,58,54,48,48,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,32,40,40,65,32,
+58,54,48,49,32,40,85,32,40,90,32,40,90,32,40,90,32,40,90,32,
+75,41,41,41,41,41,41,32,40,40,65,32,58,54,48,50,32,40,85,32,
+40,75,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,32,
+40,40,65,32,58,54,48,51,32,40,85,32,40,75,32,40,75,32,40,90,
+32,40,90,32,75,41,41,41,41,41,41,32,40,40,65,32,58,54,48,52,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,90,32,75,41,41,41,
+41,41,41,32,40,40,65,32,58,54,48,53,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,40,65,32,
+58,54,48,54,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,
+65,41,41,41,41,41,41,32,40,40,65,32,58,54,48,55,32,80,41,32,
+40,40,65,32,58,54,48,56,32,40,85,32,75,41,41,32,40,40,65,32,
+58,54,48,57,32,40,40,66,32,85,41,32,40,90,32,95,54,48,55,41,
+41,41,32,40,40,65,32,58,54,49,48,32,40,85,32,65,41,41,32,40,
+40,65,32,58,54,49,49,32,40,40,95,54,48,55,32,95,52,54,49,41,
+32,95,57,50,48,41,41,32,40,40,65,32,58,54,49,50,32,40,40,66,
+32,85,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,54,48,55,
+41,41,32,95,57,51,49,41,41,41,32,40,40,65,32,58,54,49,51,32,
+40,40,40,83,39,32,40,67,39,32,40,67,39,32,40,95,51,50,32,95,
+49,52,53,50,41,41,41,41,32,95,54,49,54,41,32,40,40,66,32,85,
+41,32,40,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,49,
+52,53,50,41,32,95,49,52,55,57,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,40,83,39,
+32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,66,32,40,95,
+51,52,32,95,49,52,53,50,41,41,32,95,50,49,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,85,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,49,
+52,53,50,41,32,95,49,52,55,57,41,41,41,41,41,32,40,40,40,83,
+39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,67,39,32,40,95,51,51,32,95,49,52,53,50,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,
+95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,49,52,53,50,
+41,41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,50,56,50,41,
+41,32,95,54,48,49,41,32,35,48,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,95,50,54,49,32,95,49,52,55,50,41,41,41,32,40,40,
+66,32,40,66,32,40,95,52,54,51,32,34,99,111,109,98,105,110,97,116,
+111,114,32,99,111,110,118,101,114,115,105,111,110,32,34,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,95,52,54,51,41,41,32,40,40,66,32,
+40,66,32,40,95,49,54,49,48,32,35,54,41,41,41,32,40,40,66,32,
+40,66,32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,32,40,67,
+32,40,95,52,56,48,32,95,50,55,55,41,41,41,41,41,32,34,109,115,
+34,41,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,83,39,32,40,95,51,51,32,95,49,52,53,50,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,40,
+40,66,32,40,95,52,53,32,95,49,52,53,50,41,41,32,40,40,40,67,
+39,32,40,95,52,57,57,32,95,50,56,50,41,41,32,95,54,48,49,41,
+32,35,51,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,
+52,55,50,41,41,32,40,40,66,32,40,95,52,54,51,32,34,99,111,109,
+98,105,110,97,116,111,114,115,58,92,49,48,38,34,41,41,32,95,54,53,
+48,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,
+49,52,53,50,41,41,41,32,40,67,32,80,41,41,41,41,41,41,41,41,
+32,40,95,51,57,52,32,40,85,32,40,40,40,67,39,32,40,67,39,32,
+79,41,41,32,40,40,40,67,39,32,66,41,32,80,41,32,95,55,48,51,
+41,41,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,54,49,
+52,32,40,40,40,67,39,32,40,95,49,50,50,32,95,49,51,51,57,41,
+41,32,40,40,66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,40,
+40,95,49,52,54,51,32,34,99,97,99,104,101,47,80,114,101,108,117,100,
+101,46,99,111,109,98,34,41,32,95,49,52,52,54,41,41,41,32,40,40,
+66,32,40,80,32,40,40,95,51,52,32,95,49,52,53,50,41,32,95,54,
+49,49,41,41,41,32,40,40,66,32,40,40,83,39,32,40,95,51,50,32,
+95,49,52,53,50,41,41,32,95,49,52,53,53,41,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,49,52,
+53,50,41,41,32,95,49,52,53,57,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,95,51,51,32,95,49,52,53,50,41,41,32,
+40,40,40,67,39,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,
+32,95,49,52,53,50,41,41,32,95,54,48,53,41,41,32,40,95,49,52,
+55,50,32,34,108,111,97,100,101,100,32,99,97,99,104,101,100,32,80,114,
+101,108,117,100,101,34,41,41,41,41,32,40,95,51,52,32,95,49,52,53,
+50,41,41,41,41,41,41,41,32,40,40,95,51,52,32,95,49,52,53,50,
+41,32,95,54,49,49,41,41,41,32,40,40,65,32,58,54,49,53,32,40,
+40,40,83,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,49,52,
+53,50,41,41,32,95,54,49,52,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,95,50,55,54,32,95,49,52,53,48,41,32,95,53,54,53,
+41,41,41,41,32,95,54,49,51,41,41,41,32,40,40,65,32,58,54,49,
+54,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,40,95,51,50,
+32,95,49,52,53,50,41,41,41,41,32,40,40,66,32,40,66,32,95,49,
+48,56,57,41,41,32,95,54,49,55,41,41,32,40,40,66,32,85,41,32,
+40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,90,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,95,51,51,32,
+95,49,52,53,50,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,49,52,
+53,50,41,41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,50,56,
+50,41,41,32,95,54,48,49,41,32,35,48,41,41,41,41,32,40,40,66,
+32,40,95,50,54,49,32,95,49,52,55,50,41,41,32,40,40,66,32,40,
+95,52,54,51,32,34,116,111,116,97,108,32,105,109,112,111,114,116,32,116,
+105,109,101,32,32,32,32,32,34,41,41,32,40,40,40,67,39,32,95,52,
+54,51,41,32,40,40,66,32,40,95,49,54,49,48,32,35,54,41,41,32,
+40,95,49,53,57,48,32,95,50,56,51,41,41,41,32,34,109,115,34,41,
+41,41,41,41,41,32,40,40,66,32,40,95,51,52,32,95,49,52,53,50,
+41,41,32,40,40,40,83,39,32,80,41,32,40,40,66,32,40,95,50,54,
+49,32,40,95,51,57,52,32,95,49,49,49,54,41,41,41,32,40,40,66,
+32,40,95,50,54,49,32,95,57,50,50,41,41,32,95,54,49,48,41,41,
+41,32,73,41,41,41,41,41,41,41,41,32,40,40,65,32,58,54,49,55,
+32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,49,48,57,50,41,
+32,40,95,49,48,57,52,32,95,54,49,48,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,67,41,41,32,40,40,66,32,40,40,83,39,32,
+67,41,32,95,57,50,56,41,41,32,40,40,66,32,40,66,32,40,40,95,
+51,50,32,95,49,48,57,50,41,32,40,95,49,48,57,52,32,95,54,48,
+56,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,40,
+95,51,51,32,95,49,48,57,50,41,41,41,32,40,40,40,83,39,32,40,
+83,39,32,95,50,54,49,41,41,32,40,40,66,32,40,66,32,40,95,52,
+53,32,95,49,48,57,50,41,41,41,32,40,95,52,51,50,32,95,56,57,
+50,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,50,
+52,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,51,32,34,114,
+101,99,117,114,115,105,118,101,32,109,111,100,117,108,101,58,32,34,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,
+32,95,57,48,50,41,41,32,40,40,66,32,40,95,52,54,51,32,34,44,
+32,105,109,112,111,114,116,32,99,104,97,105,110,58,32,34,41,41,32,40,
+40,66,32,95,49,54,48,57,41,32,40,95,51,57,53,32,95,57,48,50,
+41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,
+95,51,51,32,95,49,48,57,50,41,41,32,40,40,66,32,40,95,50,54,
+49,32,95,49,48,57,53,41,41,32,40,40,40,67,39,32,40,83,39,32,
+95,54,48,57,41,41,32,40,40,40,67,39,32,66,41,32,95,52,54,50,
+41,32,95,54,48,56,41,41,32,73,41,41,41,41,32,40,40,40,83,39,
+32,40,83,39,32,40,95,51,51,32,95,49,48,57,50,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,40,40,
+66,32,40,95,52,53,32,95,49,48,57,50,41,41,32,40,40,40,67,39,
+32,40,95,52,57,57,32,95,50,56,50,41,41,32,95,54,48,49,41,32,
+35,48,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,48,
+57,56,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,52,55,50,
+41,41,32,40,40,66,32,40,95,52,54,51,32,34,105,109,112,111,114,116,
+105,110,103,32,34,41,41,32,95,57,48,50,41,41,41,41,41,32,40,40,
+40,83,39,32,40,83,39,32,40,95,51,50,32,95,49,48,57,50,41,41,
+41,32,95,54,49,56,41,32,40,40,66,32,40,66,32,85,41,41,32,40,
+40,40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,83,39,32,40,83,39,32,66,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,95,51,51,32,95,49,48,57,50,41,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,
+40,40,66,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,
+49,48,57,50,41,41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,
+50,56,50,41,41,32,95,54,48,49,41,32,35,48,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,49,48,
+57,56,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,
+54,49,32,95,49,52,55,50,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,95,52,54,51,32,34,105,109,112,111,114,116,105,110,103,32,
+100,111,110,101,32,34,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,40,40,66,32,95,52,54,51,41,32,95,57,48,50,41,41,
+41,32,40,40,66,32,40,66,32,40,95,52,54,51,32,34,44,32,34,41,
+41,41,32,40,40,40,83,39,32,40,83,39,32,95,52,54,51,41,41,32,
+40,40,66,32,40,66,32,40,95,49,53,57,48,32,95,50,56,51,41,41,
+41,32,40,95,52,55,57,32,95,50,55,55,41,41,41,32,40,40,66,32,
+40,66,32,40,95,52,54,51,32,34,109,115,32,40,34,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,95,
+49,53,57,48,32,95,50,56,51,41,41,41,32,40,40,66,32,40,95,52,
+54,51,32,34,32,43,32,34,41,41,32,40,40,40,67,39,32,95,52,54,
+51,41,32,40,95,49,53,57,48,32,95,50,56,51,41,41,32,40,40,79,
+32,35,52,49,41,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,66,
+32,66,39,41,32,40,40,66,32,66,39,41,32,40,40,66,32,66,39,41,
+32,40,40,66,32,40,66,32,40,95,51,51,32,95,49,48,57,50,41,41,
+41,32,40,40,40,67,39,32,40,83,39,32,95,50,54,49,41,41,32,40,
+40,66,32,40,66,32,40,95,52,53,32,95,49,48,57,50,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,50,49,41,32,95,
+54,48,53,41,41,32,40,40,67,32,40,95,50,48,51,32,95,56,57,50,
+41,41,32,40,95,56,57,55,32,34,73,110,116,101,114,97,99,116,105,118,
+101,34,41,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,
+48,57,56,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,52,55,
+50,41,41,32,40,40,66,32,40,95,52,54,51,32,34,108,111,97,100,101,
+100,32,34,41,41,32,95,57,48,50,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,
+50,32,95,49,48,57,50,41,32,95,49,48,57,55,41,41,41,41,41,41,
+32,40,40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,66,32,66,
+39,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,67,
+39,32,40,95,51,51,32,95,49,48,57,50,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,95,50,54,49,32,95,49,48,57,54,41,41,
+41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,95,54,48,55,41,
+32,40,40,66,32,95,52,50,57,41,32,95,54,48,56,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,95,57,50,57,41,32,
+95,54,49,48,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,95,51,52,32,95,49,48,57,50,41,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,80,41,
+41,41,32,40,40,66,32,40,66,32,40,95,52,55,57,32,95,50,55,55,
+41,41,41,32,40,95,52,55,57,32,95,50,55,55,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,51,32,95,49,48,
+57,50,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,49,48,57,50,41,
+41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,50,56,50,41,41,
+32,95,54,48,49,41,32,35,48,41,41,41,41,32,40,40,66,32,40,95,
+50,54,49,32,95,49,48,57,56,41,41,32,40,40,66,32,40,95,50,54,
+49,32,95,49,52,55,50,41,41,32,40,40,66,32,40,95,52,54,51,32,
+34,105,109,112,111,114,116,105,110,103,32,99,97,99,104,101,100,32,34,41,
+41,32,95,57,48,50,41,41,41,41,41,41,32,40,40,66,32,40,95,51,
+52,32,95,49,48,57,50,41,41,32,40,40,67,32,80,41,32,40,40,95,
+52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,41,41,
+41,41,41,41,41,41,32,40,40,65,32,58,54,49,56,32,40,40,66,32,
+40,66,32,40,40,95,51,50,32,95,49,48,57,50,41,32,40,95,49,48,
+57,56,32,95,49,52,55,57,41,41,41,41,32,40,40,40,83,39,32,40,
+83,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,
+49,48,57,50,41,41,41,32,40,40,66,32,40,66,32,95,49,48,57,56,
+41,41,32,40,40,40,67,39,32,83,41,32,40,40,66,32,40,40,67,39,
+32,95,54,49,57,41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,
+32,95,54,48,51,41,41,32,40,40,40,67,39,32,95,52,54,51,41,32,
+40,40,66,32,40,95,51,57,53,32,40,40,67,32,40,40,83,32,40,40,
+67,32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,52,54,41,41,
+32,73,41,41,32,35,52,55,41,41,41,32,95,57,48,48,41,41,32,34,
+46,104,115,34,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+85,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,66,32,40,40,67,39,32,67,39,41,32,40,40,
+66,32,83,39,41,32,40,40,66,32,40,67,39,32,40,95,51,51,32,95,
+49,48,57,50,41,41,41,32,40,40,40,83,39,32,40,83,39,32,95,50,
+54,49,41,41,32,40,40,66,32,40,66,32,40,95,52,53,32,95,49,48,
+57,50,41,41,41,32,40,95,50,48,51,32,95,56,57,50,41,41,41,32,
+40,40,66,32,40,66,32,40,95,50,54,49,32,95,50,52,41,41,41,32,
+40,40,66,32,40,66,32,40,95,52,54,51,32,34,109,111,100,117,108,101,
+32,110,97,109,101,32,100,111,101,115,32,110,111,116,32,97,103,114,101,101,
+32,119,105,116,104,32,102,105,108,101,32,110,97,109,101,58,32,34,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,
+32,95,57,48,50,41,41,32,40,40,66,32,40,95,52,54,51,32,40,40,
+79,32,35,51,50,41,32,75,41,41,41,32,95,57,48,50,41,41,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,
+40,66,32,40,40,95,51,50,32,95,49,48,57,50,41,32,40,95,49,48,
+57,56,32,95,49,52,55,57,41,41,41,41,41,41,32,40,40,40,83,39,
+32,66,41,32,40,66,39,32,40,40,66,32,40,83,39,32,66,41,41,32,
+40,40,66,32,40,66,32,40,95,51,50,32,95,49,48,57,50,41,41,41,
+32,40,40,66,32,40,66,32,40,95,50,54,49,32,40,40,95,50,55,50,
+32,95,49,48,57,48,41,32,95,52,49,52,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,40,95,52,51,32,95,49,48,57,50,
+41,41,32,95,54,49,55,41,41,32,40,95,51,57,52,32,40,85,32,40,
+75,32,40,90,32,40,90,32,40,40,67,32,79,41,32,75,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,85,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,
+95,49,48,57,50,41,32,40,95,49,48,57,56,32,95,49,52,55,57,41,
+41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,67,
+39,32,66,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,
+40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,
+40,83,39,32,40,95,51,51,32,95,49,48,57,50,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,40,40,66,
+32,40,95,52,53,32,95,49,48,57,50,41,41,32,40,40,40,67,39,32,
+40,95,52,57,57,32,95,50,56,50,41,41,32,95,54,48,49,41,32,35,
+50,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,48,57,
+56,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,52,55,50,41,
+41,32,40,40,66,32,40,95,52,54,51,32,34,116,121,112,101,32,99,104,
+101,99,107,101,100,58,92,49,48,38,34,41,41,32,40,40,40,67,39,32,
+95,52,54,51,41,32,40,95,49,51,48,52,32,95,56,51,57,41,41,32,
+34,45,45,45,45,45,92,49,48,38,34,41,41,41,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,66,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,40,83,39,32,40,95,51,50,32,95,49,48,
+57,50,41,41,32,40,40,66,32,40,95,50,54,49,32,40,95,51,52,32,
+95,49,48,57,50,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,
+50,49,41,41,32,95,49,49,49,54,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,85,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,40,95,51,50,32,95,49,48,57,50,41,32,40,95,
+49,48,57,56,32,95,49,52,55,57,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,
+40,40,66,32,40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,40,
+95,51,51,32,95,49,48,57,50,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,
+32,95,49,48,57,50,41,41,32,40,40,40,67,39,32,40,95,52,57,57,
+32,95,50,56,50,41,41,32,95,54,48,49,41,32,35,51,41,41,41,41,
+32,40,40,66,32,40,95,50,54,49,32,95,49,48,57,56,41,41,32,40,
+40,66,32,40,95,50,54,49,32,95,49,52,55,50,41,41,32,40,40,66,
+32,40,95,52,54,51,32,34,100,101,115,117,103,97,114,101,100,58,92,49,
+48,38,34,41,41,32,40,95,49,51,48,52,32,95,54,53,48,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,95,51,52,32,95,49,48,57,50,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,40,67,39,32,66,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,40,67,
+32,80,41,41,41,32,40,67,32,40,95,52,56,48,32,95,50,55,55,41,
+41,41,41,41,41,32,40,67,32,40,95,52,56,48,32,95,50,55,55,41,
+41,41,41,41,32,40,95,52,48,51,32,95,50,55,55,41,41,41,41,41,
+41,41,41,32,95,54,50,49,41,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,40,67,39,32,95,49,49,50,51,41,41,32,95,52,49,50,41,
+41,32,40,40,83,32,73,41,32,40,90,32,40,90,32,75,41,41,41,41,
+41,41,41,41,41,32,40,40,66,32,40,95,51,57,52,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,40,
+75,32,75,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,
+75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,
+41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,40,67,32,79,
+41,32,75,41,41,41,32,40,75,32,40,75,32,40,75,32,75,41,41,41,
+41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,
+32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,75,32,40,75,
+32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,75,32,75,41,
+41,41,41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,32,40,85,
+32,40,90,32,75,41,41,41,41,41,32,40,95,57,57,54,32,95,57,57,
+57,41,41,41,41,41,41,32,40,40,65,32,58,54,49,57,32,40,40,66,
+32,40,40,83,39,32,40,83,39,32,40,95,51,50,32,95,49,52,53,50,
+41,41,41,32,95,54,50,48,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,80,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+66,39,32,40,40,66,32,95,50,54,49,41,32,95,56,51,54,41,41,41,
+32,40,40,66,32,40,66,32,40,95,52,54,51,32,34,70,105,108,101,32,
+110,111,116,32,102,111,117,110,100,58,32,34,41,41,41,32,40,40,66,32,
+40,40,67,39,32,95,52,54,51,41,32,40,95,49,53,57,48,32,40,95,
+51,57,49,32,95,49,52,57,41,41,41,41,32,40,40,66,32,40,95,52,
+54,51,32,34,92,49,48,38,112,97,116,104,61,34,41,41,32,40,95,49,
+53,57,48,32,40,95,51,57,49,32,40,95,51,57,49,32,95,49,52,57,
+41,41,41,41,41,41,41,41,32,40,85,32,40,40,66,32,40,40,67,39,
+32,40,95,51,50,32,95,49,52,53,50,41,41,32,95,49,52,55,54,41,
+41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,49,52,53,50,41,
+41,41,32,80,41,41,41,41,41,41,32,40,40,65,32,58,54,50,48,32,
+40,40,40,67,39,32,66,41,32,40,85,32,40,40,95,51,52,32,95,49,
+52,53,50,41,32,95,52,55,54,41,41,41,32,40,40,40,83,39,32,66,
+41,32,40,40,66,32,40,67,39,32,40,40,83,39,32,40,95,51,50,32,
+95,49,52,53,50,41,41,32,40,40,67,32,95,49,52,54,51,41,32,95,
+49,52,52,54,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,80,41,41,32,40,67,32,95,54,50,
+48,41,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,49,52,
+53,50,41,41,41,32,40,40,66,32,40,66,32,95,52,55,55,41,41,32,
+80,41,41,41,41,41,32,40,40,66,32,40,67,32,95,52,54,51,41,41,
+32,40,95,52,54,51,32,40,40,79,32,35,52,55,41,32,75,41,41,41,
+41,41,41,32,40,40,65,32,58,54,50,49,32,40,85,32,40,40,40,83,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,66,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,50,54,
+49,41,41,41,41,41,41,41,32,95,49,49,49,53,41,41,32,40,40,66,
+32,40,66,32,40,95,50,54,49,32,40,95,51,57,53,32,95,54,55,52,
+41,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,54,
+55,51,41,41,41,32,40,40,66,32,95,51,57,52,41,32,95,54,50,50,
+41,41,41,41,41,41,32,40,40,65,32,58,54,50,50,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+83,39,32,80,41,32,40,90,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,95,52,49,51,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,85,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,90,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,66,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,67,39,32,66,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,
+32,40,67,39,32,83,39,41,41,32,40,40,66,32,66,39,41,32,40,40,
+66,32,40,66,32,80,41,41,32,95,57,48,53,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,83,39,32,95,50,
+54,49,41,32,95,54,52,54,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,67,39,32,40,83,39,32,95,50,54,49,41,41,32,
+40,89,32,40,40,66,32,40,40,67,39,32,66,41,32,83,41,41,32,40,
+40,40,83,39,32,40,83,39,32,40,83,39,32,67,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,67,32,83,39,41,41,41,41,32,40,40,
+66,32,40,67,32,40,83,39,32,66,41,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,
+40,67,32,40,83,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,66,41,32,40,40,66,32,95,54,55,54,41,32,
+40,40,66,32,40,95,54,55,54,32,40,95,54,55,56,32,40,95,55,56,
+49,32,34,115,101,113,34,41,41,41,41,32,95,54,55,53,41,41,41,41,
+41,41,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,66,32,66,39,41,
+32,40,40,66,32,40,66,32,95,50,54,49,41,41,32,40,40,66,32,40,
+66,32,95,54,52,54,41,41,32,40,40,66,32,40,40,67,39,32,95,51,
+57,52,41,32,40,40,66,32,85,41,32,40,40,66,32,90,41,32,40,40,
+67,32,40,67,39,32,79,41,41,32,75,41,41,41,41,41,32,40,95,52,
+49,50,32,40,40,95,49,56,52,32,95,49,57,56,41,32,35,48,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,95,54,52,55,41,41,32,40,66,32,95,54,55,
+53,41,41,41,32,40,95,51,57,53,32,95,54,55,53,41,41,41,41,41,
+41,41,32,40,40,66,32,40,95,51,57,52,32,40,85,32,40,90,32,40,
+40,40,67,39,32,79,41,32,40,40,66,32,95,56,57,55,41,32,40,40,
+66,32,40,95,52,54,51,32,34,36,120,34,41,41,32,40,95,49,53,57,
+48,32,95,50,56,51,41,41,41,41,32,75,41,41,41,41,41,32,40,95,
+52,49,50,32,40,40,95,49,56,52,32,95,49,57,56,41,32,35,48,41,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+52,54,51,41,32,40,40,67,32,40,40,67,32,95,51,57,50,41,32,40,
+40,79,32,95,49,50,52,41,32,75,41,41,41,32,95,52,54,49,41,41,
+41,32,40,40,66,32,40,95,51,57,53,32,95,53,54,53,41,41,32,40,
+40,95,49,55,55,32,95,50,54,52,41,32,40,95,51,57,53,32,95,53,
+54,54,41,41,41,41,41,41,41,41,32,40,40,95,49,56,52,32,95,49,
+57,56,41,32,35,48,41,41,41,32,73,41,41,32,40,40,66,32,95,56,
+57,55,41,32,40,40,66,32,40,95,52,54,51,32,34,36,102,34,41,41,
+32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,41,41,41,32,40,
+90,32,40,40,66,32,85,41,32,40,90,32,40,90,32,40,40,66,32,90,
+41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,40,67,
+39,32,40,67,39,32,80,41,41,32,95,57,48,53,41,32,40,95,54,55,
+56,32,40,95,55,56,49,32,40,40,79,32,35,55,51,41,32,75,41,41,
+41,41,41,32,75,41,41,41,41,41,41,41,41,32,40,75,32,40,75,32,
+95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,79,
+41,41,32,40,40,40,83,39,32,66,41,32,80,41,32,40,40,66,32,95,
+54,50,53,41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,41,32,
+75,41,41,41,32,40,75,32,40,75,32,95,52,54,49,41,41,41,41,32,
+40,75,32,95,52,54,49,41,41,41,32,40,40,66,32,90,41,32,40,40,
+40,67,39,32,40,67,39,32,79,41,41,32,40,40,66,32,40,67,32,80,
+41,41,32,40,40,66,32,40,95,50,54,49,32,95,54,55,56,41,41,32,
+95,55,56,50,41,41,41,32,75,41,41,41,41,32,40,75,32,40,75,32,
+95,52,54,49,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,40,67,32,66,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,90,41,41,41,32,40,40,40,83,39,32,40,67,39,32,
+66,41,41,32,40,40,66,32,40,66,32,67,41,41,32,40,40,40,67,39,
+32,40,83,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,
+40,83,39,32,66,41,32,40,40,66,32,40,83,39,32,66,41,41,32,40,
+40,66,32,40,66,32,40,83,39,32,40,83,39,32,95,52,54,50,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,66,39,41,32,40,40,66,32,40,66,32,80,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,57,48,53,41,
+41,32,95,49,50,53,49,41,41,41,41,32,40,40,40,83,39,32,66,41,
+32,40,40,66,32,95,50,54,49,41,32,95,54,52,54,41,41,32,40,40,
+66,32,40,40,83,39,32,95,50,54,49,41,32,95,54,55,55,41,41,32,
+40,40,66,32,40,40,67,39,32,95,54,52,55,41,32,95,54,55,53,41,
+41,32,40,95,51,57,53,32,95,54,55,53,41,41,41,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+83,39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,40,67,39,32,40,67,39,32,95,52,49,51,41,41,32,40,
+40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,80,41,
+32,95,57,48,54,41,41,41,41,32,40,40,66,32,40,40,83,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,95,54,55,55,41,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,95,54,55,54,
+41,32,95,54,55,53,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,95,50,54,49,41,32,95,54,52,54,41,41,32,95,54,55,53,
+41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+95,52,54,51,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,95,51,57,52,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,57,48,53,41,41,
+41,32,95,49,51,49,56,41,41,32,75,41,41,41,32,40,40,66,32,40,
+40,95,49,56,54,32,95,49,57,56,41,32,40,40,95,52,56,53,32,95,
+50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,41,41,32,95,52,
+49,49,41,41,41,41,41,32,73,41,41,41,32,40,95,56,57,55,32,34,
+36,102,34,41,41,41,32,40,40,66,32,40,66,32,40,95,51,57,52,32,
+40,40,40,67,39,32,79,41,32,40,40,66,32,95,56,57,55,41,32,40,
+40,66,32,40,95,52,54,51,32,34,36,120,34,41,41,32,40,95,49,53,
+57,48,32,95,50,56,51,41,41,41,41,32,75,41,41,41,41,32,40,40,
+66,32,40,66,32,40,40,95,49,56,54,32,95,49,57,56,41,32,40,40,
+95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,
+41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,
+52,55,57,32,95,50,55,55,41,41,32,95,52,49,49,41,41,32,95,52,
+49,49,41,41,41,41,41,41,32,40,40,66,32,95,51,57,52,41,32,40,
+40,66,32,40,67,32,40,40,80,32,40,75,32,40,75,32,75,41,41,41,
+32,40,75,32,40,75,32,75,41,41,41,41,41,32,40,40,66,32,90,41,
+32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,95,57,48,53,41,
+32,75,41,41,41,41,41,41,41,41,41,41,32,40,75,32,40,75,32,40,
+75,32,40,75,32,95,52,54,49,41,41,41,41,41,41,32,40,75,32,95,
+52,54,49,41,41,41,32,40,40,65,32,58,54,50,51,32,40,40,40,67,
+39,32,95,55,57,49,41,32,40,40,40,67,39,32,79,41,32,40,80,32,
+95,52,54,49,41,41,32,75,41,41,32,95,52,54,49,41,41,32,40,40,
+65,32,58,54,50,52,32,40,40,40,67,39,32,67,41,32,40,40,66,32,
+40,80,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,40,
+83,39,32,66,41,32,80,41,32,40,40,66,32,95,54,50,53,41,32,40,
+95,56,48,53,32,95,56,48,55,41,41,41,41,32,75,41,41,41,32,40,
+40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,95,52,54,50,
+41,41,32,40,40,40,67,39,32,66,41,32,80,41,32,95,54,51,55,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,95,51,57,52,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,79,41,41,41,32,40,
+40,66,32,40,66,32,40,83,32,80,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,95,54,51,55,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,66,39,32,40,40,66,32,95,55,52,56,41,32,95,55,52,51,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,40,
+67,39,32,66,41,32,80,41,32,40,40,66,32,40,95,50,54,49,32,95,
+54,50,51,41,41,32,95,55,52,51,41,41,41,32,75,41,41,41,41,41,
+32,75,41,41,32,95,55,57,52,41,41,41,41,32,40,75,32,40,75,32,
+95,52,54,49,41,41,41,41,32,40,40,65,32,58,54,50,53,32,40,40,
+66,32,40,83,32,40,85,32,95,49,51,48,50,41,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,40,67,39,32,67,39,41,41,32,40,40,66,32,40,66,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,
+83,39,32,40,95,51,57,55,32,95,54,55,55,41,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,67,41,41,32,
+40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,83,39,
+41,32,95,54,53,53,41,41,32,95,52,54,51,41,41,32,40,95,51,57,
+53,32,95,54,55,53,41,41,41,41,32,40,95,51,57,53,32,40,85,32,
+40,40,66,32,40,67,32,40,40,40,83,39,32,40,83,39,32,67,41,41,
+32,40,40,66,32,40,67,32,80,41,41,32,95,54,50,56,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,49,50,48,41,32,95,54,
+50,54,41,41,32,40,95,52,48,55,32,95,54,50,55,41,41,41,41,41,
+32,40,95,51,57,53,32,95,54,52,48,41,41,41,41,41,41,32,73,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,
+41,32,40,40,66,32,95,52,48,57,41,32,95,52,49,49,41,41,41,32,
+40,95,54,52,56,32,34,36,113,34,41,41,41,41,32,40,40,66,32,40,
+95,50,54,49,32,95,56,50,53,41,41,32,40,95,55,56,55,32,40,95,
+56,57,55,32,75,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+54,50,54,32,40,85,32,40,90,32,40,40,80,32,95,49,50,53,41,32,
+40,40,67,32,66,41,32,40,40,66,32,90,41,32,40,40,40,67,39,32,
+80,41,32,40,40,80,32,95,49,50,52,41,32,40,75,32,40,75,32,95,
+49,50,53,41,41,41,41,32,40,75,32,40,75,32,95,49,50,53,41,41,
+41,41,41,41,41,41,41,32,40,40,65,32,58,54,50,55,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,80,32,40,75,32,95,49,50,52,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,49,50,48,41,32,95,54,50,55,41,41,
+32,95,54,50,55,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,
+41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,
+40,75,32,95,49,50,53,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,95,
+49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,54,50,55,41,
+41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,95,49,
+50,52,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,40,65,32,58,54,50,56,32,40,85,32,40,40,66,32,40,40,
+67,39,32,95,50,54,51,41,32,95,54,51,49,41,41,32,95,54,50,57,
+41,41,41,32,40,40,65,32,58,54,50,57,32,40,40,67,32,83,41,32,
+40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,40,40,83,39,32,
+40,83,39,32,83,41,41,32,40,40,40,67,39,32,67,41,32,40,40,66,
+32,40,40,67,39,32,67,39,41,32,83,39,41,41,32,40,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,67,32,66,41,32,95,54,51,55,
+41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,41,
+32,40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,40,67,39,32,83,41,41,32,40,40,66,32,40,66,32,40,40,67,
+39,32,83,41,32,40,67,32,95,54,54,56,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,95,50,54,49,32,95,54,51,55,41,41,41,
+41,32,40,40,66,32,67,41,32,40,40,67,39,32,95,54,51,48,41,32,
+95,55,52,51,41,41,41,41,41,32,40,40,66,32,95,54,52,57,41,32,
+95,55,50,50,41,41,41,41,41,32,40,67,32,95,54,50,57,41,41,41,
+41,41,41,32,40,40,65,32,58,54,51,48,32,40,40,66,32,89,41,32,
+40,40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,
+40,66,32,40,66,32,40,67,32,40,83,39,32,66,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,67,41,41,32,
+40,40,66,32,40,66,32,40,67,32,83,39,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,67,32,95,55,52,56,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,79,
+41,41,41,32,40,40,66,32,40,66,32,40,67,32,80,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,95,55,57,49,41,41,32,40,40,40,67,
+39,32,40,67,39,32,79,41,41,32,40,67,32,80,41,41,32,75,41,41,
+32,95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,79,41,32,40,
+40,66,32,40,80,32,40,95,55,52,51,32,95,57,49,52,41,41,41,32,
+95,54,50,51,41,41,32,75,41,41,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,80,41,
+41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,
+40,66,32,67,41,32,40,67,32,40,95,57,48,52,32,34,68,97,116,97,
+46,66,111,111,108,46,111,116,104,101,114,119,105,115,101,34,41,41,41,41,
+41,41,32,67,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,41,32,75,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,
+39,41,32,83,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,40,67,39,32,83,39,41,41,32,40,40,66,32,
+85,41,32,40,90,32,75,41,41,41,41,41,41,32,40,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,67,32,95,55,53,53,41,41,41,41,32,67,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,67,32,95,55,52,57,41,41,41,
+41,32,67,41,41,41,41,32,40,40,40,110,111,77,97,116,99,104,32,34,
+115,114,99,47,77,105,99,114,111,72,115,47,68,101,115,117,103,97,114,46,
+104,115,34,41,32,35,49,50,52,41,32,35,49,41,41,41,41,41,32,40,
+40,65,32,58,54,51,49,32,40,40,83,32,83,41,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,40,83,39,32,67,41,32,40,40,
+66,32,40,67,32,40,40,40,67,39,32,83,39,41,32,40,40,66,32,89,
+41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,80,41,41,32,40,
+40,40,83,39,32,40,83,39,32,67,41,41,32,40,40,66,32,40,66,32,
+40,67,32,83,39,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,
+41,41,41,32,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,95,
+50,54,49,41,41,32,95,54,51,50,41,41,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,67,32,83,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,67,32,66,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,67,39,41,32,67,39,41,41,41,41,32,40,66,
+32,40,66,32,40,40,67,39,32,40,67,39,32,95,50,54,49,41,41,32,
+95,54,51,51,41,41,41,41,41,41,32,40,90,32,75,41,41,41,41,41,
+32,40,40,66,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,
+40,40,67,39,32,83,41,32,40,40,67,39,32,95,54,51,52,41,32,40,
+40,80,32,40,40,40,110,111,77,97,116,99,104,32,75,41,32,35,48,41,
+32,35,48,41,41,32,75,41,41,41,41,41,32,40,40,67,32,67,39,41,
+32,40,40,80,32,40,40,40,110,111,77,97,116,99,104,32,75,41,32,35,
+48,41,32,35,48,41,41,32,65,41,41,41,41,41,41,41,41,41,32,40,
+95,54,52,56,32,34,36,109,34,41,41,41,41,32,40,40,66,32,40,66,
+32,40,95,56,55,53,32,40,95,52,57,56,32,95,56,57,51,41,41,41,
+41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,57,53,
+32,40,40,83,32,73,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,32,95,55,50,
+49,41,41,41,41,41,41,32,40,40,66,32,40,66,32,95,54,55,51,41,
+41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,51,57,51,41,
+41,41,32,40,40,67,39,32,40,95,52,49,51,32,95,54,50,52,41,41,
+32,40,95,54,52,56,32,34,36,112,34,41,41,41,41,41,41,41,41,32,
+40,95,51,57,52,32,95,56,50,53,41,41,41,41,41,41,32,40,40,65,
+32,58,54,51,50,32,95,54,54,56,41,32,40,40,65,32,58,54,51,51,
+32,40,40,40,83,39,32,66,41,32,95,54,51,50,41,32,40,40,66,32,
+40,66,32,40,95,54,55,54,32,40,95,54,55,56,32,40,95,55,56,49,
+32,40,40,79,32,35,56,57,41,32,75,41,41,41,41,41,41,32,95,54,
+55,55,41,41,41,32,40,40,65,32,58,54,51,52,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,67,41,32,40,40,40,67,39,32,40,67,39,
+32,83,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,40,83,39,32,95,50,54,49,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,95,54,51,51,41,41,32,40,40,66,32,40,67,32,
+95,50,54,49,41,41,32,40,40,66,32,95,54,51,56,41,32,40,85,32,
+65,41,41,41,41,41,41,32,85,41,41,32,40,40,66,32,40,66,32,40,
+95,50,54,49,32,40,40,95,51,57,55,32,95,50,54,51,41,32,95,50,
+54,52,41,41,41,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,40,67,39,32,95,52,49,51,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,67,32,95,54,51,50,41,41,41,41,32,40,40,66,32,40,
+40,67,39,32,67,41,32,40,40,66,32,40,67,32,95,54,51,57,41,41,
+32,95,52,49,49,41,41,41,32,95,54,55,53,41,41,41,32,40,40,95,
+49,56,52,32,95,49,57,56,41,32,40,40,95,52,56,53,32,95,50,55,
+55,41,32,40,95,51,53,57,32,35,48,41,41,41,41,41,32,73,41,41,
+41,41,32,40,85,32,75,41,41,41,41,32,95,52,49,52,41,41,32,40,
+40,65,32,58,54,51,53,32,40,40,83,32,40,40,83,32,40,40,40,83,
+39,32,95,49,50,49,41,32,40,40,95,52,57,56,32,95,51,48,54,41,
+32,40,40,95,51,55,50,32,95,50,55,56,41,32,40,95,49,50,55,32,
+95,50,55,57,41,41,41,41,32,40,40,67,32,40,95,52,57,55,32,95,
+51,48,54,41,41,32,40,40,95,51,55,50,32,95,50,55,56,41,32,40,
+95,49,50,56,32,95,50,55,57,41,41,41,41,41,32,40,40,66,32,40,
+95,54,55,54,32,40,95,54,55,53,32,40,95,56,57,55,32,34,68,97,
+116,97,46,73,110,116,101,103,101,114,46,95,105,110,116,76,105,115,116,84,
+111,73,110,116,101,103,101,114,34,41,41,41,41,32,40,40,66,32,95,55,
+48,50,41,32,40,40,66,32,40,95,51,57,53,32,40,40,95,50,54,51,
+32,95,54,55,56,41,32,95,55,55,53,41,41,41,32,95,51,53,51,41,
+41,41,41,41,32,40,40,66,32,40,95,54,55,54,32,40,95,54,55,53,
+32,40,95,56,57,55,32,34,68,97,116,97,46,73,110,116,101,103,101,114,
+95,84,121,112,101,46,95,105,110,116,84,111,73,110,116,101,103,101,114,34,
+41,41,41,41,32,40,40,66,32,95,54,55,56,41,32,40,40,66,32,95,
+55,55,53,41,32,95,51,54,48,41,41,41,41,41,32,40,40,65,32,58,
+54,51,54,32,40,40,40,83,39,32,95,54,55,54,41,32,40,40,66,32,
+40,95,54,55,54,32,40,95,54,55,53,32,40,95,56,57,55,32,34,68,
+97,116,97,46,82,97,116,105,111,95,84,121,112,101,46,95,109,107,82,97,
+116,105,111,110,97,108,34,41,41,41,41,32,40,40,66,32,95,54,51,53,
+41,32,95,53,50,54,41,41,41,32,40,40,66,32,95,54,51,53,41,32,
+95,53,50,55,41,41,41,32,40,40,65,32,58,54,51,55,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,83,32,40,40,67,
+32,40,40,67,32,40,40,83,32,40,40,67,32,40,40,83,32,40,40,67,
+32,40,40,80,32,95,54,55,53,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,95,54,55,54,41,32,95,54,51,55,41,41,32,95,54,51,
+55,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,
+32,40,40,66,32,95,54,50,53,41,32,40,95,56,48,53,32,95,56,48,
+56,41,41,41,41,32,40,75,32,40,40,83,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,67,39,41,32,75,
+41,41,32,95,54,51,53,41,41,32,75,41,41,32,95,54,51,54,41,41,
+32,40,40,66,32,95,54,55,56,41,32,40,40,66,32,95,55,55,53,41,
+32,95,49,51,55,41,41,41,41,32,75,41,41,32,75,41,41,32,75,41,
+41,32,95,54,55,56,41,41,41,41,32,40,40,66,32,95,54,53,50,41,
+32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,95,54,51,49,41,32,95,54,51,55,41,41,41,32,40,
+40,66,32,40,95,50,54,49,32,40,95,54,55,55,32,40,95,56,57,55,
+32,34,36,102,34,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,
+40,40,95,51,57,57,32,95,54,55,54,41,32,40,40,95,50,54,49,32,
+95,54,55,53,41,32,40,95,56,57,55,32,34,36,102,34,41,41,41,41,
+41,32,40,95,51,57,53,32,95,54,51,55,41,41,41,41,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,80,
+32,40,40,66,32,40,95,50,54,49,32,95,55,48,50,41,41,32,40,95,
+51,57,53,32,95,54,51,55,41,41,41,41,32,40,40,66,32,40,40,83,
+39,32,80,41,32,40,40,66,32,95,54,51,55,41,32,40,40,66,32,95,
+55,53,49,41,32,40,40,66,32,95,55,54,54,41,32,40,40,67,32,79,
+41,32,75,41,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,83,39,32,67,
+41,41,32,40,40,66,32,40,66,32,40,67,32,83,39,41,41,41,32,40,
+40,66,32,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,67,39,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,67,39,32,40,95,54,57,48,32,40,95,54,55,
+53,32,40,95,56,57,55,32,34,68,97,116,97,46,76,105,115,116,46,99,
+111,110,99,97,116,77,97,112,34,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,95,54,51,55,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,40,83,39,32,95,55,54,49,41,32,
+40,40,40,67,39,32,79,41,32,95,55,52,51,41,32,75,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,95,55,52,
+56,41,32,95,55,52,51,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,32,40,40,66,32,40,66,32,40,67,
+32,80,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,
+54,50,51,41,41,41,32,40,40,66,32,40,66,32,95,55,53,49,41,41,
+32,95,55,54,55,41,41,41,41,32,40,40,79,32,40,40,80,32,40,95,
+55,52,51,32,95,57,49,52,41,41,32,40,40,95,50,54,49,32,95,54,
+50,51,41,32,40,95,55,53,49,32,40,95,55,54,54,32,95,52,54,49,
+41,41,41,41,41,32,75,41,41,41,41,41,41,41,32,95,54,51,55,41,
+41,41,32,40,40,66,32,95,54,52,57,41,32,95,56,51,48,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,95,54,51,55,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,
+32,40,67,32,95,55,53,53,41,41,41,32,40,40,66,32,40,66,32,95,
+55,53,49,41,41,32,95,55,54,55,41,41,41,32,40,95,55,53,49,32,
+40,95,55,54,54,32,95,52,54,49,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,95,54,51,55,41,41,41,32,40,40,66,32,40,
+66,32,40,67,32,95,55,52,57,41,41,41,32,40,40,66,32,40,66,32,
+95,55,53,49,41,41,32,95,55,54,55,41,41,41,41,41,41,41,32,40,
+75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,95,54,57,48,41,
+32,95,54,51,55,41,41,32,95,54,51,55,41,41,32,95,54,51,55,41,
+41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,
+51,48,50,41,41,41,32,40,40,67,32,40,40,40,83,39,32,95,56,48,
+50,41,32,95,55,55,50,41,32,40,40,66,32,95,54,55,53,41,32,95,
+55,55,50,41,41,41,32,40,40,66,32,40,40,40,83,39,32,40,95,51,
+57,55,32,95,54,55,55,41,41,32,40,40,66,32,40,95,50,54,49,32,
+95,54,51,56,41,41,32,40,95,51,57,53,32,95,54,55,53,41,41,41,
+32,73,41,41,32,40,40,66,32,40,95,51,57,52,32,40,40,40,67,39,
+32,79,41,32,40,40,66,32,95,56,57,55,41,32,40,40,66,32,40,95,
+52,54,51,32,40,40,79,32,35,49,50,48,41,32,75,41,41,41,32,40,
+95,49,53,57,48,32,95,50,56,51,41,41,41,41,32,75,41,41,41,32,
+40,40,95,49,56,54,32,95,49,57,56,41,32,40,40,95,52,56,53,32,
+95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,41,41,41,41,
+41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,
+40,65,32,58,54,51,56,32,40,40,95,50,54,51,32,40,95,54,55,55,
+32,40,95,56,57,55,32,34,36,102,34,41,41,41,32,40,40,95,51,57,
+57,32,95,54,55,54,41,32,40,95,54,55,53,32,40,95,56,57,55,32,
+34,36,102,34,41,41,41,41,41,32,40,40,65,32,58,54,51,57,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,
+40,67,39,32,66,41,32,95,54,55,54,41,41,32,40,40,40,67,39,32,
+40,83,39,32,40,95,51,57,55,32,95,54,55,55,41,41,41,32,40,40,
+66,32,40,66,32,95,54,55,53,41,41,32,40,67,32,95,52,53,49,41,
+41,41,32,73,41,41,41,41,32,40,40,66,32,40,95,51,57,52,32,40,
+40,40,67,39,32,79,41,32,40,40,66,32,95,56,57,55,41,32,40,40,
+66,32,40,95,52,54,51,32,40,40,79,32,35,49,50,48,41,32,75,41,
+41,41,32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,41,32,75,
+41,41,41,32,40,40,95,49,56,54,32,95,49,57,56,41,32,40,40,95,
+52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,
+41,41,41,41,32,40,40,65,32,58,54,52,48,32,40,40,67,32,40,40,
+83,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,83,32,40,40,
+67,32,40,40,67,32,40,40,83,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,83,32,73,41,32,75,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,55,52,52,41,32,95,54,52,48,41,41,32,95,
+54,52,48,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,40,67,39,32,67,
+41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,67,41,32,40,
+40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,75,41,32,75,41,
+41,32,75,41,41,32,75,41,41,32,75,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,83,41,32,40,67,32,40,40,40,67,39,32,
+40,95,52,57,55,32,95,50,56,50,41,41,32,95,52,49,49,41,32,35,
+50,41,41,41,41,32,40,40,66,32,40,66,32,95,54,52,48,41,41,32,
+40,40,66,32,40,66,32,95,55,53,49,41,41,32,40,40,66,32,40,66,
+32,95,55,54,54,41,41,32,40,40,66,32,95,51,57,53,41,32,40,40,
+40,67,39,32,95,50,54,51,41,32,95,55,52,55,41,32,95,55,55,57,
+41,41,41,41,41,41,41,41,32,75,41,41,32,75,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,
+95,49,51,48,50,41,41,41,41,32,40,40,66,32,40,66,32,40,95,50,
+54,49,32,95,54,52,48,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,95,51,57,57,32,95,55,52,52,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,54,52,53,41,32,40,95,56,48,53,32,
+95,56,48,56,41,41,41,32,95,52,49,49,41,41,32,73,41,41,41,41,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,
+32,40,40,66,32,40,95,50,54,49,32,95,54,52,48,41,41,32,40,40,
+95,51,57,55,32,40,40,66,32,95,55,52,52,41,32,40,95,55,52,52,
+32,95,54,52,51,41,41,41,32,95,54,52,52,41,41,41,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,
+50,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,
+32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,
+95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,51,48,50,
+41,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,95,55,53,55,41,32,95,54,52,
+48,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,75,41,41,
+32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,40,65,
+32,58,54,52,49,32,40,40,95,50,54,49,32,95,56,57,55,41,32,40,
+40,95,52,54,51,32,95,49,49,48,54,41,32,34,91,93,34,41,41,41,
+32,40,40,65,32,58,54,52,50,32,40,40,95,50,54,49,32,95,56,57,
+55,41,32,40,40,95,52,54,51,32,95,49,49,48,54,41,32,40,40,79,
+32,35,53,56,41,32,75,41,41,41,41,32,40,40,65,32,58,54,52,51,
+32,40,40,95,50,54,49,32,95,55,53,57,41,32,40,40,95,55,54,51,
+32,40,40,79,32,40,40,80,32,95,54,52,49,41,32,40,40,95,52,56,
+53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,41,41,41,41,
+32,40,40,79,32,40,40,80,32,95,54,52,50,41,32,40,40,95,52,56,
+53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,50,41,41,41,41,
+32,75,41,41,41,32,95,54,52,50,41,41,41,32,40,40,65,32,58,54,
+52,52,32,40,40,95,50,54,49,32,95,55,53,57,41,32,40,40,95,55,
+54,51,32,40,40,79,32,40,40,80,32,95,54,52,49,41,32,40,40,95,
+52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,41,41,
+41,41,32,40,40,79,32,40,40,80,32,95,54,52,50,41,32,40,40,95,
+52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,50,41,41,
+41,41,32,75,41,41,41,32,95,54,52,49,41,41,41,32,40,40,65,32,
+58,54,52,53,32,40,40,66,32,40,40,83,39,32,40,66,32,40,95,50,
+54,49,32,95,55,53,57,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,95,55,54,51,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,
+41,32,40,67,32,80,41,41,32,75,41,41,32,73,41,41,41,32,95,56,
+48,49,41,41,32,40,40,65,32,58,54,52,54,32,40,67,32,40,95,51,
+57,55,32,95,54,55,55,41,41,41,32,40,40,65,32,58,54,52,55,32,
+40,95,51,57,57,32,95,54,55,54,41,41,32,40,40,65,32,58,54,52,
+56,32,40,40,66,32,40,95,52,53,48,32,40,95,50,48,50,32,95,56,
+57,50,41,41,41,32,40,40,40,67,39,32,95,51,57,52,41,32,40,40,
+40,67,39,32,40,67,39,32,79,41,41,32,40,40,66,32,40,66,32,95,
+56,57,55,41,41,32,40,40,40,67,39,32,66,41,32,95,52,54,51,41,
+32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,41,32,75,41,41,
+32,40,40,95,49,56,52,32,95,49,57,56,41,32,35,49,41,41,41,41,
+32,40,40,65,32,58,54,52,57,32,40,40,95,50,54,51,32,95,52,50,
+56,41,32,40,95,54,52,56,32,34,36,113,34,41,41,41,32,40,40,65,
+32,58,54,53,48,32,40,40,95,50,54,51,32,95,49,54,48,55,41,32,
+40,95,51,57,53,32,95,54,53,49,41,41,41,32,40,40,65,32,58,54,
+53,49,32,40,85,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+52,54,51,41,32,95,57,48,50,41,41,32,40,40,66,32,40,95,52,54,
+51,32,34,32,61,32,34,41,41,32,40,95,49,53,57,48,32,95,55,49,
+56,41,41,41,41,41,32,40,40,65,32,58,54,53,50,32,40,40,40,67,
+39,32,40,67,39,32,83,41,41,32,40,40,67,32,40,40,40,67,39,32,
+83,39,41,32,40,40,66,32,67,39,41,32,95,54,53,53,41,41,32,40,
+40,66,32,40,66,32,95,56,51,48,41,41,32,95,55,52,56,41,41,41,
+32,40,40,40,67,39,32,79,41,32,95,54,51,55,41,32,75,41,41,41,
+32,40,95,51,57,53,32,40,85,32,40,40,66,32,40,67,32,40,40,40,
+83,39,32,40,83,39,32,67,41,41,32,40,40,66,32,40,40,67,39,32,
+80,41,32,40,40,67,32,79,41,32,75,41,41,41,32,95,54,50,56,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,50,48,41,
+32,95,54,50,54,41,41,32,95,54,50,55,41,41,41,41,32,95,54,52,
+48,41,41,41,41,41,32,40,40,65,32,58,54,53,51,32,40,40,66,32,
+40,40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,32,40,40,40,
+83,39,32,40,83,39,32,40,95,51,51,32,95,53,56,41,41,41,32,40,
+40,66,32,40,66,32,95,54,50,41,41,32,95,52,49,48,41,41,32,40,
+40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,32,95,52,
+48,57,41,41,41,41,32,40,40,65,32,58,54,53,52,32,40,40,40,95,
+51,50,32,95,53,56,41,32,95,54,51,41,32,40,40,40,83,39,32,40,
+95,51,51,32,95,53,56,41,41,32,40,40,66,32,95,54,50,41,32,95,
+52,50,57,41,41,32,40,40,66,32,40,95,51,52,32,95,53,56,41,41,
+32,95,52,50,56,41,41,41,41,32,40,40,65,32,58,54,53,53,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,
+95,54,48,41,41,41,32,40,40,66,32,67,41,32,40,40,40,67,39,32,
+40,67,39,32,89,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,40,66,32,40,83,39,32,80,41,41,41,32,40,40,
+40,67,39,32,67,39,41,32,40,40,66,32,95,54,53,55,41,32,95,54,
+53,56,41,41,32,95,52,50,51,41,41,41,32,40,40,66,32,40,66,32,
+40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,40,40,
+66,32,95,54,53,57,41,32,40,95,51,52,32,95,53,56,41,41,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,67,39,41,32,40,67,32,95,
+52,54,50,41,41,41,41,41,32,95,52,54,49,41,41,41,41,32,40,95,
+54,52,56,32,34,36,120,34,41,41,41,32,40,40,65,32,58,54,53,54,
+32,80,41,32,40,40,65,32,58,54,53,55,32,40,40,66,32,89,41,32,
+40,40,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,83,32,95,51,57,50,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,83,41,32,40,40,66,
+32,40,67,32,83,39,41,41,32,40,40,66,32,40,66,32,40,95,50,54,
+49,32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,67,32,40,40,
+80,32,40,40,40,110,111,77,97,116,99,104,32,75,41,32,35,48,41,32,
+35,48,41,41,32,40,90,32,40,85,32,40,75,32,75,41,41,41,41,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,
+32,40,40,66,32,40,66,32,40,83,39,32,66,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,95,50,54,49,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,95,54,53,57,41,41,41,32,40,40,67,32,40,67,39,
+32,66,41,41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,41,
+32,40,40,40,83,39,32,40,83,39,32,40,67,39,32,66,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,67,39,32,95,50,54,49,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,54,53,57,
+41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,
+32,67,41,32,40,67,32,95,54,53,55,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,51,57,53,41,32,40,40,40,67,39,
+32,67,41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,40,
+40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,
+85,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,83,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,
+32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,
+67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,
+32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,
+83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,
+41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,
+40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,67,32,67,39,41,41,41,41,32,40,40,66,32,40,
+66,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,
+40,66,32,40,40,67,39,32,66,41,32,80,41,41,41,32,40,40,66,32,
+40,67,39,32,95,50,54,51,41,41,32,40,67,32,95,54,54,55,41,41,
+41,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,41,41,32,40,40,40,110,111,77,97,116,99,104,32,34,
+115,114,99,47,77,105,99,114,111,72,115,47,68,101,115,117,103,97,114,46,
+104,115,34,41,32,35,51,54,49,41,32,35,50,57,41,41,41,41,32,40,
+85,32,40,75,32,75,41,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,
+83,39,41,32,95,51,57,50,41,41,41,32,40,40,40,83,39,32,40,67,
+39,32,40,67,39,32,40,83,39,32,40,95,51,50,32,95,53,56,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,40,67,39,32,40,95,52,51,32,95,53,56,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,
+40,40,83,39,32,40,95,51,50,32,95,53,56,41,41,32,40,40,66,32,
+95,54,53,51,41,32,95,55,55,51,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,83,39,32,40,95,
+51,50,32,95,53,56,41,41,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,40,67,39,32,67,
+39,41,32,95,54,53,55,41,41,32,40,40,67,39,32,95,52,54,51,41,
+32,40,95,51,57,53,32,95,54,55,53,41,41,41,41,41,32,40,40,66,
+32,95,51,57,53,41,32,40,40,66,32,89,41,32,40,40,66,32,40,66,
+32,85,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,
+40,66,39,32,40,85,32,95,49,51,48,50,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,83,39,32,40,83,39,32,40,83,39,32,
+83,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,75,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,66,
+39,32,40,66,39,32,66,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,67,
+39,32,80,41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,32,40,
+40,66,32,40,67,39,32,95,50,54,51,41,41,32,40,67,32,95,54,54,
+55,41,41,41,41,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,40,66,32,40,67,39,32,40,67,39,32,67,41,41,
+41,32,40,40,67,39,32,40,67,39,32,80,41,41,32,40,40,66,32,95,
+52,54,51,41,32,95,54,55,48,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,
+41,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,54,53,54,41,
+41,41,41,32,40,40,66,32,95,54,54,57,41,32,40,40,67,32,40,40,
+67,32,83,41,32,40,40,66,32,90,41,32,40,40,66,32,85,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,67,32,80,41,32,
+75,41,41,41,41,41,41,41,32,40,40,40,110,111,77,97,116,99,104,32,
+75,41,32,35,48,41,32,35,48,41,41,41,41,41,41,32,40,95,54,55,
+49,32,40,40,95,50,54,57,32,40,95,50,48,50,32,95,55,55,52,41,
+41,32,40,85,32,40,90,32,40,90,32,40,40,80,32,95,49,51,48,50,
+41,32,40,90,32,95,54,54,57,41,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,
+95,53,56,41,41,41,41,41,32,40,40,66,32,67,41,32,95,54,54,52,
+41,41,41,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,
+40,85,32,40,90,32,75,41,41,41,41,41,32,95,54,54,54,41,41,41,
+41,32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,40,65,32,58,
+54,53,56,32,40,85,32,40,40,40,67,39,32,40,67,39,32,66,41,41,
+32,40,40,66,32,40,66,32,95,54,55,54,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,54,55,54,41,32,40,40,66,32,40,95,
+54,55,54,32,40,95,54,55,56,32,40,95,55,56,49,32,34,110,111,77,
+97,116,99,104,34,41,41,41,41,32,40,40,66,32,95,54,55,56,41,32,
+95,55,56,48,41,41,41,41,32,40,40,66,32,95,54,55,56,41,32,95,
+55,55,53,41,41,41,41,32,40,40,66,32,95,54,55,56,41,32,95,55,
+55,53,41,41,41,41,32,40,40,65,32,58,54,53,57,32,40,40,40,67,
+39,32,66,41,32,40,95,51,50,32,95,53,56,41,41,32,40,40,40,83,
+39,32,83,41,32,40,40,66,32,40,83,32,95,54,54,48,41,41,32,40,
+40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,95,54,53,
+52,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,
+39,32,40,95,51,50,32,95,53,56,41,41,41,32,40,40,67,32,66,41,
+32,95,54,55,53,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+95,50,54,49,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,
+67,32,95,54,54,56,41,41,41,41,41,41,32,73,41,41,41,32,40,40,
+65,32,58,54,54,48,32,40,40,67,32,40,40,67,32,40,40,80,32,40,
+75,32,95,49,50,53,41,41,32,40,75,32,40,75,32,95,49,50,52,41,
+41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,
+75,32,95,49,50,53,41,41,41,32,40,40,65,32,58,54,54,49,32,40,
+95,54,55,56,32,40,95,55,56,49,32,34,61,61,34,41,41,41,32,40,
+40,65,32,58,54,54,50,32,40,95,54,55,56,32,40,95,55,56,49,32,
+34,61,61,34,41,41,41,32,40,40,65,32,58,54,54,51,32,40,95,54,
+55,56,32,40,95,55,56,49,32,34,101,113,117,97,108,34,41,41,41,32,
+40,40,65,32,58,54,54,52,32,40,40,66,32,89,41,32,40,40,66,32,
+40,66,32,40,83,32,83,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,67,32,66,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,67,32,66,41,41,41,41,41,41,
+32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,40,83,
+39,32,40,83,39,32,40,83,39,32,67,41,41,41,41,41,32,40,40,40,
+83,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,
+40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,
+39,32,67,39,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,95,54,54,53,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,95,51,
+57,53,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,83,39,41,32,40,40,66,32,
+83,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,80,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,95,54,53,54,41,41,32,95,55,54,51,41,41,32,40,85,32,
+75,41,41,41,32,40,85,32,65,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,52,50,56,41,
+41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,
+66,32,40,67,39,32,95,52,54,51,41,41,32,40,40,67,39,32,95,51,
+57,52,41,32,40,40,66,32,85,41,32,40,40,66,32,40,67,32,66,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,
+66,32,40,67,32,67,39,41,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,95,50,48,50,32,95,56,57,
+50,41,41,32,75,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+79,41,41,32,40,67,32,80,41,41,32,75,41,41,41,41,41,32,40,75,
+32,75,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,67,
+39,32,80,41,32,40,40,40,67,39,32,95,52,52,54,41,32,40,85,32,
+65,41,41,32,95,57,49,52,41,41,41,32,75,41,41,41,41,41,32,40,
+85,32,75,41,41,41,32,73,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,80,32,95,49,51,48,50,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,80,41,41,41,41,32,40,40,
+40,67,39,32,67,41,32,40,40,66,32,40,40,67,39,32,67,39,41,32,
+67,39,41,41,32,40,40,66,32,67,41,32,40,67,32,95,54,54,56,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,40,
+67,39,32,95,54,57,48,41,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,83,39,32,83,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,83,32,
+73,41,41,32,40,40,66,32,90,41,32,40,40,40,67,39,32,66,41,32,
+40,95,54,57,48,32,95,54,54,49,41,41,32,95,54,55,56,41,41,41,
+41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,95,49,51,
+48,50,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,95,54,57,48,32,95,54,54,50,41,41,32,
+40,40,66,32,95,54,55,56,41,32,40,40,66,32,95,55,55,53,41,32,
+95,49,51,55,41,41,41,41,41,32,40,40,66,32,90,41,32,40,40,40,
+67,39,32,66,41,32,40,95,54,57,48,32,95,54,54,51,41,41,32,95,
+54,55,56,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,
+40,75,32,95,49,51,48,50,41,41,41,41,41,41,32,67,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,54,54,53,32,40,40,40,67,39,
+32,66,41,32,95,54,52,55,41,32,40,95,51,57,52,32,40,85,32,40,
+40,67,32,66,41,32,40,90,32,40,40,40,67,39,32,40,67,39,32,79,
+41,41,32,40,67,32,95,54,52,54,41,41,32,75,41,41,41,41,41,41,
+41,32,40,40,65,32,58,54,54,54,32,40,40,66,32,40,40,83,32,40,
+40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,80,41,32,40,85,32,75,41,41,41,32,40,85,32,
+75,41,41,41,32,40,85,32,65,41,41,41,32,40,40,66,32,40,40,89,
+32,40,40,66,32,40,40,83,39,32,83,41,32,40,40,66,32,85,41,32,
+40,40,40,67,39,32,80,41,32,95,52,50,51,41,32,95,52,54,49,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,83,32,66,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,66,41,32,40,85,32,95,49,51,48,50,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,90,41,41,41,41,41,41,32,40,40,40,67,39,32,40,
+83,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,40,67,39,32,95,49,50,50,41,32,
+95,55,57,50,41,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,83,39,32,40,83,39,32,80,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,66,41,32,40,67,32,95,52,54,50,41,41,41,32,40,40,
+66,32,40,66,32,80,41,41,32,40,40,66,32,40,66,32,95,52,50,51,
+41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,41,41,32,40,40,
+66,32,80,41,32,95,52,50,51,41,41,41,41,41,41,41,41,32,95,52,
+54,49,41,41,32,40,85,32,65,41,41,41,41,32,40,95,52,50,54,32,
+40,85,32,40,90,32,40,90,32,40,40,80,32,95,49,51,48,50,41,32,
+40,90,32,40,40,66,32,95,49,50,50,41,32,95,55,57,50,41,41,41,
+41,41,41,41,41,41,32,40,40,65,32,58,54,54,55,32,40,40,67,32,
+40,40,40,83,39,32,67,39,41,32,40,40,66,32,83,39,41,32,40,40,
+67,32,40,95,50,48,50,32,95,56,57,50,41,41,32,95,57,49,52,41,
+41,41,32,95,55,50,48,41,41,32,73,41,41,32,40,40,65,32,58,54,
+54,56,32,40,40,67,32,40,40,40,83,39,32,67,39,41,32,40,40,66,
+32,83,39,41,32,40,40,67,32,40,95,50,48,50,32,95,56,57,50,41,
+41,32,95,57,49,52,41,41,41,32,40,40,40,83,39,32,40,83,39,32,
+83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,
+40,66,32,40,67,32,83,39,41,41,41,32,40,40,66,32,40,67,39,32,
+67,41,41,32,40,40,66,32,67,41,32,40,95,50,48,50,32,95,56,57,
+50,41,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+83,41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,40,40,66,
+32,95,51,57,54,41,32,40,67,32,40,95,50,48,50,32,95,56,57,50,
+41,41,41,41,32,95,55,50,49,41,41,32,73,41,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,
+39,32,80,41,41,41,32,95,55,50,48,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+67,39,32,95,54,55,54,41,41,32,95,54,55,55,41,41,41,41,41,41,
+41,41,41,32,73,41,41,32,40,40,65,32,58,54,54,57,32,40,40,83,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,67,41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,
+32,40,40,80,32,40,75,32,95,50,53,41,41,32,40,90,32,95,54,54,
+57,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,95,55,54,
+53,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,
+75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,
+41,41,41,32,40,90,32,75,41,41,41,32,40,75,32,95,54,54,57,41,
+41,41,32,75,41,41,32,73,41,41,32,40,90,32,75,41,41,41,32,40,
+95,49,51,48,51,32,40,40,80,32,95,56,51,55,41,32,95,56,48,56,
+41,41,41,41,32,40,40,65,32,58,54,55,48,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+80,32,40,75,32,95,49,51,48,50,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,52,54,51,41,32,95,54,55,48,41,41,32,40,
+40,67,32,79,41,32,75,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,
+40,75,32,40,75,32,95,52,54,49,41,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,
+75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,
+75,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,
+41,41,32,40,75,32,95,52,54,49,41,41,41,32,40,75,32,40,75,32,
+95,49,51,48,50,41,41,41,41,32,40,40,65,32,58,54,55,49,32,40,
+40,66,32,89,41,32,40,40,66,32,40,66,32,40,80,32,95,52,54,49,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,
+32,67,41,41,32,40,66,32,95,52,53,50,41,41,41,32,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,52,54,50,
+41,41,32,95,52,54,50,41,41,41,41,41,41,32,40,40,65,32,58,54,
+55,50,32,40,40,66,32,40,95,50,54,51,32,40,95,51,57,54,32,40,
+40,95,50,54,51,32,40,40,67,32,40,95,52,57,57,32,95,50,56,50,
+41,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,
+57,32,35,49,41,41,41,41,32,95,52,49,49,41,41,41,41,32,95,54,
+55,49,41,41,32,40,40,65,32,58,54,55,51,32,40,40,67,32,40,40,
+40,67,39,32,66,41,32,40,40,40,83,39,32,40,95,54,55,50,32,40,
+95,50,48,50,32,95,56,57,50,41,41,41,32,40,40,66,32,40,95,50,
+54,49,32,40,95,51,57,54,32,40,40,67,32,40,95,50,48,51,32,95,
+56,57,50,41,41,32,95,57,49,52,41,41,41,41,32,40,95,51,57,53,
+32,95,53,54,53,41,41,41,32,73,41,41,32,40,40,66,32,90,41,32,
+40,40,83,32,80,41,32,40,40,40,67,39,32,66,41,32,80,41,32,40,
+90,32,40,90,32,40,40,40,83,39,32,95,50,54,49,41,32,40,40,66,
+32,95,56,51,54,41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,
+32,40,40,66,32,40,95,52,54,51,32,34,100,117,112,108,105,99,97,116,
+101,32,100,101,102,105,110,105,116,105,111,110,32,34,41,41,32,95,57,48,
+50,41,41,41,41,41,41,41,41,41,32,40,95,50,52,32,34,99,104,101,
+99,107,68,117,112,34,41,41,41,32,40,40,65,32,58,54,55,52,32,40,
+40,83,32,73,41,32,40,40,40,83,39,32,40,67,39,32,67,41,41,32,
+40,40,40,83,39,32,66,41,32,40,40,66,32,67,41,32,40,40,40,83,
+39,32,80,41,32,75,41,32,40,90,32,75,41,41,41,41,32,40,40,40,
+83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,83,
+39,32,66,41,32,40,66,39,32,40,40,66,32,67,41,32,40,40,40,83,
+39,32,80,41,32,75,41,32,40,90,32,75,41,41,41,41,41,32,40,40,
+40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,83,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,67,39,32,83,39,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,95,53,57,41,41,41,41,
+32,40,40,66,32,40,66,32,40,67,39,32,89,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,67,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,67,
+32,40,40,83,32,73,41,32,40,90,32,40,95,51,52,32,95,53,56,41,
+41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,83,39,
+32,83,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,67,
+39,41,32,83,39,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,
+39,32,83,39,41,32,67,39,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,67,39,41,41,
+32,40,40,66,32,40,66,32,95,49,50,49,41,41,32,40,67,32,40,95,
+50,48,50,32,95,56,57,50,41,41,41,41,41,32,40,67,32,40,95,50,
+48,50,32,95,56,57,50,41,41,41,41,41,41,32,40,40,66,32,40,40,
+95,51,51,32,95,53,56,41,32,40,95,54,50,32,95,49,50,53,41,41,
+41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,90,32,75,
+41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,41,32,40,40,
+40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,
+95,49,52,32,95,53,55,41,41,41,32,40,66,32,40,40,95,50,55,54,
+32,95,53,54,41,32,95,54,55,54,41,41,41,41,32,73,41,41,41,41,
+32,40,40,67,39,32,66,41,32,40,40,66,32,40,95,50,55,54,32,95,
+53,54,41,41,32,95,54,55,55,41,41,41,41,32,40,90,32,40,95,51,
+52,32,95,53,56,41,41,41,41,41,32,95,49,50,52,41,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,
+39,32,40,66,39,32,40,66,39,32,80,41,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,
+66,39,32,80,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+66,39,32,40,66,39,32,40,66,39,32,40,40,66,32,95,50,54,49,41,
+32,95,54,55,55,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,
+67,39,41,32,95,54,51,51,41,41,32,95,54,55,55,41,41,41,41,41,
+41,32,95,54,55,53,41,41,32,40,40,67,32,95,57,48,55,41,32,40,
+40,79,32,35,54,52,41,32,75,41,41,41,41,41,32,75,41,41,41,32,
+75,41,41,41,32,40,40,65,32,58,54,55,53,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,
+32,40,40,65,32,58,54,55,54,32,40,40,66,32,90,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,
+41,41,41,41,32,40,40,65,32,58,54,55,55,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,80,
+41,41,41,41,32,40,40,65,32,58,54,55,56,32,40,90,32,40,90,32,
+40,90,32,85,41,41,41,41,32,40,40,65,32,58,54,55,57,32,40,40,
+95,50,48,49,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,67,
+32,67,39,41,32,40,95,50,48,50,32,95,56,57,50,41,41,41,32,40,
+75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,
+95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,67,32,40,
+40,40,67,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,85,32,
+40,75,32,95,49,50,52,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+95,49,50,49,41,41,32,40,95,50,48,50,32,95,54,55,57,41,41,41,
+41,32,40,95,50,48,50,32,95,54,55,57,41,41,41,41,32,40,75,32,
+40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,52,41,
+41,41,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,40,
+66,32,67,39,41,32,40,40,80,32,40,75,32,95,49,50,52,41,41,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,95,49,50,49,41,41,32,40,95,50,48,50,32,95,56,57,
+50,41,41,41,41,32,40,95,50,48,50,32,95,54,55,57,41,41,41,41,
+32,40,75,32,95,49,50,52,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,67,32,40,40,80,32,40,75,32,95,49,50,52,41,41,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,
+32,95,49,50,52,41,41,41,41,32,40,95,50,48,50,32,95,55,56,51,
+41,41,41,41,32,40,95,50,48,53,32,95,54,55,57,41,41,41,32,40,
+40,65,32,58,54,56,48,32,75,41,32,40,40,65,32,58,54,56,49,32,
+79,41,32,40,40,65,32,58,54,56,50,32,40,40,67,32,40,40,67,32,
+40,40,80,32,40,75,32,95,54,56,48,41,41,32,95,54,56,49,41,41,
+32,40,75,32,40,75,32,95,54,56,48,41,41,41,41,32,40,75,32,95,
+54,56,48,41,41,41,32,40,40,65,32,58,54,56,51,32,40,40,66,32,
+40,67,32,40,40,67,32,40,40,80,32,40,75,32,95,49,50,52,41,41,
+32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,41,32,40,40,40,67,39,32,67,41,
+32,40,40,66,32,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,80,32,40,75,32,95,49,50,52,41,41,32,40,75,
+32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,
+40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,
+41,32,40,75,32,95,49,50,52,41,41,41,41,32,40,95,50,48,50,32,
+95,49,51,51,41,41,41,32,40,75,32,95,49,50,52,41,41,41,41,32,
+40,40,65,32,58,54,56,52,32,40,95,54,56,51,32,40,40,79,32,35,
+55,53,41,32,75,41,41,41,32,40,40,65,32,58,54,56,53,32,40,95,
+54,56,51,32,40,40,79,32,35,55,51,41,32,75,41,41,41,32,40,40,
+65,32,58,54,56,54,32,40,95,54,56,51,32,40,40,79,32,35,54,54,
+41,32,75,41,41,41,32,40,40,65,32,58,54,56,55,32,40,95,54,56,
+51,32,40,40,79,32,35,54,55,41,32,75,41,41,41,32,40,40,65,32,
+58,54,56,56,32,40,95,54,56,51,32,40,40,79,32,35,56,57,41,32,
+75,41,41,41,32,40,40,65,32,58,54,56,57,32,40,95,54,56,51,32,
+40,40,79,32,35,56,48,41,32,75,41,41,41,32,40,40,65,32,58,54,
+57,48,32,40,40,66,32,40,66,32,95,54,55,54,41,41,32,95,54,55,
+54,41,41,32,40,40,65,32,58,54,57,49,32,40,40,66,32,40,66,32,
+40,66,32,95,54,55,54,41,41,41,32,95,54,57,48,41,41,32,40,40,
+65,32,58,54,57,50,32,40,95,54,55,56,32,40,95,55,56,49,32,40,
+40,79,32,35,55,57,41,32,75,41,41,41,41,32,40,40,65,32,58,54,
+57,51,32,40,95,54,55,56,32,40,95,55,56,49,32,40,40,79,32,35,
+55,53,41,32,75,41,41,41,41,32,40,40,65,32,58,54,57,52,32,40,
+95,54,55,56,32,40,95,55,56,49,32,40,40,79,32,35,54,55,41,32,
+75,41,41,41,41,32,40,40,65,32,58,54,57,53,32,40,95,54,55,56,
+32,40,95,55,56,49,32,40,40,79,32,35,55,51,41,32,75,41,41,41,
+41,32,40,40,65,32,58,54,57,54,32,40,95,54,55,56,32,40,95,55,
+56,49,32,40,40,79,32,35,55,53,41,32,75,41,41,41,41,32,40,40,
+65,32,58,54,57,55,32,40,95,54,55,56,32,40,95,55,56,49,32,40,
+40,79,32,35,56,51,41,32,75,41,41,41,41,32,40,40,65,32,58,54,
+57,56,32,40,95,54,55,56,32,40,95,55,56,49,32,40,40,79,32,35,
+56,48,41,32,75,41,41,41,41,32,40,40,65,32,58,54,57,57,32,40,
+40,67,32,40,40,67,32,40,40,80,32,40,40,66,32,95,52,54,51,41,
+32,95,57,48,50,41,41,32,40,40,66,32,40,66,32,40,95,50,54,51,
+32,40,95,52,54,51,32,40,40,79,32,35,52,48,41,32,75,41,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,51,
+41,32,95,54,57,57,41,41,32,40,40,66,32,40,95,50,54,51,32,40,
+95,52,54,51,32,40,40,79,32,35,51,50,41,32,75,41,41,41,41,32,
+40,40,40,67,39,32,95,50,54,51,41,32,95,54,57,57,41,32,40,95,
+52,54,51,32,40,40,79,32,35,52,49,41,32,75,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,51,
+41,32,40,40,66,32,95,52,54,51,41,32,40,40,66,32,40,95,52,54,
+51,32,34,40,92,57,50,38,34,41,41,32,40,40,40,67,39,32,95,52,
+54,51,41,32,95,57,48,50,41,32,40,40,79,32,35,51,50,41,32,75,
+41,41,41,41,41,41,32,40,40,40,67,39,32,95,50,54,51,41,32,95,
+54,57,57,41,32,40,95,52,54,51,32,40,40,79,32,35,52,49,41,32,
+75,41,41,41,41,41,41,32,40,40,83,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,83,41,32,40,40,67,32,40,40,67,32,67,39,41,32,75,41,
+41,32,40,75,32,95,50,53,41,41,41,32,75,41,41,32,40,75,32,95,
+50,53,41,41,41,32,75,41,41,32,40,40,83,32,40,40,83,32,40,40,
+40,67,39,32,40,95,52,57,57,32,95,50,56,50,41,41,32,95,52,49,
+49,41,32,35,49,41,41,32,40,40,66,32,95,54,57,57,41,32,95,55,
+48,49,41,41,41,32,40,40,66,32,95,52,54,51,41,32,95,55,48,48,
+41,41,41,41,32,75,41,41,32,75,41,41,32,40,40,66,32,95,52,54,
+51,41,32,95,56,54,50,41,41,41,41,32,40,40,65,32,58,55,48,48,
+32,40,40,66,32,40,95,52,54,50,32,35,51,52,41,41,32,40,40,40,
+67,39,32,95,52,54,51,41,32,40,95,51,57,52,32,40,40,83,32,40,
+40,83,32,40,40,40,83,39,32,95,49,50,48,41,32,40,40,67,32,40,
+95,50,48,50,32,95,49,51,49,41,41,32,35,51,52,41,41,32,40,40,
+40,83,39,32,95,49,50,48,41,32,40,40,67,32,40,95,50,48,50,32,
+95,49,51,49,41,41,32,35,57,50,41,41,32,40,40,40,83,39,32,95,
+49,50,48,41,32,40,40,67,32,40,95,52,57,55,32,95,49,51,50,41,
+41,32,35,51,50,41,41,32,40,40,67,32,40,95,52,57,57,32,95,49,
+51,50,41,41,32,35,49,50,54,41,41,41,41,41,32,40,40,67,32,79,
+41,32,75,41,41,41,32,40,40,66,32,40,95,52,54,50,32,35,57,50,
+41,41,32,40,40,40,67,39,32,95,52,54,51,41,32,40,40,66,32,40,
+95,49,53,57,48,32,95,50,56,51,41,41,32,95,49,51,55,41,41,32,
+40,40,79,32,35,51,56,41,32,75,41,41,41,41,41,41,32,40,40,79,
+32,35,51,52,41,32,75,41,41,41,41,32,40,40,65,32,58,55,48,49,
+32,40,40,95,50,54,51,32,95,55,48,50,41,32,40,95,51,57,53,32,
+40,40,95,50,54,51,32,95,54,55,56,41,32,40,40,95,50,54,51,32,
+95,55,55,53,41,32,95,49,51,55,41,41,41,41,41,32,40,40,65,32,
+58,55,48,50,32,40,40,95,51,57,55,32,40,95,54,57,48,32,95,54,
+57,50,41,41,32,95,54,57,51,41,41,32,40,40,65,32,58,55,48,51,
+32,40,40,95,50,54,51,32,95,55,49,55,41,32,95,55,48,52,41,41,
+32,40,40,65,32,58,55,48,52,32,40,40,83,32,40,40,67,32,40,40,
+67,32,40,40,83,32,73,41,32,75,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,54,55,54,41,32,95,55,48,52,41,41,32,95,
+55,48,52,41,41,41,32,95,55,48,53,41,41,32,75,41,41,32,40,40,
+65,32,58,55,48,53,32,40,40,66,32,89,41,32,40,40,40,67,39,32,
+40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,80,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,95,50,48,
+50,32,95,56,57,50,41,41,32,40,40,66,32,95,55,48,54,41,32,95,
+54,55,53,41,41,41,32,95,54,57,53,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,66,41,41,32,40,66,32,95,55,48,55,41,41,32,73,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,95,50,54,
+49,41,41,32,95,55,48,53,41,41,41,32,40,90,32,95,55,48,54,41,
+41,41,41,32,40,40,65,32,58,55,48,54,32,40,95,54,55,54,32,95,
+54,57,54,41,41,32,40,40,65,32,58,55,48,55,32,40,40,67,32,40,
+40,40,83,39,32,67,39,41,32,95,54,56,52,41,32,40,40,83,32,40,
+40,40,67,39,32,83,39,41,32,40,40,66,32,83,41,32,95,54,56,50,
+41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,67,32,95,54,56,52,41,41,41,32,40,40,83,32,40,40,40,83,39,
+32,83,39,41,32,95,54,56,50,41,32,40,40,67,32,40,40,40,83,39,
+32,83,39,41,32,95,54,56,53,41,32,40,67,32,95,55,49,50,41,41,
+41,32,73,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,
+32,66,41,41,41,32,40,40,66,32,40,66,32,40,67,32,95,54,56,52,
+41,41,41,32,40,67,32,95,55,49,50,41,41,41,32,40,40,66,32,40,
+66,32,95,55,48,54,41,41,32,95,54,55,54,41,41,41,41,41,41,32,
+95,55,48,56,41,41,41,32,95,54,57,53,41,41,32,40,40,65,32,58,
+55,48,56,32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,83,32,
+95,54,56,50,41,41,32,95,55,48,57,41,41,32,40,40,40,83,39,32,
+40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,
+40,67,32,95,54,56,52,41,41,41,32,95,55,48,57,41,41,32,95,55,
+49,48,41,41,41,32,40,40,65,32,58,55,48,57,32,40,40,83,32,40,
+40,40,67,39,32,83,39,41,32,40,40,66,32,83,41,32,95,54,56,50,
+41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,67,32,95,54,56,50,41,41,41,32,40,40,66,32,40,40,67,39,32,
+66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,67,32,95,54,
+56,54,41,41,41,41,32,40,40,67,39,32,67,41,32,40,67,32,95,55,
+49,53,41,41,41,41,41,41,32,40,95,54,57,48,32,95,54,57,55,41,
+41,41,32,40,40,65,32,58,55,49,48,32,40,40,83,32,40,40,40,67,
+39,32,83,39,41,32,40,40,66,32,83,41,32,95,54,56,50,41,41,32,
+40,40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,40,67,32,
+95,54,56,50,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,
+39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,
+39,32,83,39,41,32,95,54,56,54,41,41,41,41,32,40,40,66,32,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,67,41,41,32,40,
+67,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,95,49,50,49,
+41,32,95,54,56,55,41,41,32,95,54,56,53,41,41,41,41,41,32,40,
+67,32,40,95,54,57,48,32,95,54,57,56,41,41,41,41,41,32,40,40,
+67,39,32,67,41,32,40,67,32,95,55,49,54,41,41,41,41,41,41,32,
+95,55,49,49,41,41,32,40,40,65,32,58,55,49,49,32,40,95,54,57,
+48,32,95,54,57,52,41,41,32,40,40,65,32,58,55,49,50,32,40,40,
+83,32,40,40,40,67,39,32,83,39,41,32,40,40,66,32,83,41,32,95,
+54,56,50,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,32,40,40,66,32,67,41,32,40,40,66,32,40,40,67,39,
+32,67,39,41,32,40,40,66,32,95,49,50,49,41,32,95,54,56,54,41,
+41,41,32,40,40,66,32,40,40,67,39,32,95,49,50,49,41,32,95,54,
+56,52,41,41,32,95,54,56,57,41,41,41,41,32,40,95,54,55,56,32,
+40,95,55,56,49,32,40,40,79,32,35,55,57,41,32,75,41,41,41,41,
+41,41,32,95,55,49,51,41,41,32,40,40,65,32,58,55,49,51,32,40,
+40,40,83,39,32,83,41,32,40,40,66,32,40,40,67,39,32,83,41,32,
+95,54,56,50,41,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,
+32,40,40,66,32,40,66,32,40,40,83,39,32,83,39,41,32,95,54,56,
+50,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,67,39,
+41,32,40,40,66,32,95,49,50,49,41,32,95,54,56,55,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,50,49,41,32,95,
+54,56,55,41,41,32,95,54,56,53,41,41,41,32,95,54,57,56,41,41,
+41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,40,40,
+40,67,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,
+95,49,50,49,41,32,95,54,56,56,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,49,50,49,41,32,95,54,56,54,41,41,32,
+95,54,56,52,41,41,41,41,41,41,32,95,55,49,52,41,41,32,40,40,
+65,32,58,55,49,52,32,40,40,67,32,40,40,40,83,39,32,83,39,41,
+32,95,54,56,53,41,32,40,95,54,57,48,32,40,95,54,55,56,32,40,
+95,55,56,49,32,40,40,79,32,35,54,54,41,32,75,41,41,41,41,41,
+41,32,73,41,41,32,40,40,65,32,58,55,49,53,32,40,95,54,57,49,
+32,40,95,54,55,56,32,40,95,55,56,49,32,34,83,39,34,41,41,41,
+41,32,40,40,65,32,58,55,49,54,32,40,95,54,57,49,32,40,95,54,
+55,56,32,40,95,55,56,49,32,34,67,39,34,41,41,41,41,32,40,40,
+65,32,58,55,49,55,32,40,40,67,32,40,40,83,32,95,54,56,50,41,
+32,73,41,41,32,40,40,66,32,40,40,67,39,32,40,67,32,40,40,40,
+67,39,32,67,41,32,40,40,83,32,40,40,40,67,39,32,83,39,41,32,
+40,40,66,32,95,49,50,49,41,32,95,54,56,52,41,41,32,95,54,56,
+53,41,41,32,40,40,40,67,39,32,67,41,32,40,40,83,32,40,40,40,
+67,39,32,83,39,41,32,40,40,66,32,95,49,50,49,41,32,95,54,56,
+54,41,41,32,95,54,56,52,41,41,32,40,40,40,67,39,32,67,41,32,
+40,40,83,32,40,40,40,67,39,32,83,39,41,32,40,40,66,32,95,49,
+50,49,41,32,95,54,56,55,41,41,32,95,54,56,53,41,41,32,40,40,
+40,67,39,32,67,41,32,40,40,83,32,40,40,40,67,39,32,83,39,41,
+32,40,40,66,32,95,49,50,49,41,32,95,54,56,54,41,41,32,95,54,
+56,54,41,41,32,40,40,40,67,39,32,67,41,32,40,40,83,32,40,40,
+40,67,39,32,83,39,41,32,40,40,66,32,95,49,50,49,41,32,95,54,
+56,55,41,41,32,95,54,56,55,41,41,32,40,40,40,83,39,32,83,41,
+32,40,40,66,32,40,83,32,95,54,56,50,41,41,32,95,54,55,54,41,
+41,32,40,40,40,83,39,32,66,41,32,40,40,40,67,39,32,67,39,41,
+32,40,40,66,32,95,49,50,49,41,32,95,54,56,56,41,41,32,95,54,
+56,52,41,41,32,95,54,55,54,41,41,41,41,32,40,95,54,55,56,32,
+40,95,55,56,49,32,40,40,79,32,35,56,50,41,32,75,41,41,41,41,
+41,41,32,40,95,54,55,56,32,40,95,55,56,49,32,34,66,39,34,41,
+41,41,41,41,32,40,95,54,55,56,32,40,95,55,56,49,32,40,40,79,
+32,35,56,53,41,32,75,41,41,41,41,41,41,32,40,95,54,55,56,32,
+40,95,55,56,49,32,40,40,79,32,35,57,48,41,32,75,41,41,41,41,
+41,41,32,40,95,54,55,56,32,40,95,55,56,49,32,40,40,79,32,35,
+54,53,41,32,75,41,41,41,41,41,41,32,95,55,49,55,41,41,32,95,
+55,49,55,41,41,41,32,40,40,65,32,58,55,49,56,32,40,40,40,95,
+49,53,56,56,32,40,95,49,53,57,50,32,95,55,49,56,41,41,32,40,
+40,95,50,54,51,32,95,49,53,56,48,41,32,95,55,49,57,41,41,32,
+40,95,49,53,57,52,32,95,55,49,56,41,41,41,32,40,40,65,32,58,
+55,49,57,32,40,40,67,32,40,40,67,32,40,40,80,32,95,57,48,51,
+41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,
+54,54,41,32,95,55,49,57,41,41,32,95,55,49,57,41,41,41,41,32,
+40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,
+41,32,40,40,40,67,39,32,95,49,53,54,53,41,32,40,40,66,32,40,
+95,49,53,54,53,32,40,95,49,53,51,53,32,40,40,79,32,35,57,50,
+41,32,75,41,41,41,41,32,95,57,48,51,41,41,32,40,95,49,53,51,
+53,32,40,40,79,32,35,52,54,41,32,75,41,41,41,41,41,32,95,55,
+49,57,41,41,41,41,32,40,40,66,32,95,49,53,51,53,41,32,95,56,
+54,50,41,41,41,32,40,40,65,32,58,55,50,48,32,40,40,66,32,89,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,67,41,41,
+32,40,40,66,32,40,66,32,40,83,32,73,41,41,41,32,40,40,66,32,
+40,67,39,32,67,41,41,32,40,40,66,32,67,41,32,40,67,32,40,95,
+50,48,50,32,95,56,57,50,41,41,41,41,41,41,41,32,40,40,40,83,
+39,32,40,83,39,32,40,67,39,32,66,41,41,41,32,40,66,32,40,66,
+32,95,54,55,54,41,41,41,32,73,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,67,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,40,40,66,32,40,83,39,32,67,39,41,41,32,40,95,50,48,50,
+32,95,56,57,50,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,
+83,41,41,32,40,40,66,32,40,40,83,39,32,40,83,39,32,83,39,41,
+41,32,40,40,66,32,40,67,32,40,95,52,51,50,32,95,56,57,50,41,
+41,41,32,95,55,50,49,41,41,41,32,40,66,32,40,40,67,39,32,66,
+41,32,95,54,55,55,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,67,39,32,40,83,39,32,40,83,32,95,54,55,55,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+66,39,41,32,66,39,41,41,32,40,40,40,67,39,32,67,39,41,32,95,
+55,50,48,41,32,95,54,55,53,41,41,41,32,40,40,66,32,40,66,32,
+95,52,50,56,41,41,32,40,40,40,67,39,32,40,67,39,32,95,51,57,
+52,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,83,41,32,40,40,40,67,39,32,
+40,67,39,32,95,49,50,50,41,41,32,40,40,66,32,40,67,32,40,95,
+52,51,50,32,95,56,57,50,41,41,41,32,95,55,50,50,41,41,32,75,
+41,41,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,40,
+67,39,32,95,49,50,50,41,41,32,40,40,66,32,40,67,32,40,95,52,
+51,50,32,95,56,57,50,41,41,41,32,95,55,50,50,41,41,32,75,41,
+41,32,40,40,67,32,79,41,32,75,41,41,41,41,32,40,40,66,32,95,
+56,57,55,41,32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,35,
+57,55,41,32,75,41,41,41,32,40,95,49,53,57,48,32,95,50,56,51,
+41,41,41,41,41,32,40,40,95,49,56,52,32,95,49,57,56,41,32,35,
+48,41,41,41,41,41,41,41,41,41,32,75,41,41,41,32,40,40,65,32,
+58,55,50,49,32,40,40,67,32,40,40,67,32,40,40,80,32,40,40,67,
+32,79,41,32,75,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,95,52,54,51,41,32,95,55,50,49,41,41,32,95,55,50,49,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,95,52,52,51,32,40,95,50,
+48,50,32,95,56,57,50,41,41,41,32,95,55,50,49,41,41,41,32,40,
+75,32,95,52,54,49,41,41,41,32,40,40,65,32,58,55,50,50,32,40,
+40,67,32,40,40,67,32,40,40,80,32,40,40,67,32,79,41,32,75,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,
+32,95,55,50,50,41,41,32,95,55,50,50,41,41,41,32,40,40,40,67,
+39,32,66,41,32,95,52,54,50,41,32,95,55,50,50,41,41,41,32,40,
+75,32,95,52,54,49,41,41,41,32,40,40,65,32,58,55,50,51,32,40,
+40,66,32,40,66,32,67,41,41,32,80,41,41,32,40,40,65,32,58,55,
+50,52,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,85,41,41,41,41,32,40,40,65,32,58,55,50,53,32,40,
+90,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,
+41,32,40,40,65,32,58,55,50,54,32,40,90,32,40,90,32,40,40,66,
+32,90,41,32,85,41,41,41,41,32,40,40,65,32,58,55,50,55,32,40,
+90,32,40,90,32,40,90,32,85,41,41,41,41,32,40,40,65,32,58,55,
+50,56,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,50,57,32,40,40,66,32,90,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,80,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+51,48,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,55,51,49,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,55,51,50,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,80,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+51,51,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,51,52,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,51,53,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,51,54,32,40,
+40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,55,51,55,32,40,40,66,32,40,66,32,40,66,32,90,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,
+40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,55,51,56,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,85,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+51,57,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,80,41,41,41,32,40,40,65,32,58,55,
+52,48,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,
+41,32,40,40,65,32,58,55,52,49,32,40,90,32,40,40,66,32,90,41,
+32,85,41,41,41,32,40,40,65,32,58,55,52,50,32,40,90,32,40,90,
+32,85,41,41,41,32,40,40,65,32,58,55,52,51,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+52,52,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,52,53,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+52,54,32,40,90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,52,55,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,52,56,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,52,57,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,55,53,48,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,55,53,49,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+53,50,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+53,51,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,53,52,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,55,53,53,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,53,54,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+53,55,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,
+53,56,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,85,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,55,53,57,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+40,66,32,90,41,32,85,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,54,48,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,79,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,55,54,49,32,40,40,66,32,40,
+66,32,40,95,50,54,49,32,95,55,52,54,41,41,41,32,95,55,54,50,
+41,41,32,40,40,65,32,58,55,54,50,32,40,40,40,67,39,32,40,67,
+39,32,79,41,41,32,40,40,40,67,39,32,66,41,32,95,55,57,48,41,
+32,40,40,40,67,39,32,95,55,57,49,41,32,40,40,40,67,39,32,79,
+41,32,40,80,32,95,52,54,49,41,41,32,75,41,41,32,95,52,54,49,
+41,41,41,32,75,41,41,32,40,40,65,32,58,55,54,51,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,
+41,41,41,32,40,40,65,32,58,55,54,52,32,40,90,32,40,40,66,32,
+90,41,32,85,41,41,41,32,40,40,65,32,58,55,54,53,32,40,40,66,
+32,90,41,32,79,41,41,32,40,40,65,32,58,55,54,54,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,41,41,32,
+40,40,65,32,58,55,54,55,32,40,40,66,32,90,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+80,41,41,41,41,41,41,32,40,40,65,32,58,55,54,56,32,40,90,32,
+40,90,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,85,41,41,41,41,41,41,32,40,40,65,32,58,55,54,57,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,80,41,41,41,41,41,41,32,40,40,65,32,58,55,55,48,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,
+80,41,41,41,41,41,41,32,40,40,65,32,58,55,55,49,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,41,41,41,41,32,40,40,65,32,58,55,55,50,
+32,40,40,67,32,40,40,80,32,65,41,32,73,41,41,32,40,75,32,40,
+75,32,40,95,50,52,32,34,99,111,110,73,100,101,110,116,34,41,41,41,
+41,41,32,40,40,65,32,58,55,55,51,32,40,40,67,32,40,40,80,32,
+40,40,66,32,40,66,32,40,95,50,54,49,32,40,95,52,55,49,32,40,
+95,50,52,32,34,99,111,110,65,114,105,116,121,34,41,41,41,41,41,32,
+40,67,32,40,95,52,51,54,32,95,56,57,50,41,41,41,41,32,40,75,
+32,35,49,41,41,41,32,40,75,32,40,75,32,35,48,41,41,41,41,32,
+40,40,65,32,58,55,55,52,32,40,40,95,50,48,49,32,40,40,40,67,
+39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,90,32,
+40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,67,32,67,39,41,
+32,40,90,32,40,95,50,48,50,32,95,56,57,50,41,41,41,41,32,40,
+75,32,95,49,50,52,41,41,41,32,40,75,32,40,75,32,95,49,50,52,
+41,41,41,41,41,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,
+32,40,85,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,
+95,50,48,50,32,95,56,57,50,41,41,41,32,40,75,32,40,75,32,95,
+49,50,52,41,41,41,41,41,32,40,90,32,40,40,40,67,39,32,66,41,
+32,40,40,80,32,40,75,32,40,75,32,95,49,50,52,41,41,41,32,40,
+75,32,95,49,50,52,41,41,41,32,40,90,32,40,95,50,48,50,32,95,
+55,56,51,41,41,41,41,41,41,32,40,95,50,48,53,32,95,55,55,52,
+41,41,41,32,40,40,65,32,58,55,55,53,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,55,54,
+32,40,90,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,55,55,55,32,40,90,32,40,90,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,55,55,56,32,40,90,32,40,90,32,40,90,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,55,57,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,41,41,41,
+41,41,41,32,40,40,65,32,58,55,56,48,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,40,40,66,32,90,
+41,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,58,55,56,49,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+40,66,32,90,41,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,55,56,50,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,85,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,55,56,51,32,40,40,95,50,48,49,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,67,32,
+67,39,41,32,40,95,50,48,50,32,95,50,56,49,41,41,41,32,40,75,
+32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,
+40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,
+41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,
+41,41,41,32,40,75,32,95,49,50,52,41,41,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,85,32,40,75,
+32,95,49,50,52,41,41,41,32,40,95,50,48,50,32,95,51,48,53,41,
+41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,
+52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,
+49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,
+32,95,49,50,52,41,41,41,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,
+40,40,80,32,40,75,32,95,49,50,52,41,41,32,40,75,32,95,49,50,
+52,41,41,41,32,40,95,50,48,50,32,95,49,53,51,41,41,41,32,40,
+75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,
+32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,
+41,41,32,40,75,32,95,49,50,52,41,41,41,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,40,67,32,
+40,40,80,32,40,75,32,95,49,50,52,41,41,32,40,75,32,95,49,50,
+52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,95,50,48,
+50,32,40,95,53,49,55,32,95,51,48,53,41,41,41,41,32,40,75,32,
+95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,
+75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,40,67,32,40,40,
+67,32,40,40,80,32,40,75,32,95,49,50,52,41,41,32,40,75,32,95,
+49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,
+32,95,49,50,52,41,41,41,32,40,95,50,48,50,32,95,49,51,49,41,
+41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,
+52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,41,32,40,40,40,
+67,39,32,67,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,95,
+49,50,52,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,
+95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,
+75,32,95,49,50,52,41,41,41,32,40,95,50,48,50,32,95,49,51,51,
+41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,
+50,52,41,41,41,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,
+32,40,75,32,95,49,50,52,41,41,32,40,75,32,95,49,50,52,41,41,
+41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,
+41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,
+50,52,41,41,41,32,40,95,50,48,50,32,95,49,51,51,41,41,41,32,
+40,75,32,95,49,50,52,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,80,32,40,75,32,95,49,50,52,41,41,32,40,75,32,95,49,
+50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,
+95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,
+75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,
+32,40,95,50,48,50,32,95,49,51,51,41,41,41,41,32,40,95,50,48,
+53,32,95,55,56,51,41,41,41,32,40,40,65,32,58,55,56,52,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,80,41,41,41,32,40,40,65,32,58,55,56,53,32,40,90,32,40,40,
+66,32,90,41,32,85,41,41,41,32,40,40,65,32,58,55,56,54,32,40,
+90,32,40,90,32,85,41,41,41,32,40,40,65,32,58,55,56,55,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,80,41,41,41,32,40,40,65,32,58,55,56,56,32,40,40,66,32,90,
+41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,32,40,40,
+65,32,58,55,56,57,32,40,40,66,32,90,41,32,79,41,41,32,40,40,
+65,32,58,55,57,48,32,80,41,32,40,40,65,32,58,55,57,49,32,80,
+41,32,40,40,65,32,58,55,57,50,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,
+40,66,32,95,49,50,50,41,32,95,57,49,48,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,
+40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,
+50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,
+41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,
+41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,
+75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,
+95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,
+50,52,41,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,
+41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,
+32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,40,65,32,58,
+55,57,51,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,80,32,95,57,49,48,41,32,40,90,
+32,95,55,57,51,41,41,41,32,40,75,32,40,75,32,95,49,50,53,41,
+41,41,41,32,40,75,32,95,49,50,53,41,41,41,32,40,75,32,40,75,
+32,95,49,50,53,41,41,41,41,32,40,75,32,40,75,32,95,49,50,53,
+41,41,41,41,32,40,75,32,40,75,32,95,49,50,53,41,41,41,41,32,
+40,75,32,95,49,50,53,41,41,41,32,40,75,32,95,49,50,53,41,41,
+41,32,40,75,32,40,75,32,95,49,50,53,41,41,41,41,32,40,75,32,
+40,75,32,95,49,50,53,41,41,41,41,32,40,75,32,40,75,32,95,49,
+50,53,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,50,53,
+41,41,41,41,41,32,40,75,32,40,75,32,95,49,50,53,41,41,41,41,
+32,40,75,32,40,75,32,95,49,50,53,41,41,41,41,32,40,75,32,95,
+49,50,53,41,41,41,32,40,75,32,95,49,50,53,41,41,41,32,40,75,
+32,40,75,32,95,49,50,53,41,41,41,41,32,40,40,65,32,58,55,57,
+52,32,40,40,95,50,54,51,32,40,95,51,57,54,32,40,40,40,83,39,
+32,95,49,50,49,41,32,40,40,66,32,95,49,50,50,41,32,95,57,49,
+48,41,41,32,40,40,66,32,95,49,50,50,41,32,95,57,49,53,41,41,
+41,41,32,95,56,51,48,41,41,32,40,40,65,32,58,55,57,53,32,40,
+40,66,32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,
+32,67,41,41,32,80,41,41,41,32,40,40,65,32,58,55,57,54,32,80,
+41,32,40,40,65,32,58,55,57,55,32,40,40,40,95,49,53,56,56,32,
+40,95,49,53,57,50,32,95,55,57,55,41,41,32,40,85,32,40,40,66,
+32,40,66,32,40,95,52,54,51,32,40,40,79,32,35,52,48,41,32,75,
+41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,
+54,51,41,32,40,95,49,53,57,48,32,95,56,57,52,41,41,41,32,40,
+40,66,32,40,95,52,54,51,32,34,58,58,34,41,41,32,40,40,40,67,
+39,32,95,52,54,51,41,32,40,95,49,53,57,48,32,95,56,51,55,41,
+41,32,40,40,79,32,35,52,49,41,32,75,41,41,41,41,41,41,41,32,
+40,95,49,53,57,52,32,95,55,57,55,41,41,41,32,40,40,65,32,58,
+55,57,56,32,40,85,32,75,41,41,32,40,40,65,32,58,55,57,57,32,
+40,95,55,52,51,32,40,40,95,56,57,49,32,95,56,57,53,41,32,34,
+80,114,105,109,105,116,105,118,101,115,46,84,121,112,101,34,41,41,41,32,
+40,40,65,32,58,56,48,48,32,40,95,55,52,51,32,40,40,95,56,57,
+49,32,95,56,57,53,41,32,34,80,114,105,109,105,116,105,118,101,115,46,
+67,111,110,115,116,114,97,105,110,116,34,41,41,41,32,40,40,65,32,58,
+56,48,49,32,40,40,40,67,39,32,66,41,32,95,56,57,56,41,32,40,
+40,40,67,39,32,95,52,52,54,41,32,40,40,67,32,40,95,52,56,48,
+32,95,50,55,55,41,41,32,35,49,41,41,32,35,52,52,41,41,41,32,
+40,40,65,32,58,56,48,50,32,40,40,67,32,40,40,67,32,95,57,48,
+48,41,32,95,52,55,54,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,67,32,40,40,67,32,61,61,41,32,35,52,52,41,41,32,95,52,55,
+54,41,41,32,40,40,66,32,95,52,55,55,41,32,40,40,40,67,39,32,
+40,95,52,55,57,32,95,50,55,55,41,41,32,95,52,49,49,41,32,35,
+50,41,41,41,41,41,32,40,40,65,32,58,56,48,51,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,95,
+55,54,49,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,79,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,55,53,48,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,95,51,57,52,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,79,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,
+54,49,32,95,55,52,51,41,41,41,41,32,40,40,66,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,67,32,40,95,50,48,50,32,95,50,56,
+49,41,41,41,32,95,57,49,52,41,41,41,41,32,75,41,41,41,32,40,
+40,66,32,40,40,95,49,56,54,32,95,49,57,56,41,32,40,40,95,52,
+56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,41,41,41,
+41,32,40,40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,32,35,
+49,41,41,41,41,41,32,75,41,41,32,95,55,52,51,41,41,32,40,95,
+56,57,55,32,34,36,120,34,41,41,41,32,40,40,65,32,58,56,48,52,
+32,85,41,32,40,40,65,32,58,56,48,53,32,40,85,32,73,41,41,32,
+40,40,65,32,58,56,48,54,32,40,75,32,40,110,111,68,101,102,97,117,
+108,116,32,34,72,97,115,76,111,99,46,103,101,116,83,76,111,99,34,41,
+41,41,32,40,40,65,32,58,56,48,55,32,40,95,56,48,52,32,40,85,
+32,75,41,41,41,32,40,40,65,32,58,56,48,56,32,40,95,56,48,52,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,80,32,40,95,56,48,53,32,95,56,48,55,41,
+41,32,40,90,32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,32,
+40,90,32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,32,40,95,
+56,48,53,32,40,95,56,48,57,32,95,56,49,53,41,41,41,41,32,75,
+41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,
+32,40,90,32,40,95,56,48,53,32,40,95,56,48,57,32,95,56,49,52,
+41,41,41,41,41,32,40,95,56,48,53,32,40,95,56,48,57,32,95,56,
+48,56,41,41,41,41,32,40,95,56,48,53,32,95,56,49,50,41,41,41,
+32,40,40,67,32,40,40,67,32,67,39,41,32,40,95,56,48,53,32,40,
+95,56,48,57,32,95,56,49,51,41,41,41,41,32,40,95,56,48,53,32,
+95,56,48,55,41,41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,
+48,56,41,41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,55,
+41,41,41,41,32,40,90,32,40,90,32,40,95,56,48,53,32,95,56,48,
+56,41,41,41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,56,
+41,41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,55,41,41,
+41,41,32,40,75,32,40,95,50,52,32,34,103,101,116,83,76,111,99,32,
+69,85,86,97,114,34,41,41,41,41,32,40,95,56,48,53,32,95,56,49,
+49,41,41,41,32,40,40,83,32,40,40,67,32,67,39,41,32,40,95,56,
+48,53,32,95,56,48,56,41,41,41,32,40,90,32,40,90,32,40,95,56,
+48,53,32,40,95,56,48,57,32,95,56,49,48,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,56,48,57,32,40,40,66,32,95,56,48,52,41,
+32,40,40,66,32,40,80,32,40,95,50,52,32,34,103,101,116,83,76,111,
+99,32,91,93,34,41,41,41,32,40,40,66,32,90,41,32,95,56,48,53,
+41,41,41,41,32,40,40,65,32,58,56,49,48,32,40,95,56,48,52,32,
+40,85,32,40,90,32,40,95,56,48,53,32,95,56,48,55,41,41,41,41,
+41,32,40,40,65,32,58,56,49,49,32,40,95,56,48,52,32,40,40,67,
+32,40,40,80,32,40,75,32,40,95,56,48,53,32,95,56,48,55,41,41,
+41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,32,75,41,41,41,
+32,40,40,65,32,58,56,49,50,32,40,95,56,48,52,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,95,56,48,
+53,32,40,95,56,48,57,32,95,56,48,56,41,41,41,32,40,90,32,40,
+95,56,48,53,32,95,56,48,56,41,41,41,41,32,40,95,56,48,53,32,
+95,56,48,56,41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,
+56,41,41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,56,41,
+41,41,41,32,40,90,32,40,90,32,40,95,56,48,53,32,95,56,48,56,
+41,41,41,41,41,41,32,40,40,65,32,58,56,49,51,32,40,95,56,48,
+52,32,40,40,67,32,40,40,80,32,40,90,32,40,95,56,48,53,32,95,
+56,48,56,41,41,41,32,40,95,56,48,53,32,95,56,48,56,41,41,41,
+32,40,95,56,48,53,32,40,95,56,48,57,32,95,56,49,52,41,41,41,
+41,41,32,40,40,65,32,58,56,49,52,32,40,95,56,48,52,32,40,40,
+67,32,40,40,80,32,40,90,32,40,95,56,48,53,32,95,56,48,55,41,
+41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,
+32,40,90,32,40,95,56,48,53,32,95,56,48,55,41,41,41,41,41,32,
+40,40,65,32,58,56,49,53,32,40,95,56,48,52,32,40,85,32,40,40,
+67,32,40,40,67,32,67,39,41,32,40,95,56,48,53,32,95,56,49,54,
+41,41,41,32,40,90,32,40,95,56,48,53,32,95,56,48,56,41,41,41,
+41,41,41,32,40,40,65,32,58,56,49,54,32,40,95,56,48,52,32,40,
+85,32,40,90,32,40,95,56,48,53,32,40,95,56,48,57,32,95,56,49,
+55,41,41,41,41,41,41,32,40,40,65,32,58,56,49,55,32,40,95,56,
+48,52,32,40,85,32,40,40,83,32,40,40,67,32,67,39,41,32,40,95,
+56,48,53,32,95,56,48,56,41,41,41,32,40,90,32,40,90,32,40,95,
+56,48,53,32,40,95,56,48,57,32,95,56,49,51,41,41,41,41,41,41,
+41,41,32,40,40,65,32,58,56,49,56,32,40,90,32,75,41,41,32,40,
+40,65,32,58,56,49,57,32,40,75,32,75,41,41,32,40,40,65,32,58,
+56,50,48,32,40,75,32,65,41,41,32,40,40,65,32,58,56,50,49,32,
+40,40,95,50,48,49,32,40,40,40,67,39,32,83,41,32,40,40,67,32,
+40,40,67,32,83,39,41,32,40,40,67,32,40,40,80,32,95,49,50,53,
+41,32,95,49,50,52,41,41,32,95,49,50,52,41,41,41,32,40,40,67,
+32,40,40,80,32,95,49,50,52,41,32,95,49,50,53,41,41,32,95,49,
+50,52,41,41,41,32,40,40,67,32,40,40,80,32,95,49,50,52,41,32,
+95,49,50,52,41,41,32,95,49,50,53,41,41,41,32,40,95,50,48,53,
+32,95,56,50,49,41,41,41,32,40,40,65,32,58,56,50,50,32,40,40,
+83,32,40,85,32,95,50,54,52,41,41,32,40,90,32,40,90,32,40,40,
+66,32,89,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,39,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,
+83,32,73,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,
+66,32,95,50,54,49,41,32,95,52,55,49,41,41,41,32,40,67,32,40,
+95,52,51,54,32,95,56,57,50,41,41,41,41,41,41,32,40,40,40,83,
+39,32,40,67,39,32,66,41,41,32,40,66,32,95,55,52,52,41,41,32,
+73,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,
+41,41,41,41,32,40,66,32,95,55,53,54,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,32,40,40,66,32,40,40,83,39,
+32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,55,54,48,41,41,
+41,32,40,40,66,32,40,66,32,95,56,50,50,41,41,32,40,40,67,39,
+32,95,51,57,52,41,32,40,40,66,32,40,83,32,73,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,67,41,32,40,40,40,67,39,32,40,67,39,32,95,49,50,50,41,
+41,32,40,40,66,32,40,67,32,40,95,52,51,50,32,95,56,57,50,41,
+41,41,32,40,95,51,57,53,32,95,55,57,56,41,41,41,32,75,41,41,
+41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,41,41,41,32,
+40,95,50,52,32,34,115,117,98,115,116,32,117,110,105,109,112,108,101,109,
+101,110,116,101,100,34,41,41,41,41,41,41,41,32,40,40,65,32,58,56,
+50,51,32,95,56,50,52,41,32,40,40,65,32,58,56,50,52,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+67,32,40,40,67,32,67,39,41,32,40,95,50,48,50,32,95,56,57,50,
+41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,
+75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,
+52,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,
+32,95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,
+32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,40,75,32,95,49,
+50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,
+41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,
+95,49,50,52,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,67,32,40,40,
+40,67,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,85,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,
+49,50,49,41,41,32,95,56,50,52,41,41,41,32,95,56,50,52,41,41,
+41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,
+95,49,50,52,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,
+41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,
+32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,52,
+41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,40,75,
+32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,
+41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,
+40,75,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,
+75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,
+95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,
+40,75,32,95,49,50,52,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,
+41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,40,75,32,95,
+49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,
+41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,
+32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,
+32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,
+41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,50,52,41,41,
+41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,
+75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,
+52,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,40,65,32,58,56,50,53,32,
+40,40,67,32,40,40,80,32,40,40,40,67,39,32,66,41,32,95,52,54,
+50,41,32,40,95,51,57,52,32,95,56,50,54,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,56,50,57,
+41,41,32,95,56,51,48,41,41,41,32,40,90,32,40,40,67,32,79,41,
+32,75,41,41,41,41,32,40,40,65,32,58,56,50,54,32,40,85,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,95,
+51,57,52,32,95,56,50,57,41,41,41,32,95,56,50,55,41,41,41,32,
+40,40,65,32,58,56,50,55,32,40,85,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,52,54,51,41,32,40,95,51,57,52,32,95,56,50,
+56,41,41,41,32,40,95,51,57,52,32,95,56,50,53,41,41,41,41,32,
+40,40,65,32,58,56,50,56,32,40,85,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,52,54,51,41,32,40,95,51,57,52,32,95,56,51,
+51,41,41,41,32,95,56,51,48,41,41,41,32,40,40,65,32,58,56,50,
+57,32,95,56,51,48,41,32,40,40,65,32,58,56,51,48,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,80,32,40,40,67,32,79,41,32,75,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,56,51,48,41,
+41,32,95,56,51,48,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,95,52,54,51,41,32,95,56,51,48,41,41,32,40,95,51,57,
+52,32,40,85,32,40,40,40,67,39,32,66,41,32,95,52,54,50,41,32,
+95,56,51,48,41,41,41,41,41,41,32,40,95,51,57,52,32,95,56,50,
+54,41,41,41,32,40,75,32,40,75,32,95,52,54,49,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,
+56,51,48,41,41,32,40,95,51,57,52,32,95,56,51,50,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,
+40,95,51,57,52,32,95,56,50,53,41,41,41,32,95,56,51,48,41,41,
+41,32,40,95,51,57,52,32,95,56,51,48,41,41,41,32,40,40,83,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,
+32,40,85,32,40,95,51,57,52,32,95,56,51,48,41,41,41,32,40,90,
+32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,95,56,
+51,49,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+52,54,51,41,32,40,40,95,52,55,48,32,95,52,54,49,41,32,40,40,
+67,32,95,52,54,50,41,32,95,52,54,49,41,41,41,41,32,40,95,51,
+57,52,32,95,56,51,51,41,41,41,41,32,40,40,66,32,40,67,32,95,
+52,54,50,41,41,32,95,56,51,48,41,41,41,32,40,40,40,67,39,32,
+66,41,32,95,52,54,50,41,32,95,56,51,48,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,52,54,51,41,32,
+95,56,51,48,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,95,52,54,51,41,32,95,56,51,48,41,41,32,95,56,51,48,41,41,
+41,41,32,40,90,32,95,56,51,48,41,41,41,32,40,40,40,67,39,32,
+66,41,32,95,52,54,50,41,32,95,56,51,48,41,41,41,32,40,75,32,
+95,52,54,49,41,41,41,32,40,40,40,67,39,32,79,41,32,95,55,55,
+50,41,32,75,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,95,52,54,51,41,32,40,95,51,57,53,32,40,85,32,75,41,41,41,
+41,32,95,56,51,48,41,41,41,32,40,40,65,32,58,56,51,49,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,
+95,51,57,52,32,95,56,51,48,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,52,54,51,41,32,95,56,51,48,41,41,32,40,95,
+51,57,52,32,95,56,51,51,41,41,41,41,32,95,56,51,48,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,
+56,51,48,41,41,32,95,56,51,48,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,52,54,51,41,32,95,56,51,48,41,41,32,
+95,56,51,48,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,
+32,40,40,66,32,95,52,54,51,41,32,95,56,51,48,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,56,
+51,48,41,41,32,95,56,51,48,41,41,41,41,32,40,40,65,32,58,56,
+51,50,32,40,85,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+52,54,51,41,32,95,56,50,57,41,41,32,95,56,50,55,41,41,41,32,
+40,40,65,32,58,56,51,51,32,40,40,67,32,40,40,80,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,56,50,57,
+41,41,32,95,56,51,48,41,41,32,95,56,51,48,41,41,32,40,95,51,
+57,52,32,95,56,50,53,41,41,41,32,40,40,65,32,58,56,51,52,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,83,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,40,67,39,
+32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,83,39,
+41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,95,55,52,
+51,41,41,32,95,57,48,49,41,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,95,55,52,55,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,40,40,66,32,40,66,32,95,55,53,57,41,41,32,95,56,51,
+53,41,41,41,32,40,90,32,75,41,41,41,32,40,95,50,52,32,34,115,
+101,116,83,76,111,99,69,120,112,114,34,41,41,41,32,40,40,65,32,58,
+56,51,53,32,40,40,40,67,39,32,83,41,32,40,40,40,83,39,32,80,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,55,54,51,41,41,
+32,95,57,48,49,41,41,32,40,40,66,32,40,66,32,95,55,54,52,41,
+41,32,95,57,48,49,41,41,41,32,40,90,32,75,41,41,41,32,40,40,
+65,32,58,56,51,54,32,40,40,66,32,40,66,32,40,95,50,54,49,32,
+95,50,52,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+95,52,54,51,41,32,95,57,49,54,41,41,32,40,95,52,54,51,32,34,
+58,32,34,41,41,41,41,32,40,40,65,32,58,56,51,55,32,40,40,40,
+95,49,53,56,56,32,40,95,49,53,57,50,32,95,56,51,55,41,41,32,
+95,56,51,56,41,32,40,95,49,53,57,52,32,95,56,51,55,41,41,41,
+32,40,40,65,32,58,56,51,56,32,40,40,95,50,54,51,32,95,49,53,
+56,48,41,32,95,56,53,55,41,41,32,40,40,65,32,58,56,51,57,32,
+40,40,95,50,54,51,32,95,49,53,56,48,41,32,95,56,53,50,41,41,
+32,40,40,65,32,58,56,52,48,32,40,40,95,50,54,51,32,95,49,53,
+56,48,41,32,95,56,54,52,41,41,32,40,40,65,32,58,56,52,49,32,
+40,40,95,50,54,51,32,95,49,53,56,48,41,32,40,40,95,50,54,51,
+32,95,49,53,52,48,41,32,40,95,51,57,53,32,95,56,54,52,41,41,
+41,41,32,40,40,65,32,58,56,52,50,32,40,40,95,50,54,51,32,95,
+49,53,56,48,41,32,95,56,54,55,41,41,32,40,40,65,32,58,56,52,
+51,32,40,40,67,32,40,40,80,32,40,40,40,67,39,32,95,49,53,54,
+53,41,32,95,57,48,51,41,32,40,95,49,53,51,53,32,34,40,46,46,
+41,34,41,41,41,32,95,57,48,51,41,41,32,95,57,48,51,41,41,32,
+40,40,65,32,58,56,52,52,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,80,32,40,40,40,83,39,32,83,41,32,40,40,
+66,32,85,41,32,40,40,66,32,40,95,49,53,54,54,32,40,95,49,53,
+51,53,32,34,100,97,116,97,34,41,41,41,32,95,56,53,48,41,41,41,
+32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,40,40,40,67,39,
+32,95,49,53,54,54,41,32,40,40,66,32,40,95,49,53,54,54,32,40,
+95,49,53,51,53,32,34,100,97,116,97,34,41,41,41,32,95,56,53,48,
+41,41,32,40,95,49,53,51,53,32,40,40,79,32,35,54,49,41,32,75,
+41,41,41,41,41,32,40,40,66,32,95,49,53,51,57,41,32,40,40,66,
+32,40,95,49,53,52,51,32,40,95,49,53,51,53,32,34,32,124,34,41,
+41,41,32,40,95,51,57,53,32,95,56,52,56,41,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,
+41,32,40,40,40,67,39,32,95,49,53,54,54,41,32,40,40,66,32,40,
+95,49,53,54,54,32,40,95,49,53,51,53,32,34,110,101,119,116,121,112,
+101,34,41,41,41,32,95,56,53,48,41,41,32,40,95,49,53,51,53,32,
+40,40,79,32,35,54,49,41,32,75,41,41,41,41,41,32,95,56,52,56,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,
+54,54,41,32,40,40,40,67,39,32,95,49,53,54,54,41,32,40,40,66,
+32,40,95,49,53,54,54,32,40,95,49,53,51,53,32,34,116,121,112,101,
+34,41,41,41,32,95,56,53,48,41,41,32,40,95,49,53,51,53,32,40,
+40,79,32,35,54,49,41,32,75,41,41,41,41,41,32,95,56,54,55,41,
+41,41,32,40,40,40,67,39,32,95,56,52,55,41,32,95,57,48,51,41,
+32,40,95,49,53,51,53,32,40,40,79,32,35,54,49,41,32,75,41,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,
+54,54,41,32,40,40,40,67,39,32,95,49,53,54,54,41,32,95,57,48,
+51,41,32,40,95,49,53,51,53,32,34,58,58,34,41,41,41,41,32,95,
+56,54,55,41,41,41,32,40,85,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,
+49,53,54,53,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,40,66,32,95,49,53,54,53,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,40,40,66,
+32,40,95,49,53,54,54,32,40,95,49,53,51,53,32,34,105,109,112,111,
+114,116,34,41,41,41,32,40,40,80,32,95,49,53,51,54,41,32,40,95,
+49,53,51,53,32,34,113,117,97,108,105,102,105,101,100,34,41,41,41,41,
+41,32,95,57,48,51,41,41,41,32,40,40,66,32,95,49,53,51,53,41,
+32,40,40,95,52,55,48,32,75,41,32,40,40,95,50,54,51,32,40,95,
+52,54,51,32,34,32,97,115,32,34,41,41,32,95,57,48,48,41,41,41,
+41,41,41,32,40,40,80,32,95,49,53,51,54,41,32,40,85,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,53,41,32,40,40,
+66,32,95,49,53,51,53,41,32,40,40,80,32,75,41,32,34,32,104,105,
+100,105,110,103,34,41,41,41,41,32,40,40,66,32,95,49,53,52,53,41,
+32,40,40,66,32,40,95,50,54,49,32,95,49,53,51,57,41,41,32,40,
+40,66,32,40,95,49,53,52,51,32,40,95,49,53,51,53,32,34,44,32,
+34,41,41,41,32,40,95,51,57,53,32,95,56,52,51,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,
+32,40,40,66,32,40,66,32,95,49,53,54,54,41,41,32,40,40,40,67,
+39,32,40,67,39,32,95,49,53,54,54,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,49,53,54,54,41,32,40,40,66,32,95,49,
+53,51,53,41,32,40,40,66,32,40,95,52,54,51,32,34,102,111,114,101,
+105,103,110,32,105,109,112,111,114,116,32,99,99,97,108,108,32,34,41,41,
+32,40,95,49,53,57,48,32,40,95,51,57,49,32,95,49,52,57,41,41,
+41,41,41,41,32,95,57,48,51,41,41,32,40,95,49,53,51,53,32,34,
+58,58,34,41,41,41,41,32,95,56,54,55,41,41,41,32,40,40,67,32,
+66,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,95,49,53,54,
+54,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,
+54,54,41,32,40,40,66,32,95,49,53,51,53,41,32,40,40,66,32,40,
+95,52,54,51,32,34,105,110,102,105,120,34,41,41,32,40,40,67,32,40,
+40,80,32,40,40,79,32,35,49,48,56,41,32,75,41,41,32,40,40,79,
+32,35,49,49,52,41,32,75,41,41,41,32,75,41,41,41,41,41,32,40,
+40,66,32,95,49,53,51,53,41,32,40,95,49,53,57,48,32,95,50,56,
+51,41,41,41,41,41,32,40,40,66,32,95,49,53,51,57,41,32,40,40,
+66,32,40,95,49,53,52,51,32,40,95,49,53,51,53,32,34,44,32,34,
+41,41,41,32,40,95,51,57,53,32,95,57,48,51,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,95,56,53,52,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,95,49,53,54,54,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,95,49,53,54,54,41,32,40,40,66,32,40,95,49,53,54,54,32,
+40,95,49,53,51,53,32,34,99,108,97,115,115,34,41,41,41,32,95,56,
+52,53,41,41,41,32,95,56,53,48,41,41,41,32,95,56,52,54,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,95,56,53,52,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,95,49,53,54,54,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,95,49,53,54,54,41,32,40,40,66,32,40,95,49,53,54,54,
+32,40,95,49,53,51,53,32,34,105,110,115,116,97,110,99,101,34,41,41,
+41,32,95,56,53,57,41,41,41,32,95,56,52,53,41,41,41,32,95,56,
+54,55,41,41,41,41,32,40,40,66,32,40,95,49,53,54,54,32,40,95,
+49,53,51,53,32,34,100,101,102,97,117,108,116,34,41,41,41,32,40,40,
+66,32,95,49,53,52,53,41,32,40,40,66,32,95,49,53,51,57,41,32,
+40,40,66,32,40,95,49,53,52,51,32,40,95,49,53,51,53,32,34,44,
+32,34,41,41,41,32,40,95,51,57,53,32,95,56,54,55,41,41,41,41,
+41,41,41,32,40,40,65,32,58,56,52,53,32,40,40,83,32,40,85,32,
+95,49,53,51,54,41,41,32,40,90,32,40,90,32,40,40,40,67,39,32,
+95,49,53,54,54,41,32,40,40,66,32,95,56,54,55,41,32,95,55,53,
+48,41,41,32,40,95,49,53,51,53,32,34,61,62,34,41,41,41,41,41,
+41,32,40,40,65,32,58,56,52,54,32,40,40,83,32,40,85,32,95,49,
+53,51,54,41,41,32,40,90,32,40,90,32,40,40,66,32,40,95,49,53,
+54,54,32,40,95,49,53,51,53,32,40,40,79,32,35,49,50,52,41,32,
+75,41,41,41,41,32,40,40,66,32,95,49,53,51,57,41,32,40,40,66,
+32,40,95,49,53,52,51,32,40,95,49,53,51,53,32,40,40,79,32,35,
+52,52,41,32,75,41,41,41,41,32,40,95,51,57,53,32,40,85,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,40,
+40,40,67,39,32,95,49,53,54,54,41,32,40,40,66,32,95,49,53,51,
+57,41,32,40,95,51,57,53,32,95,57,48,51,41,41,41,32,40,95,49,
+53,51,53,32,40,40,79,32,35,52,53,41,32,75,41,41,41,41,41,32,
+40,40,66,32,95,49,53,51,57,41,32,40,95,51,57,53,32,95,57,48,
+51,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,56,
+52,55,32,40,40,66,32,40,66,32,40,95,50,54,51,32,95,49,53,52,
+48,41,41,41,32,40,40,66,32,40,66,32,95,51,57,53,41,41,32,40,
+40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,95,49,53,55,48,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,79,41,41,32,40,40,40,67,39,32,66,41,32,95,49,53,54,54,41,
+32,40,40,66,32,95,49,53,51,57,41,32,40,95,51,57,53,32,95,56,
+54,54,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,79,
+41,41,32,95,56,53,51,41,32,75,41,41,41,41,41,41,41,32,40,40,
+65,32,58,56,52,56,32,40,85,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,
+49,53,54,54,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,40,66,32,95,49,53,54,54,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,95,56,53,
+57,41,41,32,95,56,52,53,41,41,41,32,95,57,48,51,41,41,41,32,
+40,40,80,32,40,40,66,32,95,49,53,51,57,41,32,40,95,51,57,53,
+32,95,56,52,57,41,41,41,32,40,40,66,32,95,49,53,52,54,41,32,
+40,40,66,32,40,95,50,54,49,32,95,49,53,51,57,41,41,32,40,95,
+51,57,53,32,40,85,32,40,40,40,67,39,32,40,67,39,32,95,49,53,
+54,53,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,
+53,54,54,41,32,40,40,40,67,39,32,95,49,53,54,54,41,32,95,57,
+48,51,41,32,40,95,49,53,51,53,32,34,58,58,34,41,41,41,41,32,
+95,56,52,57,41,41,32,40,95,49,53,51,53,32,40,40,79,32,35,52,
+52,41,32,75,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,56,52,57,32,40,85,32,40,40,67,32,40,40,67,32,83,39,41,32,
+95,56,54,55,41,41,32,40,40,66,32,40,95,49,53,54,53,32,40,95,
+49,53,51,53,32,40,40,79,32,35,51,51,41,32,75,41,41,41,41,32,
+95,56,54,55,41,41,41,41,32,40,40,65,32,58,56,53,48,32,40,85,
+32,40,40,66,32,40,66,32,95,49,53,51,57,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,52,54,50,41,32,95,57,48,51,41,
+41,32,40,95,51,57,53,32,95,56,53,49,41,41,41,41,41,32,40,40,
+65,32,58,56,53,49,32,40,85,32,40,40,66,32,40,66,32,40,95,50,
+54,49,32,95,49,53,52,53,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,49,53,54,53,41,32,40,40,40,67,39,32,95,49,
+53,54,53,41,32,95,57,48,51,41,32,40,95,49,53,51,53,32,34,58,
+58,34,41,41,41,41,32,95,56,54,56,41,41,41,41,32,40,40,65,32,
+58,56,53,50,32,40,40,66,32,95,49,53,52,48,41,32,40,95,51,57,
+53,32,40,40,83,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,95,56,52,
+52,41,41,41,41,32,40,90,32,95,56,52,52,41,41,41,32,40,90,32,
+40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+40,90,32,40,90,32,75,41,41,41,41,41,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,32,75,41,41,32,40,40,40,67,39,32,95,
+49,53,54,48,41,32,95,56,52,52,41,32,40,95,49,53,51,53,32,75,
+41,41,41,41,41,41,32,40,40,65,32,58,56,53,51,32,40,40,66,32,
+85,41,32,40,40,66,32,40,66,32,95,56,53,52,41,41,32,95,56,53,
+53,41,41,41,32,40,40,65,32,58,56,53,52,32,40,40,40,83,39,32,
+83,41,32,85,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,48,41,32,
+40,40,67,32,95,49,53,54,54,41,32,40,95,49,53,51,53,32,34,119,
+104,101,114,101,34,41,41,41,41,32,40,40,66,32,40,95,49,53,52,49,
+32,35,50,41,41,32,40,40,66,32,95,49,53,52,48,41,32,40,95,51,
+57,53,32,95,56,54,52,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,56,53,53,32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,67,
+32,83,41,41,32,40,40,66,32,40,66,32,40,67,32,66,41,41,41,32,
+40,40,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,67,32,67,39,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,
+67,32,67,39,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+95,49,53,54,54,41,32,40,95,49,53,54,54,32,40,95,49,53,51,53,
+32,75,41,41,41,41,32,95,56,53,55,41,41,41,41,32,40,90,32,75,
+41,41,41,41,32,40,90,32,75,41,41,41,41,41,32,40,40,66,32,40,
+66,32,95,49,53,52,48,41,41,32,40,40,66,32,95,51,57,53,41,32,
+95,56,53,54,41,41,41,41,32,40,40,65,32,58,56,53,54,32,40,40,
+66,32,85,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,95,49,53,54,54,41,41,32,40,40,67,39,32,95,
+49,53,54,54,41,32,40,40,66,32,40,95,49,53,54,54,32,40,95,49,
+53,51,53,32,34,32,124,34,41,41,41,32,40,40,66,32,95,49,53,51,
+57,41,32,40,40,66,32,40,95,49,53,52,51,32,40,95,49,53,51,53,
+32,40,40,79,32,35,52,52,41,32,75,41,41,41,41,32,40,95,51,57,
+53,32,95,56,54,51,41,41,41,41,41,41,41,32,95,56,53,55,41,41,
+41,32,40,40,65,32,58,56,53,55,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,83,32,40,
+85,32,40,40,66,32,40,40,83,32,40,40,40,83,39,32,95,57,49,49,
+41,32,95,52,50,56,41,32,95,49,53,51,53,41,41,32,40,40,66,32,
+95,49,53,52,53,41,32,95,49,53,51,53,41,41,41,32,40,40,66,32,
+95,57,48,48,41,32,95,57,48,57,41,41,41,41,32,40,90,32,40,90,
+32,40,95,56,53,56,32,95,52,54,49,41,41,41,41,41,32,40,40,66,
+32,40,66,32,95,56,53,55,41,41,32,40,95,51,57,57,32,40,40,66,
+32,85,41,32,40,40,66,32,40,66,32,95,55,52,52,41,41,32,40,40,
+67,39,32,95,55,52,52,41,32,95,55,52,51,41,41,41,41,41,41,41,
+32,40,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,32,40,
+40,66,32,40,95,49,53,54,53,32,40,95,49,53,51,53,32,40,40,79,
+32,35,57,50,41,32,75,41,41,41,41,32,40,40,95,56,52,55,32,95,
+49,53,51,54,41,32,40,95,49,53,51,53,32,34,45,62,34,41,41,41,
+41,41,41,32,40,75,32,40,40,66,32,95,49,53,51,53,41,32,95,56,
+54,50,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+95,49,53,53,57,41,32,40,40,40,67,39,32,95,49,53,54,54,41,32,
+40,40,66,32,40,95,49,53,54,54,32,40,95,49,53,51,53,32,34,99,
+97,115,101,34,41,41,41,32,95,56,53,55,41,41,32,40,95,49,53,51,
+53,32,34,111,102,34,41,41,41,41,32,40,40,66,32,40,95,49,53,52,
+49,32,35,50,41,41,32,40,40,66,32,95,49,53,52,48,41,32,40,95,
+51,57,53,32,95,56,54,53,41,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,49,53,53,57,41,32,40,40,66,32,40,
+95,49,53,53,57,32,40,95,49,53,51,53,32,34,108,101,116,34,41,41,
+41,32,40,40,66,32,40,95,49,53,52,49,32,35,50,41,41,32,40,40,
+66,32,95,49,53,52,48,41,32,40,95,51,57,53,32,95,56,54,52,41,
+41,41,41,41,41,32,40,40,66,32,40,95,49,53,54,54,32,40,95,49,
+53,51,53,32,34,105,110,34,41,41,41,32,95,56,53,55,41,41,41,41,
+32,40,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,32,40,
+40,66,32,40,95,50,54,49,32,95,49,53,51,57,41,41,32,40,40,66,
+32,40,95,49,53,52,51,32,40,95,49,53,51,53,32,40,40,79,32,35,
+52,52,41,32,75,41,41,41,41,32,40,95,51,57,53,32,95,56,53,55,
+41,41,41,41,41,41,32,40,40,83,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+67,32,40,40,40,67,39,32,83,39,41,32,40,85,32,40,95,56,54,57,
+32,95,56,53,55,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+40,90,32,75,41,41,41,41,32,95,56,54,48,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,49,53,53,57,41,32,40,40,95,
+52,55,48,32,40,95,49,53,51,53,32,34,100,111,34,41,41,32,40,40,
+40,67,39,32,95,49,53,54,53,41,32,95,57,48,51,41,32,40,95,49,
+53,51,53,32,34,46,100,111,34,41,41,41,41,41,32,40,40,66,32,40,
+95,49,53,52,49,32,35,50,41,41,32,40,40,66,32,95,49,53,52,48,
+41,32,40,95,51,57,53,32,95,56,54,51,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,
+32,95,56,53,55,41,41,32,95,57,48,51,41,41,41,41,32,40,40,66,
+32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,95,
+57,48,51,41,41,32,95,56,53,55,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,95,49,53,55,48,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,79,41,32,
+40,40,66,32,40,95,49,53,54,54,32,40,95,49,53,51,53,32,34,105,
+102,34,41,41,41,32,95,56,53,55,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,79,41,32,40,40,66,32,40,95,49,53,54,
+54,32,40,95,49,53,51,53,32,34,116,104,101,110,34,41,41,41,32,95,
+56,53,55,41,41,41,32,40,40,40,67,39,32,79,41,32,40,40,66,32,
+40,95,49,53,54,54,32,40,95,49,53,51,53,32,34,101,108,115,101,34,
+41,41,41,32,95,56,53,55,41,41,32,75,41,41,41,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,
+40,40,40,67,39,32,95,49,53,54,54,41,32,95,56,53,55,41,32,40,
+95,49,53,51,53,32,34,58,58,34,41,41,41,41,32,95,56,54,55,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,53,54,
+53,41,32,40,40,40,67,39,32,95,49,53,54,53,41,32,95,57,48,51,
+41,32,40,95,49,53,51,53,32,40,40,79,32,35,54,52,41,32,75,41,
+41,41,41,41,32,95,56,53,55,41,41,41,32,40,40,66,32,95,49,53,
+51,53,41,32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,35,57,
+55,41,32,75,41,41,41,32,40,95,49,53,57,48,32,95,50,56,51,41,
+41,41,41,41,32,95,56,54,49,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,49,53,54,54,41,32,95,56,53,57,41,41,32,95,
+56,54,55,41,41,41,32,40,40,65,32,58,56,53,56,32,40,40,40,83,
+39,32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,67,41,32,40,40,
+66,32,40,67,32,67,39,41,41,32,40,40,40,67,39,32,40,67,39,32,
+66,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,
+40,83,39,32,66,41,32,40,40,66,32,40,83,39,32,83,41,41,32,40,
+40,66,32,40,66,32,40,40,67,39,32,83,41,32,95,57,49,49,41,41,
+41,32,40,40,40,67,39,32,66,41,32,83,41,32,40,40,66,32,40,40,
+83,39,32,66,41,32,80,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,40,67,39,32,40,67,39,32,80,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,95,49,53,54,54,41,41,32,40,40,66,32,40,40,67,39,32,
+95,49,53,54,54,41,32,95,56,53,55,41,41,32,95,49,53,51,53,41,
+41,41,32,95,56,53,55,41,41,41,41,32,40,90,32,75,41,41,41,41,
+41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,83,39,
+32,83,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,83,41,32,
+95,57,49,49,41,41,41,32,40,40,40,67,39,32,66,41,32,83,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,80,41,41,
+32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,53,52,53,41,
+41,41,32,40,40,66,32,40,40,67,39,32,95,49,53,54,54,41,32,95,
+56,53,55,41,41,32,95,49,53,51,53,41,41,41,41,32,40,90,32,75,
+41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,40,
+40,67,32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,52,52,41,
+41,41,41,41,32,40,40,66,32,67,41,32,40,40,66,32,40,40,67,39,
+32,83,41,32,40,40,67,32,40,95,50,48,50,32,95,49,51,51,41,41,
+32,34,91,93,34,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,67,39,32,40,95,50,48,50,32,95,50,56,49,41,41,32,95,52,49,
+49,41,32,35,49,41,41,32,40,40,66,32,95,56,53,55,41,32,40,40,
+66,32,95,55,53,49,41,32,95,55,54,54,41,41,41,41,41,41,41,32,
+40,40,66,32,95,56,53,55,41,32,95,55,53,48,41,41,41,41,41,32,
+95,52,50,56,41,41,32,40,40,66,32,95,57,48,48,41,32,95,57,48,
+57,41,41,41,41,32,40,40,66,32,40,67,39,32,95,56,53,56,41,41,
+32,40,67,32,95,52,54,50,41,41,41,41,32,40,90,32,75,41,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,
+53,52,53,41,41,41,32,40,40,66,32,40,66,32,95,49,53,51,57,41,
+41,32,40,40,66,32,40,66,32,40,95,51,57,53,32,95,56,53,55,41,
+41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,41,32,40,40,65,
+32,58,56,53,57,32,40,40,40,67,39,32,95,49,53,54,54,41,32,40,
+40,66,32,40,95,49,53,54,54,32,40,95,49,53,51,53,32,34,102,111,
+114,97,108,108,34,41,41,41,32,40,40,66,32,95,49,53,51,57,41,32,
+40,95,51,57,53,32,95,56,53,49,41,41,41,41,32,40,95,49,53,51,
+53,32,40,40,79,32,35,52,54,41,32,75,41,41,41,41,32,40,40,65,
+32,58,56,54,48,32,40,75,32,40,95,49,53,51,53,32,34,60,60,76,
+105,115,116,105,115,104,62,62,34,41,41,41,32,40,40,65,32,58,56,54,
+49,32,40,40,67,32,40,40,80,32,40,75,32,95,57,48,51,41,41,32,
+95,57,48,51,41,41,32,40,75,32,40,40,66,32,95,49,53,51,53,41,
+32,95,56,54,50,41,41,41,41,32,40,40,65,32,58,56,54,50,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,80,32,40,40,66,32,40,95,52,54,50,32,35,51,53,
+41,41,32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,32,40,40,
+66,32,40,95,52,54,50,32,35,51,53,41,41,32,40,40,66,32,40,95,
+52,54,50,32,35,51,53,41,41,32,40,95,49,53,57,48,32,95,51,48,
+55,41,41,41,41,41,32,40,40,66,32,40,95,52,54,50,32,35,51,56,
+41,41,32,40,95,49,53,57,48,32,95,49,53,53,41,41,41,41,32,40,
+40,66,32,40,95,52,54,50,32,35,51,55,41,41,32,40,95,49,53,57,
+48,32,40,95,53,50,49,32,95,51,48,55,41,41,41,41,41,32,40,95,
+49,53,57,48,32,95,49,52,57,41,41,41,32,40,95,49,53,57,48,32,
+40,95,51,57,49,32,95,49,52,57,41,41,41,41,32,73,41,41,32,40,
+95,52,54,50,32,35,57,52,41,41,41,32,40,40,65,32,58,56,54,51,
+32,40,40,67,32,40,40,80,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,95,49,53,54,54,41,32,40,40,40,67,39,32,95,49,53,54,54,
+41,32,95,56,54,54,41,32,40,95,49,53,51,53,32,34,60,45,34,41,
+41,41,41,32,95,56,53,55,41,41,32,95,56,53,55,41,41,32,40,40,
+66,32,40,95,49,53,53,57,32,40,95,49,53,51,53,32,34,108,101,116,
+34,41,41,41,32,40,40,66,32,40,95,49,53,52,49,32,35,50,41,41,
+32,40,40,66,32,95,49,53,52,48,41,32,40,95,51,57,53,32,95,56,
+54,52,41,41,41,41,41,41,32,40,40,65,32,58,56,54,52,32,40,40,
+67,32,40,40,80,32,40,40,66,32,40,66,32,95,56,52,52,41,41,32,
+95,55,51,49,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+95,49,53,54,54,41,32,40,40,40,67,39,32,95,49,53,54,54,41,32,
+95,56,54,54,41,32,40,95,49,53,51,53,32,40,40,79,32,35,54,49,
+41,32,75,41,41,41,41,41,32,95,56,53,55,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,49,53,54,54,41,32,40,40,40,
+67,39,32,95,49,53,54,54,41,32,95,57,48,51,41,32,40,95,49,53,
+51,53,32,34,58,58,34,41,41,41,41,32,95,56,54,55,41,41,41,32,
+40,40,65,32,58,56,54,53,32,40,85,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,49,53,54,53,41,32,95,56,54,54,41,41,32,40,
+95,56,53,51,32,40,95,49,53,51,53,32,34,45,62,34,41,41,41,41,
+41,32,40,40,65,32,58,56,54,54,32,95,56,53,55,41,32,40,40,65,
+32,58,56,54,55,32,95,56,53,55,41,32,40,40,65,32,58,56,54,56,
+32,95,56,54,55,41,32,40,40,65,32,58,56,54,57,32,40,40,66,32,
+40,66,32,40,95,50,54,49,32,95,49,53,52,55,41,41,41,32,40,40,
+66,32,40,66,32,40,95,50,54,49,32,95,49,53,51,57,41,41,41,32,
+40,40,66,32,40,66,32,40,95,49,53,52,51,32,40,95,49,53,51,53,
+32,40,40,79,32,35,52,52,41,32,75,41,41,41,41,41,32,95,51,57,
+53,41,41,41,41,32,40,40,65,32,58,56,55,48,32,40,40,67,32,40,
+40,80,32,40,90,32,40,40,67,32,79,41,32,75,41,41,41,32,40,90,
+32,95,55,57,52,41,41,41,32,40,75,32,40,75,32,95,52,54,49,41,
+41,41,41,32,40,40,65,32,58,56,55,49,32,40,95,51,57,52,32,95,
+56,55,48,41,41,32,40,40,65,32,58,56,55,50,32,80,41,32,40,40,
+65,32,58,56,55,51,32,40,40,66,32,90,41,32,85,41,41,32,40,40,
+65,32,58,56,55,52,32,40,90,32,85,41,41,32,40,40,65,32,58,56,
+55,53,32,40,40,66,32,40,66,32,40,95,51,57,53,32,40,40,80,32,
+40,85,32,40,90,32,40,90,32,95,56,55,51,41,41,41,41,32,40,40,
+66,32,95,56,55,52,41,32,40,95,51,57,52,32,40,85,32,40,90,32,
+40,90,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,41,41,41,
+41,32,95,56,55,54,41,41,32,40,40,65,32,58,56,55,54,32,40,40,
+66,32,40,83,32,40,85,32,95,52,54,49,41,41,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,40,40,40,
+83,39,32,40,67,32,40,40,40,67,39,32,40,83,39,32,95,51,57,53,
+41,41,32,40,40,66,32,40,66,32,40,83,32,73,41,41,41,32,40,40,
+40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,
+67,39,32,80,41,41,41,32,40,40,40,83,39,32,40,67,39,32,83,41,
+41,32,40,40,66,32,40,40,67,39,32,83,41,32,40,40,66,32,40,83,
+32,40,95,52,51,52,32,40,95,50,48,50,32,95,50,56,49,41,41,41,
+41,32,95,50,57,55,41,41,41,32,40,66,32,95,56,55,51,41,41,41,
+32,40,40,66,32,40,66,32,95,56,55,52,41,41,32,40,40,67,32,40,
+67,39,32,79,41,41,32,75,41,41,41,41,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,95,56,55,52,41,
+41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,89,41,32,40,40,
+66,32,40,66,32,40,67,32,66,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,40,40,66,32,40,67,39,32,66,41,41,32,40,66,
+32,95,52,54,50,41,41,41,41,32,95,51,57,55,41,41,41,41,32,95,
+52,54,49,41,41,41,41,41,41,41,32,95,56,56,56,41,41,41,32,40,
+85,32,75,41,41,32,40,85,32,65,41,41,41,41,32,95,56,56,50,41,
+41,41,41,41,32,40,40,65,32,58,56,55,55,32,95,50,57,54,41,32,
+40,40,65,32,58,56,55,56,32,40,40,40,83,39,32,95,51,57,52,41,
+32,40,40,66,32,40,40,83,39,32,95,51,57,52,41,32,40,40,40,67,
+39,32,40,67,39,32,79,41,41,32,80,41,32,75,41,41,41,32,95,50,
+57,55,41,41,32,95,56,55,55,41,41,32,40,40,65,32,58,56,55,57,
+32,40,40,66,32,40,95,51,57,55,32,40,85,32,40,40,40,67,39,32,
+66,41,32,40,95,50,57,56,32,95,52,54,51,41,41,32,40,40,67,32,
+79,41,32,75,41,41,41,41,41,32,40,40,66,32,95,50,57,51,41,32,
+40,40,67,32,95,52,49,50,41,32,40,95,52,52,55,32,95,52,54,49,
+41,41,41,41,41,32,40,40,65,32,58,56,56,48,32,40,40,40,83,39,
+32,95,56,55,57,41,32,95,56,55,55,41,32,95,56,56,49,41,41,32,
+40,40,65,32,58,56,56,49,32,40,40,66,32,40,95,51,57,52,32,40,
+85,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,67,32,80,
+41,41,32,75,41,41,41,41,32,95,56,55,56,41,41,32,40,40,65,32,
+58,56,56,50,32,40,40,40,83,39,32,83,41,32,40,40,40,67,39,32,
+40,67,39,32,40,83,39,32,80,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,95,50,57,51,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,83,39,32,95,51,57,52,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,85,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,85,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,79,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,80,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+95,52,55,52,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,89,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,40,83,39,32,83,41,32,40,95,
+52,57,57,32,95,50,56,50,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,83,41,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,32,
+40,40,40,83,39,32,40,83,39,32,40,83,39,32,66,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,67,39,32,40,83,39,32,83,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,66,39,41,32,40,40,66,32,66,39,41,32,40,66,32,67,41,41,
+41,41,32,40,40,67,32,67,39,41,32,40,40,67,32,40,95,52,55,57,
+32,95,50,55,55,41,41,32,35,49,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,67,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,66,39,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,
+66,32,67,41,41,32,67,41,41,41,41,32,40,40,67,32,40,67,39,32,
+66,41,41,32,40,40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,
+32,35,49,41,41,41,41,32,95,52,55,55,41,41,41,41,32,40,40,66,
+32,95,50,57,55,41,32,40,40,66,32,95,50,57,51,41,32,40,95,51,
+57,52,32,40,85,32,40,40,66,32,85,41,32,40,90,32,40,40,66,32,
+90,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,80,41,32,
+75,41,41,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,66,41,
+32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,95,51,54,54,32,95,50,55,56,41,41,41,32,40,67,
+32,40,95,52,56,48,32,95,50,55,55,41,41,41,32,40,40,95,52,56,
+53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,50,41,41,41,41,
+41,41,41,32,95,52,55,54,41,41,32,35,48,41,41,41,32,40,40,40,
+67,39,32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,52,49,49,
+41,32,35,49,41,41,41,41,41,32,75,41,41,41,41,41,41,32,73,41,
+41,41,32,40,40,66,32,95,50,57,55,41,32,95,50,57,51,41,41,41,
+32,40,40,66,32,40,66,32,40,95,52,49,50,32,40,40,95,49,56,52,
+32,95,49,57,56,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,
+40,95,51,53,57,32,35,48,41,41,41,41,41,41,32,40,40,66,32,95,
+52,53,52,41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,
+90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,67,
+32,66,41,41,32,40,40,66,32,90,41,32,40,66,32,90,41,41,41,41,
+41,41,41,41,41,41,32,40,40,65,32,58,56,56,51,32,40,40,83,32,
+95,56,56,52,41,32,95,56,55,55,41,41,32,40,40,65,32,58,56,56,
+52,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,53,54,54,41,
+41,41,32,40,40,40,67,39,32,89,41,32,40,40,66,32,40,66,32,40,
+40,83,39,32,80,41,32,40,40,67,32,80,41,32,95,52,54,49,41,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,67,41,41,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,83,39,32,83,39,
+41,41,32,40,67,32,95,51,48,49,41,41,41,41,32,40,40,66,32,40,
+40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,40,66,32,40,40,
+67,39,32,67,39,41,32,40,40,66,32,40,83,39,32,40,40,83,39,32,
+80,41,32,40,85,32,75,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,95,52,54,50,41,41,32,
+40,40,40,67,39,32,66,41,32,95,56,55,50,41,32,40,85,32,65,41,
+41,41,41,32,40,85,32,65,41,41,41,41,41,32,40,40,67,32,67,39,
+41,32,40,85,32,75,41,41,41,41,41,41,32,40,40,66,32,40,67,32,
+40,40,40,67,39,32,67,39,41,32,83,39,41,32,40,67,32,95,51,48,
+50,41,41,41,41,32,95,50,57,55,41,41,41,41,32,73,41,41,41,32,
+95,51,48,48,41,41,41,32,40,40,65,32,58,56,56,53,32,40,85,32,
+40,40,66,32,40,40,67,39,32,95,50,54,51,41,32,95,56,56,54,41,
+41,32,95,52,54,50,41,41,41,32,40,40,65,32,58,56,56,54,32,40,
+40,66,32,40,95,50,54,49,32,40,40,95,51,57,55,32,95,50,54,51,
+41,32,95,50,54,52,41,41,41,32,40,95,51,57,53,32,95,56,56,53,
+41,41,41,32,40,40,65,32,58,56,56,55,32,40,40,40,67,39,32,95,
+56,56,54,41,32,95,56,56,51,41,32,95,52,54,49,41,41,32,40,40,
+65,32,58,56,56,56,32,40,40,83,32,95,56,56,52,41,32,40,40,66,
+32,95,52,50,51,41,32,40,40,66,32,95,56,56,55,41,32,95,56,56,
+48,41,41,41,41,32,40,40,65,32,58,56,56,57,32,40,40,40,83,39,
+32,66,41,32,40,66,39,32,115,101,113,41,41,32,40,40,66,32,40,40,
+83,39,32,66,41,32,115,101,113,41,41,32,40,40,66,32,40,66,32,40,
+83,32,115,101,113,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,
+80,41,41,41,41,41,32,40,40,65,32,58,56,57,48,32,40,40,40,95,
+49,53,56,56,32,40,95,49,53,57,50,32,95,56,57,48,41,41,32,40,
+85,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,
+52,54,51,41,32,40,95,49,53,57,48,32,40,95,51,57,49,32,95,49,
+52,57,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,51,
+32,40,40,79,32,35,52,52,41,32,75,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,95,49,53,57,
+48,32,95,50,56,51,41,41,41,32,40,40,66,32,40,95,52,54,51,32,
+40,40,79,32,35,53,56,41,32,75,41,41,41,32,40,95,49,53,57,48,
+32,95,50,56,51,41,41,41,41,41,41,41,32,40,95,49,53,57,52,32,
+95,56,57,48,41,41,41,32,40,40,65,32,58,56,57,49,32,40,40,40,
+83,39,32,66,41,32,115,101,113,41,32,80,41,41,32,40,40,65,32,58,
+56,57,50,32,40,40,95,50,48,49,32,40,40,67,32,66,41,32,40,90,
+32,40,40,67,32,66,41,32,40,90,32,40,95,50,48,50,32,95,49,51,
+51,41,41,41,41,41,41,32,40,95,50,48,53,32,95,56,57,50,41,41,
+41,32,40,40,65,32,58,56,57,51,32,40,40,40,40,40,40,40,40,95,
+52,57,52,32,95,56,57,50,41,32,40,40,67,32,66,41,32,40,90,32,
+40,40,67,32,66,41,32,40,90,32,40,95,52,57,54,32,95,49,51,52,
+41,41,41,41,41,41,32,40,40,67,32,66,41,32,40,90,32,40,40,67,
+32,66,41,32,40,90,32,40,95,52,57,55,32,95,49,51,52,41,41,41,
+41,41,41,32,40,40,67,32,66,41,32,40,90,32,40,40,67,32,66,41,
+32,40,90,32,40,95,52,57,56,32,95,49,51,52,41,41,41,41,41,41,
+32,40,40,67,32,66,41,32,40,90,32,40,40,67,32,66,41,32,40,90,
+32,40,95,52,57,57,32,95,49,51,52,41,41,41,41,41,41,32,40,40,
+67,32,66,41,32,40,90,32,40,40,67,32,66,41,32,40,90,32,40,95,
+53,48,48,32,95,49,51,52,41,41,41,41,41,41,32,40,95,53,48,56,
+32,95,56,57,51,41,41,32,40,95,53,48,57,32,95,56,57,51,41,41,
+41,32,40,40,65,32,58,56,57,52,32,40,40,40,95,49,53,56,56,32,
+40,95,49,53,57,50,32,95,56,57,52,41,41,32,95,57,48,50,41,32,
+40,95,49,53,57,52,32,95,56,57,52,41,41,41,32,40,40,65,32,58,
+56,57,53,32,40,40,40,95,56,56,57,32,75,41,32,35,48,41,32,35,
+48,41,41,32,40,40,65,32,58,56,57,54,32,40,85,32,40,75,32,40,
+40,40,67,39,32,66,41,32,40,40,67,32,40,40,67,32,61,61,41,32,
+35,48,41,41,32,95,49,50,52,41,41,32,40,40,67,32,40,40,67,32,
+40,40,67,32,61,61,41,32,35,48,41,41,32,95,49,50,52,41,41,32,
+95,49,50,53,41,41,41,41,41,32,40,40,65,32,58,56,57,55,32,40,
+95,56,57,49,32,95,56,57,53,41,41,32,40,40,65,32,58,56,57,56,
+32,95,56,57,49,41,32,40,40,65,32,58,56,57,57,32,40,40,66,32,
+40,67,32,66,41,41,32,40,40,66,32,40,67,39,32,40,67,39,32,95,
+56,57,49,41,41,41,32,95,56,56,57,41,41,41,32,40,40,65,32,58,
+57,48,48,32,40,85,32,65,41,41,32,40,40,65,32,58,57,48,49,32,
+40,40,66,32,85,41,32,40,90,32,95,56,57,49,41,41,41,32,40,40,
+65,32,58,57,48,50,32,40,85,32,65,41,41,32,40,40,65,32,58,57,
+48,51,32,40,85,32,40,75,32,95,49,53,51,53,41,41,41,32,40,40,
+65,32,58,57,48,52,32,40,40,66,32,85,41,32,40,90,32,40,95,50,
+48,50,32,95,49,51,51,41,41,41,41,32,40,40,65,32,58,57,48,53,
+32,40,40,67,32,66,41,32,40,90,32,40,40,67,32,66,41,32,40,40,
+66,32,40,40,67,39,32,66,41,32,95,56,57,49,41,41,32,40,40,40,
+67,39,32,66,41,32,95,52,54,51,41,32,40,95,52,54,51,32,40,40,
+79,32,35,52,54,41,32,75,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,57,48,54,32,73,41,32,40,40,65,32,58,57,48,55,32,40,40,
+67,32,66,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,56,57,
+49,41,41,32,40,67,32,95,52,54,51,41,41,41,41,32,40,40,65,32,
+58,57,48,56,32,40,40,83,32,40,85,32,75,41,41,32,40,40,66,32,
+90,41,32,40,40,40,83,39,32,67,41,32,40,67,32,95,57,49,50,41,
+41,32,40,40,67,32,40,40,83,32,40,95,52,50,53,32,40,40,67,32,
+40,95,50,48,51,32,95,49,51,49,41,41,32,35,52,54,41,41,41,32,
+73,41,41,32,40,40,40,67,39,32,66,41,32,40,40,67,32,40,40,67,
+32,61,61,41,32,35,52,54,41,41,32,95,50,53,41,41,32,95,57,48,
+56,41,41,41,41,41,41,32,40,40,65,32,58,57,48,57,32,40,85,32,
+40,40,40,67,39,32,66,41,32,95,56,57,49,41,32,95,57,48,56,41,
+41,41,32,40,40,65,32,58,57,49,48,32,40,85,32,40,75,32,40,40,
+40,83,39,32,40,40,83,39,32,95,49,50,48,41,32,95,49,51,57,41,
+41,32,40,40,66,32,40,40,83,39,32,95,49,50,48,41,32,40,40,67,
+32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,53,56,41,41,41,
+32,40,40,66,32,40,40,67,39,32,95,49,50,48,41,32,40,40,67,32,
+40,95,50,48,50,32,95,49,51,49,41,41,32,35,52,52,41,41,41,32,
+40,40,40,83,39,32,95,49,50,48,41,32,40,40,67,32,40,95,50,48,
+50,32,95,49,51,51,41,41,32,34,91,93,34,41,41,32,40,40,67,32,
+40,95,50,48,50,32,95,49,51,51,41,41,32,34,40,41,34,41,41,41,
+41,41,32,95,52,50,56,41,41,41,41,32,40,40,65,32,58,57,49,49,
+32,40,40,67,32,40,95,52,51,50,32,95,49,51,49,41,41,32,34,64,
+92,57,50,38,61,43,45,58,60,62,46,33,35,36,37,94,38,42,47,124,
+126,63,34,41,41,32,40,40,65,32,58,57,49,50,32,40,40,40,83,39,
+32,95,49,50,48,41,32,95,57,49,51,41,32,40,40,40,83,39,32,95,
+49,50,48,41,32,95,49,51,57,41,32,40,40,40,83,39,32,95,49,50,
+48,41,32,95,49,52,49,41,32,40,40,67,32,40,95,50,48,50,32,95,
+49,51,49,41,41,32,35,51,57,41,41,41,41,41,32,40,40,65,32,58,
+57,49,51,32,40,40,40,83,39,32,95,49,50,48,41,32,95,49,51,56,
+41,32,40,40,67,32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,
+57,53,41,41,41,32,40,40,65,32,58,57,49,52,32,40,95,56,57,55,
+32,40,40,79,32,35,57,53,41,32,75,41,41,41,32,40,40,65,32,58,
+57,49,53,32,40,85,32,40,75,32,40,40,80,32,95,49,50,52,41,32,
+40,40,40,67,39,32,66,41,32,40,40,67,32,40,40,67,32,61,61,41,
+32,35,57,53,41,41,32,95,49,50,52,41,41,32,40,40,80,32,95,49,
+50,53,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,41,41,
+41,41,32,40,40,65,32,58,57,49,54,32,40,85,32,40,40,67,32,40,
+40,40,83,39,32,67,39,41,32,40,40,66,32,67,39,41,32,95,51,57,
+50,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,
+32,95,52,54,51,41,32,40,95,49,53,57,48,32,40,95,51,57,49,32,
+95,49,52,57,41,41,41,41,41,32,40,40,40,67,39,32,67,41,32,40,
+40,83,32,40,40,40,67,39,32,83,39,41,32,40,40,66,32,95,49,50,
+49,41,32,40,40,67,32,40,95,50,48,50,32,95,50,56,49,41,41,32,
+35,48,41,41,41,32,40,40,67,32,40,95,50,48,50,32,95,50,56,49,
+41,41,32,35,48,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,
+51,32,34,58,32,108,105,110,101,32,34,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,95,49,53,57,48,
+32,95,50,56,51,41,41,41,32,40,40,66,32,40,95,52,54,51,32,34,
+44,32,99,111,108,32,34,41,41,32,40,95,49,53,57,48,32,95,50,56,
+51,41,41,41,41,41,41,32,75,41,41,41,41,32,34,110,111,32,108,111,
+99,97,116,105,111,110,34,41,41,41,32,40,40,65,32,58,57,49,55,32,
+40,90,32,75,41,41,32,40,40,65,32,58,57,49,56,32,40,40,66,32,
+90,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,32,40,
+40,65,32,58,57,49,57,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,90,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+90,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,
+40,40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,32,40,
+40,65,32,58,57,50,48,32,95,57,49,55,41,32,40,40,65,32,58,57,
+50,49,32,95,57,49,56,41,32,40,40,65,32,58,57,50,50,32,40,40,
+95,50,54,51,32,40,95,51,57,53,32,95,53,54,54,41,41,32,95,57,
+50,51,41,41,32,40,40,65,32,58,57,50,51,32,40,40,67,32,40,89,
+32,40,40,66,32,40,40,67,39,32,83,41,32,40,40,67,32,83,41,32,
+40,40,67,39,32,40,67,39,32,95,52,54,50,41,41,32,80,41,41,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,83,39,32,66,
+41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,
+41,32,66,39,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,
+40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,52,54,50,41,
+41,32,80,41,41,41,41,32,67,41,41,41,41,41,41,32,95,52,54,49,
+41,41,32,40,40,65,32,58,57,50,52,32,40,95,57,50,53,32,95,50,
+54,53,41,41,32,40,40,65,32,58,57,50,53,32,40,40,40,67,39,32,
+95,51,57,55,41,32,40,40,66,32,95,50,54,56,41,32,95,57,51,48,
+41,41,32,95,57,50,48,41,41,32,40,40,65,32,58,57,50,54,32,40,
+40,67,32,40,40,80,32,35,48,41,32,40,75,32,40,75,32,35,49,41,
+41,41,41,32,40,75,32,40,90,32,40,90,32,75,41,41,41,41,41,32,
+40,40,65,32,58,57,50,55,32,40,40,40,83,39,32,40,83,39,32,40,
+83,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,41,32,40,40,67,32,40,40,40,67,
+39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,
+41,32,83,39,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,39,41,41,
+41,32,40,40,66,32,40,66,32,85,41,41,32,95,57,49,56,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,40,90,32,40,90,32,40,90,32,
+75,41,41,41,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,66,32,
+40,66,32,67,41,41,32,40,40,40,83,39,32,67,39,41,32,95,57,49,
+57,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,52,55,
+57,32,95,50,55,55,41,41,32,40,40,40,67,39,32,40,95,52,55,57,
+32,95,50,55,55,41,41,32,95,57,50,54,41,32,35,49,41,41,41,32,
+95,57,50,54,41,41,41,41,32,73,41,41,41,32,40,40,65,32,58,57,
+50,56,32,40,40,66,32,89,41,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,67,41,32,40,40,66,32,40,80,32,95,52,55,54,41,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,67,
+39,41,41,32,40,40,40,67,39,32,67,41,32,40,95,52,57,54,32,95,
+56,57,51,41,41,32,95,52,55,54,41,41,32,95,52,55,55,41,41,32,
+95,52,55,54,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,66,41,41,41,41,32,40,66,39,32,40,40,66,
+32,67,41,32,40,95,52,57,54,32,95,56,57,51,41,41,41,41,32,95,
+52,55,55,41,41,32,73,41,41,41,41,41,32,40,40,65,32,58,57,50,
+57,32,40,95,57,51,48,32,95,50,54,53,41,41,32,40,40,65,32,58,
+57,51,48,32,40,40,66,32,40,66,32,40,66,32,89,41,41,41,32,40,
+40,66,32,40,40,83,39,32,40,83,39,32,40,83,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,80,41,41,32,95,57,49,56,41,41,32,40,40,40,67,39,32,66,
+41,32,66,41,32,40,40,40,67,39,32,67,41,32,40,40,95,57,49,57,
+32,95,57,49,55,41,32,35,49,41,41,32,95,57,49,55,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,
+83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,41,41,41,41,32,
+40,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,
+40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,40,40,66,32,40,83,39,32,83,39,41,41,32,40,40,66,32,40,
+66,32,83,39,41,41,32,40,95,52,57,54,32,95,56,57,51,41,41,41,
+41,41,32,40,66,32,95,57,51,55,41,41,41,41,41,32,40,40,67,39,
+32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,67,32,95,
+57,50,55,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,32,95,57,51,55,41,41,41,41,41,41,32,40,40,
+65,32,58,57,51,49,32,40,40,66,32,89,41,32,40,40,40,83,39,32,
+66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,83,32,40,85,32,
+95,57,49,55,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,67,41,32,
+40,40,40,67,39,32,40,67,39,32,40,95,50,48,50,32,95,53,49,48,
+41,41,41,32,40,95,52,57,54,32,95,56,57,51,41,41,32,95,53,49,
+53,41,41,41,32,95,57,49,55,41,41,41,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,
+40,83,39,32,40,83,39,32,83,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,40,66,32,40,83,39,32,67,39,41,41,32,
+40,40,66,32,40,66,32,83,39,41,41,32,40,95,52,57,54,32,95,56,
+57,51,41,41,41,41,41,32,40,66,32,95,57,51,55,41,41,41,32,40,
+40,40,83,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,67,
+32,40,67,39,32,83,39,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,32,40,40,
+40,83,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,40,67,39,32,83,39,41,41,32,85,41,32,40,90,32,75,41,41,
+41,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,
+41,32,40,40,40,83,39,32,83,41,32,40,40,83,32,40,40,40,67,39,
+32,83,39,41,32,40,40,66,32,40,95,52,57,57,32,95,50,56,50,41,
+41,32,95,57,50,54,41,41,32,95,57,50,54,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,
+40,67,39,32,83,39,41,32,95,57,50,55,41,32,40,85,32,40,90,32,
+75,41,41,41,41,32,40,85,32,40,75,32,75,41,41,41,41,32,40,85,
+32,40,75,32,65,41,41,41,41,32,95,57,51,50,41,41,41,32,40,40,
+66,32,40,67,32,40,67,32,40,40,83,32,40,40,40,83,39,32,95,57,
+50,55,41,32,40,85,32,40,75,32,65,41,41,41,32,40,85,32,40,90,
+32,75,41,41,41,41,32,40,85,32,40,75,32,75,41,41,41,41,41,41,
+32,95,57,51,51,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,
+32,40,67,39,32,66,41,41,41,32,95,57,51,55,41,41,41,41,41,41,
+32,40,40,65,32,58,57,51,50,32,40,40,67,32,40,40,80,32,95,50,
+53,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,80,41,32,
+95,57,49,55,41,41,41,32,40,90,32,40,40,40,83,39,32,40,83,39,
+32,40,83,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,83,39,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,66,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,80,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,
+32,40,90,32,40,90,32,75,41,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,66,39,32,95,57,51,50,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,40,40,66,32,67,41,32,40,
+67,32,95,57,51,55,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,57,51,51,32,40,40,67,32,40,40,80,32,95,50,53,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,80,41,32,95,57,49,55,41,
+41,41,32,40,90,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,83,39,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,
+41,41,41,32,40,40,67,39,32,40,67,39,32,67,41,41,32,80,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,67,32,95,57,51,51,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,67,41,41,32,80,41,41,41,41,41,32,95,57,51,55,41,41,41,
+41,41,41,32,40,40,65,32,58,57,51,52,32,35,51,41,32,40,40,65,
+32,58,57,51,53,32,35,50,41,32,40,40,65,32,58,57,51,54,32,35,
+48,41,32,40,40,65,32,58,57,51,55,32,40,40,66,32,89,41,32,40,
+40,40,83,39,32,40,67,39,32,40,83,39,32,40,83,39,32,83,41,41,
+41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,66,39,32,
+40,40,66,32,83,41,32,40,40,40,67,39,32,40,67,39,32,40,95,52,
+57,56,32,95,50,56,50,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,95,52,55,57,32,95,50,55,55,41,41,32,95,57,50,
+54,41,41,32,95,57,50,54,41,41,32,35,49,41,41,41,41,41,32,40,
+40,40,83,39,32,66,41,32,40,40,66,32,40,83,39,32,40,83,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,40,66,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,67,41,41,41,32,40,40,66,32,40,67,39,32,67,41,41,32,40,
+40,67,39,32,40,67,39,32,95,57,51,55,41,41,32,40,40,40,67,39,
+32,67,41,32,40,40,95,57,49,57,32,95,57,49,55,41,32,35,49,41,
+41,32,95,57,49,55,41,41,41,41,41,41,32,40,90,32,40,90,32,40,
+90,32,40,90,32,75,41,41,41,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,82,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,66,32,66,39,41,
+41,32,40,40,40,67,39,32,67,41,32,40,40,95,57,49,57,32,95,57,
+49,55,41,32,35,49,41,41,32,95,57,49,55,41,41,41,41,32,40,90,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,32,40,
+40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,40,
+40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,83,41,32,40,40,
+66,32,40,40,67,39,32,40,95,52,57,57,32,95,50,56,50,41,41,32,
+95,57,50,54,41,41,32,40,40,40,67,39,32,40,95,52,55,57,32,95,
+50,55,55,41,41,32,40,40,66,32,40,40,95,52,56,49,32,95,50,55,
+55,41,32,95,57,51,52,41,41,32,95,57,50,54,41,41,32,95,57,51,
+54,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,
+32,83,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,
+40,40,67,39,32,83,39,41,32,40,40,66,32,40,95,52,57,57,32,95,
+50,56,50,41,41,32,95,57,50,54,41,41,32,40,40,40,67,39,32,40,
+95,52,55,57,32,95,50,55,55,41,41,32,40,40,66,32,40,40,95,52,
+56,49,32,95,50,55,55,41,32,95,57,51,52,41,41,32,95,57,50,54,
+41,41,32,95,57,51,54,41,41,41,41,32,95,57,50,55,41,41,32,40,
+40,40,83,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,80,32,
+95,50,53,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,40,
+40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,
+67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,40,67,39,32,67,41,32,40,40,66,32,40,40,67,39,32,40,95,52,
+57,55,32,95,50,56,50,41,41,32,95,57,50,54,41,41,32,40,40,66,
+32,40,40,95,52,56,49,32,95,50,55,55,41,32,95,57,51,53,41,41,
+32,95,57,50,54,41,41,41,41,41,41,41,32,95,57,52,49,41,41,32,
+95,57,51,57,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,83,32,40,40,80,32,95,50,53,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,90,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,90,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,90,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,
+83,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,67,32,40,40,40,67,39,32,
+67,39,41,32,40,40,66,32,40,95,52,57,55,32,95,50,56,50,41,41,
+32,95,57,50,54,41,41,32,40,40,66,32,40,40,95,52,56,49,32,95,
+50,55,55,41,32,95,57,51,53,41,41,32,95,57,50,54,41,41,41,41,
+41,41,41,32,95,57,52,48,41,41,32,95,57,51,56,41,41,41,41,41,
+41,41,41,41,41,32,95,57,50,55,41,41,41,32,40,40,65,32,58,57,
+51,56,32,40,40,66,32,40,66,32,40,66,32,40,67,32,40,40,80,32,
+95,50,53,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,95,57,50,55,41,41,41,41,32,95,
+57,50,55,41,41,41,41,32,40,40,65,32,58,57,51,57,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,80,32,95,50,
+53,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,
+41,32,95,57,50,55,41,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,40,40,66,32,67,41,32,40,67,32,95,57,50,55,41,41,41,41,
+41,41,41,32,40,40,65,32,58,57,52,48,32,40,40,66,32,40,66,32,
+40,66,32,40,67,32,40,40,80,32,95,50,53,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,90,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,
+32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,83,39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,83,39,41,
+32,40,85,32,95,50,53,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,
+32,66,39,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,67,39,32,67,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,95,57,50,55,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,95,57,50,55,41,32,95,57,49,55,
+41,41,41,41,41,41,32,40,95,57,50,55,32,95,57,49,55,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,90,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,
+40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,57,50,55,41,
+41,41,41,32,95,57,50,55,41,41,41,41,41,32,40,40,66,32,40,66,
+32,67,41,41,32,40,40,66,32,67,41,32,40,67,32,95,57,50,55,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,52,49,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,80,32,95,
+50,53,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,40,83,39,
+32,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,
+32,67,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,80,32,95,50,53,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,95,57,50,55,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,95,57,50,55,41,32,95,57,49,55,41,41,41,
+41,41,41,32,40,95,57,50,55,32,95,57,49,55,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,66,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,95,57,50,55,41,41,41,41,32,95,57,50,55,41,41,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,40,40,66,32,67,41,32,40,
+67,32,95,57,50,55,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,57,52,50,32,40,85,32,40,40,66,32,40,66,32,40,66,32,90,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+40,95,51,51,32,95,49,52,53,50,41,32,40,40,95,50,54,49,32,40,
+40,95,52,53,32,95,49,52,53,50,41,32,40,95,49,50,50,32,95,49,
+51,51,57,41,41,41,32,40,95,50,52,32,34,73,110,116,101,114,97,99,
+116,105,118,101,32,109,104,115,32,110,111,116,32,97,118,97,105,108,97,98,
+108,101,32,119,104,101,110,32,99,111,109,112,105,108,101,100,32,119,105,116,
+104,32,103,104,99,34,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,51,32,95,49,52,
+53,50,41,32,40,95,49,52,55,50,32,34,87,101,108,99,111,109,101,32,
+116,111,32,105,110,116,101,114,97,99,116,105,118,101,32,77,105,99,114,111,
+72,115,33,34,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,40,40,83,39,32,40,95,51,50,32,95,
+49,52,53,50,41,41,32,95,54,49,52,41,32,40,40,40,67,39,32,40,
+67,39,32,40,95,51,50,32,95,49,52,53,50,41,41,41,32,40,40,66,
+32,40,66,32,40,95,49,48,56,57,32,95,57,52,52,41,41,41,32,40,
+40,66,32,67,41,32,40,80,32,95,57,52,51,41,41,41,41,32,40,75,
+32,40,40,95,51,52,32,95,49,52,53,50,41,32,95,49,51,52,49,41,
+41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,32,95,54,48,48,41,32,95,49,50,53,41,41,
+41,41,41,41,41,32,40,40,65,32,58,57,52,51,32,40,40,95,52,54,
+51,32,34,109,111,100,117,108,101,32,34,41,32,40,40,95,52,54,51,32,
+95,57,53,49,41,32,40,40,95,52,54,51,32,34,40,109,111,100,117,108,
+101,32,34,41,32,40,40,95,52,54,51,32,95,57,53,49,41,32,34,41,
+32,119,104,101,114,101,92,49,48,38,105,109,112,111,114,116,32,80,114,101,
+108,117,100,101,92,49,48,38,100,101,102,97,117,108,116,32,40,73,110,116,
+101,103,101,114,44,32,68,111,117,98,108,101,41,92,49,48,38,34,41,41,
+41,41,41,32,40,40,65,32,58,57,52,52,32,40,40,40,95,51,51,32,
+95,49,48,57,50,41,32,95,57,52,56,41,32,40,40,40,95,51,51,32,
+95,49,48,57,50,41,32,40,40,95,50,54,49,32,95,49,48,57,56,41,
+32,40,95,49,52,55,50,32,34,84,121,112,101,32,39,58,113,117,105,116,
+39,32,116,111,32,113,117,105,116,44,32,39,58,104,101,108,112,39,32,102,
+111,114,32,104,101,108,112,34,41,41,41,32,95,57,52,53,41,41,41,32,
+40,40,65,32,58,57,52,53,32,40,40,40,95,51,50,32,95,49,48,57,
+50,41,32,40,40,95,50,54,49,32,95,49,48,57,56,41,32,40,40,95,
+49,52,50,49,32,34,46,109,104,115,105,34,41,32,34,62,32,34,41,41,
+41,32,40,40,80,32,95,57,52,53,41,32,40,40,83,32,40,85,32,95,
+57,52,53,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,67,32,40,40,67,32,61,61,41,32,35,53,56,41,41,
+41,32,40,40,40,67,39,32,40,95,51,51,32,95,49,48,57,50,41,41,
+32,95,57,53,53,41,32,95,57,52,53,41,41,41,32,40,40,40,67,39,
+32,40,95,51,50,32,95,49,48,57,50,41,41,32,95,57,52,54,41,32,
+40,40,80,32,40,40,95,50,54,49,32,95,49,48,57,56,41,32,40,95,
+49,52,55,50,32,34,66,121,101,34,41,41,41,32,95,57,52,53,41,41,
+41,41,41,41,41,32,40,40,65,32,58,57,52,54,32,40,40,67,32,40,
+40,67,32,95,49,54,48,56,41,32,40,40,95,51,52,32,95,49,48,57,
+50,41,32,95,49,50,53,41,41,41,32,40,40,66,32,40,40,67,39,32,
+40,83,32,40,85,32,40,40,40,95,51,51,32,95,49,48,57,50,41,32,
+40,40,95,50,54,49,32,95,49,48,57,56,41,32,40,95,49,52,55,50,
+32,34,85,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,109,97,
+110,100,34,41,41,41,32,40,40,95,51,52,32,95,49,48,57,50,41,32,
+95,49,50,53,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,32,
+66,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,67,32,67,
+39,41,41,32,40,40,66,32,85,41,32,95,49,54,48,57,41,41,41,41,
+32,40,90,32,40,90,32,40,40,40,67,39,32,40,95,51,51,32,95,49,
+48,57,50,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,48,57,
+56,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,52,55,50,41,
+41,32,40,40,66,32,40,95,52,54,51,32,34,65,109,98,105,103,117,111,
+117,115,32,99,111,109,109,97,110,100,58,32,34,41,41,32,40,40,66,32,
+95,49,54,48,57,41,32,40,95,51,57,53,32,95,53,54,53,41,41,41,
+41,41,41,32,40,40,95,51,52,32,95,49,48,57,50,41,32,95,49,50,
+53,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,95,51,57,
+54,41,32,40,40,40,67,39,32,95,50,54,51,41,32,40,95,52,49,56,
+32,95,49,51,49,41,41,32,95,53,54,53,41,41,32,95,57,52,55,41,
+41,41,41,32,40,40,65,32,58,57,52,55,32,40,40,79,32,40,40,80,
+32,34,113,117,105,116,34,41,32,40,40,95,50,54,49,32,95,50,54,53,
+41,32,40,40,95,51,52,32,95,49,48,57,50,41,32,95,49,50,52,41,
+41,41,41,32,40,40,79,32,40,40,80,32,34,99,108,101,97,114,34,41,
+32,40,40,95,50,54,49,32,95,50,54,53,41,32,40,40,40,95,51,51,
+32,95,49,48,57,50,41,32,40,95,57,53,48,32,40,95,50,54,53,32,
+95,57,52,51,41,41,41,32,40,40,40,95,51,51,32,95,49,48,57,50,
+41,32,40,40,95,50,54,49,32,95,49,48,57,53,41,32,40,85,32,40,
+40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+80,41,32,95,54,49,49,41,41,41,41,41,32,40,40,95,51,52,32,95,
+49,48,57,50,41,32,95,49,50,53,41,41,41,41,41,41,32,40,40,79,
+32,40,40,80,32,34,114,101,108,111,97,100,34,41,32,40,40,95,50,54,
+49,32,95,50,54,53,41,32,40,40,40,95,51,51,32,95,49,48,57,50,
+41,32,40,40,95,50,54,49,32,95,49,48,57,53,41,32,40,85,32,40,
+40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+80,41,32,95,54,49,49,41,41,41,41,41,32,40,40,40,95,51,51,32,
+95,49,48,57,50,41,32,95,57,52,56,41,32,40,40,95,51,52,32,95,
+49,48,57,50,41,32,95,49,50,53,41,41,41,41,41,41,32,40,40,79,
+32,40,40,80,32,34,100,101,108,101,116,101,34,41,32,40,40,40,67,39,
+32,40,95,51,51,32,95,49,48,57,50,41,41,32,40,40,66,32,95,57,
+53,48,41,32,40,40,66,32,40,95,50,54,51,32,95,49,54,48,55,41,
+41,32,40,40,40,67,39,32,95,50,54,51,41,32,40,40,66,32,95,51,
+57,54,41,32,40,40,66,32,40,95,50,54,51,32,95,49,50,50,41,41,
+32,40,95,52,49,56,32,95,49,51,49,41,41,41,41,32,95,49,54,48,
+54,41,41,41,41,32,40,40,95,51,52,32,95,49,48,57,50,41,32,95,
+49,50,53,41,41,41,41,32,40,40,79,32,40,40,80,32,34,104,101,108,
+112,34,41,32,40,75,32,40,40,40,95,51,51,32,95,49,48,57,50,41,
+32,40,40,95,50,54,49,32,95,49,48,57,56,41,32,40,95,49,52,55,
+50,32,95,57,52,57,41,41,41,32,40,40,95,51,52,32,95,49,48,57,
+50,41,32,95,49,50,53,41,41,41,41,41,32,75,41,41,41,41,41,41,
+32,40,40,65,32,58,57,52,56,32,40,40,40,95,51,50,32,95,49,48,
+57,50,41,32,95,49,48,57,55,41,32,40,85,32,40,90,32,40,90,32,
+40,40,40,67,39,32,40,95,51,50,32,95,49,48,57,50,41,41,32,95,
+57,53,54,41,32,40,40,80,32,40,40,66,32,40,95,50,54,49,32,95,
+49,48,57,56,41,41,32,95,57,53,52,41,41,32,40,75,32,40,40,95,
+51,52,32,95,49,48,57,50,41,32,95,49,51,52,49,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,57,52,57,32,34,67,111,109,109,97,
+110,100,115,58,92,49,48,38,32,32,58,113,117,105,116,32,32,32,32,32,
+32,113,117,105,116,32,77,105,99,114,111,72,115,92,49,48,38,32,32,58,
+114,101,108,111,97,100,32,32,32,32,114,101,108,111,97,100,32,109,111,100,
+117,108,101,115,92,49,48,38,32,32,58,99,108,101,97,114,32,32,32,32,
+32,99,108,101,97,114,32,97,108,108,32,100,101,102,105,110,105,116,105,111,
+110,115,92,49,48,38,32,32,58,100,101,108,101,116,101,32,100,32,32,100,
+101,108,101,116,101,32,100,101,102,105,110,105,116,105,111,110,40,115,41,32,
+100,92,49,48,38,32,32,58,104,101,108,112,32,32,32,32,32,32,116,104,
+105,115,32,116,101,120,116,92,49,48,38,32,32,101,120,112,114,32,32,32,
+32,32,32,32,101,118,97,108,117,97,116,101,32,101,120,112,114,101,115,115,
+105,111,110,92,49,48,38,32,32,100,101,102,110,32,32,32,32,32,32,32,
+97,100,100,32,116,111,112,32,108,101,118,101,108,32,100,101,102,105,110,105,
+116,105,111,110,92,49,48,38,34,41,32,40,40,65,32,58,57,53,48,32,
+40,40,66,32,40,95,50,54,49,32,95,49,48,57,53,41,41,32,40,40,
+66,32,85,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,41,32,
+40,66,32,80,41,41,41,41,41,32,40,40,65,32,58,57,53,49,32,34,
+73,110,116,101,114,97,99,116,105,118,101,34,41,32,40,40,65,32,58,57,
+53,50,32,34,95,105,116,34,41,32,40,40,65,32,58,57,53,51,32,40,
+40,66,32,40,95,52,54,51,32,95,57,53,50,41,41,32,40,40,66,32,
+40,95,52,54,51,32,34,32,58,58,32,73,79,32,40,41,92,49,48,38,
+34,41,41,32,40,40,66,32,40,95,52,54,51,32,95,57,53,50,41,41,
+32,40,40,66,32,40,95,52,54,51,32,34,32,61,32,112,114,105,110,116,
+79,114,82,117,110,32,40,34,41,41,32,40,40,67,32,95,52,54,51,41,
+32,34,41,92,49,48,38,34,41,41,41,41,41,41,32,40,40,65,32,58,
+57,53,52,32,40,40,66,32,40,95,50,54,49,32,95,49,52,55,50,41,
+41,32,40,95,52,54,51,32,34,69,114,114,111,114,58,32,34,41,41,41,
+32,40,40,65,32,58,57,53,53,32,40,40,66,32,40,40,95,51,50,32,
+95,49,48,57,50,41,32,95,49,48,57,55,41,41,32,40,40,66,32,85,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,40,83,
+39,32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,66,32,40,66,32,40,67,32,40,40,95,57,57,55,32,95,57,57,57,
+41,32,75,41,41,41,41,32,40,40,66,32,90,41,32,40,40,40,83,39,
+32,66,41,32,40,40,67,32,40,40,95,57,57,55,32,95,49,48,48,48,
+41,32,75,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,48,57,
+56,41,41,32,40,40,66,32,95,57,53,52,41,32,95,50,54,41,41,41,
+41,32,40,40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,32,40,
+95,51,50,32,95,49,48,57,50,41,41,41,32,40,40,66,32,40,66,32,
+95,57,53,54,41,41,32,40,40,66,32,40,67,32,95,52,54,51,41,41,
+32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,35,49,48,41,32,
+75,41,41,41,32,95,57,53,51,41,41,41,41,32,40,40,80,32,40,40,
+66,32,40,95,50,54,49,32,95,49,48,57,56,41,41,32,95,57,53,52,
+41,41,32,95,57,53,55,41,41,41,41,41,41,41,32,40,90,32,40,40,
+40,83,39,32,40,95,51,50,32,95,49,48,57,50,41,41,32,95,57,53,
+54,41,32,40,40,66,32,40,80,32,40,40,66,32,40,95,50,54,49,32,
+95,49,48,57,56,41,41,32,95,57,53,52,41,41,41,32,40,90,32,40,
+40,66,32,95,57,53,48,41,32,95,50,54,53,41,41,41,41,41,41,41,
+32,40,40,66,32,40,67,32,95,52,54,51,41,41,32,40,40,67,32,95,
+52,54,51,41,32,40,40,79,32,35,49,48,41,32,75,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,57,53,54,32,40,40,66,32,40,40,
+95,51,50,32,95,49,48,57,50,41,32,95,49,48,57,55,41,41,32,40,
+40,66,32,85,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,
+40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,66,39,32,
+40,40,66,32,40,95,51,51,32,95,49,48,57,50,41,41,32,40,40,66,
+32,40,95,50,54,49,32,95,49,48,57,56,41,41,32,40,95,49,52,55,
+52,32,40,40,95,52,54,51,32,95,57,53,49,41,32,34,46,104,115,34,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,67,
+39,32,40,83,39,32,40,95,51,50,32,95,49,48,57,50,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,49,48,
+57,56,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,
+54,49,32,95,50,56,41,41,41,41,32,40,40,66,32,67,41,32,95,54,
+49,51,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,80,
+32,40,40,66,32,40,95,51,52,32,95,49,48,57,50,41,41,32,95,49,
+55,52,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,67,39,32,40,95,51,51,
+32,95,49,48,57,50,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,95,49,48,57,54,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,
+32,40,66,32,67,41,41,32,80,41,41,41,32,95,54,49,50,41,41,41,
+41,32,40,40,66,32,40,95,51,52,32,95,49,48,57,50,41,41,32,95,
+49,55,53,41,41,41,41,41,41,41,32,40,95,56,57,55,32,95,57,53,
+49,41,41,41,41,41,32,40,40,65,32,58,57,53,55,32,40,40,66,32,
+40,40,40,67,39,32,40,95,51,50,32,95,49,48,57,50,41,41,32,40,
+40,66,32,40,95,50,54,49,32,95,49,48,57,56,41,41,32,40,40,66,
+32,95,50,56,41,32,40,40,83,32,95,49,52,56,49,41,32,40,95,51,
+52,32,95,49,52,53,50,41,41,41,41,41,32,40,40,66,32,40,95,50,
+54,49,32,95,49,48,57,56,41,41,32,40,40,80,32,95,57,53,52,41,
+32,40,40,40,67,39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,
+95,50,56,41,32,40,40,80,32,95,57,53,52,41,32,40,75,32,40,40,
+95,51,52,32,95,49,52,53,50,41,32,95,49,51,52,49,41,41,41,41,
+41,41,41,41,32,40,40,66,32,95,49,54,49,51,41,32,40,40,66,32,
+95,49,49,48,50,41,32,40,80,32,40,95,56,57,55,32,40,40,95,52,
+54,51,32,95,57,53,49,41,32,40,40,95,52,54,51,32,40,40,79,32,
+35,52,54,41,32,75,41,41,32,95,57,53,50,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,57,53,56,32,40,40,66,32,40,66,32,40,66,
+32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,80,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,
+53,57,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,57,54,48,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,57,54,49,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,80,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,
+54,50,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,57,54,51,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,80,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,
+54,52,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,57,54,53,32,40,90,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,40,66,32,90,41,32,85,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,57,54,54,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,85,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,54,55,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,80,32,40,75,32,40,40,66,32,40,66,
+32,40,95,52,51,49,32,40,40,79,32,35,52,54,41,32,75,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,95,52,54,51,41,32,40,40,67,
+32,79,41,32,75,41,41,41,41,41,32,40,75,32,40,95,49,53,57,48,
+32,40,95,51,57,49,32,95,49,52,57,41,41,41,41,41,32,40,75,32,
+40,95,49,53,57,48,32,95,49,52,57,41,41,41,41,32,40,75,32,40,
+95,49,53,57,48,32,95,51,48,55,41,41,41,41,32,40,75,32,40,95,
+49,53,57,48,32,40,95,53,50,49,32,95,51,48,55,41,41,41,41,41,
+32,40,75,32,40,40,67,32,79,41,32,75,41,41,41,41,32,40,75,32,
+40,95,52,54,51,32,34,69,82,82,79,82,32,34,41,41,41,41,32,40,
+75,32,34,84,66,114,97,99,101,34,41,41,41,32,40,75,32,34,84,73,
+110,100,101,110,116,34,41,41,41,32,40,40,65,32,58,57,54,56,32,40,
+85,32,40,90,32,40,40,40,67,39,32,80,41,32,40,40,67,32,40,95,
+52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,32,40,40,95,52,
+56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,41,
+41,41,41,32,40,40,65,32,58,57,54,57,32,40,40,67,32,66,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,80,41,41,32,40,67,32,40,
+95,52,55,57,32,95,50,55,55,41,41,41,41,41,32,40,40,65,32,58,
+57,55,48,32,80,41,32,40,40,65,32,58,57,55,49,32,40,85,32,65,
+41,41,32,40,40,65,32,58,57,55,50,32,40,40,95,50,54,51,32,40,
+95,57,56,53,32,95,52,54,49,41,41,32,40,95,57,55,51,32,40,40,
+95,57,55,48,32,35,49,41,32,35,49,41,41,41,41,32,40,40,65,32,
+58,57,55,51,32,40,40,66,32,89,41,32,40,40,40,83,39,32,66,41,
+32,40,40,66,32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,
+40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,
+40,67,32,61,61,41,32,35,51,50,41,41,41,41,32,40,40,66,32,95,
+57,55,51,41,32,40,40,67,32,95,57,54,57,41,32,35,49,41,41,41,
+41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,41,32,
+40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,40,67,39,32,
+40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,
+49,48,41,41,41,41,32,40,40,66,32,40,66,32,95,57,55,56,41,41,
+32,40,40,66,32,95,57,55,51,41,32,95,57,54,56,41,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,83,41,32,40,40,66,32,40,67,
+32,83,41,41,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,
+32,40,40,67,32,61,61,41,32,35,49,51,41,41,41,41,41,41,32,40,
+40,40,83,39,32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,
+40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,40,67,32,40,
+40,67,32,61,61,41,32,35,49,50,51,41,41,41,41,32,40,40,66,32,
+40,83,32,80,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,
+66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,52,53,41,41,
+41,41,32,40,40,40,67,39,32,95,57,55,54,41,32,40,40,67,32,95,
+57,54,57,41,32,35,50,41,41,32,35,49,41,41,41,41,41,41,32,40,
+40,40,83,39,32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,
+40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,40,67,32,40,
+40,67,32,61,61,41,32,35,52,53,41,41,41,41,32,40,40,66,32,40,
+83,32,80,41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,66,
+41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,52,53,41,41,41,
+41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,40,67,39,32,
+83,39,41,32,40,40,66,32,83,41,32,40,40,67,39,32,40,40,80,32,
+95,49,50,53,41,32,40,90,32,40,40,66,32,95,49,50,50,41,32,95,
+57,49,49,41,41,41,41,32,40,85,32,65,41,41,41,41,41,32,40,40,
+66,32,40,67,39,32,95,57,55,55,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,95,57,54,57,41,41,32,40,
+40,66,32,40,40,95,52,55,57,32,95,50,55,55,41,32,40,40,95,52,
+56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,50,41,41,41,
+41,32,40,40,66,32,95,52,49,49,41,32,40,85,32,75,41,41,41,41,
+41,41,41,32,40,95,52,50,54,32,40,40,67,32,40,95,50,48,50,32,
+95,49,51,49,41,41,32,35,52,53,41,41,41,41,41,41,41,41,32,40,
+40,40,83,39,32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,
+40,66,32,40,40,67,39,32,40,83,39,32,66,41,41,32,40,67,32,95,
+57,49,51,41,41,41,32,40,40,66,32,40,66,32,40,67,32,40,95,52,
+50,54,32,95,57,49,50,41,41,41,41,32,40,40,40,83,39,32,40,67,
+39,32,40,83,39,32,66,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,40,40,67,32,95,57,56,51,41,32,95,52,54,49,41,41,
+41,32,95,52,54,50,41,41,32,40,40,66,32,40,66,32,95,57,55,51,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,
+41,32,95,57,54,57,41,41,32,40,40,66,32,40,40,95,52,55,57,32,
+95,50,55,55,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,
+95,51,53,57,32,35,49,41,41,41,41,32,95,52,49,49,41,41,41,41,
+41,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,83,
+32,83,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,40,67,32,95,49,
+51,57,41,41,41,41,32,40,40,67,32,40,40,83,32,95,57,56,50,41,
+32,73,41,41,32,95,52,54,49,41,41,41,41,41,32,40,40,40,83,39,
+32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,
+40,83,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,
+61,41,32,35,52,56,41,41,41,41,32,40,40,66,32,40,83,32,80,41,
+41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,
+67,32,40,40,40,67,39,32,40,95,50,48,50,32,95,49,51,49,41,41,
+32,95,49,52,55,41,32,35,49,50,48,41,41,41,41,32,95,57,55,52,
+41,41,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,
+67,32,83,41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,66,
+41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,52,53,41,41,41,
+41,32,40,40,66,32,40,40,83,39,32,83,41,32,85,41,41,32,40,40,
+66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,40,67,
+39,32,66,41,32,40,40,66,32,67,41,32,40,67,32,95,49,52,49,41,
+41,41,41,32,40,40,67,32,95,57,55,53,41,32,40,40,79,32,35,52,
+53,41,32,75,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,83,
+41,32,40,40,66,32,40,83,32,83,41,41,32,40,40,66,32,40,66,32,
+40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,
+67,41,32,40,67,32,95,49,52,49,41,41,41,41,32,40,40,67,32,95,
+57,55,53,41,32,75,41,41,41,41,41,32,40,40,40,83,39,32,83,41,
+32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,40,67,39,
+32,40,83,39,32,66,41,41,32,40,67,32,95,57,49,49,41,41,41,32,
+40,40,66,32,40,66,32,40,67,32,40,95,52,50,54,32,95,57,49,49,
+41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,52,54,50,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,67,32,95,
+57,53,56,41,32,95,52,54,49,41,41,41,32,95,52,54,50,41,41,41,
+32,40,40,66,32,40,66,32,95,57,55,51,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,57,54,57,41,41,
+32,40,40,66,32,40,40,95,52,55,57,32,95,50,55,55,41,32,40,40,
+95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,
+41,41,41,32,95,52,49,49,41,41,41,41,41,41,41,41,32,40,40,40,
+83,39,32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,
+32,40,40,67,39,32,40,83,39,32,66,41,41,32,40,67,32,95,57,56,
+49,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,95,52,54,50,41,41,32,95,57,54,51,41,41,32,
+40,40,66,32,95,57,55,51,41,32,40,40,67,32,95,57,54,57,41,32,
+35,49,41,41,41,41,41,41,32,40,40,40,83,39,32,83,41,32,40,40,
+66,32,40,67,32,83,41,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,51,52,
+41,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,83,32,95,57,55,57,41,32,95,57,53,57,
+41,41,32,35,51,52,41,41,32,35,48,41,41,32,95,52,54,49,41,41,
+32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,95,52,54,
+50,41,41,41,32,40,40,66,32,40,66,32,95,57,55,51,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,57,
+54,57,41,41,32,40,40,95,52,55,57,32,95,50,55,55,41,32,40,40,
+95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,50,41,
+41,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,83,41,32,40,
+40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,51,
+57,41,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,83,32,95,57,55,57,41,32,40,40,40,
+83,39,32,67,41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,40,67,39,32,80,41,41,32,95,57,
+54,48,41,41,32,40,90,32,75,41,41,41,41,32,40,40,67,32,95,57,
+54,52,41,32,34,73,108,108,101,103,97,108,32,67,104,97,114,32,108,105,
+116,101,114,97,108,34,41,41,41,41,32,35,51,57,41,41,32,35,48,41,
+41,32,95,52,54,49,41,41,32,40,40,66,32,40,40,67,39,32,66,41,
+32,40,66,39,32,95,52,54,50,41,41,41,32,40,40,66,32,40,66,32,
+95,57,55,51,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+95,50,54,49,41,32,95,57,54,57,41,41,32,40,40,95,52,55,57,32,
+95,50,55,55,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,
+95,51,53,57,32,35,50,41,41,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,80,32,95,52,54,49,41,41,32,40,40,66,32,90,41,32,40,
+40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,95,57,54,52,41,41,32,40,
+40,66,32,40,95,52,54,51,32,34,85,110,114,101,99,111,103,110,105,122,
+101,100,32,105,110,112,117,116,58,32,34,41,41,32,40,95,49,53,57,48,
+32,95,49,52,57,41,41,41,41,32,75,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,55,52,32,
+40,40,66,32,40,67,32,40,95,52,50,54,32,95,49,52,50,41,41,41,
+32,40,40,40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,32,40,
+66,32,95,52,54,50,41,41,32,40,40,40,67,39,32,66,41,32,95,57,
+54,49,41,32,95,57,56,54,41,41,41,32,40,40,66,32,40,66,32,95,
+57,55,51,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+50,54,49,41,32,95,57,54,57,41,41,32,40,40,40,67,39,32,40,95,
+52,55,57,32,95,50,55,55,41,41,32,95,52,49,49,41,32,35,50,41,
+41,41,41,41,41,32,40,40,65,32,58,57,55,53,32,40,40,66,32,40,
+66,32,40,67,32,40,95,52,50,54,32,95,49,52,49,41,41,41,41,32,
+40,40,40,83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,83,32,40,40,40,83,39,32,95,49,
+50,48,41,32,95,51,57,50,41,32,40,40,40,83,39,32,95,49,50,48,
+41,32,40,40,66,32,95,49,50,50,41,32,40,40,40,67,39,32,40,95,
+50,48,50,32,95,49,51,49,41,41,32,95,52,50,56,41,32,35,52,54,
+41,41,41,32,40,40,40,67,39,32,40,95,50,48,50,32,95,49,51,51,
+41,41,32,40,95,52,48,57,32,35,50,41,41,32,34,46,46,34,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,40,95,52,50,54,32,95,49,52,49,41,41,32,95,52,50,57,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,
+40,40,66,32,67,41,32,40,40,66,32,40,40,67,39,32,67,41,32,40,
+40,67,32,40,40,40,83,39,32,83,39,41,32,40,40,66,32,83,39,41,
+32,40,40,80,32,95,52,55,54,41,32,40,40,40,83,39,32,83,41,32,
+40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,40,83,39,32,
+40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,
+52,53,41,41,41,41,32,40,40,66,32,40,40,83,39,32,83,41,32,85,
+41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,
+41,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,95,49,50,49,
+41,32,40,40,40,67,39,32,40,95,50,48,50,32,95,49,51,49,41,41,
+32,95,49,52,55,41,32,35,49,48,49,41,41,41,32,95,49,52,49,41,
+41,32,40,40,66,32,95,52,55,55,41,32,40,40,40,83,39,32,80,41,
+32,40,40,66,32,40,95,52,54,50,32,35,49,48,49,41,41,32,40,40,
+66,32,40,95,52,54,50,32,35,52,53,41,41,32,40,85,32,75,41,41,
+41,41,32,40,85,32,65,41,41,41,41,41,41,32,40,95,52,50,54,32,
+95,49,52,49,41,41,41,41,41,41,41,32,40,40,40,83,39,32,83,41,
+32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,40,83,39,
+32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,
+35,52,51,41,41,41,41,32,40,40,66,32,40,40,83,39,32,83,41,32,
+85,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,
+41,41,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,95,49,50,
+49,41,32,40,40,40,67,39,32,40,95,50,48,50,32,95,49,51,49,41,
+41,32,95,49,52,55,41,32,35,49,48,49,41,41,41,32,95,49,52,49,
+41,41,32,40,40,66,32,95,52,55,55,41,32,40,40,40,83,39,32,80,
+41,32,40,40,66,32,40,95,52,54,50,32,35,49,48,49,41,41,32,40,
+40,66,32,40,95,52,54,50,32,35,52,51,41,41,32,40,85,32,75,41,
+41,41,41,32,40,85,32,65,41,41,41,41,41,41,32,40,95,52,50,54,
+32,95,49,52,49,41,41,41,41,41,41,41,32,40,40,66,32,40,83,32,
+40,85,32,95,52,55,54,41,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,40,40,67,32,40,40,40,67,
+39,32,67,39,41,32,40,40,66,32,95,49,50,49,41,32,40,40,40,67,
+39,32,40,95,50,48,50,32,95,49,51,49,41,41,32,95,49,52,55,41,
+32,35,49,48,49,41,41,41,32,95,49,52,49,41,41,32,95,52,55,54,
+41,41,32,40,40,66,32,95,52,55,55,41,32,40,40,40,83,39,32,80,
+41,32,40,40,66,32,40,95,52,54,50,32,35,49,48,49,41,41,32,40,
+85,32,75,41,41,41,32,40,85,32,65,41,41,41,41,41,41,32,40,95,
+52,50,54,32,95,49,52,49,41,41,41,41,41,41,41,41,41,32,40,67,
+32,80,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,
+32,40,67,32,66,41,41,32,95,52,54,51,41,41,41,41,41,32,40,40,
+40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,95,
+52,54,50,41,41,32,40,40,40,67,39,32,66,41,32,95,57,54,50,41,
+32,95,49,54,49,50,41,41,41,32,40,40,66,32,40,66,32,95,57,55,
+51,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,
+49,41,32,95,57,54,57,41,41,32,95,52,49,49,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,95,52,54,51,
+41,41,32,40,40,40,67,39,32,66,41,32,95,52,54,51,41,32,40,95,
+52,54,50,32,35,52,54,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,40,40,83,39,32,67,39,41,32,40,40,
+66,32,40,83,39,32,95,52,54,50,41,41,32,40,40,40,67,39,32,66,
+41,32,95,57,54,49,41,32,95,51,52,53,41,41,41,32,40,40,66,32,
+40,67,39,32,95,57,55,51,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,95,50,54,49,41,32,95,57,54,57,41,41,32,95,52,49,
+49,41,41,41,41,41,32,95,52,54,51,41,41,41,41,32,40,40,65,32,
+58,57,55,54,32,40,40,66,32,89,41,32,40,40,40,83,39,32,40,67,
+39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,83,39,
+41,32,40,40,67,32,61,61,41,32,35,48,41,41,41,41,32,40,40,40,
+83,39,32,66,41,32,40,40,66,32,40,83,39,32,83,41,41,32,40,40,
+66,32,40,66,32,40,67,32,83,41,41,41,32,40,40,66,32,40,66,32,
+40,40,83,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,
+61,61,41,32,35,49,50,51,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,83,32,80,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,
+35,52,53,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,95,57,55,54,41,32,40,40,67,32,95,57,54,57,41,32,35,50,
+41,41,41,32,40,40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,
+32,35,49,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,66,41,
+32,40,40,66,32,40,83,39,32,83,41,41,32,40,40,66,32,40,66,32,
+40,67,32,83,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,
+40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,
+52,53,41,41,41,41,41,32,40,40,66,32,40,66,32,40,83,32,80,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,49,50,53,41,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,57,55,
+54,41,32,40,40,67,32,95,57,54,57,41,32,35,50,41,41,41,32,40,
+40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,32,35,49,41,41,
+41,41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+40,83,39,32,83,41,41,32,40,40,66,32,40,66,32,40,67,32,83,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,49,48,41,41,41,
+41,41,32,40,40,66,32,95,57,55,54,41,32,95,57,54,56,41,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,40,83,39,32,83,41,41,32,
+40,40,66,32,40,66,32,40,67,32,83,41,41,41,32,40,66,32,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,
+41,32,35,49,51,41,41,41,41,41,41,41,32,40,40,40,83,39,32,66,
+41,32,40,40,66,32,80,41,32,40,40,40,67,39,32,79,41,32,40,40,
+67,32,95,57,54,52,41,32,34,85,110,99,108,111,115,101,100,32,123,45,
+32,99,111,109,109,101,110,116,34,41,41,32,75,41,41,41,32,40,40,66,
+32,90,41,32,40,40,66,32,95,57,55,54,41,32,40,40,67,32,95,57,
+54,57,41,32,35,49,41,41,41,41,41,41,41,41,41,41,32,95,57,55,
+51,41,41,41,32,40,40,65,32,58,57,55,55,32,40,40,66,32,89,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,83,41,32,40,40,66,
+32,40,83,32,83,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,40,67,
+32,40,40,67,32,61,61,41,32,35,49,48,41,41,41,41,41,32,95,57,
+55,51,41,41,41,41,41,32,40,40,66,32,40,80,32,95,52,54,49,41,
+41,32,75,41,41,41,41,32,40,40,65,32,58,57,55,56,32,40,40,83,
+32,40,40,83,32,83,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,40,67,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,
+39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,90,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,41,32,75,41,
+41,41,41,32,40,40,40,83,39,32,95,52,54,50,41,32,40,40,66,32,
+95,57,54,54,41,32,95,57,56,52,41,41,32,73,41,41,41,32,40,40,
+65,32,58,57,55,57,32,40,40,66,32,89,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,40,66,32,40,83,39,32,40,83,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,83,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,66,32,
+80,41,41,32,40,40,40,67,39,32,66,41,32,95,57,54,52,41,32,40,
+40,66,32,40,95,52,54,51,32,34,85,110,109,97,116,99,104,101,100,32,
+34,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,32,95,52,
+54,49,41,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,
+83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,67,32,40,40,67,32,61,61,41,32,35,57,
+50,41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,
+83,39,32,40,83,39,32,40,83,39,32,83,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,67,32,83,41,41,41,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,
+40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,67,41,32,
+40,95,50,48,50,32,95,49,51,49,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,67,39,32,
+80,41,41,32,40,40,67,32,66,41,32,95,52,50,51,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+80,32,40,40,40,110,111,77,97,116,99,104,32,34,115,114,99,47,77,105,
+99,114,111,72,115,47,76,101,120,46,104,115,34,41,32,35,49,53,56,41,
+32,35,49,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,66,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,66,39,41,41,41,32,40,40,67,32,40,67,39,32,40,
+67,39,32,66,41,41,41,32,40,40,67,32,40,95,52,55,57,32,95,50,
+55,55,41,41,32,35,49,41,41,41,41,32,40,67,32,95,52,54,50,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,95,57,56,48,41,
+32,40,40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,
+41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,
+66,32,40,66,32,67,41,41,41,41,32,40,67,32,95,52,54,50,41,41,
+41,41,41,41,41,32,40,40,65,32,58,57,56,48,32,40,40,40,83,39,
+32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,
+40,67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,
+61,41,32,35,49,49,48,41,41,41,41,32,40,40,66,32,67,41,32,40,
+40,66,32,40,80,32,35,49,48,41,41,32,40,40,67,32,40,95,52,55,
+57,32,95,50,55,55,41,41,32,35,49,41,41,41,41,41,41,32,40,40,
+40,83,39,32,83,41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,
+66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,
+67,32,61,61,41,32,35,49,49,52,41,41,41,41,32,40,40,66,32,67,
+41,32,40,40,66,32,40,80,32,35,49,51,41,41,32,40,40,67,32,40,
+95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,41,41,41,41,
+32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,67,32,83,41,41,
+32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,
+32,40,40,67,32,61,61,41,32,35,49,49,54,41,41,41,41,32,40,40,
+66,32,67,41,32,40,40,66,32,40,80,32,35,57,41,41,32,40,40,67,
+32,40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,41,41,
+41,41,32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,67,32,83,
+41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,67,32,40,40,67,32,61,61,41,32,35,57,56,41,41,41,41,32,40,
+40,66,32,67,41,32,40,40,66,32,40,80,32,35,56,41,41,32,40,40,
+67,32,40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,41,
+41,41,41,32,40,40,40,83,39,32,80,41,32,40,40,40,67,39,32,67,
+41,32,40,80,32,35,56,56,41,41,32,95,52,54,49,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,40,40,66,32,40,67,32,80,41,41,32,
+40,40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,57,56,49,32,40,40,
+67,32,40,95,52,51,50,32,95,49,51,49,41,41,32,34,40,41,91,93,
+44,123,125,96,59,34,41,41,32,40,40,65,32,58,57,56,50,32,40,40,
+66,32,40,66,32,40,66,32,40,67,32,40,95,52,50,54,32,95,57,49,
+50,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,
+32,40,83,39,32,83,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,67,32,83,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,67,32,40,40,67,32,61,61,41,32,35,52,54,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,83,39,32,
+83,41,32,85,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,90,41,41,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,40,
+83,39,32,67,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,
+40,66,32,40,40,83,39,32,67,39,41,32,95,49,51,57,41,41,32,40,
+40,40,67,39,32,67,41,32,40,40,66,32,40,40,83,39,32,83,39,41,
+32,95,49,51,56,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,67,32,95,57,49,49,41,41,32,40,85,32,95,57,49,49,41,
+41,41,41,32,40,85,32,95,57,49,50,41,41,41,41,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,83,41,41,32,40,40,66,32,40,67,39,32,95,57,56,50,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,
+95,57,54,57,41,41,32,40,40,66,32,40,40,95,52,55,57,32,95,50,
+55,55,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,
+53,57,32,35,49,41,41,41,41,32,95,52,49,49,41,41,41,41,41,32,
+40,67,32,95,52,54,50,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,40,67,39,32,67,41,32,40,67,32,95,52,50,54,
+41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,
+40,83,39,32,40,83,39,32,66,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,95,57,56,51,41,41,32,40,40,66,32,40,66,
+32,95,52,50,51,41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,95,57,55,51,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,
+41,32,95,57,54,57,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,66,32,
+40,40,95,52,55,57,32,95,50,55,55,41,32,40,40,95,52,56,53,32,
+95,50,55,55,41,32,40,95,51,53,57,32,35,49,41,41,41,41,32,95,
+52,49,49,41,41,41,32,95,52,49,49,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,40,83,39,32,
+66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,52,54,50,41,
+41,41,32,40,40,40,67,39,32,66,41,32,95,57,53,56,41,32,95,52,
+50,51,41,41,41,41,32,40,40,66,32,40,66,32,95,57,55,51,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,
+95,57,54,57,41,41,32,95,52,49,49,41,41,41,41,41,41,32,40,40,
+65,32,58,57,56,51,32,40,40,66,32,40,66,32,40,40,83,39,32,67,
+41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,40,40,66,32,
+83,39,41,32,40,40,67,32,40,95,52,51,50,32,95,49,51,51,41,41,
+32,40,40,79,32,34,108,101,116,34,41,32,40,40,79,32,34,119,104,101,
+114,101,34,41,32,40,40,79,32,34,100,111,34,41,32,40,40,79,32,34,
+111,102,34,41,32,75,41,41,41,41,41,41,41,32,40,67,32,95,52,54,
+50,41,41,41,32,40,40,66,32,40,67,32,95,52,54,50,41,41,32,40,
+40,83,32,40,40,83,32,83,41,32,40,40,40,83,39,32,40,67,39,32,
+40,67,39,32,66,41,41,41,32,40,40,40,67,39,32,40,83,39,32,67,
+41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,66,
+32,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,
+39,32,80,41,32,40,90,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,41,32,40,40,66,32,90,41,32,40,40,67,39,
+32,67,41,32,40,67,32,40,40,67,32,61,61,41,32,35,49,50,51,41,
+41,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,40,
+66,32,90,41,32,40,40,40,67,39,32,83,41,32,40,40,66,32,40,67,
+32,83,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,67,
+39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,
+67,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,
+66,32,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,
+40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,80,41,32,40,90,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,41,32,40,40,66,32,90,41,32,40,40,67,
+39,32,67,41,32,40,67,32,40,40,67,32,61,61,41,32,35,49,50,51,
+41,41,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,
+41,41,41,41,32,40,40,40,83,39,32,95,52,54,50,41,32,40,40,66,
+32,95,57,54,53,41,32,95,57,56,52,41,41,32,73,41,41,41,41,41,
+41,32,40,40,40,83,39,32,95,52,54,50,41,32,40,40,66,32,95,57,
+54,53,41,32,95,57,56,52,41,41,32,73,41,41,41,41,41,41,41,32,
+95,57,53,56,41,41,32,40,40,65,32,58,57,56,52,32,40,40,80,32,
+40,40,95,57,55,48,32,35,48,41,32,35,49,41,41,32,40,90,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,80,32,40,90,32,75,41,41,32,75,41,
+41,32,75,41,41,32,75,41,41,32,75,41,41,32,75,41,41,32,75,41,
+41,32,73,41,41,32,73,41,41,41,41,32,40,40,65,32,58,57,56,53,
+32,40,40,66,32,89,41,32,40,40,40,83,39,32,40,83,39,32,83,41,
+41,32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,66,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,66,39,32,83,41,41,32,40,40,
+66,32,40,40,83,39,32,40,83,39,32,66,41,41,32,66,39,41,41,32,
+40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,40,
+40,66,32,40,67,39,32,66,41,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,
+39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,90,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,66,41,41,41,41,41,41,32,40,40,66,32,40,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,
+67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,
+41,32,40,66,39,32,40,40,66,32,83,41,32,40,67,32,40,95,50,48,
+50,32,95,50,56,49,41,41,41,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,
+40,66,32,40,66,32,67,41,41,32,40,40,67,39,32,67,41,32,40,67,
+32,40,95,52,57,55,32,95,50,56,50,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,40,67,39,32,95,52,54,50,41,32,40,40,40,
+67,39,32,95,57,54,51,41,32,95,57,56,52,41,32,35,49,50,53,41,
+41,41,41,32,40,67,32,95,57,56,53,41,41,41,41,41,41,32,40,40,
+83,39,32,95,52,54,50,41,32,40,40,40,67,39,32,95,57,54,51,41,
+32,95,57,56,52,41,32,35,53,57,41,41,41,41,32,95,57,55,49,41,
+41,41,41,41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,40,83,39,32,67,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,90,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,41,32,
+90,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,
+41,32,40,40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,83,32,
+40,40,40,67,39,32,83,39,41,32,83,39,41,32,40,40,67,32,83,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,40,67,39,32,
+67,39,41,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,
+90,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,83,41,32,40,67,32,40,40,67,32,40,95,52,57,57,
+32,95,50,56,50,41,41,32,35,48,41,41,41,41,32,40,40,40,83,39,
+32,66,41,32,40,40,66,32,95,52,54,50,41,32,40,40,40,67,39,32,
+95,57,54,51,41,32,95,57,56,52,41,32,35,49,50,51,41,41,41,32,
+40,40,67,39,32,95,57,56,53,41,32,40,40,67,32,79,41,32,75,41,
+41,41,41,41,32,95,57,55,49,41,41,41,32,75,41,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,83,39,32,66,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,
+41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,67,39,32,
+67,39,41,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,40,
+90,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,
+41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,
+32,40,40,66,32,40,66,32,83,41,41,32,40,40,66,32,67,41,32,40,
+67,32,40,95,52,57,57,32,95,50,56,50,41,41,41,41,41,41,32,40,
+40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,95,52,54,50,41,
+32,40,40,40,67,39,32,95,57,54,51,41,32,95,57,56,52,41,32,35,
+49,50,51,41,41,41,41,32,40,40,66,32,40,67,39,32,95,57,56,53,
+41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,32,95,57,55,49,
+41,41,41,32,75,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,
+67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,41,32,35,48,
+41,41,41,41,32,40,40,67,32,40,83,39,32,66,41,41,32,40,40,40,
+83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,83,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,66,41,32,40,40,
+66,32,40,83,39,32,67,39,41,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,80,41,32,40,90,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,90,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,
+66,39,32,40,40,66,32,67,41,32,40,67,32,40,40,67,32,61,61,41,
+32,35,49,50,53,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,
+32,66,41,32,95,52,54,50,41,41,32,95,57,56,53,41,41,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,41,41,41,41,
+32,40,40,67,32,83,41,32,40,40,66,32,90,41,32,40,40,40,83,39,
+32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,80,41,32,40,90,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,67,41,32,40,67,32,40,40,67,32,61,61,41,32,35,49,50,
+53,41,41,41,41,32,40,40,40,67,39,32,95,52,54,50,41,32,40,40,
+67,32,95,57,54,52,41,32,34,108,97,121,111,117,116,32,101,114,114,111,
+114,32,125,34,41,41,32,95,52,54,49,41,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,41,41,41,41,32,40,40,40,83,
+39,32,66,41,32,40,40,66,32,83,41,32,40,40,66,32,40,67,32,83,
+41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,66,32,40,
+40,83,39,32,40,83,39,32,67,39,41,41,32,40,40,40,83,39,32,67,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,80,41,32,40,90,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,40,90,32,75,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,90,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,
+40,66,39,32,40,40,66,32,67,41,32,40,67,32,40,40,67,32,61,61,
+41,32,35,49,50,51,41,41,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,66,41,32,95,52,54,50,41,41,32,40,40,66,32,95,57,56,53,
+41,32,40,95,52,54,50,32,40,40,95,52,56,53,32,95,50,55,55,41,
+32,40,95,51,53,57,32,35,48,41,41,41,41,41,41,41,41,41,32,40,
+90,32,75,41,41,41,32,75,41,41,32,75,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,83,32,
+73,41,41,32,40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,40,
+67,39,32,83,39,41,32,83,39,41,32,40,40,40,67,39,32,66,41,32,
+40,85,32,95,52,54,49,41,41,32,40,90,32,75,41,41,41,41,32,40,
+40,66,32,90,41,32,40,40,40,67,39,32,66,41,32,40,40,67,32,67,
+39,41,32,40,40,66,32,40,95,52,54,50,32,40,40,95,57,54,51,32,
+40,40,95,57,55,48,32,35,48,41,32,35,48,41,41,32,35,49,50,53,
+41,41,41,32,40,40,67,32,95,57,56,53,41,32,95,52,54,49,41,41,
+41,41,32,40,90,32,75,41,41,41,41,41,32,40,40,40,110,111,77,97,
+116,99,104,32,34,115,114,99,47,77,105,99,114,111,72,115,47,76,101,120,
+46,104,115,34,41,32,35,50,49,57,41,32,35,49,41,41,41,41,41,32,
+40,40,67,39,32,66,41,32,95,52,54,50,41,41,41,41,41,41,41,32,
+40,40,65,32,58,57,56,54,32,40,40,95,51,57,57,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,95,52,55,57,32,95,51,48,56,41,
+41,32,40,40,67,32,40,95,52,56,49,32,95,51,48,56,41,41,32,40,
+40,95,52,56,53,32,95,51,48,56,41,32,40,95,51,53,57,32,35,49,
+54,41,41,41,41,41,32,40,40,66,32,40,95,51,55,50,32,95,50,55,
+56,41,41,32,95,49,52,54,41,41,41,32,40,95,51,53,57,32,35,48,
+41,41,41,32,40,40,65,32,58,57,56,55,32,34,118,53,46,49,92,49,
+48,38,34,41,32,40,40,65,32,58,57,56,56,32,34,48,46,56,34,41,
+32,40,40,65,32,58,57,56,57,32,40,40,40,95,51,50,32,95,49,52,
+53,50,41,32,95,49,52,50,54,41,32,40,40,66,32,40,40,95,51,50,
+32,95,49,52,53,50,41,32,40,95,49,52,50,57,32,34,77,72,83,68,
+73,82,34,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+40,67,32,40,40,40,83,39,32,83,41,32,40,40,40,67,39,32,67,41,
+32,40,40,66,32,40,40,83,39,32,67,39,41,32,40,40,95,52,51,50,
+32,95,49,51,51,41,32,34,45,45,118,101,114,115,105,111,110,34,41,41,
+41,32,40,40,66,32,40,67,32,40,40,40,67,39,32,83,39,41,32,40,
+95,51,57,54,32,40,40,95,50,54,51,32,40,40,67,32,40,95,50,48,
+51,32,95,49,51,51,41,41,32,40,40,79,32,35,52,53,41,32,75,41,
+41,41,32,40,95,52,48,57,32,35,49,41,41,41,41,32,95,57,52,50,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,80,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,95,57,57,
+48,41,32,40,95,56,57,56,32,40,40,40,95,56,56,57,32,34,99,111,
+109,109,97,110,100,45,108,105,110,101,34,41,32,35,48,41,32,35,48,41,
+41,41,41,32,40,75,32,40,75,32,40,95,50,52,32,34,85,115,97,103,
+101,58,32,109,104,115,32,91,45,118,93,32,91,45,108,93,32,91,45,114,
+93,32,91,45,99,93,32,91,45,105,80,65,84,72,93,32,91,45,111,70,
+73,76,69,93,32,91,77,111,100,117,108,101,78,97,109,101,93,34,41,41,
+41,41,41,41,41,32,40,40,95,50,54,49,32,95,49,52,55,50,41,32,
+40,40,95,52,54,51,32,34,77,105,99,114,111,72,115,44,32,118,101,114,
+115,105,111,110,32,34,41,32,40,40,95,52,54,51,32,95,57,56,56,41,
+32,40,40,95,52,54,51,32,34,44,32,99,111,109,98,105,110,97,116,111,
+114,32,102,105,108,101,32,118,101,114,115,105,111,110,32,34,41,32,95,57,
+56,55,41,41,41,41,41,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,66,32,
+40,83,32,40,40,40,83,39,32,95,54,48,48,41,32,40,40,66,32,95,
+52,49,49,41,32,40,95,51,57,54,32,40,40,67,32,40,95,50,48,50,
+32,95,49,51,51,41,41,32,34,45,118,34,41,41,41,41,32,40,40,95,
+52,51,50,32,95,49,51,51,41,32,34,45,114,34,41,41,41,41,32,40,
+40,66,32,40,66,32,40,95,52,54,50,32,40,40,79,32,35,52,54,41,
+32,75,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+95,52,54,50,41,32,40,40,67,32,95,52,54,51,41,32,34,47,108,105,
+98,34,41,41,41,32,40,40,66,32,95,52,55,50,41,32,40,95,51,57,
+53,32,40,40,95,52,49,54,32,95,49,51,49,41,32,34,45,105,34,41,
+41,41,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,52,50,
+56,41,41,32,40,40,40,67,39,32,95,52,54,51,41,32,40,40,66,32,
+95,52,55,50,41,32,40,95,51,57,53,32,40,40,95,52,49,54,32,95,
+49,51,49,41,32,34,45,111,34,41,41,41,41,32,40,40,79,32,34,111,
+117,116,46,99,111,109,98,34,41,32,75,41,41,41,41,41,32,40,40,95,
+52,51,50,32,95,49,51,51,41,32,34,45,108,34,41,41,41,32,40,40,
+95,52,51,50,32,95,49,51,51,41,32,34,45,99,34,41,41,41,41,41,
+32,40,95,52,50,52,32,40,40,67,32,40,95,50,48,51,32,95,49,51,
+51,41,41,32,34,45,45,34,41,41,41,41,32,40,95,52,55,49,32,40,
+40,79,32,35,52,54,41,32,75,41,41,41,41,41,41,32,40,40,65,32,
+58,57,57,48,32,40,40,40,67,39,32,83,41,32,40,40,66,32,40,40,
+83,39,32,83,39,41,32,95,54,48,54,41,41,32,40,40,66,32,40,40,
+83,39,32,40,83,39,32,40,95,51,50,32,95,49,52,53,50,41,41,41,
+32,95,54,49,53,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,40,95,51,50,32,95,49,52,53,50,41,32,95,49,52,55,57,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,83,39,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,66,32,
+40,40,83,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,
+40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,51,32,
+95,49,52,53,50,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,49,52,
+53,50,41,41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,50,56,
+50,41,41,32,95,54,48,49,41,32,35,48,41,41,41,41,32,40,40,66,
+32,40,95,50,54,49,32,95,49,52,55,50,41,41,32,40,40,66,32,40,
+95,52,54,51,32,34,116,111,112,32,108,101,118,101,108,32,100,101,102,110,
+115,58,32,34,41,41,32,40,95,49,53,57,48,32,95,50,56,51,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,83,
+39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,66,39,
+41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,95,51,
+51,32,95,49,52,53,50,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,
+49,52,53,50,41,41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,
+50,56,50,41,41,32,95,54,48,49,41,32,35,49,41,41,41,41,32,40,
+40,95,52,52,32,95,49,52,53,50,41,32,40,85,32,40,40,66,32,40,
+66,32,40,95,50,54,49,32,95,49,52,55,50,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,57,48,50,
+41,41,32,40,40,66,32,40,95,52,54,51,32,34,32,61,32,34,41,41,
+32,40,40,67,32,95,54,57,57,41,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,
+40,83,39,32,83,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,
+83,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,
+95,54,48,50,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,41,
+32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,
+66,39,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,
+40,95,51,51,32,95,49,52,53,50,41,41,32,40,40,40,67,39,32,95,
+49,52,56,49,41,32,95,52,49,49,41,32,40,40,95,51,52,32,95,49,
+52,53,50,41,32,95,49,51,52,49,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,49,52,53,
+50,41,32,95,49,52,55,57,41,41,41,41,41,32,40,40,66,32,40,40,
+83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,40,95,51,51,32,95,49,52,53,50,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,
+40,40,66,32,40,95,52,53,32,95,49,52,53,50,41,41,32,40,40,40,
+67,39,32,40,95,52,57,57,32,95,50,56,50,41,41,32,95,54,48,49,
+41,32,35,48,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,50,
+54,49,32,95,49,52,55,50,41,41,41,32,40,40,66,32,40,66,32,40,
+95,52,54,51,32,34,102,105,110,97,108,32,112,97,115,115,32,32,32,32,
+32,32,32,32,32,32,32,32,34,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,95,52,54,51,41,41,32,40,40,66,32,40,66,32,40,95,49,
+54,49,48,32,35,54,41,41,41,32,40,40,66,32,40,66,32,40,95,49,
+53,57,48,32,95,50,56,51,41,41,41,32,40,67,32,40,95,52,56,48,
+32,95,50,55,55,41,41,41,41,41,32,34,109,115,34,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,83,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,83,32,40,40,95,52,50,48,32,95,49,51,49,
+41,32,34,46,99,111,109,98,34,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,83,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,83,32,40,40,95,52,50,48,32,95,49,51,49,41,32,
+34,46,99,34,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,40,95,49,52,
+56,52,32,34,109,104,115,99,46,99,34,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,85,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,
+40,83,39,32,40,95,51,51,32,95,49,52,53,50,41,41,41,32,40,40,
+66,32,40,40,67,39,32,95,50,54,49,41,32,95,49,52,55,49,41,41,
+32,95,57,57,52,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,40,67,39,32,40,95,51,51,32,95,49,52,53,50,
+41,41,32,95,49,52,53,57,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,
+95,49,52,55,57,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,
+40,95,49,52,50,57,32,34,77,72,83,67,67,34,41,41,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,83,
+39,32,40,67,39,32,66,41,41,41,32,40,40,40,83,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,83,39,32,40,95,51,51,32,95,49,52,
+53,50,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,49,52,53,50,41,
+41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,50,56,50,41,41,
+32,95,54,48,49,41,32,35,48,41,41,41,41,32,40,40,66,32,40,95,
+50,54,49,32,95,49,52,55,50,41,41,32,40,40,66,32,40,95,52,54,
+51,32,34,69,120,101,99,117,116,101,58,32,34,41,41,32,40,95,49,53,
+57,48,32,40,95,51,57,49,32,95,49,52,57,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,40,95,51,
+51,32,95,49,52,53,50,41,41,32,95,49,52,57,49,41,41,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,
+32,95,49,52,53,50,41,41,32,95,49,52,50,53,41,41,41,32,40,40,
+66,32,40,66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,95,49,
+52,55,57,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+40,40,66,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,
+49,52,53,50,41,41,32,40,40,40,67,39,32,40,95,52,57,57,32,95,
+50,56,50,41,41,32,95,54,48,49,41,32,35,48,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,52,55,50,41,41,
+41,32,40,40,66,32,40,66,32,40,95,52,54,51,32,34,67,32,99,111,
+109,112,105,108,97,116,105,111,110,32,32,32,32,32,32,32,32,32,34,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,95,52,54,51,41,41,32,
+40,40,66,32,40,66,32,40,95,49,54,49,48,32,35,54,41,41,41,32,
+40,40,66,32,40,66,32,40,95,49,53,57,48,32,95,50,56,51,41,41,
+41,32,40,67,32,40,95,52,56,48,32,95,50,55,55,41,41,41,41,41,
+32,34,109,115,34,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,
+41,32,40,40,95,52,54,48,32,95,49,51,49,41,32,34,36,73,78,34,
+41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,
+95,52,54,48,32,95,49,51,49,41,32,34,36,79,85,84,34,41,41,41,
+32,40,40,66,32,95,52,55,49,41,32,40,40,66,32,40,95,52,54,51,
+32,34,99,99,32,45,119,32,45,87,97,108,108,32,45,79,51,32,34,41,
+41,32,40,40,67,32,95,52,54,51,41,32,34,47,115,114,99,47,114,117,
+110,116,105,109,101,47,101,118,97,108,46,99,32,36,73,78,32,45,108,109,
+32,45,111,32,36,79,85,84,34,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,32,40,40,66,32,40,40,67,39,32,95,50,54,49,41,32,95,
+49,52,55,52,41,41,32,95,57,57,52,41,41,41,41,32,40,67,32,95,
+49,52,55,52,41,41,41,32,95,54,48,52,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,95,52,54,51,32,
+95,57,56,55,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,
+39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,95,49,53,57,
+48,32,95,50,56,51,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,95,52,54,51,32,40,40,79,32,35,49,48,41,32,75,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+66,32,40,40,67,39,32,67,41,32,40,40,66,32,40,40,83,39,32,95,
+51,57,55,41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,
+40,66,32,40,67,32,66,41,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,40,66,
+32,95,50,54,51,41,32,40,40,66,32,95,52,54,51,41,32,40,40,66,
+32,40,95,52,54,51,32,34,40,40,65,32,58,34,41,41,32,40,40,40,
+67,39,32,95,52,54,51,41,32,40,95,49,53,57,48,32,95,50,56,51,
+41,41,32,40,40,79,32,35,51,50,41,32,75,41,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,95,
+50,54,51,41,41,32,40,40,66,32,40,66,32,95,54,57,57,41,41,32,
+40,40,66,32,89,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,66,41,32,80,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,
+32,40,66,32,95,54,55,54,41,41,32,73,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,41,41,41,32,40,40,66,32,40,95,50,54,51,
+32,40,95,52,54,51,32,34,41,32,34,41,41,41,32,40,40,67,32,95,
+50,54,51,41,32,40,95,52,54,51,32,40,40,79,32,35,52,49,41,32,
+75,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+95,54,57,57,41,41,32,85,41,41,41,41,32,40,40,67,32,95,52,49,
+50,41,32,40,40,95,49,56,52,32,95,49,57,56,41,32,40,40,95,52,
+56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,41,41,41,
+41,41,41,32,75,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+95,49,49,48,49,41,41,32,40,67,32,80,41,41,41,41,41,41,41,32,
+40,40,66,32,40,40,83,39,32,95,50,54,49,41,32,40,40,66,32,95,
+52,55,49,41,32,40,40,66,32,40,95,50,54,49,32,95,50,52,41,41,
+32,40,40,66,32,40,95,52,54,51,32,34,109,97,105,110,58,32,102,105,
+110,100,73,100,101,110,116,58,32,34,41,41,32,95,57,48,50,41,41,41,
+41,41,32,40,67,32,95,57,50,56,41,41,41,41,32,95,57,50,54,41,
+41,32,40,40,66,32,95,57,50,52,41,32,40,40,66,32,40,95,51,57,
+52,32,40,85,32,40,40,67,32,66,41,32,40,40,66,32,90,41,32,40,
+40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,66,32,40,67,32,
+80,41,41,32,40,40,66,32,40,95,50,54,49,32,95,54,55,53,41,41,
+32,40,40,66,32,40,95,50,54,49,32,95,56,57,55,41,41,32,40,40,
+66,32,40,95,52,54,51,32,40,40,79,32,35,57,53,41,32,75,41,41,
+41,32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,41,41,41,32,
+75,41,41,41,41,41,41,32,40,40,67,32,95,52,49,50,41,32,40,40,
+95,49,56,52,32,95,49,57,56,41,32,35,48,41,41,41,41,41,41,41,
+32,40,40,67,32,95,57,48,53,41,32,40,95,56,57,55,32,34,109,97,
+105,110,34,41,41,41,41,41,41,41,32,95,57,57,49,41,41,32,40,40,
+65,32,58,57,57,49,32,40,40,40,83,39,32,40,67,39,32,40,95,51,
+50,32,95,49,52,53,50,41,41,41,32,40,40,40,67,39,32,67,41,32,
+95,54,49,51,41,32,95,54,49,49,41,41,32,40,40,66,32,85,41,32,
+40,90,32,40,40,66,32,40,40,83,39,32,40,95,51,50,32,95,49,52,
+53,50,41,41,32,40,40,40,67,39,32,95,49,52,56,49,41,32,95,50,
+49,41,32,40,40,95,51,52,32,95,49,52,53,50,41,32,95,49,51,52,
+49,41,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,49,52,53,50,
+41,41,32,40,40,40,67,39,32,95,49,52,54,52,41,32,95,54,48,52,
+41,32,95,49,52,52,55,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,95,51,51,32,95,49,52,53,50,41,41,41,32,40,67,32,95,49,
+52,53,52,41,41,32,95,49,52,53,57,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,57,57,50,32,40,40,66,32,89,41,32,40,40,66,32,
+40,66,32,40,83,32,40,85,32,95,52,54,49,41,41,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,40,83,39,
+32,95,52,54,50,41,32,40,85,32,75,41,41,41,32,40,40,67,32,66,
+41,32,40,85,32,65,41,41,41,41,41,32,95,52,50,50,41,41,41,41,
+41,41,32,40,40,65,32,58,57,57,51,32,40,95,51,57,52,32,40,40,
+40,67,39,32,95,52,54,51,41,32,40,40,66,32,40,95,49,53,57,48,
+32,95,50,56,51,41,41,32,95,49,51,55,41,41,32,40,40,79,32,35,
+52,52,41,32,75,41,41,41,41,32,40,40,65,32,58,57,57,52,32,40,
+40,66,32,40,95,50,54,49,32,95,49,54,48,55,41,41,32,40,40,66,
+32,40,95,52,54,51,32,40,40,79,32,34,115,116,97,116,105,99,32,117,
+110,115,105,103,110,101,100,32,99,104,97,114,32,100,97,116,97,91,93,32,
+61,32,123,34,41,32,75,41,41,41,32,40,40,40,83,39,32,95,52,54,
+51,41,32,40,40,66,32,40,95,51,57,53,32,95,57,57,51,41,41,32,
+40,95,57,57,50,32,35,50,48,41,41,41,32,40,40,66,32,40,79,32,
+34,125,59,34,41,41,32,40,40,66,32,40,79,32,34,117,110,115,105,103,
+110,101,100,32,99,104,97,114,32,42,99,111,109,98,101,120,112,114,32,61,
+32,100,97,116,97,59,34,41,41,32,40,40,40,67,39,32,79,41,32,40,
+40,66,32,40,95,52,54,51,32,34,105,110,116,32,99,111,109,98,101,120,
+112,114,108,101,110,32,61,32,34,41,41,32,40,40,40,67,39,32,95,52,
+54,51,41,32,40,40,66,32,40,95,49,53,57,48,32,95,50,56,51,41,
+41,32,95,52,49,49,41,41,32,40,40,79,32,35,53,57,41,32,75,41,
+41,41,41,32,75,41,41,41,41,41,41,41,32,40,40,65,32,58,57,57,
+53,32,95,49,53,48,53,41,32,40,40,65,32,58,57,57,54,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,95,57,57,55,41,32,95,50,52,41,41,32,73,41,
+41,32,40,40,65,32,58,57,57,55,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,83,39,32,83,41,41,32,40,67,32,95,49,53,49,
+51,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,
+95,49,55,52,41,41,41,41,32,95,49,48,56,55,41,41,41,32,40,40,
+67,32,40,40,67,32,83,41,32,40,40,66,32,40,67,32,66,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,67,32,40,40,
+67,32,67,39,41,32,95,49,55,53,41,41,41,32,40,90,32,75,41,41,
+41,41,41,41,32,40,40,95,50,54,49,32,95,49,55,52,41,32,34,65,
+109,98,105,103,117,111,117,115,58,34,41,41,41,41,32,95,57,55,50,41,
+41,32,40,40,65,32,58,57,57,56,32,40,40,40,95,51,50,32,95,49,
+53,48,50,41,32,95,49,53,50,48,41,32,40,40,66,32,40,95,49,51,
+32,95,49,53,48,49,41,41,32,40,40,66,32,95,57,56,52,41,32,40,
+40,67,32,79,41,32,75,41,41,41,41,41,32,40,40,65,32,58,57,57,
+57,32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,95,49,48,48,
+49,41,32,95,49,53,49,55,41,41,32,40,40,65,32,58,49,48,48,48,
+32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,95,49,48,54,55,
+41,32,95,49,53,49,55,41,41,32,40,40,65,32,58,49,48,48,49,32,
+40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,52,
+32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,95,55,50,51,41,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,51,51,32,34,109,111,100,117,108,101,34,41,41,
+32,95,49,48,48,55,41,41,41,32,40,40,40,95,49,54,32,95,49,53,
+48,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,
+49,48,49,51,32,35,52,48,41,41,32,40,40,95,49,53,50,53,32,95,
+49,48,51,50,41,32,40,95,49,48,49,51,32,35,52,52,41,41,41,41,
+32,40,95,49,48,49,51,32,35,52,49,41,41,41,41,32,40,40,40,95,
+49,53,32,95,49,53,48,49,41,32,40,95,49,48,51,51,32,34,119,104,
+101,114,101,34,41,41,32,40,95,49,48,51,52,32,95,49,48,51,53,41,
+41,41,41,32,40,40,65,32,58,49,48,48,50,32,40,40,40,95,51,50,
+32,95,49,53,48,50,41,32,95,57,57,53,41,32,40,40,66,32,40,95,
+49,53,49,54,32,34,81,73,100,101,110,116,34,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,80,41,32,40,40,66,32,40,66,32,40,66,32,40,83,
+32,40,40,40,67,39,32,95,49,48,56,53,41,32,95,52,50,56,41,32,
+95,52,55,54,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,95,52,55,55,41,41,41,41,32,95,49,48,56,54,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,40,65,32,58,
+49,48,48,51,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,
+57,57,53,41,32,40,40,66,32,40,95,49,53,49,54,32,34,85,73,100,
+101,110,116,34,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,80,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,
+40,67,32,67,39,41,41,41,32,40,40,66,32,40,66,32,40,83,32,40,
+40,40,67,39,32,95,49,51,57,41,32,95,52,50,56,41,32,95,52,55,
+54,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,52,55,55,
+41,41,41,32,95,56,57,57,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,41,41,41,
+41,32,40,40,65,32,58,49,48,48,52,32,40,40,95,49,53,48,56,32,
+95,49,48,48,51,41,32,95,49,48,48,54,41,41,32,40,40,65,32,58,
+49,48,48,53,32,40,40,95,49,53,48,56,32,95,49,48,48,52,41,32,
+40,95,49,48,50,57,32,95,49,48,50,48,41,41,41,32,40,40,65,32,
+58,49,48,48,54,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,
+95,57,57,53,41,32,40,40,66,32,40,40,95,51,50,32,95,49,53,48,
+50,41,32,95,57,57,56,41,41,32,40,40,66,32,40,66,32,40,40,40,
+83,39,32,95,49,53,48,56,41,32,40,40,40,83,39,32,95,49,53,48,
+56,41,32,40,40,40,67,39,32,40,95,50,55,54,32,95,49,53,48,48,
+41,41,32,40,40,67,32,95,50,54,51,41,32,40,95,51,57,53,32,40,
+95,50,54,53,32,35,52,52,41,41,41,41,32,40,40,40,95,49,54,32,
+95,49,53,48,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,49,51,32,35,52,48,41,41,32,40,95,49,53,49,49,
+32,40,95,49,48,49,51,32,35,52,52,41,41,41,41,32,40,95,49,48,
+49,51,32,35,52,49,41,41,41,41,32,40,40,40,67,39,32,40,95,50,
+55,51,32,95,49,53,48,48,41,41,32,40,85,32,34,40,41,34,41,41,
+32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,49,
+51,32,35,52,48,41,41,32,40,95,49,48,49,51,32,35,52,49,41,41,
+41,41,41,32,40,40,40,67,39,32,40,95,50,55,51,32,95,49,53,48,
+48,41,41,32,40,85,32,34,91,93,34,41,41,32,40,40,40,95,49,53,
+32,95,49,53,48,49,41,32,40,95,49,48,49,51,32,35,57,49,41,41,
+32,40,95,49,48,49,51,32,35,57,51,41,41,41,41,41,41,32,95,56,
+57,57,41,41,41,41,32,40,40,65,32,58,49,48,48,55,32,40,40,40,
+95,51,50,32,95,49,53,48,50,41,32,95,57,57,53,41,32,40,40,66,
+32,40,95,49,53,49,54,32,34,85,81,73,100,101,110,116,34,41,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,80,41,32,40,40,66,32,40,66,32,40,
+66,32,40,83,32,40,40,40,67,39,32,95,49,51,57,41,32,95,52,50,
+56,41,32,95,52,55,54,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,95,52,55,55,41,41,41,41,32,95,49,48,56,54,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,
+54,41,41,41,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,40,
+65,32,58,49,48,48,56,32,40,40,95,49,53,48,56,32,95,49,48,48,
+55,41,32,95,49,48,48,54,41,41,32,40,40,65,32,58,49,48,48,57,
+32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,57,57,53,41,
+32,40,40,66,32,40,95,49,53,49,54,32,34,76,73,100,101,110,116,34,
+41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,80,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,67,32,67,
+39,41,41,41,32,40,40,66,32,40,66,32,40,83,32,40,40,67,32,40,
+40,40,83,39,32,95,49,50,49,41,32,40,40,66,32,95,57,49,51,41,
+32,95,52,50,56,41,41,32,40,40,66,32,95,49,50,50,41,32,40,40,
+67,32,40,95,52,51,50,32,95,49,51,51,41,41,32,95,49,48,49,50,
+41,41,41,41,32,95,52,55,54,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,95,52,55,55,41,41,41,32,95,56,57,57,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,
+95,52,55,54,41,41,41,41,41,32,40,40,65,32,58,49,48,49,48,32,
+40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,57,57,53,41,32,
+40,40,66,32,40,95,49,53,49,54,32,34,76,81,73,100,101,110,116,34,
+41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,80,41,32,40,40,66,32,40,
+66,32,40,66,32,40,83,32,40,40,67,32,40,40,40,83,39,32,95,49,
+50,49,41,32,40,40,66,32,95,57,49,51,41,32,95,52,50,56,41,41,
+32,40,40,66,32,95,49,50,50,41,32,40,40,67,32,40,95,52,51,50,
+32,95,49,51,51,41,41,32,95,49,48,49,50,41,41,41,41,32,95,52,
+55,54,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,95,52,55,55,41,41,41,41,32,95,49,48,56,54,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,
+40,75,32,95,52,55,54,41,41,41,41,41,32,40,40,65,32,58,49,48,
+49,49,32,40,40,95,49,53,48,56,32,95,49,48,48,52,41,32,40,95,
+49,48,50,57,32,95,49,48,49,55,41,41,41,32,40,40,65,32,58,49,
+48,49,50,32,40,40,79,32,34,99,97,115,101,34,41,32,40,40,79,32,
+34,99,108,97,115,115,34,41,32,40,40,79,32,34,100,97,116,97,34,41,
+32,40,40,79,32,34,100,101,102,97,117,108,116,34,41,32,40,40,79,32,
+34,100,111,34,41,32,40,40,79,32,34,101,108,115,101,34,41,32,40,40,
+79,32,34,102,111,114,97,108,108,34,41,32,40,40,79,32,34,102,111,114,
+101,105,103,110,34,41,32,40,40,79,32,34,105,102,34,41,32,40,40,79,
+32,34,105,109,112,111,114,116,34,41,32,40,40,79,32,34,105,110,34,41,
+32,40,40,79,32,34,105,110,102,105,120,34,41,32,40,40,79,32,34,105,
+110,102,105,120,108,34,41,32,40,40,79,32,34,105,110,102,105,120,114,34,
+41,32,40,40,79,32,34,105,110,115,116,97,110,99,101,34,41,32,40,40,
+79,32,34,108,101,116,34,41,32,40,40,79,32,34,109,111,100,117,108,101,
+34,41,32,40,40,79,32,34,110,101,119,116,121,112,101,34,41,32,40,40,
+79,32,34,111,102,34,41,32,40,40,79,32,34,112,114,105,109,105,116,105,
+118,101,34,41,32,40,40,79,32,34,116,104,101,110,34,41,32,40,40,79,
+32,34,116,121,112,101,34,41,32,40,40,79,32,34,119,104,101,114,101,34,
+41,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,32,40,40,65,32,58,49,48,49,51,32,40,40,
+66,32,40,40,95,50,55,51,32,95,49,53,48,48,41,32,95,49,51,52,
+49,41,41,32,40,40,40,83,39,32,95,49,53,49,53,41,32,40,40,67,
+32,79,41,32,75,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,
+32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,
+32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,90,32,
+40,95,50,48,50,32,95,49,51,49,41,41,41,41,32,40,75,32,40,75,
+32,95,49,50,52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,
+32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,40,65,32,58,49,
+48,49,52,32,40,40,66,32,40,40,95,50,55,51,32,95,49,53,48,48,
+41,32,95,49,51,52,49,41,41,32,40,40,83,32,95,49,53,49,53,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,80,41,32,40,90,32,40,40,40,67,
+39,32,67,41,32,40,40,66,32,40,67,32,67,39,41,41,32,40,67,32,
+40,95,50,48,50,32,95,49,51,51,41,41,41,41,32,40,75,32,40,75,
+32,95,49,50,52,41,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,
+32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,
+32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,95,49,50,52,41,
+41,41,41,41,32,40,40,65,32,58,49,48,49,53,32,40,40,95,49,53,
+48,56,32,95,49,48,49,54,41,32,40,40,40,95,49,54,32,95,49,53,
+48,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,
+49,48,49,51,32,35,57,54,41,41,32,95,49,48,48,50,41,41,32,40,
+95,49,48,49,51,32,35,57,54,41,41,41,41,32,40,40,65,32,58,49,
+48,49,54,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,57,
+57,53,41,32,40,40,66,32,40,95,49,53,49,54,32,34,81,83,121,109,
+79,112,101,114,34,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,80,41,32,
+40,40,66,32,40,66,32,40,66,32,40,83,32,40,40,67,32,40,40,40,
+83,39,32,95,49,50,49,41,32,40,40,66,32,95,49,50,50,41,32,40,
+40,66,32,95,49,48,56,53,41,32,95,52,50,56,41,41,41,32,40,40,
+66,32,95,49,50,50,41,32,40,40,67,32,40,95,52,51,50,32,95,49,
+51,51,41,41,32,95,49,48,50,53,41,41,41,41,32,95,52,55,54,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,52,
+55,55,41,41,41,41,32,95,49,48,56,54,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,
+95,52,55,54,41,41,41,41,41,32,40,40,65,32,58,49,48,49,55,32,
+40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,57,57,53,41,32,
+40,40,66,32,40,95,49,53,49,54,32,34,83,121,109,79,112,101,114,34,
+41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,80,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,67,32,67,
+39,41,41,41,32,40,40,66,32,40,66,32,40,83,32,40,40,67,32,40,
+40,40,83,39,32,95,49,50,49,41,32,40,40,66,32,95,49,50,50,41,
+32,40,40,66,32,95,49,48,56,53,41,32,95,52,50,56,41,41,41,32,
+40,40,66,32,95,49,50,50,41,32,40,40,67,32,40,95,52,51,50,32,
+95,49,51,51,41,41,32,95,49,48,50,53,41,41,41,41,32,95,52,55,
+54,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,52,55,55,
+41,41,41,32,95,56,57,57,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,41,41,41,
+41,32,40,40,65,32,58,49,48,49,56,32,40,40,40,95,51,50,32,95,
+49,53,48,50,41,32,95,49,48,49,54,41,32,40,40,40,83,39,32,40,
+95,51,51,32,95,49,53,48,50,41,41,32,40,40,66,32,40,95,49,48,
+32,95,49,53,48,52,41,41,32,95,49,48,49,57,41,41,32,40,95,49,
+51,32,95,49,53,48,49,41,41,41,41,32,40,40,65,32,58,49,48,49,
+57,32,40,40,95,50,54,51,32,40,40,67,32,40,95,50,48,50,32,95,
+49,51,49,41,41,32,35,53,56,41,41,32,40,40,95,50,54,51,32,95,
+52,50,56,41,32,95,57,48,48,41,41,41,32,40,40,65,32,58,49,48,
+50,48,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,49,48,
+49,55,41,32,40,40,40,83,39,32,40,95,51,51,32,95,49,53,48,50,
+41,41,32,40,40,66,32,40,95,49,48,32,95,49,53,48,52,41,41,32,
+95,49,48,49,57,41,41,32,40,95,49,51,32,95,49,53,48,49,41,41,
+41,41,32,40,40,65,32,58,49,48,50,49,32,40,40,40,95,51,50,32,
+95,49,53,48,50,41,32,95,49,48,49,54,41,32,40,40,40,83,39,32,
+40,95,51,51,32,95,49,53,48,50,41,41,32,40,40,66,32,40,95,49,
+48,32,95,49,53,48,52,41,41,32,40,40,66,32,95,49,50,50,41,32,
+95,49,48,49,57,41,41,41,32,40,95,49,51,32,95,49,53,48,49,41,
+41,41,41,32,40,40,65,32,58,49,48,50,50,32,40,40,95,49,53,48,
+56,32,95,49,48,50,49,41,32,95,49,48,50,51,41,41,32,40,40,65,
+32,58,49,48,50,51,32,40,40,40,95,51,50,32,95,49,53,48,50,41,
+32,95,57,57,53,41,32,40,40,66,32,40,95,49,53,49,54,32,34,45,
+62,34,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,80,41,32,40,40,66,
+32,40,66,32,40,66,32,40,83,32,40,40,67,32,40,40,67,32,101,113,
+117,97,108,41,32,34,45,62,34,41,41,32,95,52,55,54,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,52,55,55,41,
+41,41,41,32,95,49,48,56,54,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,
+54,41,41,41,41,41,32,40,40,65,32,58,49,48,50,52,32,40,40,40,
+95,51,50,32,95,49,53,48,50,41,32,95,49,48,49,55,41,32,40,40,
+40,83,39,32,40,95,51,51,32,95,49,53,48,50,41,41,32,40,40,66,
+32,40,95,49,48,32,95,49,53,48,52,41,41,32,40,40,66,32,95,49,
+50,50,41,32,95,49,48,49,57,41,41,41,32,40,95,49,51,32,95,49,
+53,48,49,41,41,41,41,32,40,40,65,32,58,49,48,50,53,32,40,40,
+79,32,40,40,79,32,35,54,49,41,32,75,41,41,32,40,40,79,32,40,
+40,79,32,35,49,50,52,41,32,75,41,41,32,40,40,79,32,34,58,58,
+34,41,32,40,40,79,32,34,60,45,34,41,32,40,40,79,32,40,40,79,
+32,35,54,52,41,32,75,41,41,32,40,40,79,32,34,46,46,34,41,32,
+40,40,79,32,34,45,62,34,41,32,75,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,48,50,54,32,40,40,95,49,53,48,56,32,95,49,
+48,48,56,41,32,40,95,49,48,50,57,32,95,49,48,49,56,41,41,41,
+32,40,40,65,32,58,49,48,50,55,32,40,40,95,49,53,48,56,32,95,
+49,48,49,48,41,32,40,95,49,48,50,57,32,95,49,48,50,50,41,41,
+41,32,40,40,65,32,58,49,48,50,56,32,40,40,95,49,53,48,56,32,
+95,49,48,48,57,41,32,40,95,49,48,50,57,32,95,49,48,50,52,41,
+41,41,32,40,40,65,32,58,49,48,50,57,32,40,40,40,67,39,32,40,
+95,49,54,32,95,49,53,48,49,41,41,32,40,40,95,49,53,32,95,49,
+53,48,49,41,32,40,95,49,48,49,51,32,35,52,48,41,41,41,32,40,
+95,49,48,49,51,32,35,52,49,41,41,41,32,40,40,65,32,58,49,48,
+51,48,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,57,57,
+53,41,32,40,40,66,32,40,95,49,53,49,54,32,34,108,105,116,101,114,
+97,108,34,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,66,32,40,80,32,40,75,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,40,66,32,40,
+67,32,66,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,
+52,55,55,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,40,67,39,32,95,55,52,55,41,41,41,32,95,56,56,
+57,41,41,32,95,55,56,48,41,41,41,41,41,32,40,40,66,32,40,67,
+32,66,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,52,
+55,55,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+40,67,39,32,40,67,39,32,95,55,52,55,41,41,41,32,95,56,56,57,
+41,41,32,95,55,55,57,41,41,41,41,41,32,40,40,66,32,40,67,32,
+66,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,52,55,
+55,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+67,39,32,40,67,39,32,95,55,52,55,41,41,41,32,95,56,56,57,41,
+41,32,95,55,55,54,41,41,41,41,41,32,40,40,66,32,40,67,32,66,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,52,55,55,
+41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,
+39,32,40,67,39,32,95,55,52,55,41,41,41,32,95,56,56,57,41,41,
+32,95,55,55,56,41,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,
+41,41,41,41,32,40,40,65,32,58,49,48,51,49,32,40,40,95,49,53,
+49,54,32,34,115,116,114,105,110,103,34,41,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,80,32,40,75,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,95,52,55,55,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,
+40,75,32,95,52,55,54,41,41,41,41,32,40,40,65,32,58,49,48,51,
+50,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,
+95,49,53,48,56,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,
+32,95,55,50,52,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,51,51,32,34,109,111,100,117,108,101,34,41,41,32,95,
+49,48,48,56,41,41,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,95,55,50,53,41,32,40,40,40,95,49,54,32,95,49,53,48,
+49,41,32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,
+95,49,54,32,95,49,53,48,49,41,32,95,49,48,50,54,41,32,40,95,
+49,48,49,51,32,35,52,48,41,41,41,32,40,95,49,48,49,52,32,34,
+46,46,34,41,41,41,32,40,95,49,48,49,51,32,35,52,49,41,41,41,
+41,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,
+50,54,41,32,95,49,48,50,54,41,41,41,32,40,40,40,95,50,55,54,
+32,95,49,53,48,48,41,32,95,55,50,55,41,32,95,49,48,50,55,41,
+41,41,32,40,40,65,32,58,49,48,51,51,32,40,40,66,32,40,40,95,
+50,55,51,32,95,49,53,48,48,41,32,95,49,51,52,49,41,41,32,40,
+40,83,32,95,49,53,49,53,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,80,
+41,32,40,90,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,67,
+32,67,39,41,41,32,40,95,50,48,50,32,95,49,51,51,41,41,41,32,
+40,75,32,40,75,32,95,49,50,52,41,41,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,
+32,40,75,32,40,75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,
+75,32,95,49,50,52,41,41,41,41,32,40,75,32,40,75,32,95,49,50,
+52,41,41,41,41,32,40,75,32,95,49,50,52,41,41,41,32,40,75,32,
+95,49,50,52,41,41,41,41,41,32,40,40,65,32,58,49,48,51,52,32,
+40,40,66,32,40,40,95,51,51,32,95,49,53,48,50,41,32,40,95,49,
+48,49,51,32,35,49,50,51,41,41,41,32,40,40,40,67,39,32,40,95,
+51,50,32,95,49,53,48,50,41,41,32,40,40,67,32,95,49,53,50,52,
+41,32,40,95,49,48,49,51,32,35,53,57,41,41,41,32,40,40,66,32,
+40,40,95,51,51,32,95,49,53,48,50,41,32,40,95,49,53,49,50,32,
+40,95,49,48,49,51,32,35,53,57,41,41,41,41,32,40,40,66,32,40,
+40,95,51,51,32,95,49,53,48,50,41,32,40,95,49,48,49,51,32,35,
+49,50,53,41,41,41,32,40,95,49,51,32,95,49,53,48,49,41,41,41,
+41,41,41,32,40,40,65,32,58,49,48,51,53,32,40,40,95,49,53,48,
+56,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,
+95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,
+56,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,
+95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,40,95,49,52,
+32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,95,55,50,56,41,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,51,51,32,34,100,97,116,97,34,41,41,32,95,
+49,48,52,50,41,41,41,32,40,40,95,49,53,48,56,32,40,40,40,95,
+49,53,32,95,49,53,48,49,41,32,40,95,49,48,49,52,32,40,40,79,
+32,35,54,49,41,32,75,41,41,41,32,40,40,95,49,53,50,51,32,95,
+49,48,51,55,41,32,40,95,49,48,49,52,32,40,40,79,32,35,49,50,
+52,41,32,75,41,41,41,41,41,32,40,40,95,49,51,32,95,49,53,48,
+49,41,32,95,52,54,49,41,41,41,41,32,40,40,40,95,49,52,32,95,
+49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,
+32,95,55,50,57,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,51,51,32,34,110,101,119,116,121,112,101,34,41,41,32,
+95,49,48,52,50,41,41,41,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,49,52,32,40,40,79,32,35,54,49,41,32,75,
+41,41,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,
+40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,95,55,57,53,32,
+95,52,54,49,41,32,95,52,54,49,41,41,32,95,49,48,48,53,41,41,
+32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,49,48,51,56,
+41,32,40,40,40,83,39,32,40,95,51,51,32,95,49,53,48,50,41,41,
+32,40,40,66,32,40,95,50,54,49,32,40,95,49,48,32,95,49,53,48,
+52,41,41,41,32,40,40,40,67,39,32,40,95,50,48,50,32,95,50,56,
+49,41,41,32,40,40,95,49,55,55,32,95,52,49,49,41,32,95,52,49,
+49,41,41,32,35,49,41,41,41,32,40,95,49,51,32,95,49,53,48,49,
+41,41,41,41,41,41,41,41,32,40,40,40,95,49,52,32,95,49,53,48,
+49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,
+51,48,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,
+49,48,51,51,32,34,116,121,112,101,34,41,41,32,95,49,48,52,50,41,
+41,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,
+48,49,52,32,40,40,79,32,35,54,49,41,32,75,41,41,41,32,95,49,
+48,52,55,41,41,41,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,40,95,50,54,56,32,95,55,51,49,41,41,32,95,49,48,54,
+48,41,41,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,
+40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,51,50,41,32,
+40,40,40,95,49,54,32,95,49,53,48,49,41,32,95,49,48,50,56,41,
+32,40,95,49,48,49,52,32,34,58,58,34,41,41,41,41,32,95,49,48,
+52,55,41,41,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,
+32,95,55,51,51,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,51,51,32,34,105,109,112,111,114,116,34,41,41,32,95,
+49,48,52,51,41,41,41,41,32,40,40,40,95,49,52,32,95,49,53,48,
+49,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,
+95,50,55,54,32,95,49,53,48,48,41,32,95,55,51,52,41,32,40,40,
+40,95,49,53,32,95,49,53,48,49,41,32,40,40,40,95,49,53,32,95,
+49,53,48,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,
+40,95,49,48,51,51,32,34,102,111,114,101,105,103,110,34,41,41,32,40,
+95,49,48,51,51,32,34,105,109,112,111,114,116,34,41,41,41,32,40,95,
+49,48,51,51,32,34,99,99,97,108,108,34,41,41,41,32,95,49,48,51,
+49,41,41,41,32,95,49,48,48,57,41,41,32,40,40,40,95,49,53,32,
+95,49,53,48,49,41,32,40,95,49,48,49,52,32,34,58,58,34,41,41,
+32,95,49,48,52,55,41,41,41,41,32,40,40,40,95,49,52,32,95,49,
+53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,
+95,55,51,53,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,
+40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,80,41,32,40,40,
+95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,40,95,50,55,
+51,32,95,49,53,48,48,41,32,95,56,49,56,41,32,40,95,49,48,51,
+51,32,34,105,110,102,105,120,108,34,41,41,41,32,40,40,40,95,50,55,
+51,32,95,49,53,48,48,41,32,95,56,49,57,41,32,40,95,49,48,51,
+51,32,34,105,110,102,105,120,114,34,41,41,41,41,32,40,40,40,95,50,
+55,51,32,95,49,53,48,48,41,32,95,56,50,48,41,32,40,95,49,48,
+51,51,32,34,105,110,102,105,120,34,41,41,41,41,41,32,40,40,95,49,
+53,49,54,32,34,100,105,103,105,116,34,41,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,80,32,40,75,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,40,66,32,
+40,40,83,32,40,40,67,32,40,40,40,83,39,32,95,49,50,49,41,32,
+40,40,95,52,57,56,32,95,50,56,50,41,32,40,40,95,52,56,53,32,
+95,50,55,55,41,32,40,95,51,53,57,32,35,45,50,41,41,41,41,32,
+40,40,67,32,40,95,52,57,56,32,95,50,56,50,41,41,32,35,57,41,
+41,41,32,95,52,55,54,41,41,32,95,52,55,55,41,41,32,95,51,54,
+48,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,41,41,41,32,40,40,95,49,
+53,50,51,32,95,49,48,53,48,41,32,40,95,49,48,49,51,32,35,52,
+52,41,41,41,41,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,
+32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,
+52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,
+48,48,41,32,95,55,51,54,41,32,40,40,40,95,49,53,32,95,49,53,
+48,49,41,32,40,95,49,48,51,51,32,34,99,108,97,115,115,34,41,41,
+32,95,49,48,51,54,41,41,41,32,95,49,48,52,50,41,41,32,40,40,
+95,49,53,48,56,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,
+40,95,49,48,49,52,32,40,40,79,32,35,49,50,52,41,32,75,41,41,
+41,32,40,40,95,49,53,50,51,32,40,40,40,95,49,52,32,95,49,53,
+48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,80,
+41,32,40,95,49,53,49,49,32,95,49,48,48,57,41,41,41,32,40,40,
+40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,49,52,32,34,
+45,62,34,41,41,32,40,95,49,53,49,49,32,95,49,48,48,57,41,41,
+41,41,32,40,95,49,48,49,51,32,35,52,52,41,41,41,41,32,40,40,
+95,49,51,32,95,49,53,48,49,41,32,95,52,54,49,41,41,41,41,32,
+40,95,49,48,54,53,32,95,49,48,56,51,41,41,41,41,32,40,40,40,
+95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,52,32,95,49,
+53,48,49,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,
+40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,51,55,41,32,
+40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,51,51,
+32,34,105,110,115,116,97,110,99,101,34,41,41,32,95,49,48,52,56,41,
+41,41,32,95,49,48,51,54,41,41,32,95,49,48,53,50,41,41,32,40,
+95,49,48,54,53,32,95,49,48,56,51,41,41,41,41,32,40,40,40,95,
+50,55,54,32,95,49,53,48,48,41,32,95,55,51,56,41,32,40,40,40,
+95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,51,51,32,34,100,
+101,102,97,117,108,116,34,41,41,32,40,95,49,48,50,57,32,40,40,95,
+49,53,50,52,32,95,49,48,52,55,41,32,40,95,49,48,49,51,32,35,
+52,52,41,41,41,41,41,41,41,32,40,40,65,32,58,49,48,51,54,32,
+40,40,95,49,53,48,56,32,40,40,40,95,49,54,32,95,49,53,48,49,
+41,32,40,40,95,49,53,48,56,32,40,95,49,48,50,57,32,40,95,49,
+53,49,48,32,95,49,48,52,55,41,41,41,32,40,40,40,95,50,55,54,
+32,95,49,53,48,48,41,32,40,40,67,32,95,52,54,50,41,32,95,52,
+54,49,41,41,32,95,49,48,53,50,41,41,41,32,40,95,49,48,49,52,
+32,34,61,62,34,41,41,41,32,40,40,95,49,51,32,95,49,53,48,49,
+41,32,95,52,54,49,41,41,41,32,40,40,65,32,58,49,48,51,55,32,
+40,40,95,49,53,48,56,32,40,40,40,95,49,52,32,95,49,53,48,49,
+41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,
+49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,
+53,48,48,41,32,95,55,57,53,41,32,95,49,48,52,56,41,41,32,95,
+49,48,51,54,41,41,32,95,49,48,48,53,41,41,32,95,49,48,51,56,
+41,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,
+95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,52,32,95,49,
+53,48,49,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,
+40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,40,67,39,32,
+40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,
+41,41,41,32,95,55,57,53,41,41,32,40,40,66,32,40,66,32,95,49,
+55,52,41,41,32,40,40,40,67,39,32,66,41,32,79,41,32,40,40,67,
+32,79,41,32,75,41,41,41,41,41,32,95,49,48,52,56,41,41,32,95,
+49,48,51,54,41,41,32,95,49,48,51,57,41,41,32,95,49,48,50,48,
+41,41,32,95,49,48,51,57,41,41,41,32,40,40,65,32,58,49,48,51,
+56,32,40,40,95,49,53,48,56,32,40,40,40,95,50,55,54,32,95,49,
+53,48,48,41,32,95,49,55,52,41,32,40,95,49,53,49,48,32,95,49,
+48,51,57,41,41,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,
+41,32,95,49,55,53,41,32,40,40,40,95,49,54,32,95,49,53,48,49,
+41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,
+49,51,32,35,49,50,51,41,41,32,40,40,95,49,53,50,52,32,40,40,
+40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,
+95,49,53,48,48,41,32,80,41,32,40,40,40,95,49,54,32,95,49,53,
+48,49,41,32,95,49,48,50,56,41,32,40,95,49,48,49,52,32,34,58,
+58,34,41,41,41,41,32,95,49,48,52,48,41,41,32,40,95,49,48,49,
+51,32,35,52,52,41,41,41,41,32,40,95,49,48,49,51,32,35,49,50,
+53,41,41,41,41,41,32,40,40,65,32,58,49,48,51,57,32,40,40,40,
+95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,
+49,53,48,48,41,32,80,41,32,95,49,48,52,49,41,41,32,95,49,48,
+53,51,41,41,32,40,40,65,32,58,49,48,52,48,32,40,40,40,95,49,
+52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,
+48,48,41,32,80,41,32,95,49,48,52,49,41,41,32,95,49,48,52,55,
+41,41,32,40,40,65,32,58,49,48,52,49,32,40,40,95,49,53,48,56,
+32,40,40,40,95,50,55,51,32,95,49,53,48,48,41,32,95,49,50,53,
+41,32,40,95,49,48,49,52,32,40,40,79,32,35,51,51,41,32,75,41,
+41,41,41,32,40,40,95,49,51,32,95,49,53,48,49,41,32,95,49,50,
+52,41,41,41,32,40,40,65,32,58,49,48,52,50,32,40,40,95,49,53,
+48,56,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,
+95,50,55,54,32,95,49,53,48,48,41,32,80,41,32,95,49,48,49,49,
+41,41,32,40,95,49,53,49,48,32,95,49,48,52,53,41,41,41,32,40,
+40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,52,32,
+95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,80,41,41,32,40,40,
+40,67,39,32,66,41,32,79,41,32,40,40,67,32,79,41,32,75,41,41,
+41,41,32,95,49,48,52,53,41,41,32,95,49,48,49,55,41,41,32,95,
+49,48,52,53,41,41,41,32,40,40,65,32,58,49,48,52,51,32,40,40,
+40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,52,32,95,
+49,53,48,49,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,
+40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,51,57,41,
+32,40,40,95,49,53,48,56,32,40,40,40,95,50,55,51,32,95,49,53,
+48,48,41,32,95,49,50,53,41,32,40,95,49,48,51,51,32,34,113,117,
+97,108,105,102,105,101,100,34,41,41,41,32,40,40,95,49,51,32,95,49,
+53,48,49,41,32,95,49,50,52,41,41,41,41,32,95,49,48,48,55,41,
+41,32,40,95,49,53,49,50,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,51,51,32,34,97,115,34,41,41,32,95,49,48,
+48,56,41,41,41,41,32,40,95,49,53,49,50,32,40,40,40,95,49,52,
+32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,80,41,32,40,40,40,95,51,32,95,49,53,48,52,41,32,40,
+40,40,95,50,55,51,32,95,49,53,48,48,41,32,95,49,50,53,41,32,
+40,95,49,48,51,51,32,34,104,105,100,105,110,103,34,41,41,41,32,40,
+40,95,49,51,32,95,49,53,48,49,41,32,95,49,50,52,41,41,41,41,
+32,40,95,49,48,50,57,32,40,40,95,49,53,50,53,32,95,49,48,52,
+52,41,32,40,95,49,48,49,51,32,35,52,52,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,48,52,52,32,40,40,95,49,53,48,56,32,40,
+40,95,49,53,48,56,32,40,40,40,95,50,55,54,32,95,49,53,48,48,
+41,32,95,55,52,48,41,32,40,40,40,95,49,54,32,95,49,53,48,49,
+41,32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,95,
+49,54,32,95,49,53,48,49,41,32,95,49,48,50,54,41,32,40,95,49,
+48,49,51,32,35,52,48,41,41,41,32,40,95,49,48,49,52,32,34,46,
+46,34,41,41,41,32,40,95,49,48,49,51,32,35,52,49,41,41,41,41,
+32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,52,49,
+41,32,95,49,48,50,54,41,41,41,32,40,40,40,95,50,55,54,32,95,
+49,53,48,48,41,32,95,55,52,50,41,32,95,49,48,50,55,41,41,41,
+32,40,40,65,32,58,49,48,52,53,32,40,40,95,49,53,48,56,32,40,
+40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,67,32,95,55,
+57,54,41,32,95,55,57,57,41,41,32,95,49,48,50,56,41,41,32,40,
+95,49,48,50,57,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,
+40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,57,54,41,
+32,95,49,48,50,56,41,41,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,49,52,32,34,58,58,34,41,41,32,95,49,48,
+52,54,41,41,41,41,41,32,40,40,65,32,58,49,48,52,54,32,95,49,
+48,52,55,41,32,40,40,65,32,58,49,48,52,55,32,40,40,40,95,51,
+50,32,95,49,53,48,50,41,32,95,49,48,52,56,41,32,40,40,66,32,
+40,40,95,51,50,32,95,49,53,48,50,41,32,95,49,48,52,57,41,41,
+32,40,40,66,32,40,66,32,40,95,50,54,49,32,40,95,49,51,32,95,
+49,53,48,49,41,41,41,41,32,40,40,67,32,40,40,40,83,39,32,83,
+39,41,32,95,51,57,50,41,32,95,55,54,48,41,41,32,73,41,41,41,
+41,41,32,40,40,65,32,58,49,48,52,56,32,40,40,95,49,53,48,56,
+32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,95,49,
+53,32,95,49,53,48,49,41,32,40,95,49,48,51,51,32,34,102,111,114,
+97,108,108,34,41,41,32,40,95,49,53,49,49,32,95,49,48,52,53,41,
+41,41,32,40,95,49,48,49,52,32,40,40,79,32,35,52,54,41,32,75,
+41,41,41,41,32,40,40,95,49,51,32,95,49,53,48,49,41,32,95,52,
+54,49,41,41,41,32,40,40,65,32,58,49,48,52,57,32,40,40,95,49,
+48,56,49,32,95,49,48,53,48,41,32,95,49,48,53,49,41,41,32,40,
+40,65,32,58,49,48,53,48,32,40,40,95,49,53,48,56,32,40,40,95,
+49,53,48,56,32,95,49,48,49,53,41,32,40,40,40,95,50,55,51,32,
+95,49,53,48,48,41,32,40,95,56,57,55,32,34,45,62,34,41,41,32,
+40,95,49,48,49,52,32,34,45,62,34,41,41,41,41,32,40,40,40,95,
+50,55,51,32,95,49,53,48,48,41,32,40,95,56,57,55,32,34,61,62,
+34,41,41,32,40,95,49,48,49,52,32,34,61,62,34,41,41,41,41,32,
+40,40,65,32,58,49,48,53,49,32,95,49,48,53,50,41,32,40,40,65,
+32,58,49,48,53,50,32,40,40,40,95,51,50,32,95,49,53,48,50,41,
+32,95,49,48,53,51,41,32,40,40,66,32,40,40,95,51,50,32,95,49,
+53,48,50,41,32,40,95,49,53,49,48,32,95,49,48,53,51,41,41,41,
+32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,49,53,48,50,41,
+32,40,95,49,53,49,50,32,40,40,40,95,49,53,32,95,49,53,48,49,
+41,32,40,95,49,48,49,52,32,34,58,58,34,41,41,32,95,49,48,52,
+55,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,
+66,32,40,95,50,54,49,32,40,95,49,51,32,95,49,53,48,49,41,41,
+41,41,32,40,67,32,40,40,83,32,95,52,55,48,41,32,95,55,53,54,
+41,41,41,41,41,32,40,95,51,57,57,32,95,55,52,52,41,41,41,41,
+41,41,32,40,40,65,32,58,49,48,53,51,32,40,40,95,49,53,48,56,
+32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,95,
+49,53,48,56,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,
+95,55,52,51,41,32,95,49,48,50,55,41,41,32,40,40,40,95,50,55,
+54,32,95,49,53,48,48,41,32,95,55,52,51,41,32,95,49,48,50,54,
+41,41,41,32,95,49,48,51,48,41,41,32,40,40,40,95,50,55,54,32,
+95,49,53,48,48,41,32,95,49,48,56,52,41,32,40,40,40,95,49,54,
+32,95,49,53,48,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,
+41,32,40,95,49,48,49,51,32,35,52,48,41,41,32,40,40,95,49,53,
+50,51,32,95,49,48,52,55,41,32,40,95,49,48,49,51,32,35,52,52,
+41,41,41,41,32,40,95,49,48,49,51,32,35,52,49,41,41,41,41,41,
+32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,95,50,
+54,51,32,95,55,53,49,41,32,40,40,95,50,54,51,32,95,55,54,54,
+41,32,40,40,67,32,95,52,54,50,41,32,95,52,54,49,41,41,41,41,
+32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,95,49,
+53,32,95,49,53,48,49,41,32,40,95,49,48,49,51,32,35,57,49,41,
+41,32,95,49,48,52,55,41,41,32,40,95,49,48,49,51,32,35,57,51,
+41,41,41,41,41,32,40,40,65,32,58,49,48,53,52,32,40,40,95,49,
+53,48,56,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,
+40,40,95,49,53,48,56,32,40,40,40,95,51,50,32,95,49,53,48,50,
+41,32,95,49,48,50,56,41,32,40,40,40,83,39,32,95,49,53,48,56,
+41,32,40,40,40,67,39,32,40,95,50,55,54,32,95,49,53,48,48,41,
+41,32,95,55,53,55,41,32,40,40,40,95,49,53,32,95,49,53,48,49,
+41,32,40,95,49,48,49,52,32,40,40,79,32,35,54,52,41,32,75,41,
+41,41,32,95,49,48,53,52,41,41,41,32,40,40,66,32,40,95,49,51,
+32,95,49,53,48,49,41,41,32,95,55,52,51,41,41,41,41,32,40,40,
+40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,52,51,41,32,95,
+49,48,50,54,41,41,41,32,95,49,48,51,48,41,41,32,40,40,40,95,
+50,55,54,32,95,49,53,48,48,41,32,95,49,48,56,52,41,32,40,40,
+40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,95,49,53,32,95,
+49,53,48,49,41,32,40,95,49,48,49,51,32,35,52,48,41,41,32,40,
+40,95,49,53,50,51,32,95,49,48,53,53,41,32,40,95,49,48,49,51,
+32,35,52,52,41,41,41,41,32,40,95,49,48,49,51,32,35,52,49,41,
+41,41,41,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,
+40,40,95,50,54,51,32,95,55,53,49,41,32,95,55,54,54,41,41,32,
+40,40,40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,95,49,53,
+32,95,49,53,48,49,41,32,40,95,49,48,49,51,32,35,57,49,41,41,
+32,40,40,95,49,53,50,51,32,95,49,48,53,53,41,32,40,95,49,48,
+49,51,32,35,52,52,41,41,41,41,32,40,95,49,48,49,51,32,35,57,
+51,41,41,41,41,41,32,40,40,65,32,58,49,48,53,53,32,95,49,48,
+53,54,41,32,40,40,65,32,58,49,48,53,54,32,40,40,95,49,48,56,
+49,32,95,49,48,49,53,41,32,95,49,48,53,55,41,41,32,40,40,65,
+32,58,49,48,53,55,32,95,49,48,53,56,41,32,40,40,65,32,58,49,
+48,53,56,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,49,
+48,53,52,41,32,40,40,66,32,40,40,95,51,50,32,95,49,53,48,50,
+41,32,40,95,49,53,49,48,32,95,49,48,53,52,41,41,41,32,40,40,
+40,83,39,32,40,83,39,32,40,95,51,51,32,95,49,53,48,50,41,41,
+41,32,40,40,66,32,40,66,32,40,95,49,48,32,95,49,53,48,52,41,
+41,41,32,40,40,66,32,40,40,67,39,32,95,49,50,48,41,32,95,51,
+57,50,41,41,32,95,55,57,51,41,41,41,32,40,40,66,32,40,66,32,
+40,95,50,54,49,32,40,95,49,51,32,95,49,53,48,49,41,41,41,41,
+32,40,95,51,57,57,32,95,55,52,52,41,41,41,41,41,41,32,40,40,
+65,32,58,49,48,53,57,32,40,40,40,95,51,50,32,95,49,53,48,50,
+41,32,95,49,48,53,53,41,32,40,40,40,83,39,32,40,95,51,51,32,
+95,49,53,48,50,41,41,32,40,40,66,32,40,95,49,48,32,95,49,53,
+48,52,41,41,32,40,40,66,32,95,49,50,50,41,32,95,55,57,50,41,
+41,41,32,40,95,49,51,32,95,49,53,48,49,41,41,41,41,32,40,40,
+65,32,58,49,48,54,48,32,40,40,40,95,51,50,32,95,49,53,48,50,
+41,32,40,95,49,48,54,49,32,40,75,32,40,75,32,95,49,50,53,41,
+41,41,41,32,40,85,32,40,40,66,32,40,83,32,73,41,41,32,40,40,
+40,83,39,32,40,83,39,32,40,83,39,32,67,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,80,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,67,32,67,39,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,66,32,
+40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,85,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,80,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,80,41,41,32,40,40,66,32,40,66,32,40,95,49,51,32,95,49,53,
+48,49,41,41,41,32,40,40,40,67,39,32,66,41,32,80,41,32,40,40,
+67,32,79,41,32,75,41,41,41,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,41,41,41,41,32,40,90,32,75,41,41,41,41,
+32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,40,95,
+51,50,32,95,49,53,48,50,41,41,41,32,40,40,66,32,40,66,32,95,
+49,53,49,48,41,41,32,40,40,66,32,40,66,32,40,40,95,49,53,32,
+95,49,53,48,49,41,32,40,95,49,48,49,51,32,35,53,57,41,41,41,
+41,32,40,40,66,32,40,66,32,95,49,48,54,49,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,95,49,50,49,41,41,32,40,67,32,40,95,50,48,50,
+32,95,56,57,50,41,41,41,41,41,32,40,40,66,32,40,67,32,40,95,
+50,48,50,32,95,50,56,49,41,41,41,32,95,52,49,49,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,49,51,32,95,
+49,53,48,49,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,80,41,41,32,40,40,40,67,39,32,66,41,32,95,52,54,50,41,
+32,40,95,51,57,53,32,95,53,54,54,41,41,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,49,48,54,49,32,40,40,66,32,40,40,95,51,
+50,32,95,49,53,48,50,41,32,95,49,48,54,50,41,41,32,40,40,66,
+32,85,41,32,40,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,
+95,49,53,48,50,41,32,40,95,49,48,54,51,32,40,95,49,48,49,52,
+32,40,40,79,32,35,54,49,41,32,75,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,40,83,39,32,66,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,95,51,51,32,95,49,53,48,50,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,49,48,32,95,49,
+53,48,52,41,41,41,41,32,40,40,67,32,40,67,39,32,66,41,41,32,
+95,52,49,49,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+95,49,51,32,95,49,53,48,49,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,80,41,41,32,95,55,57,48,41,41,41,41,41,
+41,41,32,40,40,65,32,58,49,48,54,50,32,40,40,40,40,83,39,32,
+95,49,53,48,56,41,32,40,40,95,51,32,95,49,53,48,52,41,32,40,
+40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,
+32,95,49,53,48,48,41,32,80,41,32,95,49,48,50,56,41,41,32,40,
+95,49,53,49,48,32,95,49,48,53,52,41,41,41,41,32,40,40,40,67,
+39,32,40,95,49,52,32,95,49,53,48,49,41,41,32,40,40,66,32,40,
+40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,67,32,66,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,80,41,41,32,40,67,32,95,
+52,54,51,41,41,41,41,41,32,95,49,48,50,57,41,41,32,40,95,49,
+53,49,48,32,95,49,48,53,52,41,41,41,32,40,40,40,95,49,52,32,
+95,49,53,48,49,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,
+32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,80,41,41,32,40,40,40,67,39,32,66,41,
+32,79,41,32,40,40,67,32,79,41,32,75,41,41,41,41,32,95,49,48,
+53,56,41,41,32,40,40,40,95,51,50,32,95,49,53,48,50,41,32,95,
+49,48,49,53,41,32,40,40,40,83,39,32,40,95,51,51,32,95,49,53,
+48,50,41,41,32,40,40,66,32,40,95,49,48,32,95,49,53,48,52,41,
+41,32,40,40,66,32,95,49,50,50,41,32,95,57,49,48,41,41,41,32,
+40,95,49,51,32,95,49,53,48,49,41,41,41,41,41,32,95,49,48,53,
+56,41,41,41,32,40,40,65,32,58,49,48,54,51,32,40,40,40,67,39,
+32,40,95,51,50,32,95,49,53,48,50,41,41,32,95,49,48,54,52,41,
+32,40,40,66,32,40,40,95,51,50,32,95,49,53,48,50,41,32,40,95,
+49,48,54,53,32,95,49,48,56,50,41,41,41,32,40,40,66,32,40,66,
+32,40,95,49,51,32,95,49,53,48,49,41,41,41,32,95,55,57,49,41,
+41,41,41,32,40,40,65,32,58,49,48,54,52,32,40,40,40,83,39,32,
+95,49,53,48,56,41,32,40,40,66,32,95,49,53,49,49,41,32,40,40,
+66,32,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,
+55,54,32,95,49,53,48,48,41,32,80,41,32,40,40,40,95,49,53,32,
+95,49,53,48,49,41,32,40,95,49,48,49,52,32,40,40,79,32,35,49,
+50,52,41,32,75,41,41,41,32,40,40,95,49,53,50,51,32,95,49,48,
+54,54,41,32,40,95,49,48,49,51,32,35,52,52,41,41,41,41,41,41,
+32,40,40,67,32,40,95,49,53,32,95,49,53,48,49,41,41,32,95,49,
+48,54,55,41,41,41,41,32,40,40,66,32,40,40,95,50,55,54,32,95,
+49,53,48,48,41,32,40,40,40,67,39,32,79,41,32,40,80,32,95,52,
+54,49,41,41,32,75,41,41,41,32,40,40,67,32,40,95,49,53,32,95,
+49,53,48,49,41,41,32,95,49,48,54,55,41,41,41,41,32,40,40,65,
+32,58,49,48,54,53,32,40,40,40,67,39,32,95,49,53,48,56,41,32,
+40,40,66,32,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,
+48,51,51,32,34,119,104,101,114,101,34,41,41,41,32,95,49,48,51,52,
+41,41,32,40,40,95,49,51,32,95,49,53,48,49,41,32,95,52,54,49,
+41,41,41,32,40,40,65,32,58,49,48,54,54,32,40,40,95,49,53,48,
+56,32,40,40,95,49,53,48,56,32,40,40,40,95,49,52,32,95,49,53,
+48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,
+55,56,52,41,32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,95,
+49,48,53,53,41,32,40,95,49,48,49,52,32,34,60,45,34,41,41,41,
+41,32,95,49,48,54,55,41,41,32,40,40,40,95,50,55,54,32,95,49,
+53,48,48,41,32,95,55,56,54,41,32,40,40,40,95,49,53,32,95,49,
+53,48,49,41,32,40,95,49,48,51,51,32,34,108,101,116,34,41,41,32,
+40,95,49,48,51,52,32,95,49,48,56,50,41,41,41,41,41,32,40,40,
+40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,56,53,41,32,95,
+49,48,54,55,41,41,41,32,40,40,65,32,58,49,48,54,55,32,95,49,
+48,56,48,41,32,40,40,65,32,58,49,48,54,56,32,40,40,95,49,53,
+48,56,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,
+40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,95,49,48,54,57,
+41,32,95,49,48,55,48,41,41,32,95,49,48,55,49,41,41,32,95,49,
+48,55,51,41,41,32,95,49,48,55,53,41,41,32,95,49,48,55,52,41,
+41,32,40,40,65,32,58,49,48,54,57,32,40,40,40,95,51,50,32,95,
+49,53,48,50,41,32,95,49,48,55,56,41,32,40,40,66,32,40,40,95,
+51,50,32,95,49,53,48,50,41,32,40,95,49,53,49,48,32,95,49,48,
+55,56,41,41,41,32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,
+49,53,48,50,41,32,40,95,49,53,49,50,32,40,40,40,95,49,53,32,
+95,49,53,48,49,41,32,40,95,49,48,49,52,32,34,58,58,34,41,41,
+32,95,49,48,52,55,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+40,67,39,32,40,66,32,40,95,50,54,49,32,40,95,49,51,32,95,49,
+53,48,49,41,41,41,41,32,40,67,32,40,40,83,32,95,52,55,48,41,
+32,95,55,53,54,41,41,41,41,41,32,40,95,51,57,57,32,95,55,52,
+52,41,41,41,41,41,41,32,40,40,65,32,58,49,48,55,48,32,40,40,
+40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,
+95,49,53,48,48,41,32,95,55,54,49,41,32,40,40,40,95,49,53,32,
+95,49,53,48,49,41,32,40,95,49,48,49,52,32,40,40,79,32,35,57,
+50,41,32,75,41,41,41,32,40,95,49,53,49,49,32,95,49,48,53,52,
+41,41,41,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,
+95,49,48,49,52,32,34,45,62,34,41,41,32,95,49,48,54,55,41,41,
+41,32,40,40,65,32,58,49,48,55,49,32,40,40,40,95,49,52,32,95,
+49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,
+32,95,55,52,56,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,51,51,32,34,99,97,115,101,34,41,41,32,95,49,48,
+54,55,41,41,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,
+40,95,49,48,51,51,32,34,111,102,34,41,41,32,40,95,49,48,51,52,
+32,95,49,48,55,50,41,41,41,41,32,40,40,65,32,58,49,48,55,50,
+32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,50,
+55,54,32,95,49,53,48,48,41,32,80,41,32,95,49,48,53,53,41,41,
+32,40,95,49,48,54,51,32,40,95,49,48,49,52,32,34,45,62,34,41,
+41,41,41,32,40,40,65,32,58,49,48,55,51,32,40,40,40,95,49,52,
+32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,95,55,52,57,41,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,51,51,32,34,108,101,116,34,41,41,32,40,95,
+49,48,51,52,32,95,49,48,56,50,41,41,41,41,32,40,40,40,95,49,
+53,32,95,49,53,48,49,41,32,40,95,49,48,51,51,32,34,105,110,34,
+41,41,32,95,49,48,54,55,41,41,41,32,40,40,65,32,58,49,48,55,
+52,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,
+50,55,54,32,95,49,53,48,48,41,32,95,55,53,50,41,32,40,40,95,
+49,53,48,56,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,
+95,52,55,55,41,32,95,49,48,55,54,41,41,32,40,40,40,95,50,55,
+51,32,95,49,53,48,48,41,32,95,52,55,54,41,32,40,95,49,48,51,
+51,32,34,100,111,34,41,41,41,41,41,32,40,95,49,48,51,52,32,95,
+49,48,54,54,41,41,41,32,40,40,65,32,58,49,48,55,53,32,40,40,
+40,95,49,52,32,95,49,53,48,49,41,32,40,40,40,95,49,52,32,95,
+49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,
+32,95,55,53,53,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,51,51,32,34,105,102,34,41,41,32,95,49,48,54,55,
+41,41,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,
+49,48,51,51,32,34,116,104,101,110,34,41,41,32,95,49,48,54,55,41,
+41,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,
+48,51,51,32,34,101,108,115,101,34,41,41,32,95,49,48,54,55,41,41,
+41,32,40,40,65,32,58,49,48,55,54,32,40,40,40,95,51,50,32,95,
+49,53,48,50,41,32,95,57,57,53,41,32,40,40,66,32,40,95,49,53,
+49,54,32,34,81,117,97,108,68,111,34,41,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,80,41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,
+32,40,85,32,95,52,55,54,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,40,40,67,32,
+40,40,67,32,101,113,117,97,108,41,32,34,100,111,34,41,41,32,95,52,
+55,54,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,52,
+55,55,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+95,56,57,57,41,32,40,95,52,51,49,32,40,40,79,32,35,52,54,41,
+32,75,41,41,41,41,41,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,
+41,41,41,41,41,32,40,40,65,32,58,49,48,55,55,32,40,40,95,49,
+53,48,56,32,95,49,48,49,53,41,32,40,40,40,95,49,52,32,95,49,
+53,48,49,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,40,
+40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,56,57,57,41,32,
+95,57,57,53,41,41,32,95,57,57,56,41,41,32,40,40,40,95,50,55,
+51,32,95,49,53,48,48,41,32,40,40,79,32,35,52,52,41,32,75,41,
+41,32,40,95,49,48,49,51,32,35,52,52,41,41,41,41,41,32,40,40,
+65,32,58,49,48,55,56,32,40,40,95,49,53,48,56,32,40,40,95,49,
+53,48,56,32,40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,
+40,40,95,49,53,48,56,32,40,40,95,49,53,48,56,32,40,40,95,49,
+53,48,56,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,
+55,52,51,41,32,95,49,48,50,55,41,41,32,40,40,40,95,50,55,54,
+32,95,49,53,48,48,41,32,95,55,52,51,41,32,95,49,48,50,54,41,
+41,41,32,95,49,48,51,48,41,41,32,40,40,40,95,50,55,54,32,95,
+49,53,48,48,41,32,95,49,48,56,52,41,32,40,40,40,95,49,54,32,
+95,49,53,48,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,
+32,40,95,49,48,49,51,32,35,52,48,41,41,32,40,40,95,49,53,50,
+51,32,95,49,48,54,55,41,32,40,95,49,48,49,51,32,35,52,52,41,
+41,41,41,32,40,95,49,48,49,51,32,35,52,49,41,41,41,41,41,32,
+40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,53,49,41,
+32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,40,40,40,95,49,
+53,32,95,49,53,48,49,41,32,40,95,49,48,49,51,32,35,57,49,41,
+41,32,95,49,48,55,57,41,41,32,40,95,49,48,49,51,32,35,57,51,
+41,41,41,41,41,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,
+40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,53,51,41,
+32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,49,
+51,32,35,52,48,41,41,32,95,49,48,54,56,41,41,41,32,40,40,40,
+95,49,54,32,95,49,53,48,49,41,32,95,49,48,55,55,41,32,40,95,
+49,48,49,51,32,35,52,49,41,41,41,41,41,32,40,40,40,95,49,52,
+32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,48,
+48,41,32,95,55,53,52,41,32,40,40,40,95,49,53,32,95,49,53,48,
+49,41,32,40,95,49,48,49,51,32,35,52,48,41,41,32,95,49,48,55,
+55,41,41,41,32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,95,
+49,48,54,56,41,32,40,95,49,48,49,51,32,35,52,49,41,41,41,41,
+41,32,40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,95,
+50,54,51,32,40,95,55,52,55,32,95,56,57,53,41,41,32,95,55,56,
+49,41,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,
+49,48,51,51,32,34,112,114,105,109,105,116,105,118,101,34,41,41,32,95,
+49,48,51,49,41,41,41,41,32,40,40,65,32,58,49,48,55,57,32,40,
+40,40,95,51,50,32,95,49,53,48,50,41,32,95,49,48,54,55,41,32,
+40,40,40,83,39,32,95,49,53,48,56,41,32,40,40,40,83,39,32,95,
+49,53,48,56,41,32,40,40,40,83,39,32,95,49,53,48,56,41,32,40,
+40,40,83,39,32,95,49,53,48,56,41,32,40,40,66,32,40,40,95,49,
+53,32,95,49,53,48,49,41,32,40,95,49,48,49,51,32,35,52,52,41,
+41,41,32,40,40,66,32,40,40,95,51,50,32,95,49,53,48,50,41,32,
+95,49,48,54,55,41,41,32,40,40,40,83,39,32,40,83,39,32,95,49,
+53,48,56,41,41,32,40,40,40,83,39,32,40,83,39,32,95,49,53,48,
+56,41,41,32,40,40,40,83,39,32,40,83,39,32,95,49,53,48,56,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,95,50,55,54,32,95,49,
+53,48,48,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,55,54,
+54,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,95,52,
+54,50,41,41,32,95,52,54,50,41,41,41,32,40,95,49,53,49,49,32,
+40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,49,51,
+32,35,52,52,41,41,32,95,49,48,54,55,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,95,50,55,54,32,95,49,53,48,48,41,41,
+41,32,95,55,55,49,41,32,40,40,40,95,49,53,32,95,49,53,48,49,
+41,32,40,95,49,48,49,52,32,34,46,46,34,41,41,32,95,49,48,54,
+55,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,95,50,55,
+51,32,95,49,53,48,48,41,41,41,32,95,55,55,48,41,32,40,95,49,
+48,49,52,32,34,46,46,34,41,41,41,41,32,40,40,66,32,40,66,32,
+40,95,49,51,32,95,49,53,48,49,41,41,41,32,40,40,66,32,40,66,
+32,95,55,54,54,41,41,32,40,40,40,67,39,32,66,41,32,79,41,32,
+40,40,67,32,79,41,32,75,41,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,95,50,55,54,32,95,49,53,48,48,41,41,32,95,55,54,
+55,41,32,40,40,40,95,49,53,32,95,49,53,48,49,41,32,40,95,49,
+48,49,52,32,40,40,79,32,35,49,50,52,41,32,75,41,41,41,32,40,
+40,95,49,53,50,51,32,95,49,48,54,54,41,32,40,95,49,48,49,51,
+32,35,52,52,41,41,41,41,41,41,32,40,40,40,67,39,32,40,95,50,
+55,54,32,95,49,53,48,48,41,41,32,95,55,54,57,41,32,40,40,40,
+95,49,53,32,95,49,53,48,49,41,32,40,95,49,48,49,52,32,34,46,
+46,34,41,41,32,95,49,48,54,55,41,41,41,41,32,40,40,40,67,39,
+32,40,95,50,55,51,32,95,49,53,48,48,41,41,32,95,55,54,56,41,
+32,40,95,49,48,49,52,32,34,46,46,34,41,41,41,41,32,40,40,66,
+32,40,95,49,51,32,95,49,53,48,49,41,41,32,40,40,66,32,95,55,
+54,54,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,32,40,
+40,65,32,58,49,48,56,48,32,40,40,95,49,48,56,49,32,95,49,48,
+49,53,41,32,95,49,48,54,56,41,41,32,40,40,65,32,58,49,48,56,
+49,32,40,40,66,32,40,40,83,39,32,40,95,49,52,32,95,49,53,48,
+49,41,41,32,40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,40,
+40,83,39,32,83,41,32,85,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,95,55,52,53,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,95,49,53,49,48,41,41,32,40,40,66,32,40,95,49,52,32,95,
+49,53,48,49,41,41,32,40,40,95,50,55,54,32,95,49,53,48,48,41,
+32,80,41,41,41,41,41,32,40,40,65,32,58,49,48,56,50,32,40,40,
+95,49,53,48,56,32,40,40,40,95,49,52,32,95,49,53,48,49,41,32,
+40,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,55,56,56,41,
+32,40,40,40,95,49,54,32,95,49,53,48,49,41,32,95,49,48,53,57,
+41,32,40,95,49,48,49,52,32,40,40,79,32,35,54,49,41,32,75,41,
+41,41,41,41,32,95,49,48,54,55,41,41,32,95,49,48,56,51,41,41,
+32,40,40,65,32,58,49,48,56,51,32,40,40,95,49,53,48,56,32,40,
+40,40,95,50,55,54,32,95,49,53,48,48,41,32,40,95,50,54,56,32,
+95,55,56,55,41,41,32,95,49,48,54,48,41,41,32,40,40,40,95,49,
+52,32,95,49,53,48,49,41,32,40,40,40,95,50,55,54,32,95,49,53,
+48,48,41,32,95,55,56,57,41,32,40,40,40,95,49,54,32,95,49,53,
+48,49,41,32,95,49,48,50,56,41,32,40,95,49,48,49,52,32,34,58,
+58,34,41,41,41,41,32,95,49,48,52,55,41,41,41,32,40,40,65,32,
+58,49,48,56,52,32,40,40,83,32,40,85,32,40,95,50,52,32,34,101,
+84,117,112,108,101,34,41,41,41,32,40,40,66,32,40,67,32,80,41,41,
+32,40,90,32,40,90,32,95,55,53,48,41,41,41,41,41,32,40,40,65,
+32,58,49,48,56,53,32,40,40,40,83,39,32,95,49,50,48,41,32,95,
+57,49,51,41,32,95,49,51,57,41,41,32,40,40,65,32,58,49,48,56,
+54,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+66,39,41,32,95,56,57,57,41,41,32,40,40,66,32,40,66,32,40,95,
+52,51,49,32,40,40,79,32,35,52,54,41,32,75,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,95,52,54,51,41,32,40,40,67,32,79,41,
+32,75,41,41,41,41,41,32,40,40,65,32,58,49,48,56,55,32,40,90,
+32,40,40,66,32,85,41,32,40,90,32,40,40,67,32,40,40,40,67,39,
+32,83,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,40,67,39,
+32,95,52,54,51,41,41,32,40,40,66,32,40,66,32,95,57,49,54,41,
+41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,95,56,56,57,
+41,32,40,85,32,75,41,41,41,32,40,85,32,65,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,95,52,54,51,32,34,58,92,49,48,38,
+34,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,51,32,34,32,
+32,102,111,117,110,100,58,32,32,32,32,34,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,40,66,32,95,
+52,50,56,41,32,40,40,40,67,39,32,95,52,54,51,41,32,40,95,51,
+57,53,32,95,57,54,55,41,41,32,40,40,79,32,34,69,79,70,34,41,
+32,75,41,41,41,41,41,32,40,40,66,32,40,95,52,54,51,32,40,40,
+79,32,35,49,48,41,32,75,41,41,41,32,40,40,66,32,40,95,52,54,
+51,32,34,32,32,101,120,112,101,99,116,101,100,58,32,34,41,41,32,40,
+40,66,32,95,49,54,48,57,41,32,40,95,52,52,52,32,95,49,51,51,
+41,41,41,41,41,41,41,41,41,32,95,57,56,52,41,41,41,41,41,32,
+40,40,65,32,58,49,48,56,56,32,85,41,32,40,40,65,32,58,49,48,
+56,57,32,40,85,32,73,41,41,32,40,40,65,32,58,49,48,57,48,32,
+40,40,95,50,55,49,32,40,40,66,32,40,66,32,40,95,50,54,49,32,
+95,49,48,56,56,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,40,95,51,50,32,95,49,52,53,50,41,41,41,32,95,49,48,56,
+57,41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,40,66,
+32,40,95,51,52,32,95,49,52,53,50,41,41,41,41,32,40,66,32,80,
+41,41,41,41,41,41,32,40,95,50,55,53,32,95,49,48,57,48,41,41,
+41,32,40,40,65,32,58,49,48,57,49,32,40,40,40,40,40,95,49,49,
+32,95,49,48,57,48,41,32,40,40,66,32,40,95,50,54,49,32,95,49,
+48,56,56,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,49,
+52,53,50,41,41,41,32,80,41,41,41,32,40,95,51,56,32,95,49,48,
+57,50,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,
+48,56,56,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+40,67,39,32,40,95,51,50,32,95,49,52,53,50,41,41,41,32,95,49,
+48,56,57,41,41,32,40,40,66,32,85,41,32,40,90,32,95,49,48,56,
+57,41,41,41,41,41,32,40,95,50,48,32,95,49,48,57,49,41,41,41,
+32,40,40,65,32,58,49,48,57,50,32,40,40,40,40,95,51,48,32,95,
+49,48,57,49,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,
+49,48,56,56,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,40,95,51,50,32,95,49,52,53,50,41,41,41,32,95,
+49,48,56,57,41,41,32,40,40,66,32,85,41,32,40,66,32,95,49,48,
+56,57,41,41,41,41,41,32,40,95,49,53,32,95,49,48,57,49,41,41,
+32,40,95,51,55,32,95,49,48,57,50,41,41,41,32,40,40,65,32,58,
+49,48,57,51,32,40,40,95,51,57,32,95,49,48,57,50,41,32,95,50,
+52,41,41,32,40,40,65,32,58,49,48,57,52,32,40,40,66,32,40,95,
+50,54,49,32,95,49,48,56,56,41,41,32,40,40,66,32,40,66,32,40,
+95,51,52,32,95,49,52,53,50,41,41,41,32,40,40,67,32,40,83,39,
+32,80,41,41,32,73,41,41,41,41,32,40,40,65,32,58,49,48,57,53,
+32,40,40,66,32,40,95,50,54,49,32,95,49,48,56,56,41,41,32,40,
+40,66,32,40,66,32,40,95,51,52,32,95,49,52,53,50,41,41,41,32,
+40,66,32,40,80,32,95,49,51,52,49,41,41,41,41,41,32,40,40,65,
+32,58,49,48,57,54,32,40,40,66,32,40,95,50,54,49,32,95,49,48,
+56,56,41,41,32,40,90,32,40,40,66,32,40,95,51,52,32,95,49,52,
+53,50,41,41,32,40,80,32,95,49,51,52,49,41,41,41,41,41,32,40,
+40,65,32,58,49,48,57,55,32,40,40,95,50,54,49,32,95,49,48,56,
+56,41,32,40,40,66,32,40,95,51,52,32,95,49,52,53,50,41,41,32,
+40,40,83,32,80,41,32,73,41,41,41,41,32,40,40,65,32,58,49,48,
+57,56,32,40,40,66,32,40,95,50,54,49,32,95,49,48,56,56,41,41,
+32,40,40,40,67,39,32,66,41,32,40,95,51,50,32,95,49,52,53,50,
+41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,49,52,53,50,
+41,41,41,32,40,67,32,80,41,41,41,41,41,32,40,40,65,32,58,49,
+48,57,57,32,95,53,57,41,32,40,40,65,32,58,49,49,48,48,32,95,
+56,51,54,41,32,40,40,65,32,58,49,49,48,49,32,40,40,66,32,40,
+40,95,51,50,32,95,49,52,53,50,41,32,95,49,52,50,54,41,41,32,
+40,40,66,32,40,40,67,39,32,95,49,52,50,55,41,32,40,40,40,67,
+39,32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,66,32,95,
+52,49,49,41,32,40,95,52,50,52,32,40,40,67,32,40,95,50,48,51,
+32,95,49,51,51,41,41,32,34,45,45,34,41,41,41,41,32,35,49,41,
+41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,54,49,51,41,41,
+32,95,49,49,48,50,41,41,41,41,32,40,40,65,32,58,49,49,48,50,
+32,40,85,32,40,40,40,67,39,32,67,41,32,40,40,67,39,32,67,41,
+32,40,40,66,32,40,83,32,73,41,41,32,40,40,66,32,40,66,32,89,
+41,41,32,40,40,66,32,40,66,32,40,66,32,95,57,50,52,41,41,41,
+32,40,40,67,39,32,40,67,39,32,95,51,57,52,41,41,32,40,40,66,
+32,40,66,32,85,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,41,32,40,40,66,32,40,66,32,40,
+40,67,39,32,66,41,32,80,41,41,41,32,40,66,32,95,49,49,48,51,
+41,41,41,32,75,41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,
+83,39,32,95,50,54,49,41,32,40,40,66,32,95,52,55,49,41,32,40,
+40,66,32,40,95,50,54,49,32,95,50,52,41,41,32,40,40,66,32,40,
+95,52,54,51,32,34,116,114,97,110,115,108,97,116,101,58,32,110,111,116,
+32,102,111,117,110,100,32,34,41,41,32,95,57,48,50,41,41,41,41,41,
+32,40,67,32,95,57,50,56,41,41,41,41,41,32,40,40,65,32,58,49,
+49,48,51,32,40,40,66,32,89,41,32,40,40,40,67,39,32,40,67,39,
+32,83,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,39,41,41,41,32,40,
+40,40,67,39,32,66,41,32,80,41,32,40,40,40,83,39,32,40,67,39,
+32,66,41,41,32,40,66,32,95,49,54,49,51,41,41,32,73,41,41,41,
+32,40,90,32,75,41,41,41,32,40,40,40,83,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+83,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,
+32,67,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,80,32,95,49,54,
+49,51,41,41,32,40,40,67,32,66,41,32,95,54,51,53,41,41,41,32,
+95,49,54,49,51,41,41,41,32,75,41,41,32,75,41,41,32,40,40,67,
+32,66,41,32,95,55,48,49,41,41,41,32,40,40,40,83,39,32,95,50,
+54,49,41,32,40,40,66,32,95,52,55,49,41,32,40,40,66,32,40,95,
+50,54,49,32,95,50,52,41,41,32,40,95,52,54,51,32,34,116,114,97,
+110,115,58,32,110,111,32,112,114,105,109,111,112,32,34,41,41,41,41,32,
+40,40,67,32,40,95,52,51,54,32,95,49,51,51,41,41,32,95,49,49,
+48,52,41,41,41,41,32,40,40,67,32,66,41,32,40,40,66,32,40,95,
+54,55,54,32,40,95,54,55,56,32,40,95,55,56,49,32,34,100,121,110,
+115,121,109,34,41,41,41,41,32,40,40,66,32,95,54,55,56,41,32,95,
+55,56,48,41,41,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,
+95,50,52,41,41,32,40,40,66,32,40,95,52,54,51,32,34,116,114,97,
+110,115,58,32,105,109,112,111,115,115,105,98,108,101,58,32,34,41,41,32,
+40,95,49,53,57,48,32,95,55,49,56,41,41,41,41,41,41,32,40,40,
+65,32,58,49,49,48,52,32,40,40,79,32,40,40,80,32,40,40,79,32,
+35,54,54,41,32,75,41,41,32,66,41,41,32,40,40,79,32,40,40,80,
+32,40,40,79,32,35,55,57,41,32,75,41,41,32,79,41,41,32,40,40,
+79,32,40,40,80,32,40,40,79,32,35,55,53,41,32,75,41,41,32,75,
+41,41,32,40,40,79,32,40,40,80,32,34,67,39,34,41,32,67,39,41,
+41,32,40,40,79,32,40,40,80,32,40,40,79,32,35,54,55,41,32,75,
+41,41,32,67,41,41,32,40,40,79,32,40,40,80,32,40,40,79,32,35,
+54,53,41,32,75,41,41,32,65,41,41,32,40,40,79,32,40,40,80,32,
+34,83,39,34,41,32,83,39,41,41,32,40,40,79,32,40,40,80,32,40,
+40,79,32,35,56,48,41,32,75,41,41,32,80,41,41,32,40,40,79,32,
+40,40,80,32,40,40,79,32,35,55,51,41,32,75,41,41,32,73,41,41,
+32,40,40,79,32,40,40,80,32,40,40,79,32,35,56,51,41,32,75,41,
+41,32,83,41,41,32,40,40,79,32,40,40,80,32,40,40,79,32,35,56,
+53,41,32,75,41,41,32,85,41,41,32,40,40,79,32,40,40,80,32,40,
+40,79,32,35,56,57,41,32,75,41,41,32,89,41,41,32,40,40,79,32,
+40,40,80,32,34,66,39,34,41,32,66,39,41,41,32,40,40,79,32,40,
+40,80,32,40,40,79,32,35,57,48,41,32,75,41,41,32,90,41,41,32,
+40,40,79,32,40,40,80,32,40,40,79,32,35,56,50,41,32,75,41,41,
+32,82,41,41,32,40,40,79,32,40,40,80,32,40,40,79,32,35,52,51,
+41,32,75,41,41,32,43,41,41,32,40,40,79,32,40,40,80,32,40,40,
+79,32,35,52,53,41,32,75,41,41,32,45,41,41,32,40,40,79,32,40,
+40,80,32,40,40,79,32,35,52,50,41,32,75,41,41,32,42,41,41,32,
+40,40,79,32,40,40,80,32,34,113,117,111,116,34,41,32,113,117,111,116,
+41,41,32,40,40,79,32,40,40,80,32,34,114,101,109,34,41,32,114,101,
+109,41,41,32,40,40,79,32,40,40,80,32,34,117,113,117,111,116,34,41,
+32,117,113,117,111,116,41,41,32,40,40,79,32,40,40,80,32,34,117,114,
+101,109,34,41,32,117,114,101,109,41,41,32,40,40,79,32,40,40,80,32,
+34,110,101,103,34,41,32,110,101,103,41,41,32,40,40,79,32,40,40,80,
+32,34,97,110,100,34,41,32,97,110,100,41,41,32,40,40,79,32,40,40,
+80,32,34,111,114,34,41,32,111,114,41,41,32,40,40,79,32,40,40,80,
+32,34,120,111,114,34,41,32,120,111,114,41,41,32,40,40,79,32,40,40,
+80,32,34,105,110,118,34,41,32,105,110,118,41,41,32,40,40,79,32,40,
+40,80,32,34,115,104,108,34,41,32,115,104,108,41,41,32,40,40,79,32,
+40,40,80,32,34,115,104,114,34,41,32,115,104,114,41,41,32,40,40,79,
+32,40,40,80,32,34,97,115,104,114,34,41,32,97,115,104,114,41,41,32,
+40,40,79,32,40,40,80,32,34,115,117,98,116,114,97,99,116,34,41,32,
+115,117,98,116,114,97,99,116,41,41,32,40,40,79,32,40,40,80,32,34,
+61,61,34,41,32,61,61,41,41,32,40,40,79,32,40,40,80,32,34,47,
+61,34,41,32,47,61,41,41,32,40,40,79,32,40,40,80,32,40,40,79,
+32,35,54,48,41,32,75,41,41,32,60,41,41,32,40,40,79,32,40,40,
+80,32,34,60,61,34,41,32,60,61,41,41,32,40,40,79,32,40,40,80,
+32,40,40,79,32,35,54,50,41,32,75,41,41,32,62,41,41,32,40,40,
+79,32,40,40,80,32,34,62,61,34,41,32,62,61,41,41,32,40,40,79,
+32,40,40,80,32,34,117,60,34,41,32,117,60,41,41,32,40,40,79,32,
+40,40,80,32,34,117,60,61,34,41,32,117,60,61,41,41,32,40,40,79,
+32,40,40,80,32,34,117,62,34,41,32,117,62,41,41,32,40,40,79,32,
+40,40,80,32,34,117,62,61,34,41,32,117,62,61,41,41,32,40,40,79,
+32,40,40,80,32,34,102,97,100,100,34,41,32,102,97,100,100,41,41,32,
+40,40,79,32,40,40,80,32,34,102,115,117,98,34,41,32,102,115,117,98,
+41,41,32,40,40,79,32,40,40,80,32,34,102,109,117,108,34,41,32,102,
+109,117,108,41,41,32,40,40,79,32,40,40,80,32,34,102,100,105,118,34,
+41,32,102,100,105,118,41,41,32,40,40,79,32,40,40,80,32,34,102,101,
+113,34,41,32,102,101,113,41,41,32,40,40,79,32,40,40,80,32,34,102,
+110,101,34,41,32,102,110,101,41,41,32,40,40,79,32,40,40,80,32,34,
+102,108,116,34,41,32,102,108,116,41,41,32,40,40,79,32,40,40,80,32,
+34,102,108,101,34,41,32,102,108,101,41,41,32,40,40,79,32,40,40,80,
+32,34,102,103,116,34,41,32,102,103,116,41,41,32,40,40,79,32,40,40,
+80,32,34,102,103,101,34,41,32,102,103,101,41,41,32,40,40,79,32,40,
+40,80,32,34,102,110,101,103,34,41,32,102,110,101,103,41,41,32,40,40,
+79,32,40,40,80,32,34,102,115,104,111,119,34,41,32,102,115,104,111,119,
+41,41,32,40,40,79,32,40,40,80,32,34,102,114,101,97,100,34,41,32,
+102,114,101,97,100,41,41,32,40,40,79,32,40,40,80,32,34,105,116,111,
+102,34,41,32,105,116,111,102,41,41,32,40,40,79,32,40,40,80,32,34,
+115,101,113,34,41,32,115,101,113,41,41,32,40,40,79,32,40,40,80,32,
+34,101,114,114,111,114,34,41,32,101,114,114,111,114,41,41,32,40,40,79,
+32,40,40,80,32,34,101,113,117,97,108,34,41,32,101,113,117,97,108,41,
+41,32,40,40,79,32,40,40,80,32,34,99,111,109,112,97,114,101,34,41,
+32,99,111,109,112,97,114,101,41,41,32,40,40,79,32,40,40,80,32,34,
+114,110,102,34,41,32,114,110,102,41,41,32,40,40,79,32,40,40,80,32,
+34,110,111,77,97,116,99,104,34,41,32,110,111,77,97,116,99,104,41,41,
+32,40,40,79,32,40,40,80,32,34,110,111,68,101,102,97,117,108,116,34,
+41,32,110,111,68,101,102,97,117,108,116,41,41,32,40,40,79,32,40,40,
+80,32,34,73,79,46,62,62,61,34,41,32,73,79,46,62,62,61,41,41,
+32,40,40,79,32,40,40,80,32,34,73,79,46,62,62,34,41,32,73,79,
+46,62,62,41,41,32,40,40,79,32,40,40,80,32,34,73,79,46,114,101,
+116,117,114,110,34,41,32,73,79,46,114,101,116,117,114,110,41,41,32,40,
+40,79,32,40,40,80,32,34,73,79,46,112,114,105,110,116,34,41,32,73,
+79,46,112,114,105,110,116,41,41,32,40,40,79,32,40,40,80,32,34,73,
+79,46,115,101,114,105,97,108,105,122,101,34,41,32,73,79,46,115,101,114,
+105,97,108,105,122,101,41,41,32,40,40,79,32,40,40,80,32,34,73,79,
+46,100,101,115,101,114,105,97,108,105,122,101,34,41,32,73,79,46,100,101,
+115,101,114,105,97,108,105,122,101,41,41,32,40,40,79,32,40,40,80,32,
+34,73,79,46,115,116,100,105,110,34,41,32,73,79,46,115,116,100,105,110,
+41,41,32,40,40,79,32,40,40,80,32,34,73,79,46,115,116,100,111,117,
+116,34,41,32,73,79,46,115,116,100,111,117,116,41,41,32,40,40,79,32,
+40,40,80,32,34,73,79,46,115,116,100,101,114,114,34,41,32,73,79,46,
+115,116,100,101,114,114,41,41,32,40,40,79,32,40,40,80,32,34,73,79,
+46,103,101,116,65,114,103,115,34,41,32,73,79,46,103,101,116,65,114,103,
+115,41,41,32,40,40,79,32,40,40,80,32,34,73,79,46,100,114,111,112,
+65,114,103,115,34,41,32,73,79,46,100,114,111,112,65,114,103,115,41,41,
+32,40,40,79,32,40,40,80,32,34,73,79,46,112,101,114,102,111,114,109,
+73,79,34,41,32,73,79,46,112,101,114,102,111,114,109,73,79,41,41,32,
+40,40,79,32,40,40,80,32,34,73,79,46,99,97,116,99,104,34,41,32,
+73,79,46,99,97,116,99,104,41,41,32,40,40,79,32,40,40,80,32,34,
+100,121,110,115,121,109,34,41,32,100,121,110,115,121,109,41,41,32,40,40,
+79,32,40,40,80,32,34,110,101,119,67,65,83,116,114,105,110,103,34,41,
+32,110,101,119,67,65,83,116,114,105,110,103,41,41,32,40,40,79,32,40,
+40,80,32,34,112,101,101,107,67,65,83,116,114,105,110,103,34,41,32,112,
+101,101,107,67,65,83,116,114,105,110,103,41,41,32,40,40,79,32,40,40,
+80,32,34,116,111,73,110,116,34,41,32,116,111,73,110,116,41,41,32,40,
+40,79,32,40,40,80,32,34,116,111,80,116,114,34,41,32,116,111,80,116,
+114,41,41,32,40,40,79,32,40,40,80,32,34,116,111,68,98,108,34,41,
+32,116,111,68,98,108,41,41,32,75,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,
+48,53,32,34,68,97,116,97,46,66,111,111,108,95,84,121,112,101,46,34,
+41,32,40,40,65,32,58,49,49,48,54,32,34,68,97,116,97,46,76,105,
+115,116,95,84,121,112,101,46,34,41,32,40,40,65,32,58,49,49,48,55,
+32,34,80,114,105,109,105,116,105,118,101,115,46,73,110,116,34,41,32,40,
+40,65,32,58,49,49,48,56,32,34,80,114,105,109,105,116,105,118,101,115,
+46,87,111,114,100,34,41,32,40,40,65,32,58,49,49,48,57,32,34,80,
+114,105,109,105,116,105,118,101,115,46,68,111,117,98,108,101,34,41,32,40,
+40,65,32,58,49,49,49,48,32,34,80,114,105,109,105,116,105,118,101,115,
+46,67,104,97,114,34,41,32,40,40,65,32,58,49,49,49,49,32,34,68,
+97,116,97,46,73,110,116,101,103,101,114,95,84,121,112,101,46,73,110,116,
+101,103,101,114,34,41,32,40,40,65,32,58,49,49,49,50,32,34,80,114,
+105,109,105,116,105,118,101,115,46,126,34,41,32,40,40,65,32,58,49,49,
+49,51,32,34,80,114,105,109,105,116,105,118,101,115,46,61,62,34,41,32,
+40,40,65,32,58,49,49,49,52,32,34,80,114,105,109,105,116,105,118,101,
+115,46,45,62,34,41,32,40,40,65,32,58,49,49,49,53,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,67,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,49,
+54,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,65,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,
+49,55,32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,32,40,40,
+65,32,58,49,49,49,56,32,80,41,32,40,40,65,32,58,49,49,49,57,
+32,80,41,32,40,40,65,32,58,49,49,50,48,32,40,40,95,50,48,49,
+32,40,40,67,32,66,41,32,40,40,66,32,90,41,32,40,40,67,32,66,
+41,32,40,40,66,32,90,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,95,50,48,50,32,95,56,57,50,41,41,32,95,49,49,51,54,
+41,41,32,95,49,49,51,54,41,41,41,41,41,41,32,40,95,50,48,53,
+32,95,49,49,50,48,41,41,41,32,40,40,65,32,58,49,49,50,49,32,
+40,85,32,65,41,41,32,40,40,65,32,58,49,49,50,50,32,40,40,66,
+32,40,66,32,67,41,41,32,80,41,41,32,40,40,65,32,58,49,49,50,
+51,32,40,40,66,32,85,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,83,39,41,
+41,32,40,40,66,32,40,40,67,39,32,67,39,41,32,40,40,66,32,95,
+49,48,57,57,41,32,95,49,50,50,52,41,41,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,67,32,40,40,40,67,39,32,83,39,41,32,95,49,49,55,51,41,
+32,40,85,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,
+41,41,41,41,41,41,41,41,32,40,85,32,40,75,32,40,90,32,40,90,
+32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,32,40,85,32,
+40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,
+41,41,41,41,32,40,85,32,40,75,32,40,75,32,40,75,32,40,90,32,
+40,90,32,75,41,41,41,41,41,41,41,41,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,41,41,41,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,75,
+41,41,41,41,41,41,41,41,32,40,85,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,65,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,83,39,32,83,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,67,39,32,40,83,39,32,83,41,41,41,32,40,40,66,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,67,41,32,40,40,40,67,39,32,40,67,39,32,67,39,41,41,32,
+40,40,40,67,39,32,66,41,32,95,49,49,50,52,41,32,40,40,66,32,
+40,95,52,52,53,32,40,40,95,50,54,57,32,40,95,50,48,50,32,95,
+56,57,50,41,41,32,95,53,54,53,41,41,41,32,40,40,66,32,95,51,
+57,51,41,32,40,40,66,32,40,95,51,57,52,32,40,85,32,40,75,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,40,
+67,32,79,41,32,75,41,41,41,41,41,41,41,41,41,41,41,32,95,57,
+50,50,41,41,41,41,41,32,40,40,66,32,95,51,57,51,41,32,40,85,
+32,40,90,32,75,41,41,41,41,41,41,32,40,40,66,32,95,57,50,51,
+41,32,95,49,49,52,51,41,41,41,32,40,40,66,32,95,51,57,51,41,
+32,40,85,32,40,75,32,75,41,41,41,41,41,32,40,40,66,32,95,57,
+50,51,41,32,95,49,49,53,48,41,41,41,32,40,40,66,32,95,51,57,
+51,41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,52,49,53,41,41,
+41,41,32,40,40,67,39,32,40,67,39,32,95,51,57,53,41,41,32,40,
+40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,67,41,32,40,40,66,32,40,67,32,95,49,49,50,54,41,41,
+32,95,49,49,52,49,41,41,32,95,49,49,52,50,41,41,32,95,49,49,
+52,53,41,41,32,95,49,49,52,56,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,95,57,50,52,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,95,51,57,52,32,40,85,
+32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,80,41,32,75,41,
+41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+40,67,39,32,40,67,39,32,95,52,54,50,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,66,39,32,80,41,41,32,95,49,49,51,50,41,41,
+41,32,40,95,51,57,52,32,40,85,32,40,40,67,32,66,41,32,40,90,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,32,40,40,67,39,32,40,67,39,32,
+80,41,41,32,95,52,55,49,41,41,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,32,95,49,49,51,52,41,41,41,32,40,95,51,57,53,32,
+95,49,49,50,53,41,41,41,41,32,40,40,65,32,58,49,49,50,52,32,
+40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,40,
+66,39,32,40,40,66,32,40,83,39,32,66,41,41,32,40,40,66,32,40,
+66,32,95,49,52,56,49,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,95,49,52,56,49,41,32,40,89,32,40,40,66,32,40,80,32,
+95,49,51,52,49,41,41,32,40,40,66,32,40,67,32,66,41,41,32,40,
+40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,66,32,
+40,67,32,95,49,52,56,49,41,41,41,41,41,41,41,41,41,32,40,89,
+32,40,40,66,32,40,80,32,95,49,51,52,49,41,41,32,40,40,66,32,
+40,67,32,66,41,41,32,40,40,66,32,90,41,32,40,66,32,40,67,32,
+95,49,52,56,49,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+95,49,49,49,53,41,41,32,40,40,65,32,58,49,49,50,53,32,40,40,
+83,32,73,41,32,40,40,66,32,40,83,32,66,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,80,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,
+32,40,40,67,39,32,66,41,32,66,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,
+41,41,41,41,41,41,41,41,32,40,40,67,32,40,40,40,67,39,32,83,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,66,39,32,80,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,67,39,
+32,67,41,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,83,39,32,67,41,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,67,39,32,67,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,67,39,32,67,
+41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,
+66,41,41,32,40,40,66,32,40,66,32,67,39,41,41,32,40,40,66,32,
+40,66,32,67,39,41,41,32,95,49,49,49,53,41,41,41,41,32,40,40,
+66,32,40,66,32,40,40,83,39,32,40,83,39,32,95,50,54,49,41,41,
+32,40,40,66,32,40,66,32,95,51,57,53,41,41,32,40,40,66,32,40,
+66,32,40,83,32,73,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,90,41,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,39,41,41,41,32,
+67,41,32,40,40,40,67,39,32,67,41,32,95,49,49,49,55,41,32,95,
+52,54,49,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,67,39,
+32,40,67,39,32,95,51,57,54,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,85,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,
+66,32,40,40,67,39,32,66,41,32,67,41,41,32,40,40,66,32,95,52,
+54,51,41,32,40,95,51,57,52,32,40,40,67,32,40,40,80,32,40,75,
+32,75,41,41,32,40,40,67,32,79,41,32,75,41,41,41,32,40,75,32,
+75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,67,39,32,95,51,57,54,41,41,32,40,40,66,32,40,66,32,85,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,82,41,
+32,40,95,51,57,52,32,40,40,67,32,40,40,80,32,40,75,32,75,41,
+41,32,40,75,32,75,41,41,41,32,40,40,67,32,79,41,32,75,41,41,
+41,41,41,41,41,41,41,41,41,32,40,95,51,57,52,32,40,40,67,32,
+40,40,80,32,40,40,67,32,79,41,32,75,41,41,32,40,75,32,75,41,
+41,41,32,40,75,32,75,41,41,41,41,41,41,32,40,40,67,39,32,40,
+67,39,32,40,95,50,48,51,32,95,49,49,55,41,41,41,32,40,95,52,
+51,50,32,95,56,57,50,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,49,50,54,32,40,40,40,67,39,32,40,67,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,67,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,
+32,40,66,39,32,40,66,39,32,40,40,66,32,80,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,67,32,95,57,50,
+56,41,41,32,40,40,40,83,39,32,95,50,54,49,41,32,40,40,66,32,
+95,56,51,54,41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,32,
+40,40,66,32,40,95,52,54,51,32,34,117,110,100,101,102,105,110,101,100,
+32,109,111,100,117,108,101,58,32,34,41,41,32,95,57,48,50,41,41,41,
+41,32,40,85,32,40,75,32,40,75,32,40,90,32,40,40,66,32,90,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,
+67,39,32,40,67,39,32,40,83,39,32,80,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+79,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,
+67,39,32,66,41,41,32,95,49,49,49,55,41,41,41,32,95,49,49,51,
+51,41,41,32,75,41,41,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,67,41,32,40,67,32,95,57,50,56,41,41,32,95,52,54,
+49,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,80,41,
+32,75,41,41,41,41,32,95,52,54,49,41,41,32,95,49,49,50,56,41,
+41,41,32,40,67,32,95,49,49,50,55,41,41,41,41,32,40,40,66,32,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,80,41,41,32,40,40,40,67,39,32,
+40,67,39,32,79,41,41,32,40,40,40,67,39,32,67,41,32,95,49,49,
+49,55,41,32,95,52,54,49,41,41,32,75,41,41,41,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,67,32,95,57,
+50,56,41,41,32,95,52,54,49,41,41,32,40,40,40,67,39,32,40,67,
+39,32,79,41,41,32,80,41,32,75,41,41,41,41,32,95,52,54,49,41,
+41,32,95,49,49,50,56,41,41,41,32,40,67,32,95,49,49,50,55,41,
+41,41,41,32,40,40,66,32,40,66,32,40,67,32,40,40,80,32,95,52,
+54,49,41,32,95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,79,41,41,32,40,40,66,32,40,83,32,95,49,49,49,56,41,
+41,32,40,67,32,95,49,49,50,55,41,41,41,32,75,41,41,41,41,32,
+40,40,65,32,58,49,49,50,55,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,95,50,54,49,41,32,40,40,40,67,39,32,95,49,55,55,41,
+32,40,40,66,32,95,56,51,54,41,32,40,95,56,48,53,32,95,56,48,
+55,41,41,41,32,95,50,54,52,41,41,41,32,40,95,49,51,51,51,32,
+34,101,120,112,111,114,116,34,41,41,41,32,40,40,65,32,58,49,49,50,
+56,32,40,40,67,32,40,40,67,32,66,41,32,40,40,66,32,90,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,
+39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,
+40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,40,80,32,73,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,41,41,32,40,95,50,
+52,32,34,116,121,81,73,100,101,110,116,34,41,41,41,32,40,40,65,32,
+58,49,49,50,57,32,40,40,66,32,40,95,50,54,51,32,95,55,52,51,
+41,41,32,95,56,57,56,41,41,32,40,40,65,32,58,49,49,51,48,32,
+40,40,67,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,40,67,39,32,
+83,39,41,32,40,40,80,32,73,41,32,40,90,32,95,49,49,51,48,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,95,50,52,32,
+34,103,101,116,65,112,112,67,111,110,34,41,41,41,32,40,40,65,32,58,
+49,49,51,49,32,40,40,89,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,39,41,
+41,41,32,40,40,66,32,40,40,83,39,32,80,41,32,40,67,32,80,41,
+41,41,32,40,40,40,67,39,32,66,41,32,67,39,41,32,40,67,32,95,
+52,54,50,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,
+90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,95,50,52,32,34,103,101,116,65,112,112,34,41,41,41,32,95,52,54,
+49,41,41,32,40,40,65,32,58,49,49,51,50,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,40,83,39,32,83,41,41,32,40,40,40,
+67,39,32,40,83,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,83,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,83,39,32,
+83,41,32,40,40,40,83,39,32,40,67,39,32,67,39,41,41,32,40,40,
+66,32,40,66,32,67,39,41,41,32,40,40,66,32,40,83,32,95,49,49,
+49,53,41,41,32,40,40,67,39,32,95,51,57,52,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,66,32,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,40,75,32,
+75,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,
+40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,
+32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,75,41,41,41,
+32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,95,51,57,52,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,32,40,40,66,32,40,67,39,32,80,
+41,41,32,95,57,48,53,41,41,32,75,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,75,32,75,
+41,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,
+32,95,52,54,51,41,41,41,32,40,40,67,39,32,40,67,39,32,95,51,
+57,52,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,
+32,80,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,85,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,79,41,41,41,32,40,40,66,
+32,83,41,32,40,83,32,95,49,49,49,55,41,41,41,32,75,41,41,41,
+41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,
+32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,
+75,32,40,75,32,75,41,41,41,41,32,40,75,32,75,41,41,41,32,40,
+75,32,40,75,32,40,75,32,75,41,41,41,41,41,32,40,75,32,40,75,
+32,75,41,41,41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,
+41,41,41,41,41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,
+41,41,41,41,41,41,32,40,75,32,75,41,41,41,41,32,40,40,40,83,
+39,32,40,83,39,32,40,83,39,32,95,52,54,51,41,41,41,32,40,40,
+67,39,32,40,67,39,32,95,51,57,52,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,66,32,40,66,32,40,80,32,40,75,32,40,75,32,75,41,41,41,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,85,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,79,41,41,41,32,40,40,66,32,83,
+41,32,40,83,32,95,49,49,49,55,41,41,41,32,75,41,41,41,41,41,
+41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,
+75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,
+32,75,41,41,41,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,
+41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,
+40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,75,32,40,75,32,
+40,75,32,40,75,32,75,41,41,41,41,41,41,32,40,75,32,75,41,41,
+41,41,32,40,40,40,83,39,32,40,83,39,32,40,67,39,32,95,52,54,
+51,41,41,41,32,40,40,67,39,32,40,67,39,32,95,51,57,52,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,80,32,40,75,32,40,75,32,75,41,41,41,32,40,75,
+32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,
+41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,
+75,41,41,41,41,32,40,75,32,75,41,41,41,32,40,75,32,40,75,32,
+40,75,32,75,41,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,
+41,41,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+85,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,79,41,41,41,32,40,40,66,32,83,41,
+32,40,83,32,95,49,49,49,55,41,41,41,32,75,41,41,41,41,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,
+41,41,32,40,75,32,75,41,41,41,41,32,40,40,67,39,32,95,51,57,
+52,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,
+67,32,40,40,80,32,40,75,32,40,75,32,75,41,41,41,32,40,75,32,
+40,75,32,75,41,41,41,41,41,32,40,40,66,32,90,41,32,40,40,66,
+32,85,41,32,40,40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,
+32,79,41,41,32,40,40,40,67,39,32,67,41,32,40,83,32,95,49,49,
+49,55,41,41,32,95,52,54,49,41,41,32,75,41,41,41,41,41,41,32,
+40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,
+41,41,41,32,40,75,32,75,41,41,41,32,40,75,32,40,75,32,40,75,
+32,75,41,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,
+40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,
+40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,41,32,
+40,75,32,75,41,41,41,41,41,41,41,41,32,40,40,67,39,32,95,51,
+57,52,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,
+40,67,32,40,40,80,32,40,75,32,40,75,32,75,41,41,41,32,40,75,
+32,40,75,32,75,41,41,41,41,41,32,40,40,66,32,40,67,32,66,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+79,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,57,
+48,53,41,41,41,32,40,67,32,95,55,54,48,41,41,41,32,75,41,41,
+41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,
+32,75,41,41,41,41,32,40,75,32,75,41,41,41,32,40,75,32,40,75,
+32,40,75,32,75,41,41,41,41,41,32,40,75,32,40,75,32,75,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,
+41,41,32,40,75,32,75,41,41,41,41,41,41,32,40,40,66,32,95,57,
+50,51,41,32,95,49,49,52,56,41,41,41,32,40,40,66,32,95,57,50,
+51,41,32,95,49,49,53,48,41,41,41,32,40,40,67,39,32,95,51,57,
+52,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,66,
+32,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,40,
+75,32,75,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,
+75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,79,41,
+41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,95,49,49,49,56,
+41,41,32,40,40,66,32,40,66,32,95,49,49,49,57,41,41,32,40,40,
+66,32,40,66,32,95,55,52,51,41,41,32,95,57,48,53,41,41,41,41,
+32,75,41,41,41,32,40,75,32,75,41,41,41,32,40,75,32,40,75,32,
+40,75,32,75,41,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,
+41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,
+41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,41,41,
+41,32,40,75,32,75,41,41,41,41,41,32,95,49,51,48,50,41,41,32,
+40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,40,83,39,32,95,
+49,49,51,51,41,32,95,49,49,52,50,41,32,95,49,49,52,53,41,41,
+41,32,95,57,48,53,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+66,32,40,40,67,39,32,40,67,39,32,40,95,49,51,51,51,32,75,41,
+41,41,32,95,57,48,53,41,41,32,95,49,49,52,49,41,41,32,40,75,
+32,95,49,51,48,50,41,41,41,32,73,41,41,41,32,95,49,49,52,55,
+41,41,32,40,40,65,32,58,49,49,51,51,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,40,40,66,32,95,51,57,53,41,32,40,40,66,32,
+40,40,83,39,32,95,49,49,49,56,41,32,95,57,48,57,41,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,67,32,
+40,95,49,51,51,51,32,75,41,41,41,32,40,75,32,95,49,51,48,50,
+41,41,41,32,73,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,
+50,54,49,32,40,95,52,55,49,32,95,52,54,49,41,41,41,41,32,40,
+67,32,95,57,50,56,41,41,41,41,32,40,40,65,32,58,49,49,51,52,
+32,40,40,67,32,40,40,40,83,39,32,40,67,39,32,67,41,41,32,40,
+40,40,83,39,32,40,83,39,32,67,41,41,32,40,40,40,83,39,32,40,
+67,39,32,67,41,41,32,40,40,40,83,39,32,40,67,39,32,67,41,41,
+32,40,40,40,83,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,
+32,66,41,32,40,40,66,32,80,41,32,40,40,66,32,95,57,50,52,41,
+32,40,95,51,57,52,32,40,85,32,40,75,32,40,85,32,40,75,32,40,
+90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,
+49,32,40,95,49,51,51,52,32,40,95,52,51,56,32,95,49,49,50,48,
+41,41,41,41,41,32,40,40,67,39,32,95,51,57,52,41,32,40,40,66,
+32,85,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,90,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,95,51,57,52,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,90,41,41,41,41,32,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,95,51,57,52,41,32,40,40,40,67,39,32,40,
+67,39,32,79,41,41,32,40,40,66,32,40,67,32,80,41,41,32,40,40,
+67,32,79,41,32,75,41,41,41,32,75,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,95,57,50,52,
+41,32,40,95,51,57,52,32,40,85,32,40,75,32,40,85,32,40,75,32,
+40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,95,50,54,49,32,
+95,57,50,52,41,41,32,40,95,51,57,52,32,40,85,32,40,75,32,40,
+85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,
+75,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+95,50,54,49,32,40,95,57,50,53,32,95,49,49,51,53,41,41,41,32,
+40,95,51,57,52,32,40,85,32,40,75,32,40,85,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,41,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,
+32,40,95,49,51,51,52,32,40,95,52,51,56,32,95,49,49,50,48,41,
+41,41,41,41,32,40,40,67,39,32,95,51,57,52,41,32,40,40,66,32,
+85,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,
+41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,66,41,41,41,
+32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,67,39,32,95,52,54,51,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,95,51,57,52,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,85,41,41,41,32,40,66,32,40,66,32,40,66,32,40,40,
+67,39,32,95,51,57,52,41,32,40,40,40,67,39,32,40,67,39,32,79,
+41,41,32,40,40,66,32,40,67,32,80,41,41,32,40,40,67,32,79,41,
+32,75,41,41,41,32,75,41,41,41,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,52,54,51,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,51,57,52,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,40,66,32,95,51,57,52,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,85,41,41,41,32,40,66,32,40,66,32,40,66,
+32,40,40,67,39,32,95,51,57,52,41,32,40,40,40,67,39,32,40,67,
+39,32,79,41,41,32,40,40,66,32,40,67,32,80,41,41,32,40,40,67,
+32,79,41,32,75,41,41,41,32,75,41,41,41,41,41,41,41,41,41,41,
+41,41,41,32,40,95,51,57,52,32,40,85,32,40,40,66,32,85,41,32,
+40,90,32,40,90,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,40,67,32,40,40,40,67,39,32,40,67,39,32,79,41,41,
+32,40,40,66,32,40,83,32,80,41,41,32,40,40,40,67,39,32,40,67,
+39,32,79,41,41,32,40,40,67,39,32,95,49,49,49,57,41,32,95,55,
+52,51,41,41,32,75,41,41,41,32,75,41,41,41,32,95,49,50,53,49,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,95,50,54,49,32,95,57,50,52,41,41,32,40,95,
+51,57,52,32,40,85,32,40,40,67,32,66,41,32,40,90,32,40,90,32,
+40,40,66,32,90,41,32,40,40,67,32,66,41,32,40,40,66,32,90,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,40,67,32,40,40,67,39,32,95,51,57,52,41,32,40,40,66,
+32,85,41,32,40,40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,79,41,41,41,32,40,40,40,83,39,32,40,67,39,32,
+66,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,57,48,53,41,
+41,32,40,40,66,32,95,51,57,52,41,32,40,40,66,32,85,41,32,40,
+40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,
+95,57,48,53,41,32,75,41,41,41,41,41,41,32,75,41,41,41,41,41,
+41,41,32,40,67,32,95,52,55,49,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,40,
+66,32,90,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,
+66,41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,40,67,32,
+83,39,41,41,32,40,40,40,83,39,32,66,41,32,79,41,32,40,40,40,
+67,39,32,40,67,39,32,79,41,41,32,40,67,32,95,57,48,53,41,41,
+32,75,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,
+32,40,67,32,95,57,48,53,41,41,32,75,41,41,41,41,32,95,52,55,
+49,41,41,41,41,41,41,32,40,40,65,32,58,49,49,51,53,32,40,40,
+67,32,66,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,66,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,67,39,32,67,39,41,41,32,40,40,66,32,40,66,
+32,95,49,49,50,50,41,41,32,40,40,66,32,40,67,32,40,95,51,57,
+55,32,40,40,95,50,54,49,32,95,50,54,56,41,32,40,95,57,51,48,
+32,75,41,41,41,41,41,32,95,57,50,51,41,41,41,41,32,40,95,52,
+51,57,32,95,49,49,51,55,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,49,51,54,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,80,32,73,41,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,
+49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,
+32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,
+49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,
+32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,
+49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,
+41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,
+32,40,75,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,
+32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,
+50,41,41,41,32,95,55,55,50,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,40,65,32,58,49,49,51,55,32,40,40,
+67,32,66,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,67,32,66,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+95,56,50,52,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,51,
+56,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,67,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,67,41,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,80,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,49,49,51,57,32,75,41,32,40,40,65,32,58,49,49,52,48,32,
+65,41,32,40,40,65,32,58,49,49,52,49,32,40,85,32,40,75,32,40,
+75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,
+41,41,41,32,40,40,65,32,58,49,49,52,50,32,40,85,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,49,49,52,51,32,40,85,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,
+90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,65,32,58,49,49,52,52,32,40,85,32,40,
+75,32,40,75,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,65,32,58,49,49,52,53,32,40,85,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,
+41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,52,54,32,40,85,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,52,55,32,40,
+85,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,
+40,90,32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,52,56,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,52,57,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,90,32,40,90,32,40,90,32,75,41,41,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,53,
+48,32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,90,32,40,90,
+32,40,85,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,49,53,49,32,40,85,32,40,75,32,40,75,32,
+40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,90,32,40,90,32,40,85,32,65,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,53,50,32,
+40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,75,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,53,51,
+32,40,85,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,
+75,32,40,75,32,40,75,32,40,75,32,40,75,32,40,75,32,65,41,41,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,53,
+52,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,95,54,51,
+41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,90,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,32,95,49,49,51,56,41,41,
+41,41,41,41,32,40,40,65,32,58,49,49,53,53,32,40,40,66,32,40,
+40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,32,40,40,66,32,
+85,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,
+50,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,67,39,32,
+40,67,39,32,67,41,41,32,95,49,49,51,56,41,41,41,41,41,41,32,
+40,40,65,32,58,49,49,53,54,32,40,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,95,54,51,41,41,32,40,40,66,32,85,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,
+41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,95,49,49,51,56,41,41,41,
+41,41,41,32,40,40,65,32,58,49,49,53,55,32,40,40,66,32,40,40,
+95,51,50,32,95,53,56,41,32,95,54,51,41,41,32,40,40,66,32,85,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,90,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,
+41,41,32,95,49,49,51,56,41,41,41,41,41,41,32,40,40,65,32,58,
+49,49,53,56,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+95,54,51,41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,41,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,95,54,50,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,
+41,41,32,95,49,49,51,56,41,41,41,41,41,41,32,40,40,65,32,58,
+49,49,53,57,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+95,54,51,41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,40,67,39,32,66,41,32,66,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,90,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,95,54,50,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,39,41,
+41,41,41,41,41,41,41,41,41,32,95,49,49,51,56,41,41,32,80,41,
+41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,54,48,32,40,40,
+66,32,40,40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,32,40,
+40,66,32,85,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,40,67,39,32,66,41,32,66,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,90,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+95,54,50,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,39,41,41,41,41,
+41,41,41,41,41,41,32,95,49,49,51,56,41,41,32,40,67,32,80,41,
+41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,54,49,32,40,
+40,66,32,40,40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,32,
+40,40,66,32,85,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,90,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,41,41,
+41,41,41,32,95,49,49,51,56,41,41,41,41,41,41,32,40,40,65,32,
+58,49,49,54,50,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,
+32,95,54,51,41,41,32,40,40,66,32,85,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,95,54,50,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,41,32,
+95,49,49,51,56,41,41,41,41,41,41,32,40,40,65,32,58,49,49,54,
+51,32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+40,95,54,52,32,95,49,49,52,57,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,40,66,32,40,95,51,51,32,95,53,56,
+41,41,32,95,49,49,53,56,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,95,51,50,32,95,53,56,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,95,51,51,32,95,53,56,41,41,32,95,49,49,53,
+56,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,32,40,
+40,65,32,58,49,49,54,52,32,40,40,66,32,40,40,95,51,50,32,95,
+53,56,41,32,95,54,51,41,41,32,40,40,66,32,85,41,32,40,40,66,
+32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,95,51,51,32,95,53,
+56,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,41,41,41,41,41,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,95,49,49,
+51,56,41,32,95,49,49,56,49,41,41,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,95,51,50,32,95,53,56,41,41,32,40,40,66,32,
+40,66,32,40,40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,41,
+32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,90,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,95,51,51,32,95,53,56,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,41,41,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,67,41,41,41,32,95,49,49,51,56,41,41,41,41,41,
+32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,49,54,53,32,40,40,66,32,40,66,32,40,40,95,
+51,50,32,95,53,56,41,32,95,54,51,41,41,41,32,40,40,66,32,40,
+66,32,85,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,54,
+50,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,41,32,95,49,
+49,51,56,41,41,41,32,95,57,50,57,41,41,41,41,41,32,40,40,65,
+32,58,49,49,54,54,32,40,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,95,54,51,41,41,41,32,40,40,66,32,40,66,32,85,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,54,50,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,41,41,41,41,41,41,32,95,49,49,51,56,41,41,41,32,95,
+57,50,57,41,41,41,41,41,32,40,40,65,32,58,49,49,54,55,32,40,
+40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,40,95,52,
+51,32,95,53,56,41,32,40,85,32,40,40,66,32,40,66,32,40,66,32,
+40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,
+41,41,32,95,49,49,57,54,41,41,41,41,41,32,40,40,66,32,40,40,
+83,39,32,40,83,39,32,66,41,41,32,40,40,40,67,39,32,40,67,39,
+32,67,39,41,41,32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,
+32,95,49,49,51,49,41,41,41,32,40,40,40,83,39,32,66,41,32,40,
+66,39,32,40,40,66,32,40,83,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,66,32,40,66,32,40,40,67,39,32,67,39,41,32,40,40,66,32,67,
+39,41,32,83,39,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,39,41,32,
+83,39,41,41,41,32,40,40,66,32,40,66,32,40,67,32,66,41,41,41,
+32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,80,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,
+40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,
+67,39,32,67,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,67,32,67,39,41,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,67,39,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,95,50,54,
+49,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,80,41,41,41,32,40,40,66,
+32,67,41,32,40,40,40,67,39,32,40,67,39,32,95,49,49,50,50,41,
+41,32,40,67,32,95,57,50,49,41,41,32,95,52,54,49,41,41,41,41,
+41,41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,41,41,41,32,40,90,32,75,
+41,41,41,41,32,40,90,32,75,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,85,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+40,67,39,32,66,41,32,40,66,39,32,80,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,67,39,32,40,67,39,32,40,95,49,49,50,50,32,
+95,57,50,48,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,79,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,83,39,32,67,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,80,41,41,
+32,40,40,67,39,32,95,51,57,53,41,32,95,56,50,50,41,41,41,41,
+32,40,40,67,39,32,95,51,57,53,41,32,95,56,50,50,41,41,41,32,
+75,41,41,41,41,41,32,40,40,67,32,40,95,52,49,51,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,80,41,32,95,55,57,56,41,41,32,
+95,55,53,56,41,41,41,32,40,40,40,95,49,56,53,32,95,49,57,56,
+41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,
+32,35,45,49,41,41,41,32,40,40,95,52,56,53,32,95,50,55,55,41,
+32,40,95,51,53,57,32,35,45,50,41,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,
+54,52,32,95,49,49,53,48,41,41,41,32,40,40,66,32,40,66,32,40,
+95,50,54,49,32,95,49,49,53,57,41,41,41,32,40,67,32,40,95,51,
+57,55,32,40,40,95,50,54,49,32,95,50,54,56,41,32,40,95,57,51,
+48,32,95,49,49,51,53,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,49,54,56,32,40,40,66,32,40,40,67,39,32,40,95,51,50,32,
+95,53,56,41,41,32,95,49,49,57,54,41,41,32,40,40,66,32,40,66,
+32,40,40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,41,32,40,
+40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,95,50,54,
+49,32,95,54,50,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,
+41,41,41,41,41,41,32,95,49,49,51,56,41,41,41,32,40,40,66,32,
+40,66,32,95,52,54,50,41,41,32,80,41,41,41,41,41,41,41,32,40,
+40,65,32,58,49,49,54,57,32,40,40,67,32,83,41,32,40,40,66,32,
+40,67,32,66,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,
+67,39,32,95,50,54,49,41,41,32,95,49,49,55,48,41,41,41,32,40,
+67,32,95,49,49,54,57,41,41,41,41,41,32,40,40,65,32,58,49,49,
+55,48,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,
+95,51,50,32,95,53,56,41,41,32,40,40,40,67,39,32,40,95,51,50,
+32,95,53,56,41,41,32,95,49,49,57,54,41,32,95,49,49,57,55,41,
+41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,95,51,51,
+32,95,53,56,41,41,32,40,40,40,67,39,32,95,50,54,49,41,32,40,
+40,66,32,40,95,52,53,32,95,53,56,41,41,32,40,40,66,32,95,49,
+50,50,41,32,40,40,66,32,95,51,57,50,41,32,40,40,66,32,95,49,
+51,49,50,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,32,
+95,49,51,48,50,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,
+83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,32,40,40,66,32,40,66,32,40,67,32,40,40,
+67,32,83,39,41,32,75,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,40,
+83,39,32,40,67,39,32,67,39,41,41,32,40,40,66,32,85,41,32,75,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,
+40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,67,32,67,39,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,
+67,41,32,40,67,32,40,40,67,32,40,95,50,48,50,32,95,56,57,50,
+41,41,32,40,95,56,57,55,32,95,49,49,49,50,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,67,39,32,67,41,41,32,40,40,66,32,67,
+41,32,95,49,49,55,50,41,41,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,
+32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,
+40,66,32,67,41,32,95,49,49,55,49,41,41,41,41,41,32,40,40,65,
+32,58,49,49,55,49,32,40,40,66,32,40,66,32,40,66,32,40,40,95,
+51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,53,48,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,66,39,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,53,
+56,41,41,41,32,40,40,66,32,95,49,51,49,55,41,32,95,55,52,51,
+41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,95,51,
+51,32,95,53,56,41,41,32,95,49,49,54,55,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,95,51,50,32,95,53,56,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,53,56,41,41,
+32,95,49,49,53,57,41,41,32,40,95,51,52,32,95,53,56,41,41,41,
+41,41,41,41,32,40,40,65,32,58,49,49,55,50,32,40,75,32,40,40,
+66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,
+95,54,52,32,95,49,49,53,49,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,83,39,32,
+40,95,51,51,32,95,53,56,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,95,49,49,54,48,41,41,41,32,95,49,51,51,48,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,95,51,50,32,95,53,56,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,
+53,56,41,41,32,95,49,49,54,48,41,41,32,40,95,51,52,32,95,53,
+56,41,41,41,41,41,41,41,32,40,40,65,32,58,49,49,55,51,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,67,39,32,67,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,67,39,32,67,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,67,32,95,49,
+49,51,56,41,32,35,49,41,41,32,40,40,67,32,40,95,51,57,55,32,
+40,95,50,54,56,32,95,49,51,51,56,41,41,41,32,95,49,49,56,50,
+41,41,41,32,40,40,67,32,40,95,51,57,55,32,40,95,50,54,56,32,
+95,49,51,51,56,41,41,41,32,95,49,49,56,51,41,41,41,32,95,50,
+57,48,41,41,32,95,49,49,51,57,41,41,41,41,32,40,40,67,32,80,
+41,32,95,52,54,49,41,41,41,32,95,52,54,49,41,41,32,95,52,54,
+49,41,41,32,40,40,65,32,58,49,49,55,52,32,95,55,57,57,41,32,
+40,40,65,32,58,49,49,55,53,32,40,40,95,49,49,57,48,32,95,55,
+57,57,41,32,95,55,57,57,41,41,32,40,40,65,32,58,49,49,55,54,
+32,40,40,95,50,54,49,32,40,95,49,49,57,48,32,95,55,57,57,41,
+41,32,40,40,95,49,49,57,48,32,95,55,57,57,41,32,95,55,57,57,
+41,41,41,32,40,40,65,32,58,49,49,55,55,32,40,40,95,50,54,49,
+32,40,95,49,49,57,48,32,95,56,48,48,41,41,32,40,40,95,49,49,
+57,48,32,95,55,57,57,41,32,95,55,57,57,41,41,41,32,40,40,65,
+32,58,49,49,55,56,32,40,40,95,49,49,57,48,32,95,55,57,57,41,
+32,40,40,95,49,49,57,48,32,95,55,57,57,41,32,95,56,48,48,41,
+41,41,32,40,40,65,32,58,49,49,55,57,32,40,40,40,95,56,56,57,
+32,34,98,117,105,108,116,105,110,34,41,32,35,48,41,32,35,48,41,41,
+32,40,40,65,32,58,49,49,56,48,32,40,95,56,57,56,32,95,49,49,
+55,57,41,41,32,40,40,65,32,58,49,49,56,49,32,40,40,40,66,32,
+95,49,51,51,53,41,32,40,40,40,83,39,32,79,41,32,40,40,66,32,
+40,80,32,40,95,49,49,56,48,32,34,80,114,105,109,105,116,105,118,101,
+115,46,84,121,112,101,34,41,41,41,32,40,40,40,67,39,32,79,41,32,
+40,40,80,32,34,80,114,105,109,105,116,105,118,101,115,46,84,121,112,101,
+34,41,32,95,49,49,55,52,41,41,32,75,41,41,41,32,40,40,40,83,
+39,32,79,41,32,40,40,66,32,40,80,32,40,95,49,49,56,48,32,34,
+84,121,112,101,34,41,41,41,32,40,40,40,67,39,32,79,41,32,40,40,
+80,32,34,80,114,105,109,105,116,105,118,101,115,46,84,121,112,101,34,41,
+32,95,49,49,55,52,41,41,32,75,41,41,41,32,40,40,40,83,39,32,
+79,41,32,40,40,66,32,40,80,32,40,95,49,49,56,48,32,34,67,111,
+110,115,116,114,97,105,110,116,34,41,41,41,32,40,40,40,67,39,32,79,
+41,32,40,40,80,32,34,80,114,105,109,105,116,105,118,101,115,46,67,111,
+110,115,116,114,97,105,110,116,34,41,32,95,49,49,55,52,41,41,32,75,
+41,41,41,32,40,40,40,83,39,32,79,41,32,40,40,66,32,40,80,32,
+40,95,49,49,56,48,32,34,80,114,105,109,105,116,105,118,101,115,46,67,
+111,110,115,116,114,97,105,110,116,34,41,41,41,32,40,40,40,67,39,32,
+79,41,32,40,40,80,32,34,80,114,105,109,105,116,105,118,101,115,46,67,
+111,110,115,116,114,97,105,110,116,34,41,32,95,49,49,55,52,41,41,32,
+75,41,41,41,32,40,40,40,83,39,32,79,41,32,40,40,66,32,40,80,
+32,40,95,49,49,56,48,32,95,49,49,49,52,41,41,41,32,40,40,40,
+67,39,32,79,41,32,40,40,80,32,95,49,49,49,52,41,32,95,49,49,
+55,54,41,41,32,75,41,41,41,32,40,40,40,67,39,32,79,41,32,40,
+40,66,32,40,80,32,40,95,49,49,56,48,32,34,45,62,34,41,41,41,
+32,40,40,40,67,39,32,79,41,32,40,40,80,32,95,49,49,49,52,41,
+32,95,49,49,55,54,41,41,32,75,41,41,41,32,75,41,41,41,41,41,
+41,41,32,40,40,66,32,95,49,49,49,57,41,32,40,40,66,32,95,55,
+52,51,41,32,95,49,49,56,48,41,41,41,41,32,40,40,65,32,58,49,
+49,56,50,32,40,40,40,83,32,40,40,40,67,39,32,40,67,39,32,40,
+40,83,39,32,95,52,54,51,41,32,40,40,40,83,39,32,79,41,32,40,
+40,66,32,40,80,32,40,95,49,49,56,48,32,34,45,62,34,41,41,41,
+32,40,40,40,67,39,32,79,41,32,40,40,80,32,95,49,49,49,52,41,
+32,95,49,49,55,54,41,41,32,75,41,41,41,32,40,40,40,83,39,32,
+79,41,32,40,40,66,32,40,80,32,40,95,49,49,56,48,32,34,61,62,
+34,41,41,41,32,40,40,40,67,39,32,79,41,32,40,40,80,32,95,49,
+49,49,51,41,32,95,49,49,55,55,41,41,32,75,41,41,41,32,40,40,
+40,83,39,32,79,41,32,40,40,66,32,40,80,32,40,95,49,49,56,48,
+32,40,40,79,32,35,49,50,54,41,32,75,41,41,41,41,32,40,40,40,
+67,39,32,79,41,32,40,40,80,32,95,49,49,49,50,41,32,95,49,49,
+55,56,41,41,32,75,41,41,41,32,40,40,40,67,39,32,79,41,32,40,
+40,66,32,40,80,32,40,95,49,49,56,48,32,40,40,95,52,54,51,32,
+95,49,49,48,54,41,32,34,91,93,34,41,41,41,41,32,40,40,40,67,
+39,32,79,41,32,40,40,80,32,40,40,95,52,54,51,32,95,49,49,48,
+54,41,32,34,91,93,34,41,41,32,95,49,49,55,53,41,41,32,75,41,
+41,41,32,75,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,95,51,57,53,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,83,39,32,40,83,32,80,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,79,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,
+67,39,32,66,41,32,40,40,66,32,40,67,39,32,95,50,54,49,41,41,
+32,40,40,67,32,66,41,32,95,57,48,48,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,
+32,40,40,66,32,95,55,54,48,41,32,40,40,40,67,39,32,79,41,32,
+40,40,67,32,95,55,57,54,41,32,95,49,49,55,52,41,41,32,75,41,
+41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,95,51,57,55,32,
+95,49,49,57,48,41,41,32,40,67,32,95,52,52,54,41,41,41,41,41,
+32,75,41,41,32,40,95,56,48,49,32,95,49,49,55,57,41,41,41,32,
+40,40,40,95,49,56,54,32,95,49,57,56,41,32,40,40,95,52,56,53,
+32,95,50,55,55,41,32,40,95,51,53,57,32,35,50,41,41,41,32,40,
+40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,
+48,41,41,41,41,41,32,40,40,66,32,95,49,49,49,57,41,32,40,40,
+66,32,95,55,52,51,41,32,95,49,49,56,48,41,41,41,41,32,95,55,
+52,51,41,32,40,95,56,57,55,32,40,40,79,32,35,49,48,55,41,32,
+75,41,41,41,41,32,40,40,65,32,58,49,49,56,51,32,40,40,95,51,
+57,53,32,40,40,83,32,40,40,40,67,39,32,83,41,32,40,40,40,83,
+39,32,40,67,39,32,40,67,39,32,40,83,32,80,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,79,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,
+40,83,39,32,95,50,54,49,41,41,32,40,40,66,32,40,66,32,95,49,
+49,49,57,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,
+55,53,57,41,41,41,32,40,40,40,67,39,32,40,83,39,32,95,55,54,
+51,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,67,
+32,80,41,41,32,75,41,41,32,73,41,41,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,
+95,55,54,48,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,95,
+51,57,55,32,95,49,49,56,56,41,41,41,32,40,67,32,95,49,49,56,
+55,41,41,32,73,41,41,41,41,32,75,41,41,32,40,95,56,48,49,32,
+95,49,49,55,57,41,41,41,32,40,95,51,57,53,32,95,49,49,56,53,
+41,41,41,32,40,40,66,32,40,95,51,57,52,32,40,40,40,67,39,32,
+79,41,32,40,40,40,67,39,32,95,55,57,54,41,32,40,40,66,32,95,
+56,57,55,41,32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,35,
+57,55,41,32,75,41,41,41,32,40,95,49,53,57,48,32,95,50,56,51,
+41,41,41,41,32,95,55,57,57,41,41,32,75,41,41,41,32,40,40,95,
+49,56,54,32,95,49,57,56,41,32,40,40,95,52,56,53,32,95,50,55,
+55,41,32,40,95,51,53,57,32,35,49,41,41,41,41,41,41,32,40,40,
+40,95,49,56,54,32,95,49,57,56,41,32,40,40,95,52,56,53,32,95,
+50,55,55,41,32,40,95,51,53,57,32,35,50,41,41,41,32,40,40,95,
+52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,49,48,41,
+41,41,41,41,32,40,40,65,32,58,49,49,56,52,32,95,55,52,51,41,
+32,40,40,65,32,58,49,49,56,53,32,40,85,32,40,90,32,95,55,52,
+51,41,41,41,32,40,40,65,32,58,49,49,56,54,32,95,55,52,52,41,
+32,40,40,65,32,58,49,49,56,55,32,40,40,66,32,40,95,51,57,57,
+32,95,49,49,56,54,41,41,32,95,49,49,56,52,41,41,32,40,40,65,
+32,58,49,49,56,56,32,40,40,66,32,95,49,49,56,54,41,32,40,95,
+49,49,56,54,32,40,40,95,49,50,57,56,32,95,49,49,55,57,41,32,
+34,80,114,105,109,105,116,105,118,101,115,46,45,62,34,41,41,41,41,32,
+40,40,65,32,58,49,49,56,57,32,40,40,66,32,95,49,49,56,54,41,
+32,40,95,49,49,56,54,32,40,40,95,49,50,57,56,32,95,49,49,55,
+57,41,32,34,80,114,105,109,105,116,105,118,101,115,46,61,62,34,41,41,
+41,41,32,40,40,65,32,58,49,49,57,48,32,95,49,49,56,56,41,32,
+40,40,65,32,58,49,49,57,49,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,
+32,95,52,55,54,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,85,32,
+40,75,32,95,52,55,54,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,
+32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,67,41,32,40,40,66,32,40,67,32,67,39,41,41,32,40,40,66,32,
+40,66,32,40,67,32,40,40,67,32,40,40,40,83,39,32,95,49,50,48,
+41,32,40,95,57,48,52,32,34,45,62,34,41,41,32,40,95,57,48,52,
+32,34,80,114,105,109,105,116,105,118,101,115,46,45,62,34,41,41,41,32,
+95,52,55,54,41,41,41,41,32,40,40,66,32,40,66,32,95,52,55,55,
+41,41,32,40,67,32,80,41,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,
+40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,
+55,54,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,
+55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,
+41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,
+40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,41,
+41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,
+40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,
+32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,
+41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,
+52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,40,65,32,58,49,49,57,50,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,32,
+40,75,32,95,52,55,54,41,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,
+85,32,40,75,32,95,52,55,54,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,
+32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,67,41,32,40,40,66,32,40,67,32,67,39,41,41,32,40,40,
+66,32,40,66,32,40,67,32,40,40,67,32,40,40,40,83,39,32,95,49,
+50,48,41,32,40,95,57,48,52,32,34,61,62,34,41,41,32,40,95,57,
+48,52,32,34,80,114,105,109,105,116,105,118,101,115,46,61,62,34,41,41,
+41,32,95,52,55,54,41,41,41,41,32,40,40,66,32,40,66,32,95,52,
+55,55,41,41,32,40,67,32,80,41,41,41,41,41,32,40,75,32,40,75,
+32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,
+41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,
+95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,
+32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,
+95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,
+40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,
+55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,
+32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,40,65,32,58,49,49,57,51,32,40,40,66,32,40,66,
+32,40,40,95,51,50,32,95,53,56,41,32,95,54,51,41,41,41,32,40,
+40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,54,50,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,41,41,32,
+95,49,49,51,56,41,41,41,32,95,50,57,50,41,41,41,41,41,32,40,
+40,65,32,58,49,49,57,52,32,40,40,66,32,95,54,52,41,32,40,40,
+40,67,39,32,95,50,54,51,41,32,95,50,57,49,41,32,95,49,49,52,
+54,41,41,41,32,40,40,65,32,58,49,49,57,53,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,40,67,32,83,39,41,41,32,40,40,66,32,
+67,41,32,95,49,50,54,52,41,41,41,32,40,40,66,32,67,41,32,95,
+49,49,57,57,41,41,41,32,40,40,65,32,58,49,49,57,54,32,40,40,
+89,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,
+83,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,66,32,40,40,83,39,32,67,41,32,40,40,
+66,32,40,83,32,73,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,51,
+41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,39,32,
+67,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,
+95,57,50,56,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,
+32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,67,32,40,95,51,
+57,57,32,95,49,49,56,54,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,80,32,40,75,32,95,49,51,48,50,41,41,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,
+41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,
+41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,
+51,48,50,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,40,
+83,39,32,40,83,39,32,67,39,41,41,32,40,40,66,32,40,40,67,39,
+32,40,95,50,48,51,32,95,50,56,49,41,41,32,95,52,49,49,41,41,
+32,95,52,49,49,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,
+50,54,49,32,95,49,49,57,54,41,41,41,41,32,40,40,66,32,40,66,
+32,95,56,50,50,41,41,32,40,40,67,39,32,95,52,49,50,41,32,40,
+95,51,57,53,32,95,55,57,56,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,95,50,54,49,41,32,40,40,66,32,95,49,49,48,48,41,32,
+40,95,56,48,53,32,95,56,48,55,41,41,41,32,34,98,97,100,32,115,
+121,110,111,110,121,109,32,117,115,101,34,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,40,95,51,50,32,
+95,53,56,41,41,32,95,49,49,57,54,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,67,39,41,32,40,67,32,95,52,54,50,41,41,41,41,
+41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,
+32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,
+32,95,49,51,48,50,41,41,41,32,40,75,32,95,49,51,48,50,41,41,
+41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,
+95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,
+49,51,48,50,41,41,41,41,41,32,40,90,32,95,49,49,57,54,41,41,
+41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,40,
+66,32,90,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,40,95,
+51,52,32,95,53,56,41,41,41,41,32,40,67,32,40,95,51,57,57,32,
+95,49,49,56,54,41,41,41,41,41,41,32,40,75,32,95,49,51,48,50,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,67,
+32,95,51,57,50,41,32,95,49,51,48,50,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,95,50,55,54,32,95,53,54,41,41,
+32,95,55,54,48,41,41,32,95,49,49,57,54,41,41,41,41,32,95,52,
+54,49,41,41,32,40,40,65,32,58,49,49,57,55,32,40,40,67,32,40,
+40,67,32,40,40,83,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,83,32,73,41,32,40,90,32,40,95,51,52,32,95,53,
+56,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+95,51,50,32,95,53,56,41,41,32,95,49,49,57,55,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,41,
+41,32,95,49,49,57,55,41,41,32,40,40,66,32,40,66,32,40,95,50,
+54,49,32,40,95,51,52,32,95,53,56,41,41,41,41,32,95,55,52,52,
+41,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,
+95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,95,49,51,
+48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,40,95,50,55,54,32,95,53,54,41,41,32,40,95,50,54,54,
+32,95,55,53,54,41,41,41,32,95,49,49,57,55,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,40,66,32,40,40,
+83,39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,49,57,52,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,80,41,32,40,95,
+51,52,32,95,53,56,41,41,41,32,40,40,66,32,40,40,67,39,32,40,
+95,51,50,32,95,53,56,41,41,32,95,49,49,57,55,41,41,32,40,40,
+40,67,39,32,40,83,39,32,40,95,51,51,32,95,53,56,41,41,41,32,
+95,49,49,57,51,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,
+41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,40,95,50,55,54,32,95,53,54,41,41,32,
+95,55,54,48,41,41,32,95,49,49,57,55,41,41,41,32,40,40,65,32,
+58,49,49,57,56,32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,
+53,56,41,32,40,95,54,52,32,95,49,49,52,57,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,
+41,32,95,49,49,48,48,41,41,41,32,40,40,66,32,40,40,67,39,32,
+95,52,54,51,41,32,40,40,80,32,34,116,121,112,101,34,41,32,34,107,
+105,110,100,34,41,41,41,32,40,95,52,54,51,32,34,32,101,114,114,111,
+114,58,32,34,41,41,41,41,41,32,40,40,65,32,58,49,49,57,57,32,
+40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,
+32,95,53,56,41,41,32,95,49,49,57,54,41,41,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,
+41,41,32,95,49,49,57,54,41,41,41,32,95,49,50,48,48,41,41,41,
+32,40,40,65,32,58,49,50,48,48,32,40,40,66,32,89,41,32,40,40,
+66,32,40,66,32,40,40,83,39,32,83,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,67,
+32,40,40,40,67,39,32,67,39,41,32,83,39,41,32,40,40,40,67,39,
+32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,67,
+41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,
+67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,
+32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,
+40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,
+83,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,
+32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,
+32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,67,
+41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,
+67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,40,83,39,
+32,67,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,
+40,67,32,40,40,40,67,39,32,83,39,41,32,67,39,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,67,39,32,67,41,32,40,
+95,50,48,50,32,95,56,57,50,41,41,41,32,40,40,95,51,52,32,95,
+53,56,41,32,95,49,51,52,49,41,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,41,41,32,40,40,66,
+32,40,40,67,39,32,40,83,39,32,83,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,
+66,32,40,40,67,39,32,66,41,32,40,40,67,32,83,39,41,32,75,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,66,
+32,40,40,67,39,32,40,67,39,32,67,39,41,41,32,40,40,66,32,40,
+66,32,67,39,41,41,32,40,40,67,32,66,41,32,75,41,41,41,41,32,
+40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,67,39,32,66,41,41,41,32,40,66,32,40,66,32,40,95,51,51,
+32,95,53,56,41,41,41,41,41,32,73,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,
+90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,40,83,39,32,67,39,41,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,67,32,40,40,67,32,83,39,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,67,39,32,67,41,
+32,40,95,50,48,50,32,95,50,56,49,41,41,41,32,40,40,95,51,52,
+32,95,53,56,41,32,95,49,51,52,49,41,41,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,
+41,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,40,40,66,32,67,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,41,41,32,40,40,66,32,67,41,32,95,
+49,50,48,49,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,66,32,40,66,32,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,
+90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,41,41,32,40,40,66,32,67,41,32,95,49,50,48,49,41,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,
+95,49,49,52,57,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,
+32,40,83,39,32,80,41,41,41,32,95,49,51,50,55,41,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,
+95,49,49,57,56,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,
+51,32,34,99,97,110,110,111,116,32,117,110,105,102,121,32,34,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,
+95,56,51,56,41,41,32,40,40,66,32,40,95,52,54,51,32,34,32,97,
+110,100,32,34,41,41,32,95,56,51,56,41,41,41,41,41,41,41,41,41,
+41,41,41,32,40,40,65,32,58,49,50,48,49,32,40,40,66,32,40,40,
+83,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,
+32,95,49,49,57,52,41,41,41,32,40,40,40,83,39,32,40,67,39,32,
+40,83,39,32,80,41,41,41,32,95,49,50,48,50,41,32,40,40,66,32,
+67,41,32,95,49,49,57,57,41,41,41,41,32,40,40,65,32,58,49,50,
+48,50,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,66,32,40,
+66,32,40,40,83,39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,75,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,
+90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,
+90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,
+90,32,75,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,49,57,52,
+41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,80,41,
+41,32,95,49,49,57,51,41,41,32,40,40,40,67,39,32,66,41,32,95,
+49,49,57,57,41,32,95,55,53,56,41,41,41,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,
+40,95,51,50,32,95,53,56,41,41,32,40,40,66,32,95,49,51,48,54,
+41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,32,40,40,66,32,
+40,40,83,39,32,40,83,39,32,67,41,41,32,40,40,40,83,39,32,66,
+41,32,40,40,66,32,67,41,32,40,95,52,51,52,32,40,95,50,48,50,
+32,95,50,56,49,41,41,41,41,32,95,49,49,57,51,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,
+41,32,95,49,49,57,56,41,41,41,32,40,40,66,32,40,66,32,40,95,
+52,54,51,32,34,99,121,99,108,105,99,32,34,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,40,40,66,32,
+95,56,51,56,41,32,95,55,53,56,41,41,41,32,40,40,66,32,40,95,
+52,54,51,32,34,32,61,32,34,41,41,32,95,56,51,56,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,49,50,48,51,32,40,40,40,95,51,
+50,32,95,53,56,41,32,95,54,51,41,32,40,85,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,
+54,50,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,41,41,32,95,49,49,51,56,41,32,95,50,57,48,
+41,41,41,41,41,41,32,40,40,65,32,58,49,50,48,52,32,40,40,40,
+95,50,55,54,32,95,53,54,41,32,95,55,53,56,41,32,95,49,50,48,
+53,41,41,32,40,40,65,32,58,49,50,48,53,32,40,40,40,95,51,50,
+32,95,53,56,41,32,95,54,51,41,32,40,85,32,40,40,40,67,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+95,51,51,32,95,53,56,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,95,54,50,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,83,39,
+32,95,50,54,49,41,32,95,49,52,56,49,41,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,67,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,67,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+67,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,67,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+67,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,40,40,66,32,
+67,41,32,95,49,49,51,56,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,32,40,95,51,52,32,95,53,56,41,41,41,32,40,40,67,32,
+40,95,52,55,57,32,95,50,55,55,41,41,32,35,49,41,41,41,41,41,
+32,40,40,65,32,58,49,50,48,54,32,40,40,66,32,40,66,32,40,40,
+95,51,50,32,95,53,56,41,32,95,49,50,48,53,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,95,
+53,56,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,
+32,40,40,66,32,95,50,54,49,41,32,95,56,57,56,41,41,41,32,40,
+40,40,67,39,32,66,41,32,95,52,54,51,41,32,40,40,66,32,40,95,
+52,54,51,32,40,40,79,32,35,51,54,41,32,75,41,41,41,32,40,95,
+49,53,57,48,32,95,50,56,51,41,41,41,41,41,41,41,32,40,40,65,
+32,58,49,50,48,55,32,40,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,40,95,54,52,32,95,49,49,52,50,41,41,41,41,32,
+40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,
+40,83,39,32,67,41,41,32,95,49,51,51,51,41,32,40,40,66,32,95,
+49,49,48,48,41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,41,
+32,40,40,66,32,85,41,32,40,40,66,32,40,66,32,40,66,32,40,95,
+51,52,32,95,53,56,41,41,41,41,32,40,40,66,32,40,66,32,80,41,
+41,32,40,40,66,32,95,56,51,52,41,32,40,95,56,48,53,32,95,56,
+48,55,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,50,48,56,
+32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,
+32,95,49,49,52,57,41,41,41,32,40,40,67,39,32,95,49,50,48,55,
+41,32,40,40,80,32,34,118,97,108,117,101,34,41,32,34,116,121,112,101,
+34,41,41,41,41,32,40,40,65,32,58,49,50,48,57,32,40,40,83,32,
+73,41,32,40,40,66,32,40,40,83,39,32,83,41,32,40,40,66,32,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,67,32,40,40,67,32,83,39,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,
+75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,75,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,41,32,95,49,
+50,49,48,41,32,95,49,50,48,57,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,67,41,32,40,40,66,32,40,67,32,95,49,
+49,57,50,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,
+40,66,32,85,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,
+40,66,32,40,95,51,50,32,95,53,56,41,41,32,40,40,40,67,39,32,
+95,49,50,48,54,41,32,40,95,56,48,53,32,95,56,48,56,41,41,32,
+34,100,105,99,116,34,41,41,41,41,32,40,40,66,32,40,40,67,39,32,
+66,41,32,40,40,66,32,40,83,39,32,40,95,51,51,32,95,53,56,41,
+41,41,32,40,67,32,95,49,49,54,56,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,95,49,50,48,57,41,41,41,32,40,40,66,32,40,
+67,39,32,80,41,41,32,40,40,40,67,39,32,66,41,32,95,55,52,52,
+41,32,95,55,52,51,41,41,41,41,41,41,41,41,41,41,32,40,40,65,
+32,58,49,50,49,48,32,40,40,40,83,39,32,67,41,32,40,40,66,32,
+40,40,83,39,32,83,39,41,32,95,51,57,50,41,41,32,40,40,66,32,
+40,40,83,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,
+41,41,32,40,40,95,52,51,32,95,53,56,41,32,40,95,50,54,53,32,
+95,49,50,48,52,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,80,41,41,41,32,
+40,40,66,32,40,67,39,32,95,56,50,50,41,41,32,40,40,66,32,95,
+52,49,50,41,32,40,95,51,57,53,32,95,55,57,56,41,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,
+41,41,32,80,41,41,41,32,40,40,65,32,58,49,50,49,49,32,40,40,
+83,32,40,40,67,32,66,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,
+32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,
+40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,
+32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,80,41,32,75,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,
+75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,
+75,41,41,41,32,95,49,50,49,48,41,41,41,32,40,95,51,52,32,95,
+53,56,41,41,41,32,40,40,65,32,58,49,50,49,50,32,40,40,66,32,
+40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,
+52,32,95,49,49,52,50,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,95,49,49,53,52,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,66,39,32,95,49,51,51,55,41,41,32,40,67,32,
+95,49,49,49,57,41,41,41,41,41,32,40,40,65,32,58,49,50,49,51,
+32,40,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,
+41,32,40,95,54,52,32,95,49,49,52,55,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,
+41,32,40,95,54,52,32,95,49,49,52,50,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,95,49,49,53,52,
+41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,
+66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,95,49,51,51,56,41,41,32,40,40,
+40,67,39,32,40,67,39,32,79,41,41,32,40,67,32,95,49,49,49,57,
+41,41,32,75,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,40,40,66,32,40,67,39,32,95,49,51,51,56,41,41,32,40,67,
+32,95,57,48,53,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+79,41,41,32,40,67,32,95,49,49,49,57,41,41,32,75,41,41,41,41,
+41,41,41,32,40,40,65,32,58,49,50,49,52,32,40,40,66,32,40,66,
+32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,
+52,55,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,
+32,95,49,50,49,51,41,32,40,40,66,32,40,66,32,95,55,52,51,41,
+41,32,40,67,32,95,57,48,53,41,41,41,41,41,32,40,40,65,32,58,
+49,50,49,53,32,40,40,40,83,39,32,40,67,39,32,95,50,54,49,41,
+41,32,95,49,50,49,50,41,32,95,55,52,51,41,41,32,40,40,65,32,
+58,49,50,49,54,32,40,40,95,52,52,32,95,53,56,41,32,40,95,50,
+54,56,32,95,49,50,49,53,41,41,41,32,40,40,65,32,58,49,50,49,
+55,32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+40,95,54,52,32,95,49,49,52,49,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,95,49,49,53,53,41,41,41,32,40,40,40,83,39,32,
+66,41,32,95,49,51,51,55,41,32,40,40,66,32,95,49,49,49,57,41,
+32,95,55,52,51,41,41,41,41,41,32,40,40,65,32,58,49,50,49,56,
+32,40,40,95,52,52,32,95,53,56,41,32,40,95,50,54,56,32,95,49,
+50,49,55,41,41,41,32,40,40,65,32,58,49,50,49,57,32,40,40,66,
+32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,
+95,49,49,52,51,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+95,49,49,53,54,41,41,41,32,95,57,50,57,41,41,41,32,40,40,65,
+32,58,49,50,50,48,32,40,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,95,54,51,41,41,41,32,40,40,66,32,40,66,32,85,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,95,51,51,32,95,53,56,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,95,50,54,
+49,32,95,54,50,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,41,
+41,32,95,49,49,51,56,41,41,41,32,95,57,50,57,41,41,41,32,40,
+40,95,51,52,32,95,53,56,41,32,95,49,51,52,49,41,41,41,41,41,
+32,40,40,65,32,58,49,50,50,49,32,40,40,66,32,40,66,32,40,66,
+32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,
+52,50,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,95,51,
+51,32,95,53,56,41,41,41,32,95,49,50,49,53,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,95,51,50,32,95,53,56,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,53,56,41,
+41,32,95,49,49,53,52,41,41,32,40,95,51,52,32,95,53,56,41,41,
+41,41,41,41,32,40,40,65,32,58,49,50,50,50,32,40,40,66,32,40,
+66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,
+49,52,50,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,
+32,40,40,66,32,40,95,51,51,32,95,53,56,41,41,32,95,49,50,49,
+54,41,41,41,32,40,40,40,67,39,32,66,41,32,40,95,51,50,32,95,
+53,56,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,
+51,51,32,95,53,56,41,41,32,95,49,49,53,52,41,41,32,40,95,51,
+52,32,95,53,56,41,41,41,41,41,41,32,40,40,65,32,58,49,50,50,
+51,32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+40,95,54,52,32,95,49,49,52,49,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,40,66,32,40,95,51,51,32,95,53,56,
+41,41,32,40,40,66,32,95,49,50,49,56,41,32,40,95,51,57,53,32,
+40,85,32,80,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,95,51,50,32,95,53,56,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,95,51,51,32,95,53,56,41,41,32,95,49,49,53,53,
+41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,32,40,40,
+65,32,58,49,50,50,52,32,40,40,40,83,39,32,40,95,51,51,32,95,
+53,56,41,41,32,40,40,95,52,52,32,95,53,56,41,32,95,49,50,50,
+54,41,41,32,40,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,
+32,95,49,50,50,55,41,32,40,40,40,83,39,32,40,95,51,51,32,95,
+53,56,41,41,32,40,40,95,52,52,32,95,53,56,41,32,95,49,50,51,
+53,41,41,32,40,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,
+32,95,49,50,50,56,41,32,40,40,40,83,39,32,40,95,51,51,32,95,
+53,56,41,41,32,95,49,50,50,53,41,32,95,49,50,52,56,41,41,41,
+41,41,41,32,40,40,65,32,58,49,50,50,53,32,40,40,66,32,40,95,
+50,54,49,32,95,49,49,54,50,41,41,32,40,40,66,32,40,95,50,54,
+49,32,95,52,53,53,41,41,32,40,40,66,32,40,95,52,54,50,32,95,
+52,54,49,41,41,32,40,95,51,57,52,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,40,75,32,75,41,
+41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,32,40,75,
+32,75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,
+75,32,40,75,32,75,41,41,41,41,32,40,75,32,75,41,41,41,32,40,
+75,32,40,75,32,40,75,32,75,41,41,41,41,41,32,40,75,32,40,75,
+32,75,41,41,41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,
+41,41,41,41,41,41,32,40,75,32,40,75,32,40,75,32,40,75,32,75,
+41,41,41,41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,
+41,41,32,40,40,65,32,58,49,50,50,54,32,40,40,67,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+67,32,40,40,67,32,83,39,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,40,90,32,
+75,41,41,41,41,32,40,40,66,32,40,66,32,40,40,95,51,50,32,95,
+53,56,41,32,40,95,54,52,32,95,49,49,52,55,41,41,41,41,32,40,
+40,66,32,40,67,39,32,40,95,52,52,32,95,53,56,41,41,41,32,40,
+40,67,39,32,40,67,39,32,95,49,50,50,48,41,41,32,95,57,48,53,
+41,41,41,41,41,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,
+41,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,32,75,41,
+41,32,40,40,95,51,52,32,95,53,56,41,32,95,49,51,52,49,41,41,
+41,32,40,40,65,32,58,49,50,50,55,32,40,40,66,32,40,95,50,54,
+49,32,95,49,49,54,52,41,41,32,40,40,40,67,39,32,40,95,51,50,
+32,95,53,56,41,41,32,40,40,95,52,51,32,95,53,56,41,32,95,49,
+50,50,57,41,41,32,40,40,40,83,39,32,40,95,51,51,32,95,53,56,
+41,41,32,40,40,95,52,52,32,95,53,56,41,32,95,49,50,51,49,41,
+41,32,40,40,95,52,51,32,95,53,56,41,32,95,49,50,51,54,41,41,
+41,41,41,32,40,40,65,32,58,49,50,50,56,32,40,40,66,32,40,95,
+50,54,49,32,95,49,49,54,52,41,41,32,40,40,40,67,39,32,40,95,
+51,50,32,95,53,56,41,41,32,40,40,95,52,51,32,95,53,56,41,32,
+95,49,50,52,48,41,41,32,40,40,40,67,39,32,40,95,51,50,32,95,
+53,56,41,41,32,40,40,66,32,40,40,95,52,51,32,95,53,56,41,32,
+95,49,50,52,54,41,41,32,95,51,57,51,41,41,32,40,40,66,32,40,
+95,51,52,32,95,53,56,41,41,32,95,51,57,51,41,41,41,41,41,32,
+40,40,65,32,58,49,50,50,57,32,40,40,66,32,40,40,95,51,51,32,
+95,53,56,41,32,95,49,50,48,51,41,41,32,40,40,83,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,40,67,39,
+32,83,39,41,32,40,40,67,32,40,40,80,32,40,40,67,32,66,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,95,50,54,49,41,32,40,40,
+67,32,95,49,50,51,48,41,32,95,55,57,57,41,41,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+95,50,54,49,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,
+40,67,39,32,40,67,39,32,95,55,50,56,41,41,32,80,41,41,41,41,
+41,41,32,40,40,67,32,66,41,32,40,40,66,32,40,66,32,40,40,67,
+39,32,95,50,54,49,41,32,40,40,67,32,95,49,50,51,48,41,32,95,
+55,57,57,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,
+95,53,56,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,95,55,
+50,57,41,41,32,80,41,41,41,41,41,41,41,32,40,40,67,32,66,41,
+32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,40,40,66,32,67,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,41,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,95,50,54,49,
+41,41,32,95,49,50,51,48,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,41,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,55,51,48,41,41,
+32,80,41,41,41,32,95,55,53,54,41,41,41,41,41,32,40,90,32,75,
+41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,95,50,54,49,41,32,40,40,
+67,32,95,49,50,51,48,41,32,95,55,57,57,41,41,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+95,50,54,49,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,
+40,67,39,32,40,67,39,32,95,55,51,48,41,41,32,80,41,41,41,41,
+41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,75,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,
+75,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,66,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,67,39,32,95,
+50,54,49,41,32,40,40,67,32,95,49,50,51,48,41,32,95,56,48,48,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+90,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,
+40,40,40,67,39,32,67,39,41,32,40,40,66,32,67,39,41,32,95,55,
+51,54,41,41,32,80,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,95,50,54,49,
+41,32,40,40,67,32,95,49,50,51,48,41,32,95,56,48,48,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,
+52,32,95,53,56,41,41,41,41,41,41,32,40,40,66,32,40,66,32,67,
+41,41,32,40,40,66,32,67,41,32,40,67,32,95,55,51,55,41,41,41,
+41,41,41,41,41,32,75,41,41,32,40,95,51,52,32,95,53,56,41,41,
+41,41,32,40,40,65,32,58,49,50,51,48,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,
+53,56,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,
+49,49,54,52,41,41,41,32,40,67,32,40,40,40,67,39,32,89,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,80,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,
+53,56,41,41,32,95,49,50,53,52,41,41,32,40,40,66,32,40,66,32,
+40,95,51,52,32,95,53,56,41,41,41,32,40,40,66,32,80,41,32,95,
+52,50,51,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,32,66,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,67,
+39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,53,52,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,40,
+83,39,32,95,50,54,49,41,41,32,95,49,50,50,49,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,67,39,41,32,67,39,41,
+41,32,40,40,67,39,32,40,67,39,32,95,52,54,50,41,41,32,95,55,
+57,54,41,41,41,41,41,41,41,32,95,52,54,49,41,41,41,41,41,32,
+85,41,41,32,40,40,65,32,58,49,50,51,49,32,40,40,67,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,39,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,83,39,41,
+32,40,40,66,32,40,66,32,40,83,32,66,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,40,66,32,40,
+66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,40,95,
+51,51,32,95,53,56,41,41,32,40,40,67,32,95,49,50,51,51,41,32,
+95,55,57,57,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,
+66,41,32,67,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,
+40,95,52,52,52,32,95,56,57,50,41,41,41,41,32,95,51,57,52,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,83,32,66,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,
+32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,
+40,40,66,32,40,95,51,51,32,95,53,56,41,41,32,40,40,67,32,95,
+49,50,51,51,41,32,95,55,57,57,41,41,41,41,41,41,32,40,40,67,
+39,32,66,41,32,67,41,41,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,95,49,50,51,51,41,32,95,49,50,51,50,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,
+32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,40,40,66,32,90,41,32,40,40,66,32,40,83,32,66,41,41,32,40,
+40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,40,66,39,32,40,40,66,32,40,95,51,51,32,95,
+53,56,41,41,32,40,40,67,32,95,49,50,51,51,41,32,95,56,48,48,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,67,41,32,40,95,
+51,57,52,32,40,40,67,32,40,40,80,32,40,75,32,40,75,32,75,41,
+41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,90,32,40,40,
+66,32,40,95,51,57,52,32,40,40,67,32,79,41,32,75,41,41,41,32,
+40,40,83,32,79,41,32,40,40,40,67,39,32,79,41,32,95,49,50,52,
+51,41,32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+90,32,40,90,32,40,90,32,75,41,41,41,41,41,32,75,41,41,32,40,
+40,95,51,52,32,95,53,56,41,32,95,49,51,52,49,41,41,41,32,40,
+40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,
+52,32,95,49,49,52,55,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,83,39,32,95,49,49,54,53,41,41,32,40,67,32,
+95,57,48,53,41,41,41,32,40,40,67,39,32,95,51,57,53,41,32,95,
+57,48,53,41,41,41,41,41,32,40,85,32,40,75,32,40,75,32,40,40,
+40,83,39,32,80,41,32,40,90,32,40,40,67,32,79,41,32,75,41,41,
+41,32,40,40,40,67,39,32,66,41,32,95,52,54,50,41,32,40,95,51,
+57,53,32,95,53,54,53,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,50,51,50,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,95,55,57,
+57,41,41,32,40,75,32,40,75,32,95,55,57,57,41,41,41,41,32,40,
+75,32,40,75,32,95,55,57,57,41,41,41,41,32,40,75,32,95,55,57,
+57,41,41,41,32,40,75,32,40,75,32,95,55,57,57,41,41,41,41,32,
+40,75,32,40,75,32,95,55,57,57,41,41,41,41,32,40,75,32,40,75,
+32,95,55,57,57,41,41,41,41,32,40,75,32,95,55,57,57,41,41,41,
+32,40,75,32,95,55,57,57,41,41,41,32,40,75,32,40,75,32,95,55,
+57,57,41,41,41,41,32,40,75,32,40,75,32,95,55,57,57,41,41,41,
+41,32,40,75,32,40,75,32,95,55,57,57,41,41,41,41,32,40,75,32,
+40,75,32,40,75,32,95,55,57,57,41,41,41,41,41,32,65,41,41,32,
+40,75,32,40,75,32,95,55,57,57,41,41,41,41,32,40,75,32,95,55,
+57,57,41,41,41,32,40,75,32,95,55,57,57,41,41,41,32,40,75,32,
+40,75,32,95,55,57,57,41,41,41,41,32,40,40,65,32,58,49,50,51,
+51,32,40,40,67,32,66,41,32,40,40,66,32,40,40,67,39,32,66,41,
+32,95,49,50,49,52,41,41,32,40,67,32,95,49,50,51,52,41,41,41,
+41,32,40,40,65,32,58,49,50,51,52,32,40,67,32,40,95,51,57,55,
+32,40,85,32,40,75,32,95,49,49,57,48,41,41,41,41,41,32,40,40,
+65,32,58,49,50,51,53,32,40,40,67,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,67,
+32,83,39,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,40,67,32,66,41,32,40,40,66,32,40,40,67,39,32,66,41,32,
+40,40,40,83,39,32,40,83,39,32,40,95,51,51,32,95,53,56,41,41,
+41,32,95,49,50,49,57,41,32,40,40,66,32,40,66,32,40,40,95,51,
+50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,55,41,41,41,
+41,32,40,40,66,32,40,67,39,32,95,49,50,49,57,41,41,32,40,67,
+32,95,57,48,53,41,41,41,41,41,41,32,40,67,32,95,55,54,48,41,
+41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,75,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,
+32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,32,75,41,41,
+32,40,40,95,51,52,32,95,53,56,41,32,95,49,51,52,49,41,41,41,
+32,40,40,65,32,58,49,50,51,54,32,40,40,66,32,40,40,95,51,51,
+32,95,53,56,41,32,95,49,50,48,51,41,41,32,40,40,83,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,40,67,
+39,32,67,39,41,32,40,40,67,32,40,40,80,32,40,40,83,32,66,41,
+32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,40,40,67,39,32,
+95,50,54,49,41,32,95,49,50,51,56,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,40,95,50,55,54,32,95,53,54,41,41,32,
+95,55,50,56,41,41,32,40,40,95,52,51,32,95,53,56,41,32,95,49,
+50,51,57,41,41,41,41,41,41,32,40,40,83,32,66,41,32,40,40,66,
+32,90,41,32,40,40,66,32,40,66,32,40,40,67,39,32,95,50,54,49,
+41,32,95,49,50,51,56,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,95,50,55,54,32,95,53,54,41,41,32,95,55,50,57,
+41,41,32,95,49,50,51,57,41,41,41,41,41,41,32,40,40,83,32,66,
+41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,95,50,54,49,41,32,95,49,50,51,56,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,95,50,55,54,32,95,53,54,41,41,
+32,95,55,51,48,41,41,32,95,49,50,53,52,41,41,41,41,41,41,32,
+40,90,32,75,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,95,50,55,54,32,95,53,54,41,41,32,95,55,51,50,41,41,32,
+40,95,49,50,53,51,32,95,55,57,57,41,41,41,41,32,75,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,95,50,55,54,32,95,53,54,41,41,41,32,95,55,51,52,41,41,
+32,40,95,49,50,53,51,32,95,55,57,57,41,41,41,41,32,40,90,32,
+75,41,41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,66,41,41,
+32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,40,67,39,32,95,50,54,49,41,32,
+95,49,50,51,56,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,95,49,52,32,95,53,55,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,49,52,32,95,
+53,55,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+95,49,52,32,95,53,55,41,41,32,40,40,66,32,40,40,95,50,55,54,
+32,95,53,54,41,32,95,55,51,54,41,41,32,95,49,50,51,55,41,41,
+41,32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,40,95,52,51,
+32,95,53,56,41,32,40,85,32,40,40,67,32,40,40,40,67,39,32,67,
+39,41,32,40,40,66,32,40,83,39,32,40,95,49,52,32,95,53,55,41,
+41,41,32,40,40,66,32,40,66,32,40,40,95,50,55,54,32,95,53,54,
+41,32,80,41,41,41,32,40,67,32,40,95,52,51,32,95,53,56,41,41,
+41,41,41,32,40,67,32,40,95,52,51,32,95,53,56,41,41,41,41,32,
+40,40,40,83,39,32,40,95,51,50,32,95,53,56,41,41,32,40,95,49,
+50,48,55,32,34,102,117,110,100,101,112,34,41,41,32,40,90,32,40,95,
+51,52,32,95,53,56,41,41,41,41,41,41,41,41,41,32,40,40,95,52,
+51,32,95,53,56,41,32,40,40,83,32,40,40,40,67,39,32,67,41,32,
+40,40,67,32,40,40,67,32,83,39,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,95,50,55,54,32,95,53,54,41,41,32,95,55,56,57,41,41,32,
+40,95,49,50,53,53,32,40,95,49,50,53,56,32,95,55,57,57,41,41,
+41,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,41,41,
+41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,66,39,32,40,
+40,66,32,95,50,54,49,41,32,95,49,50,51,56,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,95,49,52,32,95,53,55,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,40,95,49,52,32,95,53,55,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,95,50,55,54,32,95,53,54,41,41,32,95,
+55,51,55,41,41,32,95,49,50,51,55,41,41,41,32,40,95,49,50,53,
+51,32,95,56,48,48,41,41,41,41,32,40,95,51,52,32,95,53,56,41,
+41,41,41,41,32,40,40,66,32,40,40,95,50,55,54,32,95,53,54,41,
+32,95,55,51,56,41,41,32,40,40,95,52,51,32,95,53,56,41,32,40,
+95,49,50,53,51,32,95,55,57,57,41,41,41,41,41,32,40,95,51,52,
+32,95,53,56,41,41,41,41,32,40,40,65,32,58,49,50,51,55,32,40,
+40,95,52,51,32,95,53,56,41,32,40,95,49,50,53,51,32,95,56,48,
+48,41,41,41,32,40,40,65,32,58,49,50,51,56,32,40,40,67,32,83,
+41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,40,66,32,
+40,40,67,39,32,40,67,39,32,95,50,54,49,41,41,32,95,49,50,50,
+49,41,41,41,32,40,67,32,95,49,50,51,56,41,41,41,41,41,32,40,
+40,65,32,58,49,50,51,57,32,40,85,32,40,40,40,83,39,32,66,41,
+32,40,66,39,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,
+49,50,51,56,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,
+49,52,32,95,53,55,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,40,95,49,52,32,95,53,55,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,50,
+55,54,32,95,53,54,41,41,32,95,55,57,53,41,41,32,95,49,50,51,
+55,41,41,41,32,40,95,49,51,32,95,53,55,41,41,41,41,32,40,40,
+95,49,55,55,32,40,40,66,32,40,40,95,50,55,54,32,95,53,54,41,
+32,95,49,55,52,41,41,32,40,40,95,52,51,32,95,53,56,41,32,40,
+85,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,50,55,54,
+32,95,53,54,41,41,32,80,41,41,32,40,95,49,50,53,53,32,40,95,
+49,50,53,56,32,95,55,57,57,41,41,41,41,41,41,41,32,40,40,66,
+32,40,40,95,50,55,54,32,95,53,54,41,32,95,49,55,53,41,41,32,
+40,40,95,52,51,32,95,53,56,41,32,40,85,32,40,40,66,32,85,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,40,95,50,55,54,32,95,53,54,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,95,50,54,51,41,32,80,41,41,32,80,41,
+41,41,32,40,95,49,50,53,53,32,40,95,49,50,53,56,32,95,55,57,
+57,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,
+50,52,48,32,40,40,83,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,83,39,32,67,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,75,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,
+75,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,
+66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,
+95,49,49,52,55,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,40,83,39,32,40,83,39,32,
+40,83,39,32,40,83,39,32,40,95,51,51,32,95,53,56,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,
+40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,49,
+49,54,54,41,41,32,40,67,32,95,57,48,53,41,41,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,40,67,39,
+32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,67,41,41,32,40,40,40,67,39,32,40,67,39,
+32,67,41,41,32,40,67,32,80,41,41,32,40,95,55,53,56,32,35,48,
+41,41,41,41,32,40,95,51,57,53,32,40,40,67,32,40,40,40,67,39,
+32,67,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,90,32,75,
+41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,40,40,110,
+111,77,97,116,99,104,32,34,115,114,99,47,77,105,99,114,111,72,115,47,
+84,121,112,101,67,104,101,99,107,46,104,115,34,41,32,35,49,49,53,55,
+41,32,35,50,53,41,41,41,41,41,41,32,40,40,67,39,32,95,49,50,
+52,49,41,32,40,95,51,57,53,32,95,55,57,56,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,41,41,41,41,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,
+32,40,66,39,32,40,66,39,32,95,52,54,50,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,95,51,57,52,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,67,32,40,40,80,
+32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,67,41,
+41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,39,
+32,40,83,39,32,79,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,40,67,39,32,95,50,54,49,41,32,95,55,51,50,
+41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,40,66,
+39,32,40,40,66,32,95,50,54,49,41,32,95,55,54,48,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,95,49,49,56,57,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,95,49,49,
+56,55,41,41,32,40,67,32,95,57,48,53,41,41,41,32,40,95,51,57,
+53,32,40,40,95,50,54,51,32,95,55,52,51,41,32,95,55,57,56,41,
+41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,79,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,40,83,39,32,40,67,39,32,95,50,54,49,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,83,39,32,80,41,41,41,32,40,40,66,
+32,40,66,32,40,67,32,95,55,51,49,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,79,41,41,32,40,40,66,32,40,66,32,40,95,50,54,
+49,32,40,95,55,57,48,32,95,52,54,49,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,95,55,57,49,41,41,32,40,40,40,67,39,32,
+40,67,39,32,79,41,41,32,40,40,66,32,40,66,32,40,80,32,95,52,
+54,49,41,41,41,32,40,40,66,32,40,66,32,40,95,55,52,52,32,95,
+49,50,52,50,41,41,41,32,40,40,66,32,40,66,32,40,95,55,52,55,
+32,95,56,57,53,41,41,41,32,40,40,66,32,40,66,32,95,55,56,48,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,
+41,32,95,57,48,48,41,41,32,40,40,66,32,40,95,52,54,51,32,40,
+40,79,32,35,52,54,41,32,75,41,41,41,32,95,57,48,48,41,41,41,
+41,41,41,41,32,75,41,41,32,95,52,54,49,41,41,41,32,75,41,41,
+41,32,95,55,51,49,41,41,41,32,40,40,66,32,40,67,32,40,95,52,
+51,54,32,95,56,57,50,41,41,41,32,40,95,51,57,52,32,40,40,67,
+32,40,40,80,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,80,
+41,32,75,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,75,
+32,40,75,32,75,41,41,41,41,41,41,41,32,75,41,41,41,32,95,49,
+50,52,51,41,41,41,41,41,41,41,32,40,95,51,57,52,32,40,40,83,
+32,40,40,80,32,40,75,32,40,75,32,75,41,41,41,32,40,75,32,40,
+75,32,75,41,41,41,41,32,40,90,32,40,90,32,40,40,67,32,79,41,
+32,75,41,41,41,41,41,41,41,41,41,41,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,32,75,41,41,32,40,40,66,32,40,95,51,
+52,32,95,53,56,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,
+32,40,40,65,32,58,49,50,52,49,32,40,40,40,83,39,32,83,41,32,
+40,40,66,32,85,41,32,40,40,40,67,39,32,79,41,32,40,40,40,83,
+39,32,80,41,32,40,95,51,57,53,32,40,95,50,54,53,32,95,49,50,
+53,41,41,41,32,40,95,51,57,53,32,40,95,50,54,53,32,95,49,50,
+52,41,41,41,41,32,75,41,41,41,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,95,51,57,53,41,32,40,40,66,32,85,
+41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,80,41,41,32,40,40,67,39,32,95,51,57,53,41,32,40,67,
+32,40,95,52,51,50,32,95,56,57,50,41,41,41,41,41,32,40,40,67,
+39,32,95,51,57,53,41,32,40,67,32,40,95,52,51,50,32,95,56,57,
+50,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,50,52,
+50,32,40,40,95,50,54,49,32,40,95,55,52,55,32,95,56,57,53,41,
+41,32,40,95,55,56,49,32,34,110,111,68,101,102,97,117,108,116,34,41,
+41,41,32,40,40,65,32,58,49,50,52,51,32,40,40,67,32,95,57,48,
+55,41,32,34,36,100,102,108,116,34,41,41,32,40,40,65,32,58,49,50,
+52,52,32,40,40,83,32,83,41,32,40,40,66,32,90,41,32,40,40,66,
+32,90,41,32,40,40,66,32,95,49,49,56,57,41,32,95,49,50,52,53,
+41,41,41,41,41,32,40,40,65,32,58,49,50,52,53,32,40,40,83,32,
+40,85,32,40,95,50,52,32,34,116,117,112,108,101,67,111,110,115,116,114,
+97,105,110,116,115,34,41,41,41,32,40,40,66,32,40,67,32,80,41,41,
+32,40,90,32,40,90,32,40,40,40,83,39,32,95,49,49,56,55,41,32,
+40,40,66,32,40,95,56,48,49,32,95,56,57,53,41,41,32,95,52,49,
+49,41,41,32,73,41,41,41,41,41,41,32,40,40,65,32,58,49,50,52,
+54,32,40,40,83,32,40,40,40,67,39,32,83,41,32,40,40,40,83,39,
+32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,40,67,39,32,40,40,83,39,32,40,95,51,50,32,95,
+53,56,41,41,32,40,40,67,32,95,49,50,48,54,41,32,34,105,110,115,
+116,34,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,
+50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,56,41,41,41,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,
+32,66,41,32,40,40,66,32,67,41,32,95,57,50,56,41,41,32,40,40,
+66,32,40,40,67,39,32,95,50,54,49,41,32,95,49,49,48,48,41,41,
+32,40,40,66,32,40,95,52,54,51,32,34,110,111,116,32,97,32,99,108,
+97,115,115,32,34,41,41,32,95,57,48,50,41,41,41,41,32,40,95,51,
+52,32,95,53,56,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+85,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,90,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,
+32,40,95,54,52,32,95,49,49,52,55,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,83,39,32,40,83,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,
+40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,83,39,32,66,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,66,39,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,67,39,32,40,67,39,32,40,95,51,51,32,95,53,56,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,95,49,49,54,55,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,79,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,67,
+39,32,40,67,39,32,67,41,41,41,32,40,40,67,39,32,40,67,39,32,
+80,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,55,52,
+51,41,41,41,32,40,67,32,95,57,48,53,41,41,41,41,41,41,41,32,
+75,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,
+66,39,32,40,66,39,32,40,66,39,32,40,66,39,32,40,66,39,32,40,
+66,39,32,79,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,
+66,39,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,83,39,32,66,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,66,39,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,79,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,67,32,95,55,51,50,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,49,50,
+52,55,41,41,41,32,95,49,50,52,52,41,41,41,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,
+95,50,54,49,41,32,95,55,51,49,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,
+95,55,54,50,32,95,52,54,49,41,41,41,41,41,41,41,32,40,40,66,
+32,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,
+32,40,95,51,57,57,32,95,55,52,52,41,41,32,40,40,66,32,40,95,
+50,54,49,32,95,55,52,51,41,41,32,95,49,50,53,49,41,41,41,41,
+41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,95,52,54,51,41,41,32,40,40,66,32,95,51,
+57,53,41,32,40,40,66,32,95,50,54,53,41,32,40,40,66,32,40,95,
+50,54,49,32,95,55,52,51,41,41,32,40,40,67,32,95,56,57,56,41,
+32,34,100,105,99,116,36,34,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,95,51,57,53,41,41,32,40,40,66,32,40,40,67,39,32,40,
+83,39,32,95,50,54,49,41,41,32,40,40,66,32,40,66,32,95,52,55,
+49,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,55,52,
+51,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,
+54,49,41,32,95,57,48,49,41,41,32,95,49,50,52,51,41,41,41,41,
+41,32,40,40,66,32,40,67,32,40,95,52,51,54,32,95,56,57,50,41,
+41,41,32,40,95,51,57,52,32,40,40,67,32,40,40,80,32,40,40,40,
+67,39,32,40,67,39,32,79,41,41,32,40,40,40,67,39,32,66,41,32,
+80,41,32,95,55,52,54,41,41,32,75,41,41,32,40,75,32,40,75,32,
+75,41,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,41,41,41,
+41,41,41,41,41,32,75,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,95,56,48,53,32,95,56,48,56,41,41,41,32,95,49,49,51,48,41,
+41,41,32,75,41,41,32,40,40,66,32,40,95,51,52,32,95,53,56,41,
+41,32,40,40,67,32,79,41,32,75,41,41,41,41,32,40,40,65,32,58,
+49,50,52,55,32,40,40,83,32,83,41,32,40,40,66,32,90,41,32,40,
+40,66,32,90,41,32,95,55,54,48,41,41,41,41,32,40,40,65,32,58,
+49,50,52,56,32,40,40,40,83,39,32,40,95,51,51,32,95,53,56,41,
+41,32,40,40,95,52,52,32,95,53,56,41,32,95,49,50,52,57,41,41,
+32,40,40,95,52,51,32,95,53,56,41,32,40,40,66,32,40,40,95,51,
+51,32,95,53,56,41,32,95,49,50,48,51,41,41,32,95,49,50,53,50,
+41,41,41,41,32,40,40,65,32,58,49,50,52,57,32,40,40,66,32,40,
+40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,55,
+41,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,67,41,32,
+40,40,40,67,39,32,40,67,39,32,83,39,41,41,32,40,40,67,32,40,
+40,67,32,83,39,41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,
+40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,95,52,52,
+32,95,53,56,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,85,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,
+66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,40,67,39,32,67,39,41,32,95,49,50,49,51,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,
+32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,55,54,48,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,55,
+54,48,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,49,50,
+52,52,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,
+57,55,32,40,40,95,50,54,51,32,95,49,49,56,56,41,32,95,53,54,
+54,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,
+32,40,40,66,32,40,66,32,40,95,51,57,57,32,95,49,49,56,54,41,
+41,41,32,40,40,66,32,40,66,32,95,49,49,56,52,41,41,32,95,57,
+48,53,41,41,41,32,40,95,51,57,53,32,95,49,49,56,53,41,41,41,
+41,32,40,40,95,49,55,55,32,95,50,54,52,41,32,40,95,51,57,53,
+32,95,53,54,54,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,95,50,54,49,32,95,55,53,57,41,41,41,41,32,
+40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,95,55,54,51,41,41,32,40,40,66,32,95,51,57,52,41,32,40,40,
+66,32,85,41,32,40,90,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,79,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+80,41,41,32,95,57,48,53,41,41,41,32,40,40,66,32,40,40,67,39,
+32,40,95,52,55,57,32,95,50,55,55,41,41,32,40,40,95,49,55,55,
+32,95,52,49,49,41,32,95,52,49,49,41,41,41,32,40,40,67,32,40,
+40,67,32,95,51,57,50,41,32,35,49,41,41,32,35,48,41,41,41,41,
+32,75,41,41,41,41,41,41,32,95,57,48,53,41,41,41,41,41,32,73,
+41,41,41,41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,66,41,41,32,40,40,66,32,40,66,32,90,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,40,83,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,40,67,39,32,67,39,41,32,95,49,50,49,51,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,40,66,
+32,95,50,54,49,41,32,95,55,54,48,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,95,55,54,48,
+32,95,52,54,49,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,95,49,49,56,56,41,32,40,40,66,32,40,95,
+50,54,49,32,95,53,54,54,41,41,32,40,40,66,32,40,95,50,54,49,
+32,95,52,50,56,41,41,32,40,40,95,49,55,55,32,95,50,54,52,41,
+32,40,95,51,57,53,32,95,53,54,54,41,41,41,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,95,51,57,57,32,95,49,49,56,54,41,41,41,32,40,40,66,32,
+40,66,32,95,49,49,56,52,41,41,32,95,57,48,53,41,41,41,32,40,
+95,51,57,53,32,95,49,49,56,53,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,95,50,54,49,32,95,55,53,57,41,41,41,32,40,
+40,66,32,40,66,32,95,55,54,52,41,41,32,95,57,48,53,41,41,41,
+41,41,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,95,49,50,49,52,41,41,32,75,41,41,32,40,75,32,95,49,
+50,49,52,41,41,41,32,40,90,32,75,41,41,41,32,40,40,66,32,40,
+40,67,39,32,66,41,32,66,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,67,41,41,41,32,40,40,66,32,40,67,39,32,67,41,41,32,95,
+49,50,53,48,41,41,41,41,41,32,40,90,32,40,90,32,40,90,32,75,
+41,41,41,41,41,32,75,41,41,32,40,40,95,51,52,32,95,53,56,41,
+32,95,49,51,52,49,41,41,41,41,32,40,40,65,32,58,49,50,53,48,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,
+51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,55,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,67,39,32,67,41,41,41,
+41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,
+83,39,32,40,67,39,32,83,41,41,41,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,67,39,32,40,83,39,32,40,67,39,32,
+40,95,51,51,32,95,53,56,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,83,41,32,40,67,32,95,49,50,49,51,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,55,
+53,57,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,39,
+32,95,55,54,51,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,79,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,80,41,41,32,95,57,48,53,41,41,32,95,52,49,49,
+41,41,32,75,41,41,32,95,57,48,53,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,
+32,40,83,39,32,40,83,39,32,66,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,95,51,51,32,95,53,56,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,95,52,52,32,95,53,56,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,40,40,
+80,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,67,39,32,83,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,67,39,41,32,95,49,50,49,51,41,41,
+41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,95,
+50,54,49,41,32,95,55,54,48,41,41,41,32,40,40,66,32,40,66,32,
+95,49,49,56,57,41,41,32,40,40,66,32,40,67,32,95,49,49,56,55,
+41,41,32,40,95,51,57,53,32,40,40,95,50,54,51,32,95,55,52,51,
+41,32,95,55,57,56,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,95,50,54,49,32,95,55,52,51,41,41,41,32,95,57,48,53,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+40,67,39,32,66,41,32,40,66,39,32,95,49,49,54,54,41,41,41,41,
+41,32,40,40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,66,32,
+40,66,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,40,67,
+32,80,41,41,41,41,32,40,95,51,57,53,32,40,40,67,32,40,40,40,
+67,39,32,67,41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,40,
+40,110,111,77,97,116,99,104,32,34,115,114,99,47,77,105,99,114,111,72,
+115,47,84,121,112,101,67,104,101,99,107,46,104,115,34,41,32,35,49,50,
+54,57,41,32,35,50,53,41,41,41,41,41,41,32,40,40,66,32,95,49,
+50,52,49,41,32,40,95,51,57,53,32,95,55,57,56,41,41,41,41,41,
+41,41,41,32,95,49,50,53,49,41,41,32,40,40,40,83,39,32,66,41,
+32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,55,54,48,41,
+41,41,32,40,40,66,32,40,66,32,40,95,51,57,55,32,95,49,49,56,
+56,41,41,41,32,40,40,66,32,40,67,32,95,49,49,56,55,41,41,32,
+40,95,51,57,53,32,95,49,49,56,53,41,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,95,52,54,51,41,32,40,95,51,57,53,32,40,
+40,67,32,40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,67,32,
+83,39,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,
+65,41,41,32,40,40,40,110,111,77,97,116,99,104,32,34,115,114,99,47,
+77,105,99,114,111,72,115,47,84,121,112,101,67,104,101,99,107,46,104,115,
+34,41,32,35,49,50,54,56,41,32,35,50,53,41,41,41,41,41,41,41,
+32,40,95,51,57,52,32,40,40,83,32,40,40,80,32,40,75,32,40,75,
+32,75,41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,90,
+32,40,90,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,41,32,
+40,67,32,95,57,48,53,41,41,41,41,32,40,40,65,32,58,49,50,53,
+49,32,40,40,67,32,95,57,48,55,41,32,34,36,67,34,41,41,32,40,
+40,65,32,58,49,50,53,50,32,40,40,83,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,
+67,32,83,39,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,40,95,51,50,32,95,53,56,41,41,32,40,95,49,50,48,55,
+32,34,116,121,112,101,32,115,105,103,110,97,116,117,114,101,34,41,41,41,
+32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,90,41,32,40,
+40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+40,95,54,52,32,95,49,49,52,55,41,41,41,41,41,32,40,40,66,32,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,95,51,50,32,95,53,56,41,41,41,32,40,67,32,40,95,49,50,55,
+54,32,95,49,50,53,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,95,51,51,32,95,53,56,41,32,95,49,51,50,54,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,
+95,51,52,32,95,53,56,41,41,41,41,41,32,40,40,66,32,40,66,32,
+95,55,51,49,41,41,32,40,67,32,95,57,48,53,41,41,41,41,41,41,
+41,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,
+95,54,52,32,95,49,49,52,55,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,39,41,32,95,
+55,51,52,41,41,32,40,67,32,95,57,48,53,41,41,41,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,40,90,32,40,90,32,75,41,41,
+41,41,41,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,32,
+75,41,41,32,40,95,51,52,32,95,53,56,41,41,41,32,40,40,65,32,
+58,49,50,53,51,32,40,95,49,50,54,48,32,95,49,50,53,53,41,41,
+32,40,40,65,32,58,49,50,53,52,32,40,40,66,32,40,40,95,50,55,
+54,32,95,53,54,41,32,95,53,54,53,41,41,32,40,95,49,50,53,57,
+32,95,49,50,53,53,41,41,41,32,40,40,65,32,58,49,50,53,53,32,
+40,40,66,32,40,66,32,40,95,49,49,54,51,32,95,49,49,52,48,41,
+41,41,32,40,40,40,67,39,32,66,41,32,95,49,50,54,54,41,32,95,
+49,50,57,55,41,41,41,32,40,40,65,32,58,49,50,53,54,32,40,40,
+66,32,40,95,50,54,51,32,95,49,49,54,52,41,41,32,95,49,50,53,
+53,41,41,32,40,40,65,32,58,49,50,53,55,32,40,40,66,32,90,41,
+32,85,41,41,32,40,40,65,32,58,49,50,53,56,32,40,90,32,85,41,
+41,32,40,40,65,32,58,49,50,53,57,32,40,40,66,32,40,66,32,40,
+40,95,51,50,32,95,53,56,41,32,95,49,50,48,53,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,95,51,50,32,95,53,
+56,41,41,41,41,32,40,40,67,32,67,39,41,32,95,49,50,53,55,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,
+95,53,56,41,41,32,95,49,50,54,51,41,41,32,40,40,66,32,40,66,
+32,40,95,51,52,32,95,53,56,41,41,41,32,80,41,41,41,41,41,32,
+40,40,65,32,58,49,50,54,48,32,40,40,67,32,66,41,32,95,49,50,
+53,56,41,41,32,40,40,65,32,58,49,50,54,49,32,40,95,49,50,53,
+57,32,95,49,50,54,54,41,41,32,40,40,65,32,58,49,50,54,50,32,
+40,40,67,32,40,40,40,83,39,32,67,39,41,32,95,49,49,57,50,41,
+32,40,95,49,50,54,48,32,95,49,50,54,54,41,41,41,32,40,85,32,
+40,75,32,40,75,32,95,50,53,41,41,41,41,41,32,40,40,65,32,58,
+49,50,54,51,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+40,95,54,52,32,95,49,49,52,54,41,41,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,83,39,32,67,41,32,95,50,57,49,41,32,40,40,
+66,32,40,95,51,52,32,95,53,56,41,41,32,95,55,53,56,41,41,41,
+32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,40,65,32,58,49,
+50,54,52,32,40,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,40,95,54,52,32,95,49,49,52,54,41,41,41,41,41,
+32,40,40,66,32,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,
+40,83,39,32,66,41,32,40,40,66,32,83,41,32,95,50,57,49,41,41,
+32,40,40,66,32,40,66,32,40,66,32,95,49,49,53,55,41,41,41,32,
+95,50,57,50,41,41,41,41,32,40,40,66,32,67,41,32,95,49,49,57,
+57,41,41,41,41,32,40,40,65,32,58,49,50,54,53,32,40,40,80,32,
+95,49,50,54,51,41,32,40,95,51,52,32,95,53,56,41,41,41,32,40,
+40,65,32,58,49,50,54,54,32,40,40,40,67,39,32,40,67,39,32,40,
+95,51,50,32,95,53,56,41,41,41,32,95,49,50,54,55,41,32,40,95,
+51,52,32,95,53,56,41,41,41,32,40,40,65,32,58,49,50,54,55,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,40,83,39,32,67,
+41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,39,41,41,41,32,40,40,40,83,39,
+32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,40,67,39,32,83,
+41,41,32,40,40,40,83,39,32,40,67,39,32,83,41,41,32,40,40,40,
+83,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,40,67,39,
+32,83,41,41,32,40,40,40,83,39,32,40,67,39,32,83,41,41,32,40,
+40,40,83,39,32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,40,
+67,39,32,67,41,41,32,40,40,40,83,39,32,40,67,39,32,67,41,41,
+32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,83,39,
+32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,40,67,39,32,67,
+41,41,32,40,40,40,83,39,32,67,41,32,40,40,66,32,40,83,32,83,
+39,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,83,32,40,95,57,48,
+52,32,34,100,105,99,116,36,34,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,40,67,39,32,67,41,41,32,40,40,66,32,
+40,66,32,40,83,32,95,57,49,53,41,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,
+48,56,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,
+41,41,32,40,40,83,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,83,39,32,67,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,
+39,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,95,50,55,50,32,95,53,54,41,41,32,95,52,55,49,
+41,41,32,95,49,49,57,52,41,41,41,32,75,41,41,32,40,90,32,75,
+41,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,32,40,
+40,67,39,32,40,67,39,32,67,41,41,32,95,49,51,49,54,41,41,41,
+41,41,41,41,32,40,95,49,51,48,51,32,40,40,80,32,95,56,51,55,
+41,32,95,56,48,56,41,41,41,41,41,32,40,40,66,32,40,40,67,39,
+32,40,95,51,50,32,95,53,56,41,41,32,40,40,40,67,39,32,95,49,
+50,48,54,41,32,40,95,56,48,53,32,95,56,48,55,41,41,32,34,100,
+105,99,116,36,34,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,
+95,51,51,32,95,53,56,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,85,32,40,75,32,95,49,51,48,50,41,41,41,32,95,49,49,54,56,
+41,41,32,40,40,66,32,40,95,51,52,32,95,53,56,41,41,32,95,55,
+52,51,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,
+49,50,54,49,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,
+41,41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,
+40,40,66,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,
+95,49,50,55,50,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,85,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,51,49,51,
+41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,39,41,
+32,95,49,51,49,54,41,41,32,95,55,52,52,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,40,95,51,50,
+32,95,53,56,41,41,41,32,95,49,50,55,49,41,41,32,95,49,50,54,
+54,41,41,41,32,95,49,50,55,53,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,
+83,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,83,39,32,67,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+83,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,
+41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,
+40,67,39,32,40,83,39,32,67,41,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,40,83,39,32,66,41,32,40,40,67,32,67,39,41,32,75,
+41,41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,
+40,66,39,32,40,66,39,32,40,40,66,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,85,
+41,41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,
+40,40,66,32,40,83,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,67,32,83,41,
+41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,67,39,32,40,
+83,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,83,32,40,40,67,32,40,95,50,
+48,50,32,95,56,57,50,41,41,32,40,95,56,57,55,32,95,49,49,48,
+55,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,
+40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,83,32,40,40,
+67,32,40,95,50,48,50,32,95,56,57,50,41,41,32,40,95,56,57,55,
+32,95,49,49,48,56,41,41,41,41,41,41,41,41,32,40,40,40,83,39,
+32,40,83,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,83,32,40,40,67,32,40,95,50,48,50,32,
+95,56,57,50,41,41,32,40,95,56,57,55,32,95,49,49,48,57,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,67,41,32,40,67,32,40,40,67,32,40,95,50,48,50,32,95,56,57,
+50,41,41,32,40,95,56,57,55,32,95,49,49,49,49,41,41,41,41,41,
+41,41,32,95,49,50,54,57,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,95,49,50,54,57,41,32,40,40,66,32,95,55,
+55,55,41,32,95,51,54,51,41,41,41,41,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,40,67,39,32,67,39,41,41,32,95,49,
+50,55,48,41,32,40,40,66,32,95,55,55,53,41,32,95,51,54,48,41,
+41,41,32,40,40,67,32,95,49,50,57,56,41,32,95,49,49,48,56,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,95,
+49,50,54,57,41,32,40,40,66,32,95,55,55,53,41,32,95,51,54,48,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,
+67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,40,66,32,95,49,
+50,54,49,41,32,40,40,66,32,95,55,52,51,41,32,40,40,67,32,95,
+56,57,56,41,32,34,102,114,111,109,73,110,116,101,103,101,114,34,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,
+32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,
+40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,50,55,
+50,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,85,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,
+40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,
+66,32,40,40,67,39,32,66,41,32,95,49,51,49,54,41,41,32,40,67,
+32,95,55,52,52,41,41,41,41,41,41,41,41,41,41,41,41,32,75,41,
+41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,66,39,32,40,
+40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,
+51,50,32,95,53,56,41,41,41,32,85,41,41,41,41,41,32,40,40,40,
+83,39,32,66,41,32,40,66,39,32,40,40,66,32,40,83,39,32,40,67,
+39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,
+83,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,67,41,32,40,67,32,40,40,67,32,40,95,50,48,50,32,95,56,57,
+50,41,41,32,40,95,56,57,55,32,95,49,49,48,57,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,95,49,50,
+54,57,41,32,40,40,66,32,95,55,55,55,41,32,40,95,50,53,54,32,
+95,49,53,50,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,
+40,66,32,95,49,50,54,49,41,32,40,40,66,32,95,55,52,51,41,32,
+40,40,67,32,95,56,57,56,41,32,34,102,114,111,109,82,97,116,105,111,
+110,97,108,34,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,85,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,
+41,32,40,40,66,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,
+41,32,95,49,50,55,50,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,85,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,90,41,41,41,32,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,49,51,49,
+54,41,41,32,40,67,32,95,55,52,52,41,41,41,41,41,41,41,41,41,
+41,41,41,32,75,41,41,32,75,41,41,32,75,41,41,32,75,41,41,32,
+95,49,50,54,57,41,41,32,40,40,80,32,40,75,32,40,40,95,49,51,
+32,95,53,55,41,32,95,52,55,54,41,41,41,32,40,40,40,67,39,32,
+40,95,51,50,32,95,53,56,41,41,32,40,40,40,67,39,32,40,95,51,
+50,32,95,53,56,41,41,32,95,49,49,57,55,41,32,95,49,49,57,54,
+41,41,32,40,40,67,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,40,85,32,40,
+40,66,32,40,95,49,51,32,95,53,55,41,41,32,95,52,55,55,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,
+41,32,40,40,95,49,51,32,95,53,55,41,32,95,52,55,54,41,41,41,
+41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,
+32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,54,49,41,41,41,
+32,40,40,66,32,40,66,32,85,41,41,32,40,40,40,67,39,32,66,41,
+32,40,66,39,32,40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,
+56,41,41,32,95,49,50,54,53,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,95,51,50,32,
+95,53,56,41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,95,52,
+51,32,95,53,56,41,41,41,32,40,67,32,95,49,50,56,51,41,41,41,
+41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,
+32,95,55,52,56,41,41,41,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,49,50,57,52,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,50,
+54,54,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,
+41,41,41,32,95,55,52,57,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,40,83,39,32,40,95,51,50,32,95,53,56,41,41,32,40,40,66,
+32,40,40,95,50,55,50,32,95,53,54,41,32,95,52,49,52,41,41,32,
+40,40,95,52,51,32,95,53,56,41,32,95,49,50,54,49,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,67,39,32,40,95,51,51,32,95,53,56,41,41,
+41,41,41,32,40,40,40,67,39,32,40,83,39,32,66,41,41,32,40,40,
+66,32,66,39,41,32,40,67,32,95,49,49,57,53,41,41,41,32,40,40,
+66,32,40,66,32,95,49,49,56,55,41,41,32,40,40,40,67,39,32,66,
+41,32,95,56,48,49,41,32,95,52,49,49,41,41,41,41,41,32,40,40,
+66,32,40,95,51,52,32,95,53,56,41,41,32,95,55,53,48,41,41,41,
+41,41,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,32,40,40,
+40,83,39,32,40,83,39,32,67,41,41,32,40,40,40,83,39,32,40,83,
+39,32,67,41,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,32,
+40,40,40,83,39,32,40,83,39,32,80,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,95,49,50,48,52,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,40,83,39,32,40,95,51,51,32,95,53,56,41,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,66,41,41,32,40,67,32,
+95,49,49,57,53,41,41,32,40,40,66,32,95,49,49,56,54,41,32,95,
+49,51,48,48,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+95,51,50,32,95,53,56,41,41,41,32,40,40,67,39,32,40,95,52,51,
+32,95,53,56,41,41,32,95,49,50,54,50,41,41,32,40,40,66,32,40,
+95,51,52,32,95,53,56,41,41,32,40,40,66,32,95,55,53,49,41,32,
+95,55,54,54,41,41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,
+40,67,39,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,89,41,41,32,40,40,66,32,40,
+40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,80,41,41,32,40,
+40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,
+41,41,32,95,49,50,54,49,41,41,32,40,40,66,32,40,66,32,40,95,
+51,52,32,95,53,56,41,41,41,32,40,40,66,32,80,41,32,95,52,50,
+51,41,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,
+39,32,40,67,39,32,83,41,41,41,41,32,40,40,40,67,39,32,40,83,
+39,32,40,83,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,67,32,83,39,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,
+32,95,49,50,48,52,41,41,41,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,40,66,32,40,
+67,39,32,40,83,39,32,40,95,51,50,32,95,53,56,41,41,41,41,32,
+40,40,66,32,40,67,39,32,95,49,50,56,52,41,41,32,40,40,66,32,
+95,49,49,56,54,41,32,95,49,51,48,48,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,95,50,54,49,41,41,32,40,67,32,
+95,49,50,56,56,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,67,39,41,32,67,39,41,41,32,40,40,67,39,32,40,
+67,39,32,95,52,54,50,41,41,32,40,67,32,95,55,56,52,41,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,67,39,
+32,40,95,51,50,32,95,53,56,41,41,32,40,40,40,83,39,32,95,49,
+50,56,52,41,32,40,40,66,32,95,49,51,48,49,41,32,40,95,56,48,
+53,32,95,56,48,56,41,41,41,32,73,41,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,67,39,41,32,40,40,67,39,32,95,52,54,50,41,
+32,95,55,56,53,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,40,67,39,32,95,50,54,49,41,32,95,49,50,57,52,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,67,39,41,32,40,40,67,39,32,
+95,52,54,50,41,32,95,55,56,54,41,41,41,41,41,41,32,95,52,54,
+49,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,
+40,66,32,40,66,32,85,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,
+40,67,39,32,40,95,51,51,32,95,53,56,41,41,41,41,32,40,40,40,
+67,39,32,40,83,39,32,66,41,41,32,40,67,32,95,49,49,57,53,41,
+41,32,40,40,66,32,95,49,49,56,54,41,32,95,49,51,48,48,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,
+41,41,32,40,40,66,32,40,66,32,95,55,53,49,41,41,32,40,67,32,
+95,55,54,55,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,95,49,50,54,54,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,67,32,95,49,50,54,56,41,32,34,70,114,111,109,
+34,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,95,49,50,54,54,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,67,
+32,95,49,50,54,56,41,32,34,70,114,111,109,84,111,34,41,41,41,32,
+40,40,40,67,39,32,66,41,32,79,41,32,40,40,67,32,79,41,32,75,
+41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+40,66,39,32,95,49,50,54,54,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,40,40,67,32,95,49,50,54,56,41,32,34,70,114,
+111,109,84,104,101,110,34,41,41,41,32,40,40,40,67,39,32,66,41,32,
+79,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,95,
+49,50,54,54,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,
+39,32,40,66,39,32,40,40,67,32,95,49,50,54,56,41,32,34,70,114,
+111,109,84,104,101,110,84,111,34,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,79,41,41,32,40,40,40,67,39,32,66,41,32,
+79,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,80,32,95,49,51,48,50,41,41,
+41,41,32,40,40,40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,83,39,32,83,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,85,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,67,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,
+66,32,40,67,32,40,40,67,32,67,39,41,32,40,90,32,75,41,41,41,
+41,32,95,49,50,54,54,41,41,32,75,41,41,41,32,40,40,40,67,39,
+32,95,50,54,49,41,32,95,49,49,48,48,41,32,34,98,97,100,32,102,
+105,110,97,108,32,100,111,32,115,116,97,116,101,109,101,110,116,34,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,
+41,32,40,40,40,83,39,32,40,67,39,32,40,83,39,32,40,67,39,32,
+83,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,
+67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,83,39,
+41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,
+39,32,40,66,39,32,40,66,39,32,95,49,50,54,54,41,41,41,41,41,
+32,40,40,40,83,39,32,40,83,39,32,66,41,41,32,40,40,66,32,66,
+39,41,32,40,40,66,32,40,66,32,40,67,39,32,95,55,52,52,41,41,
+41,32,40,40,66,32,40,66,32,95,55,52,52,41,41,32,40,40,66,32,
+40,66,32,95,55,52,51,41,41,32,40,40,40,83,39,32,95,52,55,48,
+41,32,40,40,67,32,95,56,57,56,41,32,34,62,62,61,34,41,41,32,
+40,40,66,32,40,67,32,95,57,48,53,41,41,32,40,40,67,32,95,56,
+57,56,41,32,34,62,62,61,34,41,41,41,41,41,41,41,41,32,40,40,
+40,83,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,95,
+55,54,49,41,32,40,40,40,67,39,32,79,41,32,40,40,67,32,95,49,
+49,50,57,41,32,34,36,120,34,41,41,32,75,41,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,
+95,55,52,56,41,32,40,40,67,32,95,49,49,50,57,41,32,34,36,120,
+34,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,79,41,41,41,32,40,40,66,32,40,66,32,40,67,32,80,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,95,55,57,49,41,41,32,40,40,
+40,67,39,32,40,67,39,32,79,41,41,32,40,40,66,32,40,66,32,40,
+80,32,95,52,54,49,41,41,41,32,95,55,53,50,41,41,32,75,41,41,
+32,95,52,54,49,41,41,41,32,75,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,95,
+49,50,54,54,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,67,39,32,95,55,52,52,41,41,
+41,32,40,40,66,32,40,66,32,95,55,52,52,41,41,32,40,40,66,32,
+40,66,32,95,55,52,51,41,41,32,40,40,40,83,39,32,95,52,55,48,
+41,32,40,40,67,32,95,56,57,56,41,32,34,62,62,34,41,41,32,40,
+40,66,32,40,67,32,95,57,48,53,41,41,32,40,40,67,32,95,56,57,
+56,41,32,34,62,62,34,41,41,41,41,41,41,41,32,95,55,53,50,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,
+32,95,49,50,54,54,41,41,41,32,40,40,66,32,40,66,32,40,67,32,
+95,55,52,57,41,41,41,32,95,55,53,50,41,41,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,95,49,50,54,54,
+41,41,32,40,40,67,39,32,95,55,52,52,41,32,95,55,52,51,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,40,67,39,32,67,39,
+41,32,40,40,66,32,67,39,41,32,40,66,39,32,95,49,50,54,54,41,
+41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,95,55,54,49,41,
+32,40,40,67,32,79,41,32,75,41,41,41,41,32,40,40,66,32,40,67,
+39,32,95,55,52,52,41,41,32,40,40,66,32,95,55,52,52,41,32,95,
+55,52,51,41,41,41,41,41,32,40,40,67,32,95,49,49,50,57,41,32,
+34,36,120,34,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,
+41,41,32,40,40,40,83,39,32,95,49,50,54,50,41,32,40,40,66,32,
+95,49,51,48,49,41,32,40,95,56,48,53,32,95,56,48,56,41,41,41,
+32,73,41,41,41,41,41,41,32,40,40,67,32,40,40,40,67,39,32,67,
+39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,83,39,41,32,83,
+39,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,
+32,40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,
+95,49,50,54,49,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,85,41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,
+41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,40,66,32,40,95,
+51,50,32,95,53,56,41,41,32,95,49,50,54,49,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,85,41,41,
+41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,
+32,40,67,39,32,40,83,39,32,66,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,83,39,32,40,95,51,50,32,95,53,56,41,41,41,41,
+41,32,95,49,50,56,55,41,41,41,41,32,40,40,40,83,39,32,66,41,
+32,40,66,39,32,40,40,66,32,40,83,39,32,40,67,39,32,40,67,39,
+32,66,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,95,51,50,32,95,53,56,41,41,41,41,41,32,40,40,66,32,40,67,
+39,32,67,41,41,32,95,49,50,56,55,41,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,66,41,
+41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,95,51,51,32,95,53,56,41,41,41,41,32,95,49,
+50,54,52,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,
+51,52,32,95,53,56,41,41,41,41,32,95,55,53,53,41,41,41,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,
+40,66,32,40,83,39,32,40,95,51,50,32,95,53,56,41,41,41,32,95,
+49,51,49,51,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,50,
+32,95,53,56,41,41,41,32,95,49,51,49,51,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,41,32,
+95,55,53,53,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,95,
+49,50,53,54,32,40,95,49,50,53,56,32,95,55,57,57,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,40,95,51,50,32,95,53,56,41,41,41,41,41,32,40,40,67,39,32,
+40,67,39,32,67,41,41,32,95,49,51,49,54,41,41,32,40,67,32,95,
+49,51,49,51,41,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,
+41,32,75,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,
+66,32,95,50,54,49,41,32,40,40,67,32,95,49,50,51,48,41,32,95,
+55,57,57,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,40,95,51,50,32,95,53,
+56,41,41,41,41,32,40,40,66,32,40,66,32,40,67,32,95,49,50,51,
+56,41,41,41,32,95,49,50,54,54,41,41,32,40,40,66,32,40,66,32,
+40,95,51,52,32,95,53,56,41,41,41,32,95,55,54,48,41,41,41,41,
+41,41,32,40,40,66,32,40,95,50,54,49,32,95,50,52,41,41,32,40,
+40,66,32,40,95,52,54,51,32,34,116,99,69,120,112,114,58,32,34,41,
+41,32,40,40,40,83,39,32,95,52,54,51,41,32,40,40,66,32,40,95,
+49,53,57,48,32,95,56,57,48,41,41,32,40,95,56,48,53,32,95,56,
+48,56,41,41,41,32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,
+35,51,50,41,32,75,41,41,41,32,40,95,49,53,57,48,32,95,56,51,
+55,41,41,41,41,41,41,41,32,40,95,56,48,53,32,95,56,48,56,41,
+41,41,32,40,40,65,32,58,49,50,54,56,32,40,40,66,32,40,66,32,
+40,95,51,57,57,32,95,55,52,52,41,41,41,32,40,40,66,32,40,66,
+32,95,55,52,51,41,41,32,40,40,40,67,39,32,66,41,32,95,56,57,
+56,41,32,40,95,52,54,51,32,34,101,110,117,109,34,41,41,41,41,41,
+32,40,40,65,32,58,49,50,54,57,32,40,40,40,83,39,32,40,83,39,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,67,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,
+40,67,32,83,39,41,32,75,41,41,32,75,41,41,32,75,41,41,32,75,
+41,41,32,75,41,41,32,75,41,41,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,95,49,50,48,52,41,41,41,41,32,95,49,50,55,48,
+41,41,41,41,32,75,41,41,32,40,40,40,67,39,32,40,83,39,32,83,
+41,41,32,95,49,50,55,48,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,83,39,
+32,67,41,32,40,40,40,83,39,32,80,41,32,40,90,32,40,40,67,32,
+95,49,50,57,56,41,32,95,49,49,48,55,41,41,41,32,40,90,32,40,
+40,67,32,95,49,50,57,56,41,32,95,49,49,49,49,41,41,41,41,32,
+40,90,32,40,40,67,32,95,49,50,57,56,41,32,95,49,49,48,57,41,
+41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,90,32,40,
+40,67,32,95,49,50,57,56,41,32,95,49,49,49,48,41,41,41,41,32,
+40,90,32,40,40,40,83,39,32,95,49,49,56,54,41,32,95,49,51,48,
+48,41,32,40,40,67,32,95,49,50,57,56,41,32,95,49,49,49,48,41,
+41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,
+95,49,51,48,50,41,41,41,41,41,32,40,40,65,32,58,49,50,55,48,
+32,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,
+66,41,32,95,49,51,49,54,41,32,95,55,52,55,41,41,41,32,40,40,
+65,32,58,49,50,55,49,32,40,40,66,32,40,66,32,40,40,95,51,50,
+32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,52,41,41,41,41,
+32,40,40,66,32,40,40,67,39,32,40,67,39,32,40,95,51,50,32,95,
+53,56,41,41,41,32,40,40,67,39,32,40,95,52,51,32,95,53,56,41,
+41,32,40,40,66,32,85,41,32,40,40,66,32,40,40,83,39,32,66,41,
+32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,48,
+56,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,67,39,32,80,41,41,41,32,40,40,
+66,32,40,40,67,39,32,66,41,32,40,40,66,32,80,41,32,95,55,52,
+51,41,41,41,32,40,40,40,67,39,32,66,41,32,95,49,50,55,51,41,
+32,95,49,49,51,54,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,41,
+41,41,41,32,40,40,40,67,39,32,40,40,89,32,40,40,40,83,39,32,
+40,67,32,40,40,40,83,39,32,40,67,39,32,80,41,41,32,40,40,66,
+32,40,66,32,40,83,32,40,40,40,67,39,32,83,39,41,32,40,40,66,
+32,83,39,41,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+83,39,32,40,67,39,32,80,41,41,41,41,32,40,40,67,32,40,40,40,
+67,39,32,67,39,41,32,40,40,66,32,83,39,41,32,67,39,41,41,32,
+40,40,40,67,39,32,66,41,32,67,41,32,40,90,32,75,41,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,41,41,41,32,
+40,40,40,83,39,32,66,41,32,40,40,66,32,40,83,39,32,83,41,41,
+32,40,40,66,32,40,66,32,40,67,32,83,39,41,41,41,32,40,40,66,
+32,40,66,32,40,80,32,95,49,51,48,50,41,41,41,32,40,40,66,32,
+40,66,32,40,67,32,66,41,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,
+32,40,40,40,67,39,32,66,41,32,67,39,41,32,40,67,32,95,52,54,
+50,41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,67,
+32,66,41,41,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,83,
+39,32,66,41,41,32,40,40,66,32,40,66,32,40,83,39,32,40,83,39,
+32,40,83,39,32,66,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+40,67,39,32,66,41,32,66,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,32,40,66,32,67,41,41,32,95,52,
+54,49,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,90,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,85,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,83,39,32,66,
+41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,85,32,95,49,51,
+48,50,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,67,32,66,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,83,32,66,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,85,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,66,41,41,41,41,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,67,
+39,32,67,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+40,67,39,32,40,83,39,32,66,41,41,32,40,40,66,32,66,39,41,32,
+40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,83,39,32,83,
+41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,
+40,67,39,32,95,49,50,49,41,41,32,40,67,32,40,95,50,48,50,32,
+95,50,56,49,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,
+95,49,50,48,41,41,32,40,67,32,40,95,50,48,51,32,95,56,50,49,
+41,41,41,32,40,40,67,32,40,95,50,48,50,32,95,56,50,49,41,41,
+32,95,56,50,48,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,40,67,39,
+32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,
+66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,32,
+40,67,39,32,67,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,
+32,40,83,39,32,95,49,50,48,41,41,32,40,67,32,40,95,52,57,55,
+32,95,50,56,50,41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,
+41,32,40,40,66,32,95,49,50,49,41,32,40,40,67,32,40,95,50,48,
+50,32,95,56,50,49,41,41,32,95,56,49,56,41,41,41,41,32,40,67,
+32,40,95,50,48,50,32,95,50,56,49,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,66,39,41,32,40,40,40,67,39,32,66,41,32,67,39,41,32,40,67,
+32,95,52,54,50,41,41,41,41,32,40,67,32,95,52,54,50,41,41,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,
+41,41,32,40,66,32,67,41,41,41,41,41,41,32,40,40,40,67,39,32,
+95,56,51,54,41,32,40,95,56,48,53,32,95,56,48,56,41,41,32,34,
+97,109,98,105,103,117,111,117,115,32,111,112,101,114,97,116,111,114,32,101,
+120,112,114,101,115,115,105,111,110,34,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,
+32,40,66,39,32,40,85,32,95,49,51,48,50,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,80,32,95,49,
+51,48,50,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,
+67,39,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,52,54,50,
+41,41,41,32,40,40,66,32,40,67,39,32,95,55,52,52,41,41,32,95,
+55,52,52,41,41,41,41,41,41,41,41,41,32,40,85,32,65,41,41,32,
+40,85,32,75,41,41,41,32,75,41,41,32,40,40,67,32,79,41,32,75,
+41,41,32,95,52,54,49,41,41,41,41,41,32,40,40,65,32,58,49,50,
+55,50,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,83,32,95,
+49,49,57,49,41,41,32,40,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,95,49,50,48,52,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,95,49,50,48,52,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,
+83,39,32,40,95,51,51,32,95,53,56,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,95,
+49,49,57,57,41,41,32,95,49,49,56,56,41,41,32,40,40,66,32,40,
+66,32,40,95,51,52,32,95,53,56,41,41,41,32,80,41,41,41,41,41,
+41,32,40,95,51,52,32,95,53,56,41,41,41,32,40,40,65,32,58,49,
+50,55,51,32,40,40,66,32,40,66,32,40,95,50,54,49,32,40,95,52,
+55,49,32,40,40,80,32,95,56,49,56,41,32,40,40,95,52,56,53,32,
+95,50,55,55,41,32,40,95,51,53,57,32,35,57,41,41,41,41,41,41,
+41,32,40,67,32,95,57,50,56,41,41,41,32,40,40,65,32,58,49,50,
+55,52,32,40,40,67,32,95,49,50,48,54,41,32,34,97,100,105,99,116,
+34,41,41,32,40,40,65,32,58,49,50,55,53,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,49,
+50,54,53,41,41,32,40,40,66,32,40,66,32,40,40,95,50,55,54,32,
+95,53,54,41,32,95,55,52,54,41,41,41,32,40,67,32,40,95,49,50,
+55,54,32,95,49,50,52,41,41,41,41,41,32,40,40,65,32,58,49,50,
+55,54,32,40,40,66,32,89,41,32,40,40,66,32,40,40,83,39,32,83,
+41,32,40,40,66,32,40,40,67,39,32,83,39,41,32,40,40,66,32,67,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,67,
+32,40,40,67,32,83,39,41,32,75,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,
+32,75,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,95,49,50,50,51,41,41,41,
+41,32,67,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,67,41,32,40,40,66,32,40,40,83,39,32,83,39,41,32,95,49,49,
+57,50,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,95,51,
+50,32,95,53,56,41,41,32,40,40,40,67,39,32,95,49,50,48,54,41,
+32,40,95,56,48,53,32,40,95,56,48,57,32,95,56,49,53,41,41,41,
+32,34,102,99,110,83,34,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,95,51,50,32,95,53,56,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,40,66,32,95,50,54,49,41,32,95,49,51,
+50,48,41,41,41,32,40,40,66,32,40,95,52,51,32,95,53,56,41,41,
+32,95,49,50,55,55,41,41,41,41,32,40,40,66,32,85,41,32,40,40,
+66,32,40,40,83,39,32,83,41,32,40,40,66,32,85,41,32,40,95,51,
+52,32,95,53,56,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,95,51,52,32,95,53,56,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,79,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,95,50,54,49,32,40,95,55,57,48,32,95,52,54,49,
+41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,
+40,66,32,95,55,57,49,41,32,40,40,40,67,39,32,79,41,32,40,40,
+66,32,40,80,32,95,52,54,49,41,41,32,95,55,52,51,41,41,32,75,
+41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,95,52,54,
+51,41,32,95,49,50,56,53,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,79,41,41,32,95,55,56,55,41,32,75,41,41,41,41,41,32,75,
+41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,85,
+41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,
+32,40,40,83,39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,
+55,52,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,
+56,41,41,32,40,40,67,32,95,49,50,48,54,41,32,34,102,99,110,68,
+34,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,66,41,32,40,40,66,32,40,83,39,32,66,41,41,32,40,40,66,32,
+40,66,32,95,50,54,49,41,41,32,40,67,32,95,49,49,55,48,41,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,41,32,67,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,
+53,56,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,79,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,
+41,32,40,40,66,32,40,67,32,83,41,41,32,40,40,66,32,40,66,32,
+40,67,32,66,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,
+39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,
+67,39,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+67,41,32,40,40,66,32,40,67,32,67,39,41,41,32,40,40,66,32,95,
+55,57,48,41,32,40,40,40,67,39,32,79,41,32,95,55,52,51,41,32,
+75,41,41,41,41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,
+41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+40,40,66,32,95,50,54,49,41,32,40,40,66,32,95,55,57,48,41,32,
+40,40,40,67,39,32,79,41,32,95,55,52,51,41,32,75,41,41,41,41,
+41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,95,55,57,49,41,
+32,40,40,40,67,39,32,79,41,32,40,40,66,32,40,80,32,95,52,54,
+49,41,41,32,95,55,52,51,41,41,32,75,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,79,41,41,32,95,55,56,55,41,32,75,41,41,41,
+41,41,32,75,41,41,41,41,41,41,32,40,95,56,48,53,32,40,95,56,
+48,57,32,95,56,49,53,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,50,55,55,32,40,40,66,32,85,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,50,54,49,41,41,
+32,95,49,50,55,56,41,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,
+41,32,40,67,32,95,49,50,55,57,41,41,41,32,40,40,66,32,40,66,
+32,40,95,51,52,32,95,53,56,41,41,41,32,95,55,57,48,41,41,41,
+41,41,32,40,40,65,32,58,49,50,55,56,32,40,40,40,83,39,32,67,
+41,32,40,40,66,32,40,67,32,83,39,41,41,32,40,40,67,32,80,41,
+32,95,52,54,49,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,40,83,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,
+50,32,95,53,56,41,41,41,32,40,40,67,39,32,95,49,50,55,50,41,
+32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,85,41,41,41,32,40,40,66,32,40,40,67,39,
+32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,95,50,54,49,41,41,32,40,67,32,95,49,50,56,56,41,41,
+41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,
+32,40,40,66,32,40,66,32,95,50,54,49,41,41,32,40,67,32,95,49,
+50,55,56,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,67,39,
+32,66,41,41,32,95,52,54,50,41,41,41,41,41,41,41,32,40,40,65,
+32,58,49,50,55,57,32,40,40,66,32,85,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,95,50,54,49,41,32,95,49,50,57,52,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,40,95,51,50,32,95,53,56,41,41,41,32,40,40,66,32,40,95,
+52,51,32,95,53,56,41,41,32,95,49,50,56,48,41,41,41,32,40,40,
+66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,32,40,67,32,
+95,55,57,49,41,41,41,41,41,41,32,40,40,65,32,58,49,50,56,48,
+32,40,40,66,32,85,41,32,40,40,66,32,40,40,67,39,32,66,41,32,
+40,40,66,32,95,50,54,49,41,32,95,49,50,56,49,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,95,51,50,32,95,53,56,41,41,41,32,95,49,50,56,52,41,41,32,
+40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,32,80,
+41,41,41,41,41,32,40,40,65,32,58,49,50,56,49,32,40,40,67,32,
+40,40,67,32,83,39,41,32,40,85,32,95,52,54,49,41,41,41,32,40,
+40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,
+32,95,49,50,56,50,41,41,41,32,40,40,66,32,40,40,67,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,95,49,50,56,49,41,41,41,
+32,40,40,40,67,39,32,66,41,32,66,41,32,95,52,54,50,41,41,41,
+41,41,32,40,40,65,32,58,49,50,56,50,32,40,40,40,67,39,32,83,
+41,32,40,40,67,32,40,40,67,32,83,39,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,
+54,49,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,
+32,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,95,50,54,
+49,41,41,32,40,67,32,95,49,50,56,56,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,66,41,32,40,67,32,95,55,56,52,41,41,41,41,
+41,41,41,32,40,40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,
+56,41,41,32,40,40,40,83,39,32,95,49,50,56,52,41,32,40,40,66,
+32,95,49,51,48,49,41,32,40,95,56,48,53,32,95,56,48,56,41,41,
+41,32,73,41,41,41,32,40,40,67,32,66,41,32,95,55,56,53,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,95,50,54,49,41,32,95,49,
+50,57,52,41,41,32,40,40,67,32,66,41,32,95,55,56,54,41,41,41,
+41,32,40,40,65,32,58,49,50,56,51,32,40,40,66,32,40,66,32,85,
+41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,95,50,54,49,41,41,32,95,49,50,56,56,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,50,55,
+57,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,
+41,41,32,80,41,41,41,41,41,32,40,40,65,32,58,49,50,56,52,32,
+40,40,40,67,39,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,
+41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,51,49,57,
+41,41,41,32,95,49,50,54,50,41,41,32,40,85,32,40,40,40,83,39,
+32,67,41,32,40,40,66,32,40,83,32,95,51,57,50,41,41,32,40,40,
+66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,41,
+41,41,41,32,40,40,67,39,32,95,55,52,57,41,32,95,49,50,56,53,
+41,41,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,
+40,65,32,58,49,50,56,53,32,40,95,51,57,52,32,40,85,32,40,40,
+40,67,39,32,40,67,39,32,79,41,41,32,40,40,40,67,39,32,66,41,
+32,95,55,56,55,41,32,40,40,40,67,39,32,79,41,32,40,40,66,32,
+40,95,55,57,48,32,95,52,54,49,41,41,32,40,40,40,67,39,32,95,
+55,57,49,41,32,40,40,40,67,39,32,79,41,32,40,80,32,95,52,54,
+49,41,41,32,75,41,41,32,95,52,54,49,41,41,41,32,75,41,41,41,
+32,75,41,41,41,41,32,40,40,65,32,58,49,50,56,54,32,40,40,40,
+83,39,32,40,83,39,32,80,41,41,32,40,40,66,32,67,41,32,95,49,
+50,54,52,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+40,95,51,50,32,95,53,56,41,41,41,41,32,40,40,66,32,67,41,32,
+40,40,67,32,95,49,50,56,55,41,32,95,50,53,41,41,41,32,40,75,
+32,40,40,95,51,52,32,95,53,56,41,32,95,49,51,52,49,41,41,41,
+41,41,32,40,40,65,32,58,49,50,56,55,32,40,40,66,32,40,66,32,
+40,66,32,40,40,83,39,32,40,95,51,50,32,95,53,56,41,41,32,95,
+49,51,48,57,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,85,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,67,39,32,40,95,51,50,32,95,53,
+56,41,41,41,41,41,32,95,49,51,49,52,41,41,41,32,40,40,66,32,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,
+32,40,40,66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,
+40,40,66,32,40,66,32,95,49,51,48,53,41,41,32,40,40,40,67,39,
+32,66,41,32,79,41,32,40,40,67,32,79,41,32,75,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,67,39,32,40,95,51,51,32,95,53,56,41,41,41,41,
+32,40,40,66,32,40,40,67,39,32,40,67,39,32,95,50,54,49,41,41,
+32,40,40,66,32,40,66,32,40,95,52,53,32,95,53,56,41,41,41,32,
+40,40,66,32,40,66,32,95,49,50,50,41,41,32,40,40,66,32,40,66,
+32,95,51,57,50,41,41,32,40,40,67,39,32,95,51,57,54,41,32,40,
+67,32,40,95,52,51,50,32,95,56,57,50,41,41,41,41,41,41,41,41,
+32,40,40,67,32,95,49,49,57,56,41,32,34,83,117,98,115,117,109,112,
+116,105,111,110,32,99,104,101,99,107,32,102,97,105,108,101,100,34,41,41,
+41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,41,32,40,
+40,65,32,58,49,50,56,56,32,40,40,40,83,39,32,40,83,39,32,83,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,
+40,40,83,39,32,67,39,41,32,83,39,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,67,39,32,83,41,32,40,40,67,39,32,95,49,50,
+50,41,32,95,57,49,48,41,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,40,40,66,32,40,67,39,32,95,50,54,49,41,41,
+32,40,40,66,32,40,66,32,95,49,50,50,50,41,41,32,40,40,40,67,
+39,32,40,67,39,32,79,41,41,32,40,67,32,80,41,41,32,75,41,41,
+41,41,41,32,85,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,
+41,32,40,90,32,75,41,41,41,32,40,40,40,67,39,32,40,83,39,32,
+40,67,39,32,40,40,83,39,32,40,95,51,51,32,95,53,56,41,41,32,
+95,49,50,57,50,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,40,95,52,
+51,32,95,53,56,41,32,40,40,40,67,39,32,40,95,50,55,54,32,95,
+53,54,41,41,32,80,41,32,95,49,50,48,52,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,40,67,39,32,95,50,54,49,41,
+32,95,49,50,50,50,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,53,56,
+41,41,41,32,95,49,50,56,57,41,41,32,40,40,66,32,85,41,32,40,
+90,32,40,40,66,32,40,66,32,40,40,83,39,32,40,95,51,50,32,95,
+53,56,41,41,32,40,95,49,50,57,51,32,35,48,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,40,67,39,32,66,
+41,32,40,40,66,32,95,50,54,49,41,32,95,49,49,54,57,41,41,41,
+41,41,41,41,41,41,41,32,95,55,57,52,41,41,41,32,40,40,65,32,
+58,49,50,56,57,32,40,95,49,50,54,48,32,95,49,50,57,49,41,41,
+32,40,40,65,32,58,49,50,57,48,32,40,95,49,50,53,57,32,95,49,
+50,57,49,41,41,32,40,40,65,32,58,49,50,57,49,32,40,40,66,32,
+89,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,67,
+39,32,40,83,39,32,67,41,41,41,41,32,40,40,40,83,39,32,40,67,
+39,32,40,67,39,32,40,83,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,41,32,40,40,40,83,39,32,40,67,
+39,32,40,67,39,32,40,83,39,32,83,41,41,41,41,32,40,40,40,83,
+39,32,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,67,39,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,67,39,32,67,41,41,32,40,40,40,83,39,32,67,
+41,32,40,40,66,32,40,83,32,83,39,41,41,32,40,40,40,83,39,32,
+66,41,32,40,40,66,32,40,67,39,32,67,41,41,32,40,40,66,32,40,
+66,32,40,83,32,95,57,49,53,41,41,41,32,40,40,40,83,39,32,40,
+83,39,32,83,41,41,32,40,40,66,32,40,66,32,40,83,32,95,57,49,
+48,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,40,
+66,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,54,53,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,40,95,
+51,50,32,95,53,56,41,41,32,95,49,50,48,56,41,41,41,32,40,40,
+66,32,40,66,32,85,41,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,67,39,32,40,95,51,51,32,95,
+53,56,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,
+66,32,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,80,
+32,40,75,32,95,49,51,48,50,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,95,
+49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,41,41,32,40,40,66,32,67,41,32,95,49,50,
+54,52,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,40,66,32,40,
+95,51,52,32,95,53,56,41,41,32,40,67,32,40,40,80,32,95,52,54,
+49,41,32,95,52,54,49,41,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,
+95,49,50,48,56,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,
+32,40,95,51,51,32,95,53,56,41,41,32,40,85,32,40,75,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,80,32,40,75,32,95,50,53,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,
+41,41,32,40,75,32,95,50,53,41,41,41,32,40,75,32,40,75,32,95,
+50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,
+32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,95,50,
+53,41,41,41,32,40,75,32,95,50,53,41,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,
+41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,
+40,75,32,40,75,32,95,50,53,41,41,41,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,
+41,41,32,40,75,32,95,50,53,41,41,41,32,40,75,32,95,50,53,41,
+41,41,32,40,75,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,
+67,32,40,40,67,32,40,40,67,32,40,40,80,32,40,75,32,95,50,53,
+41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,
+40,75,32,95,50,53,41,41,41,41,32,40,75,32,95,50,53,41,41,41,
+32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,
+41,41,32,40,75,32,95,50,53,41,41,41,32,40,75,32,95,50,53,41,
+41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,
+40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,
+41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,50,53,41,41,41,
+41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,
+40,75,32,95,50,53,41,41,41,41,32,40,75,32,95,50,53,41,41,41,
+32,40,75,32,95,50,53,41,41,41,32,40,75,32,40,75,32,40,40,95,
+51,52,32,95,53,56,41,32,95,49,51,52,49,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,95,51,
+50,32,95,53,56,41,41,32,95,49,50,49,49,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,67,
+32,66,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,
+32,40,40,66,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,
+83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,
+32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,
+40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,
+40,83,39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,
+39,32,67,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,83,39,32,80,41,32,75,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,40,67,39,32,40,83,39,32,40,95,51,50,32,95,53,56,41,41,41,
+32,95,49,51,48,56,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,85,41,41,41,41,32,40,40,66,32,40,40,83,39,32,40,
+67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,41,41,32,
+40,40,66,32,40,40,83,39,32,40,67,39,32,67,41,41,32,40,40,66,
+32,40,66,32,40,67,32,95,49,49,57,50,41,41,41,32,40,40,66,32,
+40,66,32,40,95,51,52,32,95,53,56,41,41,41,32,40,40,66,32,67,
+41,32,40,80,32,95,52,54,49,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,85,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,
+49,50,55,52,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,95,51,52,32,95,53,56,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,40,67,39,
+32,40,83,39,32,80,41,41,32,40,40,40,67,39,32,40,67,39,32,79,
+41,41,32,40,67,32,80,41,41,32,75,41,41,41,32,40,40,40,67,39,
+32,66,41,32,95,55,52,52,41,32,95,55,52,51,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,
+41,32,40,40,66,32,40,66,32,40,67,39,32,40,67,39,32,40,95,51,
+50,32,95,53,56,41,41,41,41,41,32,40,40,67,32,40,40,40,67,39,
+32,83,39,41,32,40,40,66,32,83,39,41,32,83,39,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,
+95,51,51,32,95,53,56,41,41,41,41,32,40,40,66,32,67,41,32,95,
+49,50,54,52,41,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,
+32,40,40,66,32,40,66,32,67,41,41,32,95,49,50,56,55,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,
+56,41,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,
+41,41,41,41,41,41,41,41,32,40,40,40,110,111,77,97,116,99,104,32,
+34,115,114,99,47,77,105,99,114,111,72,115,47,84,121,112,101,67,104,101,
+99,107,46,104,115,34,41,32,35,49,56,49,52,41,32,35,49,55,41,41,
+41,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,54,53,41,41,32,
+40,90,32,40,40,66,32,40,95,51,52,32,95,53,56,41,41,32,40,67,
+32,40,40,80,32,95,52,54,49,41,32,95,52,54,49,41,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,
+40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,49,50,57,48,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,67,32,66,41,41,41,41,32,40,40,
+66,32,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,
+41,32,40,40,66,32,66,39,41,32,40,40,66,32,66,39,41,32,40,40,
+66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,50,
+55,50,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,85,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,
+40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,
+51,50,32,95,53,56,41,41,41,32,40,67,32,95,49,50,56,57,41,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,85,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,
+66,39,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,41,32,
+40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,66,
+39,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,51,32,95,
+53,56,41,41,41,41,32,40,40,67,39,32,67,41,32,95,49,50,56,54,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,41,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,40,67,39,32,40,67,39,32,66,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,80,41,41,32,95,52,54,51,41,41,41,32,95,52,
+54,51,41,41,41,41,32,95,55,52,52,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,95,51,50,32,95,
+53,56,41,41,41,32,95,49,50,55,49,41,41,41,32,75,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,95,51,50,32,95,53,
+56,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,66,32,40,66,
+32,40,67,32,40,40,67,32,67,39,41,32,75,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,95,49,50,54,57,41,32,40,
+40,66,32,95,55,55,53,41,32,95,51,54,48,41,41,41,41,32,75,41,
+41,32,75,41,41,32,75,41,41,32,75,41,41,32,75,41,41,32,75,41,
+41,32,95,49,50,54,57,41,41,32,40,40,66,32,40,95,51,52,32,95,
+53,56,41,41,32,40,67,32,40,40,80,32,95,52,54,49,41,32,95,52,
+54,49,41,41,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,95,51,
+50,32,95,53,56,41,41,32,40,40,66,32,40,40,95,50,55,50,32,95,
+53,54,41,32,95,52,49,52,41,41,32,40,40,95,52,51,32,95,53,56,
+41,32,95,49,50,57,48,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,85,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+66,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+95,51,51,32,95,53,56,41,41,41,41,41,32,40,40,40,67,39,32,40,
+83,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,67,32,95,49,
+49,57,53,41,41,41,32,40,40,66,32,40,66,32,95,49,49,56,55,41,
+41,32,40,40,40,67,39,32,66,41,32,95,56,48,49,41,32,95,52,49,
+49,41,41,41,41,41,32,40,40,66,32,40,95,51,52,32,95,53,56,41,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,
+40,40,66,32,95,51,57,51,41,32,40,85,32,40,90,32,75,41,41,41,
+41,32,40,40,66,32,95,51,57,51,41,32,40,85,32,40,75,32,75,41,
+41,41,41,41,32,40,40,66,32,95,55,53,48,41,32,40,85,32,40,75,
+32,65,41,41,41,41,41,41,41,41,32,95,52,49,53,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,80,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,
+56,41,32,95,49,50,48,52,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,83,39,32,40,95,
+51,51,32,95,53,56,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,66,41,41,32,40,67,32,95,49,49,57,53,41,41,32,40,40,66,32,
+95,49,49,56,54,41,32,95,49,51,48,48,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,40,
+40,67,39,32,40,95,52,51,32,95,53,56,41,41,32,95,49,50,56,57,
+41,41,32,40,40,66,32,40,40,66,32,40,95,51,52,32,95,53,56,41,
+41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,80,41,32,
+40,40,66,32,95,51,57,51,41,32,40,85,32,40,90,32,75,41,41,41,
+41,32,40,40,66,32,95,51,57,51,41,32,40,85,32,40,75,32,75,41,
+41,41,41,41,32,40,40,66,32,95,55,53,49,41,32,40,40,66,32,95,
+55,54,54,41,32,40,85,32,40,75,32,65,41,41,41,41,41,41,41,32,
+95,52,49,53,41,41,41,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,
+90,32,40,90,32,75,41,41,41,41,41,32,40,90,32,75,41,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,
+90,32,75,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,
+67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,95,49,50,53,54,
+32,40,95,49,50,53,56,32,95,55,57,57,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,
+40,83,39,32,40,95,51,51,32,95,53,56,41,41,41,41,32,40,40,67,
+39,32,67,41,32,95,49,50,56,54,41,41,41,32,40,67,32,95,49,50,
+56,57,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,
+83,39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,
+32,95,49,50,48,56,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,85,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,90,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,40,66,39,32,40,40,66,32,40,67,39,32,66,41,
+41,32,40,66,32,40,95,51,50,32,95,53,56,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,85,41,41,41,41,32,40,
+40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,
+40,66,39,32,40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,
+41,41,32,95,49,50,54,53,41,41,41,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,
+32,66,39,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,
+40,67,39,32,40,95,51,51,32,95,53,56,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,67,41,32,
+40,40,66,32,40,40,67,39,32,67,39,41,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,
+32,40,40,67,32,40,40,80,32,40,75,32,95,49,51,48,50,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,
+41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,40,66,
+32,67,41,32,95,49,50,54,52,41,41,41,32,40,75,32,95,49,51,48,
+50,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,95,
+51,52,32,95,53,56,41,41,41,41,41,32,40,40,66,32,40,40,67,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,67,41,41,32,
+80,41,41,41,32,95,55,53,55,41,41,41,41,41,41,41,41,41,41,41,
+32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,40,66,
+32,40,95,50,54,49,32,95,50,52,41,41,32,40,40,66,32,40,95,52,
+54,51,32,34,116,99,80,97,116,58,32,34,41,41,32,40,40,40,83,39,
+32,95,52,54,51,41,32,40,40,66,32,40,95,49,53,57,48,32,95,56,
+57,48,41,41,32,40,95,56,48,53,32,95,56,48,56,41,41,41,32,40,
+40,66,32,40,95,52,54,51,32,40,40,79,32,35,51,50,41,32,75,41,
+41,41,32,40,95,49,53,57,48,32,95,56,51,55,41,41,41,41,41,41,
+41,32,40,95,56,48,53,32,95,56,48,56,41,41,41,41,32,40,40,65,
+32,58,49,50,57,50,32,40,40,40,83,39,32,95,50,54,49,41,32,40,
+40,66,32,40,95,52,53,32,95,53,56,41,41,32,40,95,52,53,55,32,
+95,56,57,50,41,41,41,32,40,40,66,32,40,40,40,83,39,32,95,50,
+54,49,41,32,40,40,66,32,95,49,49,48,48,41,32,40,95,56,48,53,
+32,95,56,48,55,41,41,41,32,40,40,66,32,40,95,52,54,51,32,34,
+77,117,108,116,105,112,108,121,32,100,101,102,105,110,101,100,58,32,34,41,
+41,32,95,57,48,50,41,41,41,32,95,52,50,56,41,41,41,32,40,40,
+65,32,58,49,50,57,51,32,40,40,66,32,89,41,32,40,40,40,83,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,
+67,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,
+40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,
+40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,
+41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,
+39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,
+83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,
+40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,
+39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,
+40,40,66,32,40,67,32,40,40,67,32,67,39,41,32,75,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,
+32,40,95,51,51,32,95,53,56,41,41,41,32,40,40,66,32,95,49,50,
+57,51,41,32,40,40,67,32,40,95,52,55,57,32,95,50,55,55,41,41,
+32,35,49,41,41,41,41,32,40,95,49,50,57,51,32,35,48,41,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,41,32,90,41,41,32,75,41,41,32,75,41,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,
+40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,95,52,57,55,32,
+95,50,56,50,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,95,52,57,57,32,95,
+50,56,50,41,41,32,40,40,95,51,52,32,95,53,56,41,32,95,49,51,
+52,49,41,41,41,41,32,40,40,40,67,39,32,95,49,49,48,48,41,32,
+40,95,56,48,53,32,95,56,49,49,41,41,32,34,116,111,111,32,109,97,
+110,121,32,97,114,103,117,109,101,110,116,115,34,41,41,41,41,32,40,40,
+40,67,39,32,95,49,49,48,48,41,32,40,95,56,48,53,32,95,56,49,
+49,41,41,32,34,116,111,111,32,102,101,119,32,97,114,103,117,109,101,110,
+116,115,34,41,41,41,32,95,55,55,51,41,41,41,32,40,90,32,75,41,
+41,41,32,40,40,66,32,40,83,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,67,32,40,40,
+67,32,67,39,41,32,75,41,41,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,90,32,75,41,41,
+41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,32,75,41,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+80,41,32,75,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,
+41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,
+95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,51,48,50,
+41,41,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,
+32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,
+75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,67,
+32,40,40,67,32,40,95,50,48,51,32,95,50,56,49,41,41,32,35,48,
+41,41,32,40,40,95,51,52,32,95,53,56,41,32,95,49,51,52,49,41,
+41,41,32,40,40,40,67,39,32,95,49,49,48,48,41,32,40,95,56,48,
+53,32,95,56,48,56,41,41,32,34,66,97,100,32,112,97,116,116,101,114,
+110,34,41,41,41,41,41,41,32,40,40,65,32,58,49,50,57,52,32,40,
+40,40,83,39,32,40,67,39,32,40,40,83,39,32,40,95,51,51,32,95,
+53,56,41,41,32,95,49,50,57,50,41,41,41,32,40,40,40,83,39,32,
+66,41,32,40,40,66,32,40,67,39,32,40,95,51,50,32,95,53,56,41,
+41,41,32,40,40,66,32,40,95,52,51,32,95,53,56,41,41,32,40,40,
+66,32,95,49,50,57,53,41,32,40,40,66,32,95,57,50,52,41,32,40,
+95,51,57,52,32,40,40,67,32,40,40,80,32,40,75,32,40,75,32,75,
+41,41,41,32,40,75,32,40,75,32,75,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,79,41,41,32,80,41,32,75,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,95,50,54,49,41,
+32,95,49,50,50,50,41,41,41,32,40,40,66,32,40,95,51,50,32,95,
+53,56,41,41,32,40,40,95,52,51,32,95,53,56,41,32,95,49,50,57,
+54,41,41,41,41,41,32,95,56,55,49,41,41,32,40,40,65,32,58,49,
+50,57,53,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,67,32,95,57,50,56,41,41,32,40,40,66,32,40,40,95,51,
+50,32,95,53,56,41,32,95,49,50,48,52,41,41,32,40,40,66,32,40,
+66,32,40,95,51,52,32,95,53,56,41,41,41,32,80,41,41,41,41,32,
+40,40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,
+40,40,66,32,40,95,50,54,49,32,95,49,49,54,52,41,41,32,40,95,
+49,50,53,53,32,40,95,49,50,53,56,32,95,55,57,57,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,
+32,80,41,41,41,41,32,40,40,65,32,58,49,50,57,54,32,40,40,83,
+32,40,40,80,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,95,
+51,50,32,95,53,56,41,41,32,95,49,50,48,56,41,41,32,40,40,66,
+32,40,66,32,85,41,41,32,40,40,66,32,90,41,32,40,40,66,32,40,
+40,67,39,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,
+40,67,32,40,95,49,50,55,54,32,95,49,50,52,41,41,41,41,32,40,
+40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,95,53,56,
+41,41,41,41,32,95,55,56,55,41,41,41,41,41,41,32,40,40,40,83,
+39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,
+95,49,50,57,48,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,
+40,66,32,40,66,32,40,67,32,66,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,66,39,32,40,40,66,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,51,32,95,
+53,56,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,
+95,50,54,49,41,41,32,40,40,66,32,40,66,32,40,95,52,53,32,95,
+53,56,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+49,50,48,41,32,40,40,66,32,95,49,50,50,41,32,95,51,57,50,41,
+41,41,32,40,40,66,32,95,49,50,50,41,32,95,51,57,50,41,41,41,
+41,41,32,40,40,40,67,39,32,95,49,49,48,48,41,32,40,95,56,48,
+53,32,95,56,48,56,41,41,32,34,101,120,105,115,116,101,110,116,105,97,
+108,115,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,112,97,
+116,116,101,114,110,32,98,105,110,100,105,110,103,34,41,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,40,95,51,50,32,95,53,56,41,41,41,32,40,67,32,95,49,50,
+56,52,41,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,40,
+95,51,52,32,95,53,56,41,41,41,41,32,95,55,56,56,41,41,41,41,
+41,41,41,41,32,40,90,32,40,90,32,40,95,51,52,32,95,53,56,41,
+41,41,41,41,32,40,40,65,32,58,49,50,57,55,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,83,32,40,40,83,32,40,
+40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,
+40,67,32,40,40,83,32,73,41,32,75,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,95,55,52,52,41,32,95,49,50,57,55,41,41,
+32,95,49,50,57,55,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+40,66,32,95,55,52,53,41,32,95,49,50,57,55,41,41,32,40,95,51,
+57,52,32,40,85,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,
+40,40,40,67,39,32,66,41,32,80,41,32,95,49,50,57,55,41,41,32,
+75,41,41,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,95,49,
+49,56,55,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,
+56,48,49,41,32,40,95,56,48,53,32,95,56,48,56,41,41,41,32,95,
+52,49,49,41,41,32,40,95,51,57,53,32,95,49,50,57,55,41,41,41,
+41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,80,41,32,40,40,66,32,40,80,32,95,49,51,48,50,41,
+41,32,40,40,40,67,39,32,40,67,39,32,80,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,95,49,49,56,54,41,32,40,40,66,32,
+95,49,51,48,48,41,32,40,95,56,48,53,32,95,56,48,56,41,41,41,
+41,32,95,49,50,57,55,41,41,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,
+41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,
+48,50,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,49,51,48,
+50,41,41,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,40,40,66,32,
+95,55,53,54,41,32,95,49,50,57,55,41,41,41,32,40,75,32,40,75,
+32,95,49,51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,
+41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,40,40,40,67,39,
+32,66,41,32,95,55,54,48,41,32,95,49,50,57,55,41,41,41,32,40,
+40,65,32,58,49,50,57,56,32,40,40,66,32,40,95,50,54,51,32,95,
+49,49,56,52,41,41,32,95,56,57,56,41,41,32,40,40,65,32,58,49,
+50,57,57,32,40,40,40,67,39,32,95,50,54,49,41,32,95,56,57,56,
+41,32,40,40,95,52,54,51,32,95,49,49,48,54,41,32,34,91,93,34,
+41,41,41,32,40,40,65,32,58,49,51,48,48,32,40,40,95,50,54,51,
+32,95,49,49,56,52,41,32,95,49,50,57,57,41,41,32,40,40,65,32,
+58,49,51,48,49,32,40,40,40,67,39,32,95,50,54,49,41,32,95,49,
+50,57,56,41,32,40,40,95,52,54,51,32,95,49,49,48,53,41,32,34,
+66,111,111,108,34,41,41,41,32,40,40,65,32,58,49,51,48,50,32,40,
+95,50,52,32,34,105,109,112,111,115,115,105,98,108,101,34,41,41,32,40,
+40,65,32,58,49,51,48,51,32,40,40,66,32,40,66,32,40,95,50,54,
+49,32,95,50,52,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,
+51,32,34,105,109,112,111,115,115,105,98,108,101,58,32,34,41,41,41,32,
+40,40,40,83,39,32,40,83,39,32,95,52,54,51,41,41,32,40,40,66,
+32,40,66,32,40,95,49,53,57,48,32,95,56,57,48,41,41,41,32,40,
+40,66,32,95,56,48,53,41,32,40,85,32,65,41,41,41,41,32,40,40,
+66,32,40,66,32,40,95,52,54,51,32,40,40,79,32,35,51,50,41,32,
+75,41,41,41,41,32,40,40,66,32,95,49,53,57,48,41,32,40,85,32,
+75,41,41,41,41,41,41,41,32,40,40,65,32,58,49,51,48,52,32,40,
+40,66,32,85,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,40,66,32,40,95,
+52,54,51,32,34,84,109,111,100,117,108,101,32,34,41,41,41,41,32,40,
+40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,
+32,95,57,48,50,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,
+51,32,40,40,79,32,35,49,48,41,32,75,41,41,41,41,32,40,40,67,
+32,40,67,39,32,95,52,54,51,41,41,32,40,40,79,32,35,49,48,41,
+32,75,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,51,48,53,32,40,40,40,67,39,32,40,95,51,50,32,95,53,56,
+41,41,32,40,40,95,52,51,32,95,53,56,41,32,95,49,49,57,55,41,
+41,32,40,40,66,32,40,95,51,52,32,95,53,56,41,41,32,95,49,51,
+49,49,41,41,41,32,40,40,65,32,58,49,51,48,54,32,40,40,40,67,
+39,32,40,95,51,50,32,95,53,56,41,41,32,40,40,95,52,51,32,95,
+53,56,41,32,95,49,49,57,55,41,41,32,40,40,66,32,40,95,51,52,
+32,95,53,56,41,41,32,95,49,51,49,50,41,41,41,32,40,40,65,32,
+58,49,51,48,55,32,40,95,54,52,32,40,40,95,50,54,51,32,40,95,
+51,57,53,32,95,49,49,50,49,41,41,32,40,40,95,50,54,51,32,95,
+49,51,51,54,41,32,95,49,49,52,50,41,41,41,41,32,40,40,65,32,
+58,49,51,48,56,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,
+95,51,50,32,95,53,56,41,41,32,40,40,95,52,51,32,95,53,56,41,
+32,40,40,95,50,54,51,32,95,49,51,49,48,41,32,95,55,57,56,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,
+53,56,41,41,41,41,32,40,40,66,32,40,66,32,40,83,32,80,41,41,
+41,32,40,40,66,32,40,67,39,32,95,56,50,50,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,52,49,50,41,32,40,95,51,57,
+53,32,95,55,57,56,41,41,41,32,40,95,51,57,53,32,95,55,52,51,
+41,41,41,41,41,41,41,32,40,40,65,32,58,49,51,48,57,32,40,40,
+83,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,83,32,40,40,67,32,67,39,41,32,75,41,
+41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,
+67,39,41,32,95,49,49,57,49,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,49,51,48,
+57,41,41,32,40,40,66,32,85,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,95,
+49,51,48,57,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,52,
+54,51,41,41,41,32,95,55,52,52,41,41,41,41,41,41,41,41,32,40,
+85,32,40,40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,
+41,32,95,49,51,48,57,41,41,32,40,40,66,32,85,41,32,40,40,66,
+32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,41,41,41,32,
+40,40,66,32,40,40,67,39,32,66,41,32,80,41,41,32,95,49,49,56,
+56,41,41,41,41,41,41,41,41,32,40,90,32,75,41,41,41,32,75,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,51,48,
+56,41,32,40,85,32,40,40,66,32,40,40,67,39,32,40,95,51,50,32,
+95,53,56,41,41,32,95,49,51,48,57,41,41,32,40,40,66,32,85,41,
+32,40,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,
+41,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,52,54,51,41,
+41,41,41,41,41,41,41,32,40,40,66,32,40,95,51,52,32,95,53,56,
+41,41,32,40,80,32,95,52,54,49,41,41,41,41,32,40,40,65,32,58,
+49,51,49,48,32,40,40,66,32,40,40,95,51,50,32,95,53,56,41,32,
+95,49,50,48,53,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,
+95,53,56,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+95,56,57,56,41,32,40,95,56,48,53,32,95,56,48,55,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,
+57,48,48,41,41,32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,
+35,51,53,41,32,75,41,41,41,32,40,95,49,53,57,48,32,95,50,56,
+51,41,41,41,41,41,41,41,32,40,40,65,32,58,49,51,49,49,32,40,
+40,95,51,57,55,32,40,40,89,32,40,40,66,32,40,40,83,39,32,40,
+83,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+83,39,41,41,41,32,40,40,66,32,40,67,32,66,41,41,32,40,40,40,
+67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,83,41,32,40,67,32,40,95,52,51,50,32,95,56,57,50,
+41,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,40,83,39,32,
+83,41,32,40,67,32,40,95,52,51,50,32,95,56,57,50,41,41,41,32,
+40,40,40,83,39,32,67,41,32,40,40,66,32,40,83,32,95,57,49,48,
+41,41,32,40,67,32,95,52,54,50,41,41,41,32,73,41,41,41,32,73,
+41,41,41,32,73,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,
+32,40,90,32,75,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,67,39,41,32,40,85,32,40,75,32,95,50,53,41,41,41,41,41,32,
+40,40,40,83,39,32,40,83,39,32,66,41,41,32,40,66,32,40,67,39,
+32,66,41,41,41,32,40,66,32,67,41,41,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,40,75,32,95,50,53,41,41,41,32,40,
+75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,
+50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,
+32,40,75,32,95,50,53,41,41,41,32,40,75,32,95,50,53,41,41,41,
+32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,95,50,53,41,41,41,41,41,
+32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,
+32,95,50,53,41,41,41,41,32,75,41,41,32,40,75,32,95,50,53,41,
+41,41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,40,
+40,40,67,39,32,66,41,32,66,41,32,40,40,67,39,32,95,52,54,51,
+41,32,40,95,51,57,53,32,95,55,57,56,41,41,41,41,41,41,41,32,
+95,52,54,49,41,41,32,95,52,54,49,41,41,32,40,40,65,32,58,49,
+51,49,50,32,40,40,95,51,57,55,32,40,89,32,40,40,40,83,39,32,
+40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+66,32,40,67,32,40,40,67,32,83,39,41,32,75,41,41,41,32,40,40,
+40,83,39,32,66,41,32,40,67,39,32,66,41,41,32,67,41,41,41,32,
+40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,95,50,53,
+41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,
+32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,95,50,
+53,41,41,41,41,32,40,75,32,95,50,53,41,41,41,32,40,75,32,95,
+50,53,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,
+40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,75,32,40,75,32,
+95,50,53,41,41,41,41,32,40,75,32,40,75,32,40,75,32,95,50,53,
+41,41,41,41,41,32,40,75,32,40,75,32,95,50,53,41,41,41,41,32,
+40,75,32,40,75,32,95,50,53,41,41,41,41,32,40,40,40,83,39,32,
+67,41,32,40,40,40,83,39,32,83,41,32,40,67,32,40,95,52,51,50,
+32,95,50,56,49,41,41,41,32,40,67,32,95,52,54,50,41,41,41,32,
+73,41,41,41,32,40,75,32,95,50,53,41,41,41,32,40,40,66,32,90,
+41,32,67,41,41,41,41,32,95,52,54,49,41,41,32,40,40,65,32,58,
+49,51,49,51,32,40,40,66,32,40,40,83,39,32,40,95,51,50,32,95,
+53,56,41,41,32,95,49,51,48,57,41,41,32,40,40,66,32,40,66,32,
+85,41,41,32,40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,
+32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,40,67,32,
+95,49,50,54,50,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,83,39,41,32,
+95,51,57,50,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,40,40,95,51,50,32,95,53,56,41,32,95,49,51,48,55,41,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,
+40,66,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,32,40,
+40,66,32,40,66,32,95,49,51,48,53,41,41,32,95,52,54,50,41,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,66,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,
+39,32,40,95,51,51,32,95,53,56,41,41,41,32,40,40,66,32,40,40,
+83,39,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,53,
+56,41,41,32,40,40,66,32,95,49,50,50,41,32,95,51,57,50,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,
+41,32,40,40,66,32,95,49,49,57,56,41,32,40,95,56,48,53,32,95,
+56,48,56,41,41,41,41,32,40,40,66,32,40,95,52,54,51,32,34,110,
+111,116,32,112,111,108,121,109,111,114,112,104,105,99,32,101,110,111,117,103,
+104,58,32,34,41,41,32,40,40,66,32,95,49,54,48,57,41,32,40,95,
+51,57,53,32,95,57,48,50,41,41,41,41,41,41,41,32,40,95,51,52,
+32,95,53,56,41,41,41,41,32,40,40,67,39,32,95,51,57,54,41,32,
+40,67,32,40,95,52,51,50,32,95,56,57,50,41,41,41,41,41,41,41,
+41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,41,32,40,40,65,
+32,58,49,51,49,52,32,40,40,66,32,89,41,32,40,40,66,32,40,40,
+67,39,32,40,83,39,32,83,41,41,32,40,40,66,32,40,66,32,40,40,
+83,39,32,83,39,41,32,40,40,66,32,67,41,32,40,40,40,67,39,32,
+83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,67,32,83,39,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,
+53,56,41,41,41,32,40,40,66,32,40,66,32,95,49,50,48,57,41,41,
+32,80,41,41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,67,
+39,32,67,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,83,
+39,32,40,83,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,83,32,95,49,49,57,49,41,41,41,41,32,40,40,40,83,39,32,
+40,83,39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,
+83,39,41,32,95,49,49,57,49,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,95,51,51,32,95,
+53,56,41,41,41,41,32,95,49,49,57,57,41,41,32,40,95,51,52,32,
+95,53,56,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,85,41,
+41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,32,
+66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,40,
+95,51,50,32,95,53,56,41,41,41,32,95,49,50,55,50,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,85,41,41,41,41,32,
+95,49,51,49,53,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,85,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,40,40,66,32,
+40,66,32,40,95,51,50,32,95,53,56,41,41,41,32,95,49,50,55,50,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,85,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,39,32,67,41,
+41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,
+95,49,51,49,53,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,
+49,51,49,53,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,50,32,95,53,56,
+41,41,41,41,32,40,40,66,32,67,41,32,40,40,67,32,95,49,50,56,
+55,41,32,95,50,53,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,90,41,41,41,32,95,49,51,49,52,41,41,41,32,40,40,65,
+32,58,49,51,49,54,32,40,40,40,83,39,32,40,83,39,32,40,83,39,
+32,80,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,95,51,50,32,95,53,56,41,41,
+41,32,40,40,66,32,40,66,32,95,49,50,48,57,41,41,32,80,41,41,
+41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,40,67,39,32,
+40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,40,
+95,51,51,32,95,53,56,41,41,41,41,32,95,49,50,54,52,41,41,32,
+40,95,51,52,32,95,53,56,41,41,41,41,41,32,95,49,51,49,52,41,
+41,32,40,40,65,32,58,49,51,49,55,32,40,40,66,32,40,40,67,39,
+32,40,95,51,50,32,95,53,56,41,41,32,95,49,49,57,54,41,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,40,67,39,32,83,39,41,41,32,40,40,66,32,40,66,32,
+67,41,41,32,40,40,40,83,39,32,40,67,39,32,67,41,41,32,40,40,
+66,32,40,66,32,40,40,83,39,32,83,39,41,32,95,56,48,50,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,
+32,95,53,56,41,32,40,95,54,52,32,95,49,49,52,56,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,66,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+40,67,39,32,40,67,39,32,40,83,39,32,40,95,51,50,32,95,53,56,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+40,95,50,55,54,32,95,53,54,41,32,95,51,57,51,41,41,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,
+39,41,32,40,40,66,32,40,66,32,40,95,52,51,32,95,53,56,41,41,
+41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,
+40,66,32,95,49,51,49,55,41,41,41,32,40,40,67,39,32,40,67,39,
+32,95,55,52,52,41,41,32,40,40,66,32,40,66,32,95,55,52,51,41,
+41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,57,48,54,41,
+41,41,32,95,49,51,49,56,41,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,95,52,49,50,32,40,40,95,49,56,52,32,95,49,57,
+56,41,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,
+57,32,35,49,41,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,95,51,57,53,41,41,32,40,40,66,32,40,66,32,95,56,50,50,41,
+41,32,40,40,67,39,32,95,52,49,50,41,32,40,40,66,32,40,95,51,
+57,53,32,95,55,57,56,41,41,32,40,85,32,40,90,32,40,90,32,40,
+90,32,75,41,41,41,41,41,41,41,41,32,40,85,32,40,75,32,40,90,
+32,40,90,32,75,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,40,95,51,52,32,
+95,53,56,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+95,52,54,50,41,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,40,66,32,67,41,41,32,40,40,66,32,67,41,32,
+40,40,40,67,39,32,67,41,32,40,40,67,32,80,41,32,95,52,54,49,
+41,41,32,95,52,54,49,41,41,41,41,32,40,85,32,40,75,32,40,75,
+32,40,75,32,65,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,95,50,54,49,32,40,95,52,55,49,32,95,49,51,48,50,41,
+41,41,41,32,95,57,50,56,41,41,41,41,41,32,40,40,66,32,90,41,
+32,40,40,66,32,40,66,32,40,40,95,50,55,54,32,95,53,54,41,32,
+95,51,57,51,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,95,
+52,51,32,95,53,56,41,41,41,32,40,40,66,32,40,66,32,85,41,41,
+32,40,40,66,32,40,66,32,40,66,32,95,49,51,49,55,41,41,41,32,
+40,40,67,39,32,40,67,39,32,95,55,52,52,41,41,32,40,40,66,32,
+40,67,32,95,56,48,51,41,41,32,95,52,49,49,41,41,41,41,41,32,
+40,95,52,49,50,32,40,40,95,49,56,52,32,95,49,57,56,41,32,40,
+40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,57,32,35,48,
+41,41,41,41,41,41,41,41,41,41,32,40,85,32,65,41,41,41,32,40,
+85,32,75,41,41,41,32,95,49,49,51,49,41,41,41,32,40,40,65,32,
+58,49,51,49,56,32,40,40,40,67,39,32,66,41,32,95,57,48,55,41,
+32,40,40,66,32,40,95,52,54,51,32,34,36,115,117,112,101,114,34,41,
+41,32,40,95,49,53,57,48,32,95,50,56,51,41,41,41,41,32,40,40,
+65,32,58,49,51,49,57,32,40,40,66,32,40,40,95,51,50,32,95,53,
+56,41,32,40,95,54,52,32,95,49,49,53,50,41,41,41,32,40,40,66,
+32,40,66,32,40,40,95,51,51,32,95,53,56,41,32,40,95,49,49,54,
+49,32,95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,95,51,50,32,95,53,56,41,41,32,40,40,66,32,40,66,32,40,40,
+95,51,50,32,95,53,56,41,32,95,49,51,50,51,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,
+95,54,52,32,95,49,49,53,50,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,40,40,66,32,40,67,39,32,40,95,51,51,
+32,95,53,56,41,41,41,32,40,40,66,32,40,66,32,95,49,49,54,49,
+41,41,32,40,67,32,95,52,54,51,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,95,51,52,32,95,53,56,41,41,41,32,80,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,49,51,50,48,32,40,40,67,32,40,
+40,67,32,83,39,41,32,95,49,51,49,57,41,41,32,40,40,67,32,40,
+95,51,50,32,95,53,56,41,41,32,40,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,95,49,51,50,51,41,41,32,40,40,66,32,40,66,32,
+40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,53,
+50,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,95,
+51,50,32,95,53,56,41,41,32,40,40,66,32,95,49,51,48,54,41,32,
+40,95,51,57,53,32,95,53,54,54,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,40,
+40,66,32,40,40,95,50,55,54,32,95,53,54,41,32,95,51,57,51,41,
+41,32,40,40,95,52,51,32,95,53,56,41,32,95,49,51,50,50,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,
+53,56,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+80,41,41,32,95,52,54,51,41,41,41,41,41,41,41,41,41,32,40,40,
+65,32,58,49,51,50,49,32,40,40,66,32,85,41,32,40,90,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,95,50,55,54,32,95,53,54,
+41,41,32,40,95,52,51,50,32,95,50,56,49,41,41,41,32,40,40,66,
+32,95,49,51,48,54,41,32,40,40,67,32,79,41,32,75,41,41,41,41,
+41,41,32,40,40,65,32,58,49,51,50,50,32,40,40,66,32,40,40,95,
+51,50,32,95,53,56,41,32,95,54,51,41,41,32,40,40,40,83,39,32,
+40,83,39,32,40,95,51,50,32,95,53,56,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,95,53,49,32,95,53,56,41,41,32,
+95,49,51,50,49,41,41,32,95,49,49,53,50,41,41,32,40,40,66,32,
+40,66,32,85,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,
+32,40,67,39,32,89,41,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,80,32,40,40,95,51,52,32,95,53,56,41,
+32,95,52,54,49,41,41,41,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,40,66,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,51,32,95,53,
+56,41,41,41,32,95,49,49,57,51,41,41,41,41,41,41,32,40,40,66,
+32,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,40,66,
+32,40,95,51,51,32,95,53,56,41,41,32,95,49,49,54,49,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,
+50,32,95,53,56,41,32,95,49,51,50,51,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,40,95,54,52,32,95,49,49,53,50,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,
+40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,32,67,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,32,95,51,57,
+50,41,41,41,41,32,40,66,39,32,40,40,66,32,40,95,51,51,32,95,
+53,56,41,41,32,95,54,50,41,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,40,66,32,40,95,51,51,32,95,53,56,41,41,32,95,
+49,49,54,49,41,41,32,40,95,51,52,32,95,53,56,41,41,41,41,41,
+41,41,41,41,32,95,49,49,53,51,41,41,41,41,41,32,40,40,65,32,
+58,49,51,50,51,32,40,40,40,95,51,50,32,95,53,56,41,32,40,95,
+54,52,32,95,49,49,53,50,41,41,32,40,40,67,32,40,40,83,32,95,
+51,57,50,41,32,40,40,40,67,39,32,40,95,51,50,32,95,53,56,41,
+41,32,40,40,95,52,51,32,95,53,56,41,32,40,85,32,40,40,66,32,
+40,40,67,39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,49,57,
+55,41,41,32,40,40,66,32,40,66,32,40,95,51,52,32,95,53,56,41,
+41,41,32,80,41,41,41,41,41,32,40,40,66,32,40,40,95,51,50,32,
+95,53,56,41,32,40,95,54,52,32,95,49,49,53,48,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,95,51,50,32,95,53,56,41,41,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+67,32,40,40,40,67,39,32,89,41,32,40,40,40,67,39,32,83,41,32,
+40,40,40,67,39,32,40,83,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,
+80,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+67,32,40,40,40,67,39,32,83,39,41,32,83,39,41,32,40,40,66,32,
+40,66,32,40,95,51,52,32,95,53,56,41,41,41,32,80,41,41,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,83,32,66,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,39,41,
+41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,
+41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,
+39,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,67,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,40,83,39,32,40,83,39,
+32,40,67,39,32,40,83,39,32,66,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,83,39,32,67,41,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,66,32,40,40,83,39,32,83,39,41,32,95,56,48,50,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,83,39,
+32,40,67,39,32,40,67,39,32,40,83,39,32,40,83,39,32,40,83,39,
+32,40,83,39,32,40,83,39,32,67,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,40,83,39,32,83,39,41,32,40,40,67,
+32,40,95,50,48,50,32,95,56,57,50,41,41,32,40,95,56,57,55,32,
+95,49,49,49,50,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,40,83,39,32,40,83,39,32,40,83,39,32,40,83,
+39,32,66,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,67,39,32,66,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,
+66,39,32,40,66,39,32,40,40,66,32,67,41,32,40,67,32,95,57,50,
+56,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,
+67,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,67,41,
+41,32,40,67,32,95,52,54,50,41,41,41,41,41,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,85,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,
+83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,
+83,39,32,67,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,40,67,39,32,67,
+39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,83,39,41,32,83,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,32,67,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,67,39,
+32,67,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,
+32,67,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,67,32,67,39,41,41,41,41,41,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,66,41,41,41,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,67,32,67,39,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,67,39,32,
+40,83,39,32,40,83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,40,66,32,67,41,
+32,40,67,32,95,57,50,56,41,41,41,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,41,41,32,40,40,66,32,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,
+66,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,66,32,67,41,
+41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,40,
+67,39,32,67,41,41,41,41,32,40,40,66,32,40,67,39,32,40,67,39,
+32,67,41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,40,40,66,
+32,67,41,32,40,85,32,40,75,32,40,75,32,75,41,41,41,41,41,41,
+41,41,41,41,41,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,40,90,32,75,41,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,75,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,41,32,40,40,66,32,
+40,66,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,41,41,41,32,40,40,66,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,40,66,32,67,41,41,41,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,66,32,40,
+66,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,67,39,32,67,
+41,41,32,40,85,32,40,75,32,40,75,32,65,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,90,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,40,95,51,
+50,32,95,53,56,41,41,41,32,40,40,66,32,40,95,52,51,32,95,53,
+56,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,
+50,32,95,53,56,41,41,32,40,40,67,32,95,49,50,48,54,41,32,34,
+100,105,99,116,34,41,41,41,32,40,40,66,32,40,66,32,40,95,51,52,
+32,95,53,56,41,41,41,32,40,67,32,80,41,41,41,41,41,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,83,41,41,41,32,40,40,40,67,39,32,67,39,41,32,67,39,
+41,32,40,67,32,95,52,54,51,41,41,41,41,41,32,40,40,67,39,32,
+40,67,39,32,95,52,54,50,41,41,32,40,40,40,67,39,32,66,41,32,
+80,41,32,40,40,66,32,95,55,53,48,41,32,40,95,51,57,53,32,40,
+40,95,50,54,51,32,95,55,52,51,41,32,95,53,54,53,41,41,41,41,
+41,41,41,41,41,41,41,32,40,85,32,65,41,41,41,32,40,85,32,75,
+41,41,41,41,32,95,49,49,51,49,41,41,32,40,95,56,48,53,32,95,
+56,48,55,41,41,41,41,41,32,40,40,66,32,90,41,32,40,40,66,32,
+40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,66,41,
+41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,67,
+39,32,40,67,39,32,40,83,39,32,40,83,39,32,40,83,39,32,66,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,83,41,41,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,40,66,
+32,40,67,39,32,40,95,50,54,49,32,95,49,51,50,53,41,41,41,32,
+40,40,40,67,39,32,66,41,32,95,49,51,50,52,41,32,40,40,67,32,
+95,49,49,51,49,41,32,65,41,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,67,39,32,66,41,41,32,95,52,54,50,41,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,67,32,66,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,66,41,41,41,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,67,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+40,67,39,32,67,39,41,32,67,39,41,41,41,41,41,41,41,32,40,40,
+40,83,39,32,40,67,39,32,40,83,39,32,40,83,39,32,40,83,39,32,
+40,83,39,32,40,83,39,32,67,41,41,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+83,32,95,51,57,50,41,41,41,41,41,41,41,41,32,40,40,66,32,40,
+40,67,39,32,66,41,32,40,66,39,32,40,66,39,32,40,66,39,32,40,
+66,39,32,40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,41,
+41,32,40,40,67,32,95,49,50,48,54,41,32,34,100,105,99,116,34,41,
+41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,
+40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,67,39,32,83,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,67,39,41,32,67,39,41,41,32,40,40,67,39,32,40,
+67,39,32,95,52,54,50,41,41,32,40,40,66,32,40,67,32,80,41,41,
+32,95,49,50,52,53,41,41,41,41,41,41,41,32,40,40,67,39,32,40,
+67,39,32,40,67,39,32,95,52,54,50,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,66,39,32,80,41,41,32,40,40,40,67,39,32,66,41,
+32,95,55,52,52,41,32,95,55,52,51,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,
+66,32,40,66,32,66,39,41,41,32,40,66,32,66,39,41,41,41,32,40,
+40,67,39,32,40,67,39,32,95,52,54,50,41,41,32,80,41,41,41,41,
+41,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,49,49,48,
+48,41,41,32,40,40,66,32,40,95,52,54,51,32,34,77,117,108,116,105,
+112,108,101,32,99,111,110,115,116,114,97,105,110,116,32,115,111,108,117,116,
+105,111,110,115,32,102,111,114,58,32,34,41,41,32,95,56,52,50,41,41,
+41,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,
+39,32,66,41,32,40,66,39,32,66,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,66,32,40,66,32,90,41,41,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,66,32,66,39,41,41,41,32,40,40,66,32,40,67,39,
+32,95,52,54,50,41,41,32,40,67,32,80,41,41,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,
+66,39,32,40,66,39,32,40,85,32,95,49,51,48,50,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,40,80,32,95,49,51,48,50,41,41,41,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,80,41,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,
+32,40,66,39,32,40,66,39,32,40,66,39,32,66,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,90,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,
+32,40,66,32,40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,
+95,49,49,53,49,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,
+83,39,32,66,41,32,40,40,66,32,40,67,39,32,40,83,39,32,40,83,
+39,32,40,83,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,66,32,67,41,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,66,32,67,41,32,40,67,32,95,49,51,50,57,41,41,
+41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,67,39,32,
+66,41,41,32,95,52,54,50,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,66,32,40,66,32,40,66,32,85,41,41,41,41,41,41,
+32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,40,66,39,
+32,40,66,39,32,40,66,39,32,40,40,66,32,40,67,39,32,40,95,51,
+50,32,95,53,56,41,41,41,32,40,40,66,32,40,95,52,51,32,95,53,
+56,41,41,32,40,40,66,32,85,41,32,40,40,40,83,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,40,
+40,67,32,95,49,50,48,54,41,32,34,100,105,99,116,34,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,95,51,52,32,95,
+53,56,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,67,
+32,80,41,41,41,41,32,95,49,51,50,56,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,40,40,66,32,40,66,32,66,39,41,41,32,40,40,66,32,
+40,66,32,66,39,41,41,32,40,40,66,32,40,66,32,40,66,32,67,41,
+41,41,32,40,40,40,67,39,32,66,41,32,67,39,41,32,40,67,32,95,
+52,54,51,41,41,41,41,41,41,32,40,40,67,39,32,40,67,39,32,95,
+52,54,50,41,41,32,80,41,41,41,41,41,41,41,41,41,32,40,75,32,
+40,75,32,95,49,51,48,50,41,41,41,41,41,41,41,32,40,85,32,40,
+75,32,40,90,32,75,41,41,41,41,41,32,40,85,32,40,90,32,40,90,
+32,75,41,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,41,
+32,95,52,54,49,41,41,32,95,52,54,49,41,41,32,40,85,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,53,56,41,
+41,32,95,49,49,54,49,41,41,32,40,95,51,52,32,95,53,56,41,41,
+41,41,41,41,41,41,32,40,40,95,51,52,32,95,53,56,41,32,95,52,
+54,49,41,41,41,41,32,40,40,65,32,58,49,51,50,52,32,40,40,67,
+39,32,95,51,57,52,41,32,40,40,66,32,85,41,32,40,40,66,32,40,
+40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,
+51,57,52,41,41,32,40,40,66,32,40,66,32,40,80,32,75,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,79,41,41,41,32,
+40,40,66,32,40,66,32,40,40,83,39,32,80,41,32,95,52,49,49,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,80,41,41,32,
+40,40,67,39,32,95,51,57,53,41,32,40,89,32,40,40,66,32,40,83,
+32,83,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,
+40,66,32,90,41,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,83,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,
+32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,
+41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,
+67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,67,
+32,40,40,83,32,73,41,32,75,41,41,41,41,32,40,40,40,83,39,32,
+40,83,39,32,40,67,39,32,66,41,41,41,32,40,66,32,40,66,32,95,
+55,52,52,41,41,41,32,73,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,95,49,51,48,50,41,41,41,32,
+40,75,32,95,49,51,48,50,41,41,41,32,40,75,32,40,75,32,95,49,
+51,48,50,41,41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,
+41,41,41,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,
+40,75,32,40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,41,32,
+40,75,32,40,75,32,95,49,51,48,50,41,41,41,41,32,40,75,32,40,
+75,32,95,49,51,48,50,41,41,41,41,32,40,40,66,32,40,40,67,39,
+32,66,41,32,40,40,66,32,95,50,54,49,41,32,95,52,55,49,41,41,
+41,32,40,67,32,40,95,52,51,54,32,95,50,56,49,41,41,41,41,41,
+32,40,75,32,95,49,51,48,50,41,41,41,32,40,66,32,40,40,67,39,
+32,66,41,32,95,55,54,48,41,41,41,41,41,41,41,41,41,41,41,32,
+75,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,
+32,40,67,32,40,40,89,32,40,40,40,67,39,32,40,83,39,32,67,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,39,41,32,83,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,
+41,41,32,66,39,41,41,41,32,40,40,66,32,40,40,67,39,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,40,67,39,32,66,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,89,32,40,
+40,66,32,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,32,
+40,40,40,67,39,32,67,41,32,40,40,66,32,40,40,67,39,32,67,39,
+41,32,83,39,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,
+32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,
+67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,67,41,32,
+40,40,66,32,40,40,67,39,32,83,39,41,32,67,39,41,41,32,40,40,
+66,32,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,67,39,32,
+67,41,32,40,95,50,48,50,32,95,56,57,50,41,41,41,41,32,95,52,
+55,55,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,41,
+41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,90,
+32,75,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,75,41,41,32,75,41,41,32,40,
+90,32,75,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,32,
+83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,
+39,41,32,40,85,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,
+40,40,67,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,85,32,
+40,75,32,95,52,55,54,41,41,41,41,41,41,32,40,40,40,83,39,32,
+40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,
+40,66,32,40,67,39,32,66,41,41,41,41,32,40,40,67,32,40,67,39,
+32,40,67,39,32,67,41,41,41,32,95,52,55,54,41,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,67,41,41,41,41,32,40,75,32,40,75,
+32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,
+54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,
+95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,54,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,
+40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,
+55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,
+41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,
+32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,67,32,
+40,95,52,51,54,32,95,50,56,49,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,95,52,55,55,41,41,41,32,40,40,67,39,32,40,67,
+39,32,95,52,54,50,41,41,32,40,67,32,80,41,41,41,41,41,32,40,
+40,66,32,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,
+95,56,50,51,41,32,95,52,55,54,41,41,41,32,95,52,55,55,41,41,
+41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,41,41,32,95,52,55,54,41,41,41,41,32,
+40,40,66,32,40,66,32,67,41,41,32,67,41,41,41,41,41,32,95,52,
+55,55,41,41,32,95,52,54,49,41,41,41,32,75,41,41,41,41,41,32,
+40,40,65,32,58,49,51,50,53,32,40,40,83,32,40,85,32,95,52,54,
+49,41,41,32,40,90,32,40,90,32,40,40,40,83,39,32,95,51,57,52,
+41,32,40,40,66,32,85,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,40,67,32,40,
+95,50,48,50,32,95,50,56,49,41,41,41,32,40,40,66,32,40,95,52,
+48,49,32,95,50,56,50,41,41,32,40,95,51,57,53,32,95,53,54,53,
+41,41,41,41,32,75,41,41,32,40,40,67,32,79,41,32,75,41,41,41,
+41,32,73,41,41,41,41,41,32,40,40,65,32,58,49,51,50,54,32,40,
+40,40,95,51,50,32,95,53,56,41,32,40,95,54,52,32,95,49,49,53,
+50,41,41,32,40,40,80,32,40,40,95,51,52,32,95,53,56,41,32,95,
+49,51,52,49,41,41,32,40,90,32,40,85,32,40,40,66,32,40,40,67,
+39,32,40,95,51,50,32,95,53,56,41,41,32,95,49,49,57,55,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,
+40,40,66,32,95,49,49,48,48,41,32,40,95,56,48,53,32,95,56,48,
+55,41,41,41,41,32,40,40,66,32,40,95,52,54,51,32,34,67,97,110,
+110,111,116,32,115,97,116,105,115,102,121,32,99,111,110,115,116,114,97,105,
+110,116,58,32,34,41,41,32,95,56,51,56,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,51,50,55,32,40,40,40,83,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,95,51,50,32,95,53,56,41,41,32,40,
+40,67,32,95,49,50,48,54,41,32,34,100,105,99,116,34,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,67,32,95,49,49,54,56,41,
+41,41,41,32,95,49,51,50,56,41,41,41,32,40,40,65,32,58,49,51,
+50,56,32,40,40,66,32,40,66,32,95,55,52,52,41,41,32,40,40,66,
+32,95,55,52,52,41,32,40,40,66,32,95,55,52,51,41,32,40,40,67,
+32,95,56,57,56,41,32,95,49,49,49,50,41,41,41,41,41,32,40,40,
+65,32,58,49,51,50,57,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,66,32,40,40,83,39,32,83,41,32,95,56,50,51,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,83,39,32,83,41,41,32,40,40,67,39,32,40,67,39,32,40,95,
+52,51,52,32,95,49,51,51,49,41,41,41,32,80,41,41,32,40,40,40,
+67,39,32,67,41,32,80,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,
+67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,
+67,39,32,67,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,67,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,85,
+32,40,75,32,95,52,55,54,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,
+40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,32,
+40,67,39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,67,41,
+41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,40,40,66,32,
+67,39,41,32,40,85,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,66,32,95,52,55,55,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,80,32,40,95,55,
+53,48,32,95,52,54,49,41,41,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,40,66,32,40,
+66,32,79,41,41,32,80,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,79,41,41,32,80,41,32,75,41,41,41,41,41,41,32,40,75,32,40,
+75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,
+41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,
+55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,
+32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,
+41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,95,52,55,
+54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,
+32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,
+52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,
+41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,
+40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,
+41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,
+95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,
+41,41,41,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,32,40,
+75,32,40,75,32,40,75,32,95,52,55,54,41,41,41,41,41,32,40,75,
+32,40,75,32,95,52,55,54,41,41,41,41,32,40,75,32,40,75,32,95,
+52,55,54,41,41,41,41,32,40,75,32,95,52,55,54,41,41,41,32,40,
+75,32,95,52,55,54,41,41,41,32,40,75,32,40,75,32,95,52,55,54,
+41,41,41,41,41,41,32,40,95,52,55,55,32,40,40,80,32,40,95,55,
+53,48,32,95,52,54,49,41,41,32,95,52,54,49,41,41,41,41,41,32,
+40,95,52,55,55,32,40,40,80,32,40,95,55,53,48,32,95,52,54,49,
+41,41,32,95,52,54,49,41,41,41,41,32,40,40,65,32,58,49,51,51,
+48,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,67,39,32,83,41,41,32,40,40,40,83,39,32,40,83,39,32,
+40,83,39,32,67,39,41,41,41,32,40,40,40,83,39,32,40,83,39,32,
+66,41,41,32,40,40,66,32,40,66,32,95,49,50,48,41,41,32,95,56,
+50,51,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,95,
+49,50,48,41,41,41,32,40,40,66,32,40,66,32,40,95,52,51,52,32,
+95,49,51,51,49,41,41,41,32,80,41,41,32,40,40,66,32,40,66,32,
+40,95,52,51,52,32,95,49,51,51,49,41,41,41,32,40,67,32,80,41,
+41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,66,41,41,32,40,
+40,66,32,66,39,41,32,40,40,66,32,40,66,32,95,52,54,50,41,41,
+32,80,41,41,41,32,40,40,40,83,39,32,40,83,39,32,66,41,41,32,
+40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,95,52,54,50,41,
+41,32,40,67,32,80,41,41,41,41,32,40,40,40,83,39,32,40,83,39,
+32,40,83,39,32,40,83,39,32,95,52,54,51,41,41,41,41,32,40,40,
+66,32,40,66,32,67,41,41,32,80,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,83,39,32,40,67,39,32,95,52,54,51,41,41,41,41,32,
+40,40,66,32,40,66,32,67,41,41,32,40,67,32,80,41,41,41,32,73,
+41,41,41,41,41,41,32,73,41,41,32,40,40,66,32,40,66,32,95,51,
+57,52,41,41,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,40,67,39,32,67,
+41,32,95,56,50,51,41,32,75,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,79,41,41,32,80,41,32,75,41,41,41,41,41,41,32,40,40,
+65,32,58,49,51,51,49,32,40,40,67,32,66,41,32,40,40,40,67,39,
+32,66,41,32,66,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,
+40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,95,49,50,49,41,
+41,32,95,56,50,51,41,41,41,32,95,56,50,51,41,41,41,41,32,40,
+40,65,32,58,49,51,51,50,32,80,41,32,40,40,65,32,58,49,51,51,
+51,32,40,40,66,32,40,66,32,85,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,40,83,39,
+32,66,41,32,40,40,66,32,67,41,32,40,95,52,51,54,32,95,56,57,
+50,41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,67,41,41,32,
+40,40,66,32,40,40,83,39,32,67,41,32,95,57,50,56,41,41,32,40,
+40,66,32,40,66,32,40,95,50,54,49,32,95,49,55,52,41,41,41,32,
+40,40,66,32,40,66,32,40,95,52,54,51,32,34,117,110,100,101,102,105,
+110,101,100,32,34,41,41,41,32,40,40,40,67,39,32,66,41,32,95,52,
+54,51,41,32,40,40,66,32,40,95,52,54,51,32,34,58,32,34,41,41,
+32,95,57,48,50,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+83,32,40,40,67,32,83,41,32,40,40,66,32,40,40,67,39,32,80,41,
+32,95,49,55,53,41,41,32,40,90,32,75,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,95,50,54,49,32,95,49,55,52,41,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,95,52,54,51,32,
+34,97,109,98,105,103,117,111,117,115,32,34,41,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,66,39,32,95,52,54,51,41,41,32,40,40,66,
+32,40,66,32,40,95,52,54,51,32,34,58,32,34,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,95,52,54,51,41,32,95,57,48,
+50,41,41,32,40,40,66,32,40,95,52,54,51,32,40,40,79,32,35,51,
+50,41,32,75,41,41,41,32,40,40,66,32,40,95,49,54,48,52,32,40,
+40,95,50,54,51,32,95,57,48,50,41,32,95,49,49,51,48,41,41,41,
+32,40,95,51,57,52,32,40,85,32,40,90,32,40,40,67,32,79,41,32,
+75,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,32,95,49,55,
+53,41,41,41,32,40,40,65,32,58,49,51,51,52,32,40,40,40,67,39,
+32,40,67,39,32,95,49,51,51,50,41,41,32,95,57,50,53,41,32,95,
+52,54,49,41,41,32,40,40,65,32,58,49,51,51,53,32,40,40,40,67,
+39,32,95,49,51,51,50,41,32,95,57,50,52,41,32,95,52,54,49,41,
+41,32,40,40,65,32,58,49,51,51,54,32,40,85,32,40,75,32,40,95,
+51,57,53,32,95,53,54,54,41,41,41,41,32,40,40,65,32,58,49,51,
+51,55,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,66,41,32,95,49,51,51,50,41,41,41,32,40,40,
+66,32,40,66,32,95,52,54,50,41,41,32,80,41,41,41,41,32,40,40,
+65,32,58,49,51,51,56,32,40,40,66,32,40,66,32,85,41,41,32,40,
+40,66,32,40,66,32,40,66,32,95,49,51,51,50,41,41,41,32,95,57,
+50,57,41,41,41,32,40,40,65,32,58,49,51,51,57,32,95,49,50,53,
+41,32,40,40,65,32,58,49,51,52,48,32,73,41,32,40,40,65,32,58,
+49,51,52,49,32,73,41,32,40,40,65,32,58,49,51,52,50,32,43,41,
+32,40,40,65,32,58,49,51,52,51,32,45,41,32,40,40,65,32,58,49,
+51,52,52,32,42,41,32,40,40,65,32,58,49,51,52,53,32,113,117,111,
+116,41,32,40,40,65,32,58,49,51,52,54,32,114,101,109,41,32,40,40,
+65,32,58,49,51,52,55,32,115,117,98,116,114,97,99,116,41,32,40,40,
+65,32,58,49,51,52,56,32,110,101,103,41,32,40,40,65,32,58,49,51,
+52,57,32,102,97,100,100,41,32,40,40,65,32,58,49,51,53,48,32,102,
+115,117,98,41,32,40,40,65,32,58,49,51,53,49,32,102,109,117,108,41,
+32,40,40,65,32,58,49,51,53,50,32,102,100,105,118,41,32,40,40,65,
+32,58,49,51,53,51,32,102,110,101,103,41,32,40,40,65,32,58,49,51,
+53,52,32,102,101,113,41,32,40,40,65,32,58,49,51,53,53,32,102,110,
+101,41,32,40,40,65,32,58,49,51,53,54,32,102,108,116,41,32,40,40,
+65,32,58,49,51,53,55,32,102,108,101,41,32,40,40,65,32,58,49,51,
+53,56,32,102,103,116,41,32,40,40,65,32,58,49,51,53,57,32,102,103,
+101,41,32,40,40,65,32,58,49,51,54,48,32,102,115,104,111,119,41,32,
+40,40,65,32,58,49,51,54,49,32,102,114,101,97,100,41,32,40,40,65,
+32,58,49,51,54,50,32,105,116,111,102,41,32,40,40,65,32,58,49,51,
+54,51,32,43,41,32,40,40,65,32,58,49,51,54,52,32,45,41,32,40,
+40,65,32,58,49,51,54,53,32,42,41,32,40,40,65,32,58,49,51,54,
+54,32,117,113,117,111,116,41,32,40,40,65,32,58,49,51,54,55,32,117,
+114,101,109,41,32,40,40,65,32,58,49,51,54,56,32,97,110,100,41,32,
+40,40,65,32,58,49,51,54,57,32,111,114,41,32,40,40,65,32,58,49,
+51,55,48,32,120,111,114,41,32,40,40,65,32,58,49,51,55,49,32,115,
+104,108,41,32,40,40,65,32,58,49,51,55,50,32,115,104,114,41,32,40,
+40,65,32,58,49,51,55,51,32,97,115,104,114,41,32,40,40,65,32,58,
+49,51,55,52,32,105,110,118,41,32,40,40,65,32,58,49,51,55,53,32,
+116,111,68,98,108,41,32,40,40,65,32,58,49,51,55,54,32,116,111,73,
+110,116,41,32,40,40,65,32,58,49,51,55,55,32,61,61,41,32,40,40,
+65,32,58,49,51,55,56,32,47,61,41,32,40,40,65,32,58,49,51,55,
+57,32,60,41,32,40,40,65,32,58,49,51,56,48,32,60,61,41,32,40,
+40,65,32,58,49,51,56,49,32,62,41,32,40,40,65,32,58,49,51,56,
+50,32,62,61,41,32,40,40,65,32,58,49,51,56,51,32,61,61,41,32,
+40,40,65,32,58,49,51,56,52,32,47,61,41,32,40,40,65,32,58,49,
+51,56,53,32,117,60,41,32,40,40,65,32,58,49,51,56,54,32,60,61,
+41,32,40,40,65,32,58,49,51,56,55,32,62,41,32,40,40,65,32,58,
+49,51,56,56,32,62,61,41,32,40,40,65,32,58,49,51,56,57,32,73,
+41,32,40,40,65,32,58,49,51,57,48,32,73,41,32,40,40,65,32,58,
+49,51,57,49,32,61,61,41,32,40,40,65,32,58,49,51,57,50,32,47,
+61,41,32,40,40,65,32,58,49,51,57,51,32,60,41,32,40,40,65,32,
+58,49,51,57,52,32,60,61,41,32,40,40,65,32,58,49,51,57,53,32,
+62,41,32,40,40,65,32,58,49,51,57,54,32,62,61,41,32,40,40,65,
+32,58,49,51,57,55,32,101,114,114,111,114,41,32,40,40,65,32,58,49,
+51,57,56,32,89,41,32,40,40,65,32,58,49,51,57,57,32,115,101,113,
+41,32,40,40,65,32,58,49,52,48,48,32,99,111,109,112,97,114,101,41,
+32,40,40,65,32,58,49,52,48,49,32,101,113,117,97,108,41,32,40,40,
+65,32,58,49,52,48,50,32,73,41,32,40,40,65,32,58,49,52,48,51,
+32,73,41,32,40,40,65,32,58,49,52,48,52,32,73,41,32,40,40,65,
+32,58,49,52,48,53,32,73,79,46,62,62,61,41,32,40,40,65,32,58,
+49,52,48,54,32,73,79,46,62,62,41,32,40,40,65,32,58,49,52,48,
+55,32,73,79,46,114,101,116,117,114,110,41,32,40,40,65,32,58,49,52,
+48,56,32,73,79,46,103,101,116,65,114,103,115,41,32,40,40,65,32,58,
+49,52,48,57,32,73,79,46,100,114,111,112,65,114,103,115,41,32,40,40,
+65,32,58,49,52,49,48,32,73,79,46,112,101,114,102,111,114,109,73,79,
+41,32,40,40,65,32,58,49,52,49,49,32,40,40,66,32,95,49,52,48,
+54,41,32,95,49,52,48,57,41,41,32,40,40,65,32,58,49,52,49,50,
+32,73,79,46,99,97,116,99,104,41,32,40,40,65,32,58,49,52,49,51,
+32,40,114,110,102,32,35,48,41,41,32,40,40,65,32,58,49,52,49,52,
+32,40,114,110,102,32,35,49,41,41,32,40,40,65,32,58,49,52,49,53,
+32,110,101,119,67,65,83,116,114,105,110,103,41,32,40,40,65,32,58,49,
+52,49,54,32,112,101,101,107,67,65,83,116,114,105,110,103,41,32,40,40,
+65,32,58,49,52,49,55,32,116,111,80,116,114,41,32,40,40,65,32,58,
+49,52,49,56,32,116,111,73,110,116,41,32,40,40,65,32,58,49,52,49,
+57,32,94,103,101,116,82,97,119,41,32,40,40,65,32,58,49,52,50,48,
+32,40,75,32,40,40,40,95,51,50,32,95,49,52,53,50,41,32,40,40,
+40,95,49,52,50,51,32,40,40,80,32,95,52,54,49,41,32,95,52,54,
+49,41,41,32,75,41,32,75,41,41,32,40,85,32,40,75,32,40,95,51,
+52,32,95,49,52,53,50,41,41,41,41,41,41,32,40,40,65,32,58,49,
+52,50,49,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,95,51,
+50,32,95,49,52,53,50,41,41,32,40,40,67,32,95,49,52,54,51,41,
+32,95,49,52,52,54,41,41,41,32,40,40,66,32,40,66,32,40,40,67,
+39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,80,32,40,
+40,95,51,52,32,95,49,52,53,50,41,32,95,52,54,49,41,41,32,40,
+40,40,67,39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,95,49,
+52,55,54,41,32,40,40,66,32,40,40,40,83,39,32,95,49,52,56,49,
+41,32,95,52,49,49,41,32,40,95,51,52,32,95,49,52,53,50,41,41,
+41,32,95,49,54,48,54,41,41,41,41,41,41,32,40,40,66,32,40,40,
+67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,49,52,53,50,
+41,41,32,95,49,52,55,48,41,41,41,32,40,40,66,32,40,40,67,39,
+32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,67,32,40,40,
+40,67,39,32,95,49,52,50,51,41,32,40,40,40,67,39,32,80,41,32,
+95,52,50,51,41,32,95,52,54,49,41,41,32,75,41,41,32,75,41,41,
+41,32,40,40,66,32,85,41,32,40,40,40,67,39,32,40,67,39,32,66,
+41,41,32,40,40,66,32,40,66,32,40,95,51,51,32,95,49,52,53,50,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,50,54,
+49,41,32,95,49,52,55,52,41,41,32,95,49,54,48,55,41,41,41,32,
+40,95,51,52,32,95,49,52,53,50,41,41,41,41,41,41,41,41,32,40,
+40,65,32,58,49,52,50,50,32,40,40,40,95,51,50,32,95,49,52,53,
+50,41,32,95,49,52,49,57,41,32,40,40,40,83,39,32,40,95,51,51,
+32,95,49,52,53,50,41,41,32,40,40,40,67,39,32,95,50,54,49,41,
+32,40,40,66,32,40,95,52,53,32,95,49,52,53,50,41,41,32,40,40,
+67,32,40,95,52,57,55,32,95,50,56,50,41,41,32,35,48,41,41,41,
+32,40,95,50,52,32,34,103,101,116,82,97,119,32,102,97,105,108,101,100,
+34,41,41,41,32,40,95,51,52,32,95,49,52,53,50,41,41,41,41,32,
+40,40,65,32,58,49,52,50,51,32,40,40,66,32,89,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,40,95,51,51,32,95,49,52,53,
+50,41,32,40,95,49,52,54,48,32,95,49,52,53,55,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,50,
+32,95,49,52,53,50,41,32,95,49,52,50,50,41,41,41,41,41,32,40,
+40,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,40,83,39,
+32,40,67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,83,
+39,32,40,83,39,32,40,83,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,40,
+67,39,32,67,41,41,41,41,41,41,41,41,32,40,40,66,32,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,
+39,32,40,67,39,32,40,67,39,32,83,39,41,41,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,67,41,41,41,41,41,41,41,41,32,40,40,40,67,
+39,32,40,83,39,32,40,83,39,32,40,67,39,32,40,83,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,40,67,39,
+32,40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+40,83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,40,67,39,32,
+40,83,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,40,83,39,32,67,41,41,41,41,41,41,41,41,41,41,41,
+41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,
+66,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,
+32,83,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,
+32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,
+32,67,39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,67,39,41,
+32,40,40,66,32,67,39,41,32,40,40,67,32,61,61,41,32,35,52,41,
+41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,83,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,83,39,41,32,40,40,67,32,61,
+61,41,32,35,50,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,40,83,39,32,67,39,41,32,40,40,66,
+32,83,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,
+32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,
+32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,
+32,40,40,67,32,61,61,41,32,35,54,41,41,41,41,41,41,41,41,41,
+41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,40,83,39,32,67,
+41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,67,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,67,32,61,61,41,32,35,49,41,41,41,
+41,41,41,41,41,41,41,41,41,41,32,40,40,40,83,39,32,40,83,39,
+32,40,83,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,40,83,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,
+32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,
+32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,
+32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,67,32,61,61,41,
+32,35,53,41,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,40,83,39,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,67,39,41,32,40,
+40,67,32,61,61,41,32,35,56,41,41,41,41,41,41,41,41,41,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,66,41,
+32,40,66,39,32,40,66,39,32,40,66,39,32,40,66,39,32,40,66,39,
+32,40,66,39,32,40,40,66,32,67,39,41,32,40,40,67,32,61,61,41,
+32,35,49,50,55,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,40,83,39,32,67,39,41,32,40,40,66,32,
+67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,
+40,40,66,32,67,39,41,32,40,40,66,32,83,39,41,32,40,40,66,32,
+67,39,41,32,40,40,66,32,67,39,41,32,40,40,67,32,61,61,41,32,
+35,49,51,41,41,41,41,41,41,41,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,40,66,
+39,32,40,66,39,32,40,66,39,32,40,40,66,32,67,39,41,32,40,40,
+66,32,67,39,41,32,40,40,67,32,61,61,41,32,35,49,48,41,41,41,
+41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,
+83,39,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,83,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,67,32,61,
+61,41,32,35,49,52,41,41,41,41,41,41,41,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,40,83,39,32,67,39,41,32,40,40,66,32,
+67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,83,39,41,32,
+40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,
+67,39,41,32,40,40,67,32,61,61,41,32,35,49,53,41,41,41,41,41,
+41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,
+66,39,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,67,32,61,
+61,41,32,35,50,49,41,41,41,41,41,41,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,40,83,39,32,67,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,40,83,39,32,67,39,41,32,40,40,66,32,67,
+39,41,32,40,40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,
+40,66,32,67,39,41,32,40,40,66,32,67,39,41,32,40,40,67,32,61,
+61,41,32,35,49,49,41,41,41,41,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,66,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,66,
+39,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,66,
+39,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,67,39,32,66,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,40,40,67,32,
+61,61,41,32,35,50,55,41,41,41,41,41,41,32,40,40,66,32,40,66,
+32,40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,40,
+83,39,32,95,49,50,49,41,32,40,40,67,32,40,95,53,48,48,32,95,
+50,56,50,41,41,32,35,51,50,41,41,32,40,40,67,32,40,95,52,57,
+55,32,95,50,56,50,41,41,32,35,49,50,55,41,41,41,41,41,41,32,
+40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,67,39,32,40,40,83,39,32,40,95,
+51,51,32,95,49,52,53,50,41,41,32,95,49,52,54,53,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,66,39,
+32,40,40,66,32,40,95,51,51,32,95,49,52,53,50,41,41,32,95,49,
+52,55,48,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,
+32,40,67,39,32,66,41,41,32,40,40,66,32,40,66,32,40,95,51,51,
+32,95,49,52,53,50,41,41,41,32,40,40,66,32,85,41,32,95,52,49,
+49,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,67,39,41,32,
+40,67,32,95,52,54,50,41,41,41,41,41,41,32,95,49,51,54,41,41,
+41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,
+66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,95,49,52,50,50,
+41,41,41,41,41,41,32,40,40,40,83,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,66,32,40,67,32,40,40,67,32,40,
+95,50,48,51,32,95,50,56,49,41,41,32,40,95,49,51,55,32,35,57,
+49,41,41,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,66,32,40,40,95,51,50,32,95,49,52,53,50,41,32,95,
+49,52,50,50,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,41,41,41,32,
+40,40,66,32,40,66,32,40,67,39,32,40,67,39,32,67,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,83,32,40,40,67,
+32,61,61,41,32,35,54,53,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,40,83,32,40,40,67,32,61,61,41,32,35,54,54,41,41,41,41,41,
+32,40,40,66,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,
+40,83,32,40,40,67,32,61,61,41,32,35,54,55,41,41,41,41,32,40,
+40,66,32,67,41,32,40,67,32,40,40,67,32,61,61,41,32,35,54,56,
+41,41,41,41,41,41,41,41,41,41,32,95,49,51,54,41,41,41,41,32,
+73,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,
+95,51,51,32,95,49,52,53,50,41,41,32,95,49,52,55,48,41,41,41,
+32,40,40,66,32,40,66,32,40,40,67,39,32,40,95,51,51,32,95,49,
+52,53,50,41,41,32,40,40,66,32,40,95,50,54,49,32,95,49,52,55,
+48,41,41,32,40,40,66,32,40,95,50,54,49,32,95,51,57,51,41,41,
+32,40,40,40,67,39,32,95,52,52,54,41,32,95,52,49,49,41,32,34,
+92,56,38,32,92,56,38,34,41,41,41,41,41,41,32,40,82,32,75,41,
+41,41,41,41,41,32,40,40,66,32,40,67,32,40,95,51,51,32,95,49,
+52,53,50,41,41,41,32,40,40,80,32,75,41,32,75,41,41,41,41,41,
+32,73,41,41,41,32,73,41,41,41,41,32,73,41,41,41,41,32,73,41,
+41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,40,95,51,51,32,
+95,49,52,53,50,41,41,32,95,49,52,55,48,41,41,41,32,40,40,67,
+32,40,40,40,67,39,32,67,39,41,32,67,39,41,32,40,40,67,39,32,
+95,52,54,51,41,32,95,52,50,51,41,41,41,32,75,41,41,41,41,41,
+32,40,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,40,67,39,
+32,40,95,51,51,32,95,49,52,53,50,41,41,41,32,40,40,66,32,85,
+41,32,95,52,49,49,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,40,85,32,75,41,41,41,32,40,40,66,32,95,52,54,51,
+41,32,95,52,50,51,41,41,41,41,41,41,32,73,41,41,41,32,73,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,66,41,41,
+41,32,40,40,66,32,40,40,83,39,32,40,83,39,32,67,39,41,41,32,
+40,40,66,32,40,66,32,67,39,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,95,49,50,49,41,32,95,51,57,50,41,41,32,95,51,
+57,50,41,41,41,41,32,40,40,66,32,40,66,32,40,67,32,40,67,39,
+32,66,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,40,66,32,40,40,83,39,32,40,95,51,51,32,95,49,
+52,53,50,41,41,32,95,49,52,55,48,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,40,66,32,40,40,95,51,51,32,95,49,52,53,50,
+41,32,40,95,49,52,54,53,32,35,51,50,41,41,41,41,41,41,32,40,
+66,32,40,40,67,39,32,40,83,39,32,40,95,51,51,32,95,49,52,53,
+50,41,41,41,32,40,40,67,32,66,41,32,40,40,40,67,39,32,40,95,
+52,55,57,32,95,50,55,55,41,41,32,95,52,49,49,41,32,35,49,41,
+41,41,41,41,41,41,41,41,41,32,40,85,32,95,52,55,54,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,67,39,32,66,41,
+41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,66,
+39,32,40,40,66,32,40,95,51,51,32,95,49,52,53,50,41,41,32,40,
+85,32,35,49,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,66,39,32,67,41,41,32,40,67,32,95,52,54,50,41,41,41,41,41,
+41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,67,39,32,66,41,
+41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,
+32,40,40,83,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,49,
+52,53,50,41,41,32,40,85,32,35,49,41,41,41,41,41,32,40,40,66,
+32,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,40,95,51,
+51,32,95,49,52,53,50,41,41,32,95,49,52,55,48,41,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,66,32,40,40,95,51,51,32,95,
+49,52,53,50,41,32,40,95,49,52,54,53,32,35,51,50,41,41,41,41,
+41,41,32,40,40,66,32,40,40,83,39,32,40,67,39,32,66,41,41,32,
+40,40,66,32,40,66,32,40,95,51,51,32,95,49,52,53,50,41,41,41,
+32,40,40,66,32,85,41,32,40,40,40,67,39,32,40,95,52,55,57,32,
+95,50,55,55,41,41,32,95,52,49,49,41,32,35,49,41,41,41,41,41,
+32,67,41,41,41,41,41,41,41,41,32,40,40,66,32,95,49,52,55,48,
+41,32,40,40,67,32,95,52,52,54,41,32,35,56,41,41,41,41,32,40,
+40,66,32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,95,52,55,
+55,41,41,32,40,40,66,32,95,52,54,51,41,32,95,52,50,51,41,41,
+41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,40,40,
+40,67,39,32,66,41,32,40,66,39,32,80,41,41,32,40,40,67,32,40,
+40,40,67,39,32,67,39,41,32,40,40,66,32,83,39,41,32,67,39,41,
+41,32,40,40,66,32,40,66,32,80,41,41,32,40,67,32,95,52,54,50,
+41,41,41,41,32,73,41,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,66,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,66,41,41,32,85,41,41,32,40,40,67,32,40,40,40,67,39,32,67,
+39,41,32,40,40,66,32,83,39,41,32,67,39,41,41,32,40,40,66,32,
+40,66,32,40,67,32,80,41,41,41,32,40,67,32,95,52,54,50,41,41,
+41,41,32,73,41,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,
+66,39,32,40,95,51,51,32,95,49,52,53,50,41,41,41,32,40,40,66,
+32,40,40,83,39,32,40,95,51,51,32,95,49,52,53,50,41,41,32,95,
+49,52,55,48,41,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,
+32,95,49,52,50,51,41,32,95,52,50,51,41,41,32,75,41,41,41,41,
+41,32,40,40,66,32,40,40,83,39,32,40,95,51,51,32,95,49,52,53,
+50,41,41,32,95,49,52,55,48,41,41,32,40,40,66,32,40,66,32,40,
+95,50,54,49,32,95,49,52,55,48,41,41,41,32,40,40,66,32,40,66,
+32,40,95,50,54,49,32,95,51,57,51,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,95,52,52,54,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,95,52,55,57,32,95,50,55,55,41,41,32,95,52,
+49,49,41,41,32,95,52,49,49,41,41,32,34,92,56,38,32,92,56,38,
+34,41,41,41,41,41,41,32,40,40,66,32,40,66,32,82,41,41,32,40,
+40,66,32,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,40,95,
+51,51,32,95,49,52,53,50,41,41,32,95,49,52,54,53,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,66,41,32,40,67,32,95,52,54,50,
+41,41,41,41,41,41,32,73,41,41,32,40,40,66,32,40,66,32,40,40,
+95,51,51,32,95,49,52,53,50,41,32,40,95,49,52,54,53,32,35,49,
+48,41,41,41,41,32,40,40,66,32,40,66,32,40,40,95,51,51,32,95,
+49,52,53,50,41,32,40,95,49,52,54,48,32,95,49,52,53,55,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,40,66,32,40,95,51,52,32,
+95,49,52,53,50,41,41,41,32,40,40,40,83,39,32,40,67,39,32,80,
+41,41,32,40,40,66,32,40,83,32,95,52,54,51,41,41,32,40,40,40,
+67,39,32,66,41,32,40,85,32,95,52,54,49,41,41,32,40,40,66,32,
+40,83,32,40,85,32,95,52,54,49,41,41,41,32,40,40,66,32,90,41,
+32,40,40,66,32,90,41,32,40,40,40,67,39,32,67,41,32,40,40,67,
+32,40,40,40,83,39,32,83,39,41,32,40,40,66,32,95,49,50,49,41,
+32,40,40,66,32,95,49,50,50,41,32,95,51,57,50,41,41,41,32,40,
+40,66,32,40,67,32,40,95,50,48,50,32,95,49,51,51,41,41,41,32,
+95,52,53,53,41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,32,
+95,52,54,49,41,41,41,41,41,41,41,32,73,41,41,41,32,40,40,40,
+83,39,32,95,52,54,51,41,32,40,40,66,32,95,52,50,51,41,32,95,
+53,54,53,41,41,32,95,53,54,54,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,52,50,52,32,94,117,110,108,105,110,107,41,32,40,
+40,65,32,58,49,52,50,53,32,40,40,40,67,39,32,40,95,51,50,32,
+95,49,52,53,50,41,41,32,40,40,67,32,95,53,57,49,41,32,95,49,
+52,50,52,41,41,32,40,40,40,67,39,32,95,50,54,49,41,32,40,40,
+66,32,40,95,52,53,32,95,49,52,53,50,41,41,32,40,40,67,32,40,
+95,50,48,51,32,95,50,56,49,41,41,32,35,48,41,41,41,32,40,95,
+50,52,32,34,114,101,109,111,118,101,70,105,108,101,32,102,97,105,108,101,
+100,34,41,41,41,41,32,40,40,65,32,58,49,52,50,54,32,95,49,52,
+48,56,41,32,40,40,65,32,58,49,52,50,55,32,95,49,52,49,49,41,
+32,40,40,65,32,58,49,52,50,56,32,94,103,101,116,101,110,118,41,32,
+40,40,65,32,58,49,52,50,57,32,40,40,40,67,39,32,40,95,51,50,
+32,95,49,52,53,50,41,41,32,40,40,67,32,95,53,57,49,41,32,95,
+49,52,50,56,41,41,32,40,40,67,32,40,40,83,32,40,40,67,32,40,
+95,50,48,50,32,95,53,57,55,41,41,32,95,53,57,57,41,41,32,40,
+40,66,32,40,40,95,50,55,54,32,95,49,52,53,48,41,32,95,52,55,
+55,41,41,32,95,53,57,50,41,41,41,32,40,40,95,51,52,32,95,49,
+52,53,50,41,32,95,52,55,54,41,41,41,41,32,40,40,65,32,58,49,
+52,51,48,32,73,41,32,40,40,65,32,58,49,52,51,49,32,73,79,46,
+115,101,114,105,97,108,105,122,101,41,32,40,40,65,32,58,49,52,51,50,
+32,73,79,46,112,114,105,110,116,41,32,40,40,65,32,58,49,52,51,51,
+32,73,79,46,100,101,115,101,114,105,97,108,105,122,101,41,32,40,40,65,
+32,58,49,52,51,52,32,73,79,46,115,116,100,105,110,41,32,40,40,65,
+32,58,49,52,51,53,32,73,79,46,115,116,100,111,117,116,41,32,40,40,
+65,32,58,49,52,51,54,32,73,79,46,115,116,100,101,114,114,41,32,40,
+40,65,32,58,49,52,51,55,32,94,102,111,112,101,110,41,32,40,40,65,
+32,58,49,52,51,56,32,94,102,99,108,111,115,101,41,32,40,40,65,32,
+58,49,52,51,57,32,94,102,102,108,117,115,104,41,32,40,40,65,32,58,
+49,52,52,48,32,94,102,103,101,116,99,41,32,40,40,65,32,58,49,52,
+52,49,32,94,102,112,117,116,99,41,32,40,40,65,32,58,49,52,52,50,
+32,94,103,101,116,84,105,109,101,77,105,108,108,105,41,32,40,40,65,32,
+58,49,52,52,51,32,40,40,95,50,48,49,32,40,95,50,48,50,32,95,
+53,57,55,41,41,32,40,95,50,48,53,32,95,49,52,52,51,41,41,41,
+32,40,40,65,32,58,49,52,52,52,32,40,40,40,95,49,53,56,56,32,
+40,95,49,53,57,50,32,95,49,52,52,52,41,41,32,40,40,66,32,40,
+95,52,54,51,32,34,72,97,110,100,108,101,45,34,41,41,32,40,95,49,
+53,57,48,32,95,53,57,56,41,41,41,32,40,95,49,53,57,52,32,95,
+49,52,52,52,41,41,41,32,40,40,65,32,58,49,52,52,53,32,40,95,
+49,52,51,48,32,95,53,57,57,41,41,32,40,40,65,32,58,49,52,52,
+54,32,40,90,32,40,90,32,75,41,41,41,32,40,40,65,32,58,49,52,
+52,55,32,40,75,32,40,90,32,75,41,41,41,32,40,40,65,32,58,49,
+52,52,56,32,40,75,32,40,75,32,75,41,41,41,32,40,40,65,32,58,
+49,52,52,57,32,40,75,32,40,75,32,65,41,41,41,32,40,40,65,32,
+58,49,52,53,48,32,40,40,95,50,55,49,32,40,40,66,32,40,67,32,
+95,49,52,48,53,41,41,32,40,66,32,95,49,52,48,55,41,41,41,32,
+40,95,50,55,53,32,95,49,52,53,48,41,41,41,32,40,40,65,32,58,
+49,52,53,49,32,40,40,40,40,40,95,49,49,32,95,49,52,53,48,41,
+32,95,49,52,48,55,41,32,40,95,51,56,32,95,49,52,53,50,41,41,
+32,40,95,49,57,32,95,49,52,53,49,41,41,32,40,95,50,48,32,95,
+49,52,53,49,41,41,41,32,40,40,65,32,58,49,52,53,50,32,40,40,
+40,40,95,51,48,32,95,49,52,53,49,41,32,95,49,52,48,53,41,32,
+95,49,52,48,54,41,32,95,49,52,48,55,41,41,32,40,40,65,32,58,
+49,52,53,51,32,40,40,95,51,57,32,95,49,52,53,50,41,32,95,50,
+52,41,41,32,40,40,65,32,58,49,52,53,52,32,95,49,52,51,49,41,
+32,40,40,65,32,58,49,52,53,53,32,95,49,52,51,51,41,32,40,40,
+65,32,58,49,52,53,54,32,95,49,52,51,52,41,32,40,40,65,32,58,
+49,52,53,55,32,95,49,52,51,53,41,32,40,40,65,32,58,49,52,53,
+56,32,95,49,52,51,54,41,32,40,40,65,32,58,49,52,53,57,32,40,
+40,40,67,39,32,40,95,51,51,32,95,49,52,53,50,41,41,32,95,49,
+52,51,56,41,32,40,40,95,51,52,32,95,49,52,53,50,41,32,95,49,
+51,52,49,41,41,41,32,40,40,65,32,58,49,52,54,48,32,40,40,40,
+67,39,32,40,95,51,51,32,95,49,52,53,50,41,41,32,95,49,52,51,
+57,41,32,40,40,95,51,52,32,95,49,52,53,50,41,32,95,49,51,52,
+49,41,41,41,32,40,40,65,32,58,49,52,54,49,32,40,40,40,67,39,
+32,40,95,51,50,32,95,49,52,53,50,41,41,32,95,49,52,52,48,41,
+32,40,40,67,32,40,40,83,32,40,40,67,32,40,95,50,48,50,32,95,
+50,56,49,41,41,32,35,45,49,41,41,32,40,40,66,32,40,95,51,52,
+32,95,49,52,53,50,41,41,32,95,49,51,54,41,41,41,32,40,95,50,
+52,32,34,104,71,101,116,67,104,97,114,58,32,69,79,70,34,41,41,41,
+41,32,40,40,65,32,58,49,52,54,50,32,40,40,40,67,39,32,40,67,
+39,32,40,95,51,51,32,95,49,52,53,50,41,41,41,32,40,40,67,39,
+32,95,49,52,52,49,41,32,95,49,51,55,41,41,32,40,40,95,51,52,
+32,95,49,52,53,50,41,32,95,49,51,52,49,41,41,41,32,40,40,65,
+32,58,49,52,54,51,32,40,40,40,67,39,32,40,67,39,32,40,95,51,
+50,32,95,49,52,53,50,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,95,50,54,49,41,32,95,53,57,49,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,66,32,95,50,54,49,41,32,40,40,66,32,
+95,53,57,49,41,32,40,40,67,32,40,40,67,32,40,40,80,32,40,40,
+79,32,35,49,49,52,41,32,75,41,41,32,40,40,79,32,35,49,49,57,
+41,32,75,41,41,41,32,40,40,79,32,35,57,55,41,32,75,41,41,41,
+32,34,119,43,34,41,41,41,41,32,95,49,52,51,55,41,41,41,32,40,
+40,67,32,40,40,83,32,40,40,67,32,40,95,50,48,50,32,95,49,52,
+52,51,41,41,32,95,49,52,52,53,41,41,32,40,40,66,32,40,95,51,
+52,32,95,49,52,53,50,41,41,32,95,52,55,55,41,41,41,32,40,40,
+95,51,52,32,95,49,52,53,50,41,32,95,52,55,54,41,41,41,41,32,
+40,40,65,32,58,49,52,54,52,32,40,40,40,83,39,32,40,67,39,32,
+40,95,51,50,32,95,49,52,53,50,41,41,41,32,95,49,52,54,51,41,
+32,40,40,40,67,39,32,80,41,32,40,40,66,32,95,50,52,41,32,40,
+95,52,54,51,32,34,111,112,101,110,70,105,108,101,58,32,99,97,110,110,
+111,116,32,111,112,101,110,32,34,41,41,41,32,40,95,51,52,32,95,49,
+52,53,50,41,41,41,41,32,40,40,65,32,58,49,52,54,53,32,40,95,
+49,52,54,50,32,95,49,52,53,55,41,41,32,40,40,65,32,58,49,52,
+54,54,32,40,95,49,52,54,49,32,95,49,52,53,54,41,41,32,40,40,
+65,32,58,49,52,54,55,32,40,40,40,83,39,32,95,49,52,56,49,41,
+32,95,49,52,49,52,41,32,40,95,49,52,51,50,32,95,49,52,53,55,
+41,41,41,32,40,40,65,32,58,49,52,54,56,32,40,95,49,52,51,50,
+32,95,49,52,53,55,41,41,32,40,40,65,32,58,49,52,54,57,32,40,
+40,66,32,40,66,32,95,49,52,55,50,41,41,32,95,49,53,57,48,41,
+41,32,40,40,65,32,58,49,52,55,48,32,40,95,49,52,55,49,32,95,
+49,52,53,55,41,41,32,40,40,65,32,58,49,52,55,49,32,40,40,66,
+32,40,95,52,52,32,95,49,52,53,50,41,41,32,95,49,52,54,50,41,
+41,32,40,40,65,32,58,49,52,55,50,32,40,95,49,52,55,51,32,95,
+49,52,53,55,41,41,32,40,40,65,32,58,49,52,55,51,32,40,40,40,
+83,39,32,40,67,39,32,40,95,51,51,32,95,49,52,53,50,41,41,41,
+32,95,49,52,55,49,41,32,40,40,67,32,95,49,52,54,50,41,32,35,
+49,48,41,41,41,32,40,40,65,32,58,49,52,55,52,32,40,40,40,67,
+39,32,66,41,32,40,40,66,32,40,95,51,50,32,95,49,52,53,50,41,
+41,32,40,40,67,32,95,49,52,54,52,41,32,95,49,52,52,55,41,41,
+41,32,40,40,40,67,39,32,40,83,39,32,40,95,51,51,32,95,49,52,
+53,50,41,41,41,32,40,67,32,95,49,52,55,49,41,41,32,95,49,52,
+53,57,41,41,41,32,40,40,65,32,58,49,52,55,53,32,40,40,40,67,
+39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,67,32,95,
+49,52,54,52,41,32,95,49,52,52,54,41,41,32,40,40,40,67,39,32,
+40,95,51,50,32,95,49,52,53,50,41,41,32,95,49,52,55,54,41,32,
+40,95,51,52,32,95,49,52,53,50,41,41,41,41,32,40,40,65,32,58,
+49,52,55,54,32,40,40,40,83,39,32,40,95,51,50,32,95,49,52,53,
+50,41,41,32,95,49,52,52,48,41,32,40,40,40,83,39,32,67,41,32,
+40,40,66,32,40,83,32,40,40,67,32,40,95,50,48,50,32,95,50,56,
+49,41,41,32,35,45,49,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,66,
+32,95,49,52,56,48,41,32,95,49,52,55,54,41,41,41,32,40,40,66,
+32,40,66,32,40,95,51,52,32,95,49,52,53,50,41,41,41,32,40,40,
+66,32,95,52,54,50,41,32,95,49,51,54,41,41,41,41,41,32,40,40,
+40,67,39,32,40,95,51,51,32,95,49,52,53,50,41,41,32,95,49,52,
+53,57,41,32,40,40,95,51,52,32,95,49,52,53,50,41,32,75,41,41,
+41,41,41,32,40,40,65,32,58,49,52,55,55,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,95,51,50,32,95,49,52,53,50,41,41,32,
+40,40,67,32,95,49,52,54,52,41,32,95,49,52,52,55,41,41,41,32,
+40,40,40,67,39,32,40,83,39,32,40,95,51,51,32,95,49,52,53,50,
+41,41,41,32,40,67,32,95,49,52,53,52,41,41,32,95,49,52,53,57,
+41,41,41,32,40,40,65,32,58,49,52,55,56,32,40,40,40,67,39,32,
+40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,67,32,95,49,52,
+54,52,41,32,95,49,52,52,54,41,41,32,40,40,40,83,39,32,40,95,
+51,50,32,95,49,52,53,50,41,41,32,95,49,52,53,53,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,32,95,49,52,53,
+50,41,41,32,95,49,52,53,57,41,41,32,40,95,51,52,32,95,49,52,
+53,50,41,41,41,41,41,32,40,40,65,32,58,49,52,55,57,32,95,49,
+52,52,50,41,32,40,40,65,32,58,49,52,56,48,32,40,40,66,32,40,
+95,51,52,32,95,49,52,53,50,41,41,32,95,49,52,49,48,41,41,32,
+40,40,65,32,58,49,52,56,49,32,95,49,51,57,57,41,32,40,40,65,
+32,58,49,52,56,50,32,40,75,32,40,75,32,40,40,95,51,52,32,95,
+49,52,53,50,41,32,95,49,51,52,49,41,41,41,41,32,40,40,65,32,
+58,49,52,56,51,32,94,116,109,112,110,97,109,101,41,32,40,40,65,32,
+58,49,52,56,52,32,40,40,66,32,40,40,40,67,39,32,40,95,51,50,
+32,95,49,52,53,50,41,41,32,40,40,40,83,39,32,95,50,54,49,41,
+32,40,40,66,32,95,53,57,49,41,32,40,85,32,75,41,41,41,32,40,
+40,40,67,39,32,95,50,54,51,41,32,40,40,66,32,95,53,57,49,41,
+32,40,85,32,65,41,41,41,32,95,49,52,56,51,41,41,41,32,40,40,
+40,83,39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,95,53,57,
+50,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,95,51,51,
+32,95,49,52,53,50,41,41,32,95,53,57,52,41,41,32,40,40,40,83,
+39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,67,32,95,
+49,52,54,52,41,32,95,49,52,52,55,41,41,32,40,40,66,32,40,66,
+32,40,95,51,52,32,95,49,52,53,50,41,41,41,32,80,41,41,41,41,
+41,41,32,40,40,40,83,39,32,40,95,52,50,54,32,40,40,67,32,40,
+95,50,48,51,32,95,49,51,49,41,41,32,35,52,54,41,41,41,32,95,
+52,50,51,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,80,41,
+32,40,40,67,32,80,41,32,75,41,41,41,32,40,90,32,40,40,66,32,
+40,40,67,39,32,80,41,32,95,52,50,51,41,41,32,40,40,66,32,40,
+95,52,54,50,32,35,52,54,41,41,32,95,52,50,51,41,41,41,41,41,
+41,41,32,40,40,65,32,58,49,52,56,53,32,85,41,32,40,40,65,32,
+58,49,52,56,54,32,40,85,32,73,41,41,32,40,40,65,32,58,49,52,
+56,55,32,40,75,32,40,110,111,68,101,102,97,117,108,116,32,34,80,114,
+105,110,116,79,114,82,117,110,46,112,114,105,110,116,79,114,82,117,110,34,
+41,41,41,32,40,40,65,32,58,49,52,56,56,32,40,95,49,52,56,53,
+32,73,41,41,32,40,40,65,32,58,49,52,56,57,32,40,40,66,32,95,
+49,52,56,53,41,32,40,40,66,32,40,66,32,95,49,52,55,50,41,41,
+32,95,49,53,57,48,41,41,41,32,40,40,65,32,58,49,52,57,48,32,
+94,115,121,115,116,101,109,41,32,40,40,65,32,58,49,52,57,49,32,40,
+40,40,67,39,32,40,95,51,50,32,95,49,52,53,50,41,41,32,40,40,
+67,32,95,53,57,49,41,32,95,49,52,57,48,41,41,32,40,40,40,83,
+39,32,95,50,54,49,41,32,40,40,66,32,40,95,52,53,32,95,49,52,
+53,50,41,41,32,40,40,67,32,40,95,50,48,51,32,95,50,56,49,41,
+41,32,35,48,41,41,41,32,40,40,66,32,40,95,50,54,49,32,95,50,
+52,41,41,32,40,40,66,32,40,95,52,54,51,32,34,99,97,108,108,67,
+111,109,109,97,110,100,58,32,102,97,105,108,101,100,32,34,41,41,32,40,
+95,49,53,57,48,32,95,50,56,51,41,41,41,41,41,41,32,40,40,65,
+32,58,49,52,57,50,32,40,40,66,32,40,66,32,67,41,41,32,80,41,
+41,32,40,40,65,32,58,49,52,57,51,32,35,49,48,48,48,48,48,48,
+48,48,48,41,32,40,40,65,32,58,49,52,57,52,32,40,40,40,95,49,
+52,57,50,32,95,49,52,57,51,41,32,95,52,54,49,41,32,95,52,54,
+49,41,41,32,40,40,65,32,58,49,52,57,53,32,40,40,83,32,66,41,
+32,40,40,66,32,40,40,83,39,32,66,41,32,40,66,39,32,66,41,41,
+41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,66,32,90,41,
+41,41,41,41,32,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,
+39,32,67,41,41,41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,83,39,32,67,39,41,41,32,40,95,52,
+57,55,32,95,50,56,50,41,41,41,41,41,32,40,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,32,40,40,40,83,39,32,66,41,32,
+40,66,39,32,40,40,66,32,40,67,39,32,67,39,41,41,32,40,67,32,
+40,95,52,57,55,32,95,50,56,50,41,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,66,41,41,32,40,40,66,32,66,39,41,32,95,49,
+52,57,50,41,41,32,95,52,54,51,41,41,41,41,41,41,41,41,41,32,
+40,40,65,32,58,49,52,57,54,32,40,95,52,48,48,32,95,49,52,57,
+53,41,41,32,40,40,65,32,58,49,52,57,55,32,80,41,32,40,40,65,
+32,58,49,52,57,56,32,85,41,32,40,40,65,32,58,49,52,57,57,32,
+40,85,32,73,41,41,32,40,40,65,32,58,49,53,48,48,32,40,40,95,
+50,55,49,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,52,
+57,56,41,41,41,32,40,40,66,32,40,40,67,39,32,67,41,32,95,49,
+52,57,57,41,41,32,40,40,66,32,40,66,32,95,49,52,57,55,41,41,
+32,40,40,66,32,95,51,57,52,41,32,40,40,66,32,85,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,79,41,41,41,32,40,66,32,
+80,41,41,32,75,41,41,41,41,41,41,41,32,40,95,50,55,53,32,95,
+49,53,48,48,41,41,41,32,40,40,65,32,58,49,53,48,49,32,40,40,
+40,40,40,95,49,49,32,95,49,53,48,48,41,32,40,40,66,32,40,95,
+50,54,49,32,95,49,52,57,56,41,41,32,40,40,40,67,39,32,40,67,
+39,32,95,49,52,57,55,41,41,32,40,40,40,67,39,32,40,67,39,32,
+79,41,41,32,80,41,32,75,41,41,32,95,49,52,57,52,41,41,41,32,
+40,95,51,56,32,95,49,53,48,50,41,41,32,40,40,40,67,39,32,66,
+41,32,40,95,51,50,32,95,49,53,48,50,41,41,32,75,41,41,32,40,
+95,50,48,32,95,49,53,48,49,41,41,41,32,40,40,65,32,58,49,53,
+48,50,32,40,40,40,40,95,51,48,32,95,49,53,48,49,41,32,40,40,
+66,32,40,66,32,40,95,50,54,49,32,95,49,52,57,56,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,95,49,52,57,
+57,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,
+66,32,40,66,32,95,52,49,52,41,41,32,40,40,66,32,40,66,32,40,
+95,51,57,52,32,40,40,40,67,39,32,79,41,32,40,40,40,83,39,32,
+80,41,32,40,85,32,75,41,41,32,40,85,32,65,41,41,41,32,75,41,
+41,41,41,32,40,40,66,32,95,51,57,52,41,32,40,40,40,67,39,32,
+40,67,39,32,79,41,41,32,40,40,40,67,39,32,40,83,39,32,95,49,
+52,57,57,41,41,32,40,40,67,32,66,41,32,40,85,32,75,41,41,41,
+32,40,85,32,65,41,41,41,32,75,41,41,41,41,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,40,40,66,32,95,49,52,57,55,41,32,95,
+51,57,51,41,41,41,32,40,40,66,32,40,66,32,95,49,52,57,54,41,
+41,32,95,52,54,50,41,41,41,41,41,41,32,40,95,51,54,32,95,49,
+53,48,50,41,41,32,40,95,49,51,32,95,49,53,48,49,41,41,41,32,
+40,40,65,32,58,49,53,48,51,32,40,40,95,51,57,32,95,49,53,48,
+50,41,32,40,40,66,32,40,95,50,54,49,32,95,49,52,57,56,41,41,
+32,40,40,66,32,85,41,32,40,40,66,32,90,41,32,40,40,66,32,40,
+66,32,40,95,49,52,57,55,32,95,52,54,49,41,41,41,32,40,40,66,
+32,40,67,32,40,40,40,83,39,32,95,49,52,57,50,41,32,95,52,49,
+49,41,32,40,95,52,48,57,32,35,49,41,41,41,41,32,40,40,67,32,
+79,41,32,75,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,53,
+48,52,32,40,40,40,40,40,95,48,32,95,49,53,48,49,41,32,40,40,
+95,50,54,49,32,95,49,52,57,56,41,32,40,85,32,40,90,32,40,40,
+66,32,40,95,49,52,57,55,32,95,52,54,49,41,41,32,40,40,67,32,
+40,40,40,83,39,32,95,49,52,57,50,41,32,95,52,49,49,41,32,40,
+95,52,48,57,32,35,49,41,41,41,32,95,52,54,49,41,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,95,50,54,49,32,95,49,52,57,56,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,83,41,32,
+95,49,52,57,57,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,66,39,41,32,95,49,52,57,57,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,
+40,66,32,40,66,32,95,49,52,57,55,41,41,32,95,52,54,51,41,41,
+41,32,95,49,52,57,53,41,41,41,41,41,32,40,95,56,32,95,49,53,
+48,52,41,41,32,40,95,57,32,95,49,53,48,52,41,41,41,32,40,40,
+65,32,58,49,53,48,53,32,40,40,95,50,54,49,32,95,49,52,57,56,
+41,32,40,40,83,32,73,41,32,40,90,32,40,40,40,67,39,32,40,67,
+39,32,95,49,52,57,55,41,41,32,40,40,40,67,39,32,40,67,39,32,
+79,41,41,32,40,67,32,80,41,41,32,75,41,41,32,95,49,52,57,52,
+41,41,41,41,41,32,40,40,65,32,58,49,53,48,54,32,40,40,66,32,
+40,95,50,54,49,32,95,49,52,57,56,41,41,32,40,40,66,32,85,41,
+32,40,40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,32,95,49,
+52,57,55,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,
+40,40,66,32,40,66,32,40,80,32,95,49,51,52,49,41,41,41,32,40,
+67,32,80,41,41,41,32,75,41,41,32,95,49,52,57,52,41,41,41,41,
+41,32,40,40,65,32,58,49,53,48,55,32,40,40,66,32,40,40,95,51,
+50,32,95,49,53,48,50,41,32,95,49,53,48,53,41,41,32,40,66,32,
+95,49,53,48,54,41,41,41,32,40,40,65,32,58,49,53,48,56,32,40,
+40,66,32,40,66,32,40,95,50,54,49,32,95,49,52,57,56,41,41,41,
+32,40,40,66,32,40,40,67,39,32,40,83,39,32,40,83,32,73,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,
+40,66,32,67,41,41,32,40,40,66,32,40,66,32,40,67,32,67,39,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,95,49,52,
+57,57,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,49,52,57,
+55,41,41,32,95,49,52,57,53,41,41,41,41,41,32,40,90,32,75,41,
+41,41,41,32,95,49,52,57,57,41,41,41,32,40,40,65,32,58,49,53,
+48,57,32,40,40,40,67,39,32,40,95,51,32,95,49,53,48,52,41,41,
+32,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,52,55,55,41,
+41,32,40,40,95,49,51,32,95,49,53,48,49,41,32,95,52,55,54,41,
+41,41,32,40,40,65,32,58,49,53,49,48,32,40,40,40,67,39,32,95,
+49,53,48,56,41,32,95,49,53,49,49,41,32,40,40,95,49,51,32,95,
+49,53,48,49,41,32,95,52,54,49,41,41,41,32,40,40,65,32,58,49,
+53,49,49,32,40,40,40,83,39,32,40,95,49,52,32,95,49,53,48,49,
+41,41,32,40,40,95,50,55,54,32,95,49,53,48,48,41,32,95,52,54,
+50,41,41,32,95,49,53,49,48,41,41,32,40,40,65,32,58,49,53,49,
+50,32,40,40,40,67,39,32,95,49,53,48,56,41,32,40,40,95,50,55,
+54,32,95,49,53,48,48,41,32,95,52,55,55,41,41,32,40,40,95,49,
+51,32,95,49,53,48,49,41,32,95,52,55,54,41,41,41,32,40,40,65,
+32,58,49,53,49,51,32,40,40,66,32,40,67,32,66,41,41,32,40,40,
+40,67,39,32,40,67,39,32,80,41,41,32,40,67,32,80,41,41,32,40,
+40,83,32,40,40,67,32,67,39,41,32,95,49,55,52,41,41,32,40,90,
+32,40,90,32,40,40,66,32,95,49,55,53,41,32,40,95,51,57,52,32,
+40,85,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,40,40,40,
+67,39,32,66,41,32,80,41,32,95,53,54,54,41,41,32,75,41,41,41,
+41,41,41,41,41,41,41,32,40,40,65,32,58,49,53,49,52,32,40,40,
+83,32,40,85,32,40,95,50,32,95,49,53,48,52,41,41,41,32,40,90,
+32,40,90,32,40,95,51,57,56,32,40,95,51,32,95,49,53,48,52,41,
+41,41,41,41,41,32,40,40,65,32,58,49,53,49,53,32,40,40,66,32,
+40,66,32,40,95,50,54,49,32,95,49,52,57,56,41,41,41,32,40,40,
+66,32,40,66,32,85,41,41,32,40,40,66,32,40,40,67,39,32,83,41,
+32,40,40,66,32,40,40,67,39,32,67,39,41,32,83,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,83,39,32,66,
+41,41,41,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,95,49,52,57,55,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,79,41,41,41,32,40,40,66,32,40,40,67,39,32,66,
+41,32,80,41,41,32,40,67,32,80,41,41,41,32,75,41,41,32,95,49,
+52,57,52,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,49,52,
+57,55,32,95,52,54,49,41,41,41,32,40,40,66,32,40,67,32,40,40,
+40,83,39,32,95,49,52,57,50,41,32,95,52,49,49,41,32,40,95,52,
+48,57,32,35,49,41,41,41,41,32,40,40,67,32,79,41,32,75,41,41,
+41,41,41,41,41,32,40,40,65,32,58,49,53,49,54,32,40,40,66,32,
+40,66,32,40,95,50,54,49,32,95,49,52,57,56,41,41,41,32,40,40,
+66,32,40,66,32,85,41,41,32,40,40,66,32,40,40,67,39,32,83,41,
+32,40,40,66,32,40,40,67,39,32,67,39,41,32,83,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,67,39,32,66,
+41,41,41,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,95,49,52,57,55,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,79,41,41,41,32,40,40,66,32,40,66,32,40,67,32,
+80,41,41,41,32,40,67,32,80,41,41,41,32,75,41,41,32,95,49,52,
+57,52,41,41,41,41,41,32,40,40,66,32,40,66,32,40,95,49,52,57,
+55,32,95,52,54,49,41,41,41,32,40,40,66,32,40,67,32,40,40,40,
+83,39,32,95,49,52,57,50,41,32,95,52,49,49,41,32,40,95,52,48,
+57,32,35,49,41,41,41,41,32,40,40,67,32,79,41,32,75,41,41,41,
+41,41,41,41,32,40,40,65,32,58,49,53,49,55,32,40,40,95,50,54,
+49,32,95,49,52,57,56,41,32,40,40,83,32,73,41,32,40,40,66,32,
+90,41,32,40,40,66,32,40,67,32,40,40,83,32,95,51,57,50,41,32,
+40,40,66,32,40,95,49,52,57,55,32,95,52,54,49,41,41,32,40,40,
+67,32,40,40,40,83,39,32,95,49,52,57,50,41,32,95,52,49,49,41,
+32,40,95,52,48,57,32,35,49,41,41,41,32,40,40,79,32,34,101,111,
+102,34,41,32,75,41,41,41,41,41,41,32,40,40,40,67,39,32,95,49,
+52,57,55,41,32,40,40,40,67,39,32,79,41,32,40,80,32,95,49,51,
+52,49,41,41,32,75,41,41,32,95,49,52,57,52,41,41,41,41,41,41,
+32,40,40,65,32,58,49,53,49,56,32,40,40,66,32,40,66,32,40,95,
+50,54,49,32,95,49,52,57,56,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,67,41,32,95,49,52,57,57,41,41,32,40,40,66,
+32,40,66,32,85,41,41,32,40,40,66,32,40,66,32,40,66,32,90,41,
+41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,40,66,39,32,95,
+49,52,57,55,41,41,41,32,40,40,66,32,40,40,67,39,32,67,41,32,
+95,49,52,57,50,41,41,32,40,40,67,32,79,41,32,75,41,41,41,41,
+41,41,41,41,32,40,40,65,32,58,49,53,49,57,32,40,40,66,32,40,
+95,50,54,49,32,95,49,52,57,56,41,41,32,40,40,40,67,39,32,83,
+41,32,95,49,52,57,57,41,32,40,40,66,32,40,67,32,40,40,67,32,
+67,39,41,32,40,85,32,40,40,66,32,40,66,32,40,66,32,40,95,49,
+52,57,55,32,95,52,54,49,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,95,49,52,57,50,41,32,40,95,52,48,57,32,35,49,41,41,41,
+41,41,41,41,32,40,90,32,40,90,32,40,40,40,67,39,32,95,49,52,
+57,55,41,32,40,40,40,67,39,32,79,41,32,40,80,32,95,49,51,52,
+49,41,41,32,75,41,41,32,95,49,52,57,52,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,53,50,48,32,40,40,95,50,54,49,32,95,49,
+52,57,56,41,32,40,40,83,32,73,41,32,40,40,66,32,90,41,32,40,
+40,66,32,40,67,32,40,40,83,32,73,41,32,40,40,66,32,40,95,49,
+52,57,55,32,95,52,54,49,41,41,32,40,40,67,32,40,40,40,67,39,
+32,95,49,52,57,50,41,32,95,52,49,49,41,32,95,52,54,49,41,41,
+32,40,40,79,32,34,33,101,111,102,34,41,32,75,41,41,41,41,41,41,
+32,40,40,66,32,90,41,32,40,40,40,67,39,32,40,67,39,32,95,49,
+52,57,55,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,
+40,67,32,80,41,41,32,75,41,41,32,95,49,52,57,52,41,41,41,41,
+41,41,41,32,40,40,65,32,58,49,53,50,49,32,40,40,66,32,40,95,
+50,54,49,32,95,49,52,57,56,41,41,32,40,40,66,32,85,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,95,49,52,57,55,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,79,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,80,32,95,49,51,52,49,41,
+41,41,41,32,40,40,66,32,40,66,32,80,41,41,32,95,52,54,51,41,
+41,41,32,75,41,41,32,95,49,52,57,52,41,41,41,41,32,40,40,65,
+32,58,49,53,50,50,32,40,40,40,83,39,32,66,41,32,40,40,66,32,
+40,95,49,52,32,95,49,53,48,49,41,41,32,40,40,95,50,55,54,32,
+95,49,53,48,48,41,32,95,52,54,50,41,41,41,32,40,40,66,32,40,
+66,32,40,95,53,32,95,49,53,48,52,41,41,41,32,40,67,32,40,95,
+49,53,32,95,49,53,48,49,41,41,41,41,41,32,40,40,65,32,58,49,
+53,50,51,32,40,40,40,83,39,32,66,41,32,40,40,66,32,40,95,49,
+52,32,95,49,53,48,49,41,41,32,40,40,95,50,55,54,32,95,49,53,
+48,48,41,32,95,52,54,50,41,41,41,32,40,40,66,32,40,66,32,95,
+49,53,49,48,41,41,32,40,67,32,40,95,49,53,32,95,49,53,48,49,
+41,41,41,41,41,32,40,40,65,32,58,49,53,50,52,32,40,40,40,67,
+39,32,40,67,39,32,95,49,53,48,56,41,41,32,95,49,53,50,51,41,
+32,40,40,95,49,51,32,95,49,53,48,49,41,32,95,52,54,49,41,41,
+41,32,40,40,65,32,58,49,53,50,53,32,40,40,40,67,39,32,40,67,
+39,32,95,49,53,48,56,41,41,32,95,49,53,50,54,41,32,40,40,95,
+49,51,32,95,49,53,48,49,41,32,95,52,54,49,41,41,41,32,40,40,
+65,32,58,49,53,50,54,32,40,40,40,83,39,32,66,41,32,40,40,66,
+32,40,95,49,52,32,95,49,53,48,49,41,41,32,40,40,95,50,55,54,
+32,95,49,53,48,48,41,32,95,52,54,50,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,95,49,53,48,56,41,41,32,40,40,66,32,40,83,
+32,40,95,49,53,32,95,49,53,48,49,41,41,41,32,95,49,53,50,53,
+41,41,32,40,40,95,49,51,32,95,49,53,48,49,41,32,95,52,54,49,
+41,41,41,41,32,40,40,65,32,58,49,53,50,55,32,40,90,32,40,90,
+32,40,90,32,40,90,32,40,90,32,40,90,32,75,41,41,41,41,41,41,
+41,32,40,40,65,32,58,49,53,50,56,32,40,90,32,40,40,66,32,90,
+41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,
+90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,85,41,41,
+41,41,41,41,41,41,32,40,40,65,32,58,49,53,50,57,32,40,40,66,
+32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,53,51,48,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,
+40,40,66,32,90,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,
+66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,53,51,49,32,40,40,66,32,90,41,32,40,40,
+66,32,90,41,32,40,40,66,32,90,41,32,40,40,66,32,90,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,40,66,32,90,41,41,32,80,41,41,41,41,41,41,41,
+41,32,40,40,65,32,58,49,53,51,50,32,40,75,32,40,75,32,40,75,
+32,40,75,32,40,75,32,40,90,32,75,41,41,41,41,41,41,41,32,40,
+40,65,32,58,49,53,51,51,32,40,40,66,32,40,66,32,90,41,41,32,
+40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,
+41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,40,66,32,90,41,41,41,32,40,40,66,32,40,66,32,67,41,41,
+32,80,41,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,53,51,
+52,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,
+66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,67,41,41,32,80,41,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,53,51,53,32,40,40,67,32,95,49,53,50,57,
+41,32,95,49,53,50,55,41,41,32,40,40,65,32,58,49,53,51,54,32,
+95,49,53,50,55,41,32,40,40,65,32,58,49,53,51,55,32,40,40,67,
+32,40,40,67,32,40,40,83,32,40,40,83,32,40,40,83,32,40,40,83,
+32,40,40,83,32,40,40,83,32,73,41,32,73,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,73,41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,
+41,32,95,49,53,54,56,41,32,95,49,53,51,55,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,66,41,41,32,95,49,53,54,50,41,32,95,
+49,53,51,55,41,41,41,32,40,40,65,32,58,49,53,51,56,32,40,40,
+95,50,54,51,32,95,53,54,54,41,32,40,40,95,50,54,51,32,95,49,
+53,53,50,41,32,40,40,95,51,57,55,32,40,40,67,32,95,49,53,51,
+51,41,32,95,49,50,52,41,41,32,95,49,53,51,54,41,41,41,41,32,
+40,40,65,32,58,49,53,51,57,32,40,40,95,50,54,51,32,95,53,54,
+54,41,32,40,40,95,50,54,51,32,95,49,53,53,50,41,32,40,40,95,
+51,57,55,32,40,40,67,32,95,49,53,51,51,41,32,95,49,50,53,41,
+41,32,95,49,53,51,54,41,41,41,41,32,40,40,65,32,58,49,53,52,
+48,32,40,40,95,50,54,51,32,95,53,54,54,41,32,40,40,95,50,54,
+51,32,95,49,53,53,51,41,32,40,40,95,51,57,55,32,40,40,67,32,
+95,49,53,51,52,41,32,95,49,50,52,41,41,32,95,49,53,51,54,41,
+41,41,41,32,40,40,65,32,58,49,53,52,49,32,40,40,40,67,39,32,
+66,41,32,95,49,53,52,56,41,32,95,49,53,51,55,41,41,32,40,40,
+65,32,58,49,53,52,50,32,40,40,66,32,40,66,32,40,66,32,95,49,
+53,55,48,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+79,41,41,32,40,40,40,67,39,32,40,67,39,32,79,41,41,32,95,49,
+53,52,49,41,32,75,41,41,41,41,32,40,40,65,32,58,49,53,52,51,
+32,40,40,66,32,40,80,32,95,52,54,49,41,41,32,40,40,66,32,89,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,80,41,32,40,40,67,
+32,79,41,32,75,41,41,41,41,32,40,40,66,32,40,67,39,32,66,41,
+41,32,40,40,66,32,66,39,41,32,40,40,66,32,40,66,32,95,52,54,
+50,41,41,32,40,67,32,95,49,53,54,53,41,41,41,41,41,41,41,41,
+32,40,40,65,32,58,49,53,52,52,32,40,40,80,32,95,50,54,52,41,
+32,95,49,53,52,53,41,41,32,40,40,65,32,58,49,53,52,53,32,40,
+40,40,67,39,32,95,49,53,54,53,41,32,40,95,49,53,54,53,32,40,
+95,49,53,51,53,32,40,40,79,32,35,52,48,41,32,75,41,41,41,41,
+32,40,95,49,53,51,53,32,40,40,79,32,35,52,49,41,32,75,41,41,
+41,41,32,40,40,65,32,58,49,53,52,54,32,40,40,40,67,39,32,95,
+49,53,54,53,41,32,40,95,49,53,54,53,32,40,95,49,53,51,53,32,
+40,40,79,32,35,49,50,51,41,32,75,41,41,41,41,32,40,95,49,53,
+51,53,32,40,40,79,32,35,49,50,53,41,32,75,41,41,41,41,32,40,
+40,65,32,58,49,53,52,55,32,40,40,40,67,39,32,95,49,53,54,53,
+41,32,40,95,49,53,54,53,32,40,95,49,53,51,53,32,40,40,79,32,
+35,57,49,41,32,75,41,41,41,41,32,40,95,49,53,51,53,32,40,40,
+79,32,35,57,51,41,32,75,41,41,41,41,32,40,40,65,32,58,49,53,
+52,56,32,40,40,67,32,40,40,40,83,39,32,67,39,41,32,40,40,67,
+32,95,49,52,56,49,41,32,95,49,50,52,41,41,32,40,40,40,83,39,
+32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,
+40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,
+39,32,67,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,
+40,40,66,32,40,40,67,39,32,67,41,32,40,40,67,32,40,40,40,67,
+39,32,83,39,41,32,40,85,32,95,49,53,50,55,41,41,32,75,41,41,
+32,40,90,32,75,41,41,41,41,32,40,40,66,32,40,66,32,95,49,53,
+52,56,41,41,32,40,95,52,55,57,32,95,50,55,55,41,41,41,41,32,
+40,90,32,75,41,41,41,32,95,49,53,51,50,41,41,32,40,90,32,40,
+90,32,75,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,
+40,40,67,32,40,40,40,83,39,32,83,39,41,32,40,40,67,32,61,61,
+41,32,35,48,41,41,32,95,49,53,53,55,41,41,32,73,41,41,41,41,
+32,95,50,53,41,41,32,40,40,65,32,58,49,53,52,57,32,40,40,40,
+83,39,32,66,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,
+32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,
+41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,40,40,40,67,39,
+32,83,39,41,32,40,85,32,95,49,53,50,55,41,41,32,75,41,41,32,
+40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,
+41,41,41,32,73,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,
+40,90,32,40,90,32,75,41,41,41,41,32,95,49,53,53,56,41,41,32,
+40,40,65,32,58,49,53,53,48,32,75,41,32,40,40,65,32,58,49,53,
+53,49,32,65,41,32,40,40,65,32,58,49,53,53,50,32,40,40,83,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,67,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,
+39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,83,41,
+32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,73,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,95,49,53,53,52,32,95,49,
+53,51,51,41,41,32,40,40,66,32,95,53,54,54,41,32,95,49,53,53,
+50,41,41,41,32,95,49,53,53,50,41,41,41,32,40,90,32,40,90,32,
+75,41,41,41,41,32,40,80,32,95,49,53,53,49,41,41,41,32,40,40,
+65,32,58,49,53,53,51,32,40,40,83,32,40,40,40,67,39,32,67,41,
+32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,40,
+67,39,32,83,41,32,40,40,67,32,83,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,73,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,40,66,32,40,95,49,53,53,
+52,32,95,49,53,51,52,41,41,32,40,40,66,32,95,53,54,54,41,32,
+95,49,53,53,51,41,41,41,32,95,49,53,53,51,41,41,41,32,40,80,
+32,95,49,53,53,49,41,41,41,32,40,40,65,32,58,49,53,53,52,32,
+40,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,67,41,32,40,40,
+67,32,40,67,39,32,83,39,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,73,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,40,90,
+32,75,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,40,
+66,32,40,80,32,95,49,53,53,49,41,41,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,85,41,41,41,32,40,40,83,39,32,66,41,32,40,
+40,66,32,40,67,39,32,66,41,41,32,85,41,41,41,41,41,41,32,40,
+40,65,32,58,49,53,53,53,32,95,49,53,50,56,41,32,40,40,65,32,
+58,49,53,53,54,32,95,49,53,50,57,41,32,40,40,65,32,58,49,53,
+53,55,32,95,49,53,51,48,41,32,40,40,65,32,58,49,53,53,56,32,
+95,49,53,51,49,41,32,40,40,65,32,58,49,53,53,57,32,40,40,67,
+32,95,49,53,54,49,41,32,95,49,50,52,41,41,32,40,40,65,32,58,
+49,53,54,48,32,40,40,67,32,95,49,53,54,49,41,32,95,49,50,53,
+41,41,32,40,40,65,32,58,49,53,54,49,32,40,40,40,83,39,32,66,
+41,32,40,40,66,32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,
+41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,
+67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,83,39,
+41,41,32,85,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,40,90,32,75,41,41,41,32,73,41,41,32,40,90,
+32,40,90,32,75,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,41,32,40,40,40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,67,41,32,40,40,
+67,32,40,67,39,32,83,39,41,41,32,75,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,73,
+41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,40,90,
+32,75,41,41,41,41,41,32,95,49,53,51,52,41,41,41,32,40,40,65,
+32,58,49,53,54,50,32,40,40,40,83,39,32,40,83,39,32,83,41,41,
+32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,67,41,41,41,32,
+40,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,67,41,32,
+40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,
+40,67,39,32,83,41,32,40,40,40,67,39,32,83,41,32,40,40,67,32,
+83,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,73,41,41,41,41,32,40,40,66,
+32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,40,67,39,32,40,67,39,32,
+66,41,41,32,40,40,40,67,39,32,67,41,32,40,40,66,32,95,49,53,
+54,51,41,32,95,49,53,51,55,41,41,32,35,48,41,41,32,95,49,53,
+51,55,41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,67,39,
+32,40,67,39,32,66,41,41,32,95,49,53,54,50,41,41,41,32,40,40,
+66,32,67,41,32,40,67,32,95,49,53,54,50,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,40,40,67,39,32,67,
+41,32,95,49,53,54,51,41,32,35,48,41,41,32,95,49,53,51,55,41,
+41,41,32,40,40,65,32,58,49,53,54,51,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,67,
+39,41,32,40,40,67,32,95,49,52,56,49,41,32,95,49,50,52,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,
+40,40,40,67,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,
+40,40,67,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,40,
+40,67,39,32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,40,40,
+67,39,32,66,41,32,40,40,40,67,39,32,83,39,41,32,83,39,41,32,
+95,49,53,52,56,41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,
+32,95,49,53,53,53,41,41,41,41,32,40,40,66,32,40,66,32,67,41,
+41,32,40,40,66,32,67,41,32,40,67,32,95,49,53,54,51,41,41,41,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,
+32,83,41,41,32,40,40,66,32,40,66,32,40,40,67,39,32,67,39,41,
+32,40,66,39,32,95,49,53,50,57,41,41,41,41,32,40,40,40,83,39,
+32,40,83,39,32,40,83,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,32,40,40,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,
+83,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,83,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,40,67,39,32,83,39,41,41,41,41,32,40,40,
+66,32,40,66,32,40,67,32,66,41,41,41,32,40,40,66,32,67,41,32,
+95,49,53,54,52,41,41,41,32,75,41,41,32,40,90,32,75,41,41,41,
+32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,73,41,41,
+32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,40,90,32,75,
+41,41,41,41,32,40,40,66,32,40,67,39,32,67,41,41,32,40,67,32,
+95,49,53,54,51,41,41,41,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,52,49,49,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,40,83,39,32,66,41,
+32,95,49,53,53,55,41,41,41,41,32,40,40,66,32,40,66,32,40,67,
+39,32,67,41,41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,
+40,40,66,32,67,41,32,40,67,32,95,49,53,54,51,41,41,41,41,32,
+40,95,52,56,48,32,95,50,55,55,41,41,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,40,83,39,32,40,67,39,32,66,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,49,53,53,56,41,
+41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,40,40,66,32,67,
+41,32,40,67,32,95,49,53,54,51,41,41,41,41,41,32,40,40,66,32,
+40,66,32,67,41,41,32,40,40,66,32,67,41,32,40,67,32,95,49,53,
+54,51,41,41,41,41,41,41,32,95,49,53,51,50,41,41,32,40,75,32,
+40,75,32,40,75,32,40,95,50,52,32,34,97,98,111,118,101,78,101,115,
+116,32,66,101,115,105,100,101,34,41,41,41,41,41,41,32,40,75,32,40,
+75,32,40,75,32,40,95,50,52,32,34,97,98,111,118,101,78,101,115,116,
+32,65,98,111,118,101,34,41,41,41,41,41,41,41,32,95,50,53,41,41,
+32,40,40,65,32,58,49,53,54,52,32,40,40,66,32,89,41,32,40,40,
+40,67,39,32,40,67,39,32,67,41,41,32,40,40,66,32,40,66,32,40,
+40,83,39,32,67,39,41,32,40,40,67,32,95,49,52,56,49,41,32,95,
+49,50,52,41,41,41,41,32,40,40,66,32,40,40,67,39,32,40,83,39,
+32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,
+41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+32,40,40,66,32,40,66,32,40,40,67,39,32,67,41,32,40,40,67,32,
+40,40,40,67,39,32,83,39,41,32,40,85,32,95,49,53,50,55,41,41,
+32,75,41,41,32,40,90,32,75,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,66,41,32,40,95,52,55,57,32,95,50,55,55,41,41,41,
+41,32,40,90,32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,32,
+75,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,41,32,40,
+40,40,67,39,32,83,41,32,40,40,40,67,39,32,40,83,39,32,83,39,
+41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,95,49,50,49,
+41,32,95,49,50,50,41,41,32,40,40,67,32,40,95,52,57,57,32,95,
+50,56,50,41,41,32,35,48,41,41,41,32,40,40,66,32,40,66,32,95,
+49,53,53,53,41,41,32,95,49,53,52,56,41,41,41,32,40,40,66,32,
+95,49,53,53,54,41,32,40,40,67,32,95,52,52,54,41,32,35,51,50,
+41,41,41,41,41,41,32,95,50,53,41,41,41,32,40,40,65,32,58,49,
+53,54,53,32,40,40,67,32,95,49,53,54,55,41,32,95,49,50,52,41,
+41,32,40,40,65,32,58,49,53,54,54,32,40,40,67,32,95,49,53,54,
+55,41,32,95,49,50,53,41,41,32,40,40,65,32,58,49,53,54,55,32,
+40,40,40,83,39,32,66,41,32,40,40,66,32,83,41,32,40,40,40,67,
+39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,
+83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,
+40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,
+39,32,83,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,39,
+32,40,67,39,32,83,39,41,41,32,85,41,32,75,41,41,32,40,90,32,
+75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,
+32,73,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,90,32,
+40,90,32,75,41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,
+40,66,32,83,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,
+40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,
+40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,
+41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,67,32,40,67,39,32,83,39,41,41,32,75,41,
+41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,41,32,40,90,
+32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,41,32,95,49,53,51,51,
+41,41,41,32,40,40,65,32,58,49,53,54,56,32,40,40,40,83,39,32,
+40,83,39,32,83,41,41,32,40,40,40,83,39,32,40,83,39,32,83,41,
+41,32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,
+39,32,40,83,39,32,83,41,41,32,40,40,40,67,39,32,40,83,39,32,
+83,41,41,32,40,40,40,67,39,32,40,83,39,32,83,41,41,32,40,40,
+40,67,39,32,66,41,32,83,41,32,40,40,66,32,40,66,32,40,66,32,
+40,95,50,54,50,32,95,49,53,53,53,41,41,41,41,32,40,40,66,32,
+67,41,32,40,67,32,95,49,53,54,56,41,41,41,41,41,32,40,40,66,
+32,40,66,32,40,40,67,39,32,66,41,32,95,49,53,50,57,41,41,41,
+32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+67,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,83,39,
+41,41,41,32,40,40,66,32,40,66,32,85,41,41,32,95,49,53,54,57,
+41,41,32,75,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,
+41,41,32,40,90,32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,
+32,75,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,
+40,66,32,67,41,32,40,67,32,95,49,53,54,56,41,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,40,67,39,32,66,41,32,40,40,66,32,
+95,50,54,50,41,32,95,49,53,53,55,41,41,41,41,32,40,40,66,32,
+67,41,32,40,67,32,95,49,53,54,56,41,41,41,41,41,32,40,40,40,
+83,39,32,40,83,39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,
+40,66,32,40,66,32,95,49,53,53,56,41,41,41,32,40,40,66,32,67,
+41,32,40,67,32,95,49,53,54,56,41,41,41,41,32,40,40,66,32,67,
+41,32,40,67,32,95,49,53,54,56,41,41,41,41,41,32,95,49,53,51,
+50,41,41,32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,66,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,83,39,32,66,41,41,
+41,41,32,40,40,66,32,40,40,83,39,32,66,41,32,40,40,66,32,67,
+41,32,40,67,32,40,95,50,48,50,32,95,49,49,55,41,41,41,41,41,
+32,40,40,66,32,95,49,53,54,56,41,32,95,49,53,51,55,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,67,39,32,40,67,39,32,66,41,
+41,32,40,40,66,32,40,66,32,95,50,54,50,41,41,32,95,49,53,54,
+56,41,41,41,41,32,40,40,66,32,67,41,32,40,67,32,95,49,53,54,
+56,41,41,41,41,41,41,32,40,40,66,32,40,66,32,90,41,41,32,40,
+40,66,32,40,66,32,90,41,41,32,40,40,66,32,40,66,32,90,41,41,
+32,40,40,66,32,95,49,53,54,56,41,32,95,49,53,51,55,41,41,41,
+41,41,41,32,40,40,65,32,58,49,53,54,57,32,40,40,66,32,89,41,
+32,40,40,66,32,40,40,67,39,32,83,41,32,40,40,40,67,39,32,40,
+67,39,32,83,41,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,
+32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,
+32,40,67,39,32,83,41,41,32,40,40,66,32,40,40,67,39,32,67,41,
+32,40,40,67,32,40,40,40,67,39,32,83,39,41,32,40,85,32,95,49,
+53,50,55,41,41,32,75,41,41,32,40,90,32,75,41,41,41,41,32,75,
+41,41,32,40,90,32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,
+32,75,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,41,32,
+40,40,67,32,83,41,32,40,95,49,53,53,54,32,40,40,79,32,35,51,
+50,41,32,75,41,41,41,41,41,41,32,40,40,65,32,58,49,53,55,48,
+32,40,95,49,53,55,50,32,95,49,50,53,41,41,32,40,40,65,32,58,
+49,53,55,49,32,40,95,49,53,55,50,32,95,49,50,52,41,41,32,40,
+40,65,32,58,49,53,55,50,32,40,40,66,32,40,80,32,95,49,53,51,
+54,41,41,32,40,40,67,32,40,40,40,67,39,32,67,39,41,32,95,49,
+53,55,51,41,32,95,49,53,51,55,41,41,32,35,48,41,41,41,32,40,
+40,65,32,58,49,53,55,51,32,40,40,66,32,89,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,40,83,39,32,67,39,41,32,40,40,67,32,95,49,
+52,56,49,41,32,95,49,50,52,41,41,41,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,40,67,39,
+32,40,83,39,32,83,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,40,67,39,32,40,83,39,32,83,41,41,41,32,40,40,40,
+83,39,32,40,67,39,32,40,83,39,32,83,41,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,66,32,40,40,67,39,32,83,39,41,32,83,39,
+41,41,32,40,40,66,32,40,40,67,39,32,66,41,32,95,49,53,52,56,
+41,41,32,95,49,53,55,50,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,95,49,53,53,53,41,41,41,32,40,40,40,67,39,32,66,41,32,
+40,40,66,32,67,41,32,40,67,32,40,40,67,32,95,49,53,54,51,41,
+32,95,49,50,52,41,41,41,41,32,40,40,66,32,95,49,53,51,55,41,
+32,95,49,53,52,48,41,41,41,41,41,32,40,40,66,32,40,66,32,40,
+66,32,40,40,83,39,32,66,41,32,95,49,53,53,54,41,41,41,41,32,
+40,40,66,32,40,66,32,40,67,39,32,67,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,66,39,32,40,40,66,32,67,41,32,95,49,53,55,
+52,41,41,41,32,40,40,40,67,39,32,66,41,32,40,95,52,56,48,32,
+95,50,55,55,41,41,32,95,52,49,49,41,41,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,66,32,40,40,83,39,32,66,41,32,95,49,53,
+53,55,41,41,41,41,32,40,40,66,32,40,66,32,40,67,39,32,67,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,66,39,32,67,41,41,32,
+40,95,52,56,48,32,95,50,55,55,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,83,39,32,40,83,39,32,40,67,39,32,66,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,49,53,53,56,41,
+41,41,41,32,40,40,66,32,40,66,32,67,41,41,32,67,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,40,67,32,40,
+40,67,32,95,49,53,54,51,41,32,95,49,50,52,41,41,41,41,32,40,
+40,66,32,95,49,53,51,55,41,32,95,49,53,52,48,41,41,41,41,41,
+32,95,49,53,51,50,41,41,32,40,75,32,40,75,32,40,75,32,40,95,
+50,52,32,34,115,101,112,49,32,66,101,115,105,100,101,34,41,41,41,41,
+41,41,32,40,75,32,40,75,32,40,75,32,40,95,50,52,32,34,115,101,
+112,49,32,65,98,111,118,101,34,41,41,41,41,41,41,41,32,95,50,53,
+41,41,41,32,40,40,65,32,58,49,53,55,52,32,40,40,66,32,89,41,
+32,40,40,40,83,39,32,40,67,39,32,40,83,39,32,40,83,39,32,83,
+41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,40,67,39,32,83,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,
+32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,67,39,32,40,83,
+39,32,40,83,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,32,40,40,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,83,39,41,41,41,41,32,40,40,66,32,
+40,40,67,39,32,66,41,32,66,41,41,32,40,40,40,67,39,32,66,41,
+32,40,40,66,32,40,83,39,32,95,49,53,52,57,41,41,32,40,40,66,
+32,40,66,32,95,49,53,55,53,41,41,32,40,40,40,83,39,32,66,41,
+32,95,49,53,54,57,41,32,40,40,66,32,40,66,32,95,49,53,51,55,
+41,41,32,40,40,67,32,40,40,67,32,83,39,41,32,95,49,53,51,56,
+41,41,32,95,49,53,51,57,41,41,41,41,41,41,32,40,40,40,67,39,
+32,66,41,32,40,95,49,53,54,52,32,95,49,50,52,41,41,32,40,40,
+66,32,95,49,53,51,55,41,32,95,49,53,52,48,41,41,41,41,41,32,
+75,41,41,32,40,90,32,75,41,41,41,41,32,40,40,66,32,40,66,32,
+90,41,41,32,40,40,66,32,40,66,32,67,41,41,32,67,41,41,41,41,
+32,40,90,32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,32,75,
+41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,95,49,53,
+55,51,41,41,41,32,40,40,65,32,58,49,53,55,53,32,40,40,67,32,
+40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,40,40,67,32,
+40,40,80,32,95,49,53,50,55,41,32,40,75,32,95,49,53,51,50,41,
+41,41,32,40,40,40,67,39,32,66,41,32,95,49,53,53,54,41,32,95,
+49,53,55,53,41,41,41,32,40,40,40,67,39,32,66,41,32,95,49,53,
+53,55,41,32,95,49,53,55,53,41,41,41,32,40,90,32,95,49,53,55,
+53,41,41,41,32,95,49,53,51,50,41,41,32,40,75,32,40,75,32,40,
+75,32,40,95,50,52,32,34,111,110,101,76,105,110,101,114,32,66,101,115,
+105,100,101,34,41,41,41,41,41,41,32,40,75,32,40,75,32,40,75,32,
+40,95,50,52,32,34,111,110,101,76,105,110,101,114,32,65,98,111,118,101,
+34,41,41,41,41,41,41,32,40,40,65,32,58,49,53,55,54,32,80,41,
+32,40,40,65,32,58,49,53,55,55,32,40,85,32,75,41,41,32,40,40,
+65,32,58,49,53,55,56,32,40,85,32,65,41,41,32,40,40,65,32,58,
+49,53,55,57,32,40,40,95,49,53,55,54,32,35,49,48,48,41,32,40,
+40,80,32,40,40,95,52,56,53,32,95,50,55,55,41,32,40,95,51,53,
+57,32,35,51,41,41,41,32,40,40,95,52,56,53,32,95,50,55,55,41,
+32,40,95,51,53,57,32,35,50,41,41,41,41,41,32,40,40,65,32,58,
+49,53,56,48,32,40,95,49,53,56,49,32,95,49,53,55,57,41,41,32,
+40,40,65,32,58,49,53,56,49,32,40,40,67,32,40,40,40,83,39,32,
+95,49,53,56,50,41,32,95,49,53,55,55,41,32,95,49,53,55,56,41,
+41,32,75,41,41,32,40,40,65,32,58,49,53,56,50,32,40,40,66,32,
+40,40,67,39,32,66,41,32,66,41,41,32,40,40,40,83,39,32,40,67,
+39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,66,39,
+41,41,32,40,40,40,83,39,32,40,67,39,32,66,41,41,32,40,40,66,
+32,40,66,32,83,41,41,32,40,40,66,32,67,41,32,95,49,53,56,51,
+41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,67,41,32,
+95,49,53,56,52,41,41,32,95,49,53,51,55,41,41,41,41,32,40,40,
+66,32,40,67,39,32,40,95,51,54,54,32,95,50,55,56,41,41,41,32,
+40,95,52,56,49,32,95,50,55,55,41,41,41,41,41,32,40,40,65,32,
+58,49,53,56,51,32,40,75,32,40,75,32,40,40,67,32,40,40,40,67,
+39,32,89,41,32,40,40,40,67,39,32,83,41,32,40,40,40,67,39,32,
+40,83,39,32,67,41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,
+39,32,40,83,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,66,41,41,41,32,40,40,66,32,40,66,32,40,66,
+32,80,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,
+40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,83,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,
+39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,39,41,41,41,41,
+41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,40,83,39,32,
+67,41,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,
+67,39,32,40,83,39,32,67,41,41,41,32,40,40,40,67,39,32,66,41,
+32,40,66,39,32,80,41,41,32,40,66,32,40,66,32,40,95,52,54,51,
+32,40,40,79,32,35,49,48,41,32,75,41,41,41,41,41,41,41,32,40,
+85,32,40,75,32,75,41,41,41,41,32,40,40,40,67,39,32,66,41,32,
+66,41,32,40,95,52,55,57,32,95,50,55,55,41,41,41,41,32,40,90,
+32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,95,50,52,32,34,
+100,105,115,112,108,97,121,32,108,97,121,34,41,41,41,41,32,40,40,66,
+32,40,40,83,39,32,66,41,32,40,66,39,32,40,40,66,32,95,52,54,
+51,41,32,40,40,67,32,95,52,52,54,41,32,35,51,50,41,41,41,41,
+41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,95,52,54,
+51,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,40,40,40,
+67,39,32,66,41,32,40,95,52,55,57,32,95,50,55,55,41,41,32,95,
+52,49,49,41,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,41,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,83,41,41,41,41,41,32,40,40,40,67,39,32,40,67,
+39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,32,40,40,40,67,
+39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,83,39,
+41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,83,39,32,
+40,83,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+66,41,41,32,40,40,66,32,40,66,32,40,83,39,32,67,41,41,41,32,
+40,40,40,67,39,32,66,41,32,40,66,39,32,80,41,41,32,40,66,32,
+40,66,32,40,95,52,54,51,32,40,40,79,32,35,49,48,41,32,75,41,
+41,41,41,41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,
+41,32,95,52,54,51,41,41,41,32,40,40,40,67,39,32,66,41,32,66,
+41,32,40,40,40,67,39,32,66,41,32,40,95,52,55,57,32,95,50,55,
+55,41,41,32,95,52,49,49,41,41,41,41,41,32,90,41,41,32,40,90,
+32,75,41,41,41,32,73,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,95,50,52,32,34,
+100,105,115,112,108,97,121,32,108,97,121,50,34,41,41,41,41,32,40,85,
+32,40,75,32,65,41,41,41,41,32,40,85,32,40,90,32,75,41,41,41,
+41,32,40,90,32,75,41,41,41,32,35,48,41,41,41,41,32,40,40,65,
+32,58,49,53,56,52,32,40,67,32,40,40,40,67,39,32,89,41,32,40,
+40,67,32,40,40,40,67,39,32,83,39,41,32,40,40,66,32,67,41,32,
+40,40,40,83,39,32,40,83,39,32,40,83,39,32,80,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,67,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,40,67,39,32,83,39,41,41,41,41,41,32,40,40,40,
+67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,
+32,40,40,66,32,40,40,83,39,32,40,67,39,32,40,83,39,32,67,41,
+41,41,32,40,40,40,83,39,32,40,67,39,32,40,83,39,32,67,41,41,
+41,32,40,40,40,67,39,32,66,41,32,40,40,66,32,40,83,39,32,67,
+41,41,32,40,40,66,32,40,66,32,40,80,32,95,49,53,50,55,41,41,
+41,32,40,66,32,40,66,32,95,49,53,53,53,41,41,41,41,41,32,40,
+40,66,32,40,66,32,40,40,83,39,32,66,41,32,95,49,53,53,54,41,
+41,41,32,40,40,67,32,40,67,39,32,66,41,41,32,95,52,49,49,41,
+41,41,41,32,40,40,66,32,40,66,32,40,40,83,39,32,66,41,32,95,
+49,53,53,55,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,
+40,95,52,56,48,32,95,50,55,55,41,41,41,41,41,41,32,40,40,40,
+67,39,32,40,83,39,32,40,83,39,32,40,67,39,32,66,41,41,41,41,
+32,40,40,66,32,40,83,39,32,66,41,41,32,40,67,32,95,49,53,56,
+53,41,41,41,32,73,41,41,41,32,95,49,53,51,50,41,41,32,40,90,
+32,40,90,32,75,41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,
+41,32,40,95,50,52,32,34,98,101,115,116,32,103,101,116,34,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,
+67,39,32,67,41,41,41,41,41,32,40,40,40,67,39,32,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,41,41,32,40,
+40,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,
+32,40,67,39,32,83,39,41,41,41,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,40,67,39,32,40,67,39,32,67,41,41,41,
+41,41,32,40,40,66,32,40,40,67,39,32,40,83,39,32,40,83,39,32,
+40,83,39,32,67,41,41,41,41,32,40,40,40,67,39,32,40,83,39,32,
+40,83,39,32,40,83,39,32,67,41,41,41,41,32,40,40,40,67,39,32,
+66,41,32,40,40,66,32,40,83,39,32,40,83,39,32,67,41,41,41,32,
+40,40,66,32,40,66,32,40,66,32,40,80,32,95,49,53,50,55,41,41,
+41,41,32,40,40,66,32,40,66,32,40,66,32,40,66,32,95,49,53,53,
+53,41,41,41,41,32,40,40,40,67,39,32,66,41,32,66,41,32,40,95,
+52,56,48,32,95,50,55,55,41,41,41,41,41,41,32,40,40,66,32,40,
+66,32,40,66,32,40,40,83,39,32,66,41,32,95,49,53,53,54,41,41,
+41,41,32,40,40,40,67,39,32,40,67,39,32,66,41,41,32,66,39,41,
+32,40,40,40,67,39,32,66,41,32,40,95,52,55,57,32,95,50,55,55,
+41,41,32,95,52,49,49,41,41,41,41,41,32,40,66,32,90,41,41,41,
+41,32,40,40,40,67,39,32,40,83,39,32,40,83,39,32,40,83,39,32,
+40,67,39,32,66,41,41,41,41,41,32,40,40,66,32,40,83,39,32,40,
+83,39,32,66,41,41,41,32,40,67,32,95,49,53,56,54,41,41,41,32,
+73,41,41,41,32,95,49,53,51,50,41,41,32,40,90,32,40,90,32,75,
+41,41,41,41,32,40,90,32,40,90,32,75,41,41,41,41,32,40,95,50,
+52,32,34,98,101,115,116,32,103,101,116,49,34,41,41,41,41,41,32,40,
+85,32,65,41,41,41,32,40,85,32,75,41,41,41,32,75,41,41,41,32,
+40,40,65,32,58,49,53,56,53,32,40,40,40,67,39,32,67,41,32,95,
+49,53,56,54,41,32,35,48,41,41,32,40,40,65,32,58,49,53,56,54,
+32,40,40,40,67,39,32,40,67,39,32,40,67,39,32,40,83,39,32,67,
+41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,95,49,53,56,55,
+41,41,41,32,40,40,66,32,40,66,32,40,95,52,56,48,32,95,50,55,
+55,41,41,41,32,40,40,40,83,39,32,67,41,32,40,40,40,67,39,32,
+83,41,32,40,95,52,57,55,32,95,50,56,50,41,41,32,73,41,41,32,
+73,41,41,41,41,32,73,41,41,32,40,40,65,32,58,49,53,56,55,32,
+40,40,67,32,40,40,40,83,39,32,67,39,41,32,40,40,67,32,40,95,
+52,57,55,32,95,50,56,50,41,41,32,35,48,41,41,32,40,40,40,67,
+39,32,67,41,32,40,40,40,67,39,32,40,67,39,32,83,41,41,32,40,
+40,40,67,39,32,40,67,39,32,83,41,41,32,40,40,40,67,39,32,40,
+67,39,32,67,41,41,32,40,40,40,67,39,32,67,41,32,40,40,40,67,
+39,32,40,67,39,32,83,39,41,41,32,40,40,66,32,40,67,32,40,40,
+80,32,95,49,50,53,41,32,40,75,32,95,49,50,53,41,41,41,41,32,
+40,40,66,32,40,66,32,95,49,53,56,55,41,41,32,40,40,40,67,39,
+32,66,41,32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,52,49,
+49,41,41,41,41,32,40,90,32,75,41,41,41,32,40,90,32,75,41,41,
+41,32,95,49,50,52,41,41,32,40,90,32,40,90,32,75,41,41,41,41,
+32,40,90,32,40,90,32,75,41,41,41,41,32,40,95,50,52,32,34,102,
+105,116,115,34,41,41,41,41,32,95,49,50,52,41,41,32,40,40,65,32,
+58,49,53,56,56,32,40,40,66,32,40,66,32,67,41,41,32,80,41,41,
+32,40,40,65,32,58,49,53,56,57,32,40,85,32,40,90,32,75,41,41,
+41,32,40,40,65,32,58,49,53,57,48,32,40,85,32,40,75,32,75,41,
+41,41,32,40,40,65,32,58,49,53,57,49,32,40,85,32,40,75,32,65,
+41,41,41,32,40,40,65,32,58,49,53,57,50,32,40,90,32,40,40,66,
+32,40,66,32,95,52,54,51,41,41,32,95,49,53,57,48,41,41,41,32,
+40,40,65,32,58,49,53,57,51,32,40,40,40,67,39,32,67,41,32,40,
+40,67,32,95,49,53,56,57,41,32,35,48,41,41,32,75,41,41,32,40,
+40,65,32,58,49,53,57,52,32,40,40,66,32,95,49,53,57,57,41,32,
+95,49,53,57,53,41,41,32,40,40,65,32,58,49,53,57,53,32,40,40,
+67,32,95,49,53,56,57,41,32,35,48,41,41,32,40,40,65,32,58,49,
+53,57,54,32,95,52,54,50,41,32,40,40,65,32,58,49,53,57,55,32,
+95,52,54,51,41,32,40,40,65,32,58,49,53,57,56,32,40,40,67,32,
+83,41,32,40,40,66,32,40,66,32,40,95,52,54,50,32,35,52,48,41,
+41,41,32,40,40,67,32,66,41,32,40,95,52,54,50,32,35,52,49,41,
+41,41,41,41,32,40,40,65,32,58,49,53,57,57,32,40,40,66,32,40,
+67,32,40,40,67,32,83,39,41,32,40,40,66,32,40,95,52,54,50,32,
+35,57,49,41,41,32,40,95,52,54,50,32,35,57,51,41,41,41,41,41,
+32,40,40,66,32,40,66,32,40,66,32,40,66,32,40,95,52,54,50,32,
+35,57,49,41,41,41,41,41,32,40,40,40,83,39,32,66,41,32,40,67,
+39,32,66,41,41,32,40,40,66,32,40,66,32,89,41,41,32,40,40,66,
+32,40,40,67,39,32,66,41,32,40,40,66,32,80,41,32,40,95,52,54,
+50,32,35,57,51,41,41,41,41,32,40,40,66,32,40,66,32,40,66,32,
+40,66,32,40,95,52,54,50,32,35,52,52,41,41,41,41,41,32,40,67,
+39,32,66,41,41,41,41,41,41,41,41,32,40,40,65,32,58,49,54,48,
+48,32,35,49,48,41,32,40,40,65,32,58,49,54,48,49,32,35,49,49,
+41,32,40,40,65,32,58,49,54,48,50,32,40,40,67,32,40,40,83,32,
+40,40,40,83,39,32,83,39,41,32,40,40,40,67,39,32,40,95,50,48,
+50,32,95,49,51,49,41,41,32,95,52,50,56,41,32,35,52,53,41,41,
+32,85,41,41,32,40,40,66,32,40,66,32,40,40,95,52,56,48,32,95,
+50,55,55,41,32,35,48,41,41,41,32,40,40,66,32,85,41,32,95,52,
+50,57,41,41,41,41,32,40,40,95,51,57,57,32,40,40,40,67,39,32,
+40,67,39,32,40,95,52,56,48,32,95,50,55,55,41,41,41,32,40,40,
+40,67,39,32,66,41,32,40,40,66,32,40,95,52,55,57,32,95,50,55,
+55,41,41,32,40,40,67,32,40,95,52,56,49,32,95,50,55,55,41,41,
+32,35,49,48,41,41,41,32,95,49,51,55,41,41,32,40,95,49,51,55,
+32,35,52,56,41,41,41,32,35,48,41,41,41,32,40,40,65,32,58,49,
+54,48,51,32,95,49,51,54,49,41,32,40,40,65,32,58,49,54,48,52,
+32,40,40,40,67,39,32,67,41,32,40,40,66,32,95,49,53,57,57,41,
+32,40,66,32,95,52,54,51,41,41,41,32,75,41,41,32,40,40,65,32,
+58,49,54,48,53,32,40,40,66,32,40,66,32,85,41,41,32,40,40,66,
+32,40,66,32,40,66,32,40,66,32,40,95,52,54,51,32,40,40,79,32,
+35,52,48,41,32,75,41,41,41,41,41,41,32,40,40,40,67,39,32,66,
+41,32,40,40,66,32,40,67,39,32,66,41,41,32,40,66,32,95,52,54,
+51,41,41,41,32,40,40,66,32,40,66,32,40,95,52,54,51,32,40,40,
+79,32,35,52,52,41,32,75,41,41,41,41,32,40,40,67,32,40,67,39,
+32,95,52,54,51,41,41,32,40,40,79,32,35,52,49,41,32,75,41,41,
+41,41,41,41,41,32,40,40,65,32,58,49,54,48,54,32,40,40,83,32,
+40,85,32,95,52,54,49,41,41,32,40,90,32,40,90,32,40,40,67,32,
+40,95,52,50,54,32,40,40,95,50,54,51,32,95,49,50,50,41,32,40,
+40,67,32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,49,48,41,
+41,41,41,32,40,40,40,83,39,32,80,41,32,40,40,67,32,79,41,32,
+75,41,41,32,40,90,32,40,40,40,67,39,32,66,41,32,95,52,54,50,
+41,32,95,49,54,48,54,41,41,41,41,41,41,41,41,32,40,40,65,32,
+58,49,54,48,55,32,40,95,51,57,52,32,40,40,67,32,95,52,54,51,
+41,32,40,40,79,32,35,49,48,41,32,75,41,41,41,41,32,40,40,65,
+32,58,49,54,48,56,32,40,40,66,32,40,40,83,32,40,85,32,95,52,
+54,49,41,41,32,40,90,32,40,90,32,40,40,66,32,40,40,40,83,39,
+32,95,52,54,50,41,32,40,85,32,75,41,41,32,40,40,66,32,95,49,
+54,48,56,41,32,40,85,32,65,41,41,41,41,32,40,95,52,50,54,32,
+40,40,95,50,54,51,32,95,49,50,50,41,32,95,49,52,53,41,41,41,
+41,41,41,41,32,40,95,52,50,53,32,95,49,52,53,41,41,41,32,40,
+40,65,32,58,49,54,48,57,32,40,95,52,51,49,32,40,40,79,32,35,
+51,50,41,32,75,41,41,41,32,40,40,65,32,58,49,54,49,48,32,40,
+40,40,67,39,32,40,83,39,32,95,52,54,51,41,41,32,40,40,40,67,
+39,32,40,67,39,32,95,52,52,54,41,41,32,40,40,40,67,39,32,66,
+41,32,40,95,52,56,48,32,95,50,55,55,41,41,32,95,52,49,49,41,
+41,32,35,51,50,41,41,32,73,41,41,32,40,40,65,32,58,49,54,49,
+49,32,40,40,80,32,95,49,51,52,49,41,32,40,40,40,67,39,32,66,
+41,32,95,49,51,57,57,41,32,95,49,54,49,49,41,41,41,32,40,40,
+65,32,58,49,54,49,50,32,40,40,83,32,40,85,32,40,40,40,110,111,
+77,97,116,99,104,32,34,46,47,108,105,98,47,84,101,120,116,47,83,116,
+114,105,110,103,46,104,115,34,41,32,35,54,54,41,32,35,49,41,41,41,
+32,40,40,40,67,39,32,40,67,39,32,67,41,41,32,40,40,40,67,39,
+32,40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,40,67,39,32,
+40,67,39,32,40,67,39,32,66,41,41,41,32,40,40,40,67,39,32,40,
+67,39,32,66,41,41,32,40,40,66,32,40,40,67,39,32,83,39,41,32,
+40,40,67,32,40,95,50,48,50,32,95,49,51,49,41,41,32,35,52,53,
+41,41,41,32,85,41,41,32,40,40,66,32,40,66,32,40,95,50,54,49,
+32,40,95,52,56,50,32,40,95,53,49,57,32,95,51,48,57,41,41,41,
+41,41,32,85,41,41,41,32,40,40,66,32,40,67,32,40,95,52,50,54,
+32,95,49,52,49,41,41,41,32,40,40,40,67,39,32,66,41,32,40,40,
+66,32,67,41,32,40,40,40,83,39,32,83,41,32,40,40,66,32,40,40,
+67,39,32,83,39,41,32,83,41,41,32,40,40,66,32,40,66,32,40,40,
+67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,32,61,61,
+41,32,35,52,54,41,41,41,41,41,32,40,40,66,32,40,66,32,40,67,
+32,40,95,52,50,54,32,95,49,52,49,41,41,41,41,32,40,40,40,67,
+39,32,66,41,32,40,66,39,32,40,40,66,32,67,41,32,40,40,40,67,
+39,32,67,41,32,40,40,66,32,40,40,67,39,32,83,39,41,32,83,41,
+41,32,40,66,32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,
+32,40,40,40,67,39,32,40,95,50,48,50,32,95,49,51,49,41,41,32,
+95,49,52,55,41,32,35,49,48,49,41,41,41,41,41,41,32,73,41,41,
+41,41,32,40,40,40,67,39,32,66,41,32,40,95,52,55,57,32,40,95,
+53,49,57,32,95,51,48,57,41,41,41,32,40,40,40,83,39,32,40,95,
+52,56,49,32,40,95,53,49,57,32,95,51,48,57,41,41,41,32,40,40,
+66,32,40,95,53,51,50,32,95,51,49,48,41,41,32,95,51,52,53,41,
+41,32,40,40,66,32,40,40,95,50,54,48,32,40,40,67,32,40,40,80,
+32,40,95,53,50,48,32,40,40,80,32,95,51,48,57,41,32,95,51,48,
+54,41,41,41,32,95,50,55,56,41,41,32,95,50,56,50,41,41,32,40,
+40,95,52,56,53,32,40,95,53,49,57,32,95,51,48,57,41,41,32,40,
+95,51,53,57,32,35,49,48,41,41,41,41,32,40,40,66,32,40,95,50,
+54,49,32,40,95,52,56,50,32,95,50,55,55,41,41,41,32,95,52,49,
+49,41,41,41,41,41,41,41,41,41,32,40,40,40,67,39,32,67,41,32,
+40,40,66,32,40,40,67,39,32,83,39,41,32,83,41,41,32,40,66,32,
+40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,40,67,
+39,32,40,95,50,48,50,32,95,49,51,49,41,41,32,95,49,52,55,41,
+32,35,49,48,49,41,41,41,41,41,41,32,73,41,41,41,41,32,40,40,
+66,32,40,95,53,51,50,32,95,51,49,48,41,41,32,95,51,52,53,41,
+41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,
+40,66,32,40,66,32,40,67,32,83,41,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,
+32,61,61,41,32,35,52,51,41,41,41,41,41,32,40,40,67,39,32,66,
+41,32,40,95,52,56,49,32,40,95,53,49,57,32,95,51,48,57,41,41,
+41,41,41,41,32,40,40,40,83,39,32,40,83,39,32,83,41,41,32,40,
+40,66,32,40,66,32,40,67,32,83,41,41,41,32,40,40,66,32,40,66,
+32,40,40,67,39,32,40,67,39,32,66,41,41,32,40,67,32,40,40,67,
+32,61,61,41,32,35,52,53,41,41,41,41,41,32,40,40,67,39,32,66,
+41,32,40,95,50,53,52,32,40,95,53,50,48,32,40,40,80,32,95,51,
+48,57,41,32,95,51,48,54,41,41,41,41,41,41,41,32,40,40,67,39,
+32,66,41,32,40,95,52,56,49,32,40,95,53,49,57,32,95,51,48,57,
+41,41,41,41,41,41,41,32,40,40,66,32,40,40,95,51,56,52,32,40,
+40,67,32,40,40,80,32,40,95,53,49,57,32,95,51,48,57,41,41,32,
+95,51,48,57,41,41,32,95,51,48,54,41,41,32,40,40,95,52,56,53,
+32,40,95,53,49,57,32,95,51,48,57,41,41,32,40,95,51,53,57,32,
+35,49,48,41,41,41,41,32,95,51,52,53,41,41,41,41,32,40,40,65,
+32,58,49,54,49,51,32,95,49,52,48,52,41,32,95,57,56,57,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
+41,41,41,41,41,41,41,41,41,41,41,41,
+};
+unsigned char *combexpr = data;
+int combexprlen = 281032;
diff --git a/ghc/Compat.hs b/ghc/Compat.hs
new file mode 100644
--- /dev/null
+++ b/ghc/Compat.hs
@@ -0,0 +1,153 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+-- Functions for GHC that are defined in the UHS libs.
+module Compat(module Compat) where
+--import Control.Exception
+import Data.Char
+import Data.Maybe
+import Data.Time
+import Data.Time.Clock.POSIX
+--import qualified Control.Monad as M
+import Control.Exception
+import Data.List
+import System.Environment
+import System.IO
+
+------- Int --------
+
+_integerToInt :: Integer -> Int
+_integerToInt = fromInteger
+
+_integerToDouble :: Integer -> Double
+_integerToDouble = fromIntegral
+
+-- Same as in Data.Integer
+_integerToIntList :: Integer -> [Int]
+_integerToIntList i | i < 0 = -1 : to (-i)
+                    | otherwise =  to i
+  where to 0 = []
+        to n = fromInteger r : to q  where (q, r) = quotRem n 2147483648
+
+------- List --------
+
+elemBy :: (a -> a -> Bool) -> a -> [a] -> Bool
+elemBy eq a = any (eq a)
+
+-- A simple "quicksort" for now.
+sortLE :: forall a . (a -> a -> Bool) -> [a] -> [a]
+sortLE _  [] = []
+sortLE le (x:xs) = sortLE le lt ++ (x : sortLE le ge)
+  where (ge, lt) = partition (le x) xs
+
+showListS :: (a -> String) -> [a] -> String
+showListS sa arg =
+  let
+    showRest as =
+      case as of
+        [] -> "]"
+        x : xs -> "," ++ sa x ++ showRest xs
+  in
+    case arg of
+      [] -> "[]"
+      a : as -> "[" ++ sa a ++ showRest as
+
+anySame :: (Eq a) => [a] -> Bool
+anySame = anySameBy (==)
+
+anySameBy :: (a -> a -> Bool) -> [a] -> Bool
+anySameBy _ [] = False
+anySameBy eq (x:xs) = elemBy eq x xs || anySameBy eq xs
+
+deleteAllBy :: forall a . (a -> a -> Bool) -> a -> [a] -> [a]
+deleteAllBy _ _ [] = []
+deleteAllBy eq x (y:ys) = if eq x y then deleteAllBy eq x ys else y : deleteAllBy eq x ys
+
+deleteAllsBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> [a]
+deleteAllsBy eq = foldl (flip (deleteAllBy eq))
+
+padLeft :: Int -> String -> String
+padLeft n s = replicate (n - length s) ' ' ++ s
+
+------- Exception --------
+
+newtype Exn = Exn String
+  deriving (Show)
+instance Exception Exn
+
+------- IO --------
+
+openFileM :: FilePath -> IOMode -> IO (Maybe Handle)
+openFileM path m = do
+  r <- (try $ openFile path m) :: IO (Either IOError Handle)
+  case r of
+    Left _ -> return Nothing
+    Right h -> return (Just h)
+
+getTimeMilli :: IO Int
+getTimeMilli  = floor . (1000 *) . nominalDiffTimeToSeconds . utcTimeToPOSIXSeconds <$> getCurrentTime
+
+-- A hack until we have a real withArgs
+withDropArgs :: Int -> IO a -> IO a
+withDropArgs i ioa = do
+  as <- getArgs
+  withArgs (drop i as) ioa
+
+------- Read --------
+
+readInteger :: String -> Integer
+readInteger = read
+
+-- Convert string in scientific notation to a rational number.
+readRational :: String -> Rational
+readRational "" = undefined
+readRational acs@(sgn:as) | sgn == '-' = negate $ rat1 as
+                          | otherwise  =          rat1 acs
+  where
+    rat1 s1 =
+      case span isDigit s1 of
+        (ds1, cr1) | ('.':r1) <- cr1                   -> rat2 f1 r1
+                   | (c:r1)   <- cr1, toLower c == 'e' -> rat3 f1 r1
+                   | otherwise                         -> f1
+          where f1 = toRational (readInteger ds1)
+
+    rat2 f1 s2 =
+      case span isDigit s2 of
+        (ds2, cr2) | (c:r2) <- cr2, toLower c == 'e' -> rat3 f2 r2
+                   | otherwise                       -> f2
+          where f2 = f1 + toRational (readInteger ds2) * 10 ^^ (negate $ length ds2)
+
+    rat3 f2 ('+':s) = f2 * expo s
+    rat3 f2 ('-':s) = f2 / expo s
+    rat3 f2      s  = f2 * expo s
+
+    expo s = 10 ^ readInteger s
+
+partitionM :: Monad m => (a -> m Bool) -> [a] -> m ([a], [a])
+partitionM _ [] = return ([], [])
+partitionM p (x:xs) = do
+  b <- p x
+  (ts,fs) <- partitionM p xs
+  return $ if b then (x:ts, fs) else (ts, x:fs)
+
+substString :: forall a . Eq a => [a] -> [a] -> [a] -> [a]
+substString _ _ [] = []
+substString from to xs@(c:cs) | Just rs <- stripPrefix from xs = to ++ substString from to rs
+                              | otherwise = c : substString from to cs
+
+openTmpFile :: String -> IO (String, Handle)
+openTmpFile tmplt = do
+  mtmp <- lookupEnv "TMPDIR"
+  let tmp = fromMaybe "/tmp" mtmp
+  res <- try $ openTempFile tmp tmplt
+  case res of
+    Right x -> return x
+    Left (_::SomeException) -> openTempFile "" tmplt
+
+hSerialize :: Handle -> a -> IO ()
+hSerialize _ _ = error "ghc: hSerialize"
+
+hDeserialize :: Handle -> IO a
+hDeserialize _ = error "ghc: hDeserialize"
+
+usingMhs :: Bool
+usingMhs = False
diff --git a/ghc/Control/Alternative.hs b/ghc/Control/Alternative.hs
new file mode 100644
--- /dev/null
+++ b/ghc/Control/Alternative.hs
@@ -0,0 +1,6 @@
+module Control.Alternative(
+  Alternative(..),
+  guard,
+  ) where
+import Control.Applicative
+import Control.Monad
diff --git a/ghc/Data/Double.hs b/ghc/Data/Double.hs
new file mode 100644
--- /dev/null
+++ b/ghc/Data/Double.hs
@@ -0,0 +1,1 @@
+module Data.Double(Double) where
diff --git a/ghc/PrimTable.hs b/ghc/PrimTable.hs
new file mode 100644
--- /dev/null
+++ b/ghc/PrimTable.hs
@@ -0,0 +1,91 @@
+module PrimTable(module PrimTable) where
+import Data.Char
+import Data.Maybe
+import System.IO
+import Unsafe.Coerce
+import GHC.Types(Any)
+
+primitive :: String -> Any
+primitive s = fromMaybe (error $ "primitive: " ++ s) $ lookup s primOps
+
+newtype DIO a = DIO { unDIO :: IO a }
+
+primOps :: [(String, Any)]
+primOps =
+  [ comb "S" (\ f g x -> f x (g x))
+  , comb "S'" (\ k f g x -> k f x (g x))
+  , comb "K" (\ x _y -> x)
+  , comb "A" (\ _x y -> y)
+  , comb "T" (\ x y -> y x)
+  , comb "I" (\ x -> x)
+  , comb "Y" (\ f -> let r = f r in r)
+  , comb "B" (\ f g x -> f (g x))
+  , comb "B'" (\ k f g x -> k f (g x))
+  , comb "BK" (\ f g _x -> f g)
+  , comb "C" (\ f g x -> f x g)
+  , comb "C'" (\ k f g x -> k f x g)
+  , comb "P" (\ x y f -> f x y)
+  , comb "O" (\ x y _g f -> f x y)
+
+  , arith "+" (+)
+  , arith "-" (-)
+  , arith "*" (*)
+  , arith "quot" quot
+  , arith "rem" rem
+  , arith "subtract" subtract
+  , farith "fadd" (+)
+  , farith "fsub" (-)
+  , farith "fmul" (*)
+  , cmp "feq" (==)
+  , cmp "fne" (/=)
+  , cmp "flt" (<)
+  , cmp "fle" (<=)
+  , cmp "fgt" (>)
+  , cmp "fge" (>=)
+  , comb "fshow" (show :: Double -> String)
+  , cmp "==" (==)
+  , cmp "/=" (/=)
+  , cmp "<"  (<)
+  , cmp "<=" (<=)
+  , cmp ">"  (>)
+  , cmp ">=" (>=)
+  , cmp "error" err
+  , comb "ord" ord
+  , comb "chr" chr
+  , comb "IO.>>=" iobind
+  , comb "IO.>>" iothen
+  , comb "IO.return" ioret
+--  , comb "IO.getChar" getc
+  , comb "IO.putChar" putc
+  , comb "IO.stdin" stdin
+  , comb "IO.stdout" stdout
+  , comb "IO.stderr" stderr
+  ]
+  where
+    comb n f = (n, unsafeCoerce f)
+    arith :: String -> (Int -> Int -> Int) -> (String, Any)
+    arith = comb
+    farith :: String -> (Double -> Double -> Double) -> (String, Any)
+    farith = comb
+    cmp :: String -> (Int -> Int -> Bool) -> (String, Any)
+    cmp n f = comb n (\ x y -> if f x y then cTrue else cFalse)
+    cTrue _x y = y
+    cFalse x _y = x
+    iobind :: DIO a -> (a -> DIO b) -> DIO b
+    iobind a k = DIO (unDIO a >>= \ x -> unDIO (k x))
+    iothen :: DIO a -> DIO b -> DIO b
+    iothen a b = DIO (unDIO a >> unDIO b)
+    ioret :: a -> DIO a
+    ioret a = DIO (return a)
+--    getc h = undefined -- fromEnum <$> hGetChar h  -- XXX
+    putc :: Handle -> Int -> DIO ()
+    putc h c = DIO $ do
+--      let h = unsafeCoerce hh :: Handle
+--          c = unsafeCoerce cc :: Int
+--      print (h, c)
+      hPutChar h (toEnum c)
+--    open = undefined
+--    close = undefined
+--    isnull = undefined
+
+    err _ = error "ERROR"
diff --git a/ghc/System/Console/SimpleReadline.hs b/ghc/System/Console/SimpleReadline.hs
new file mode 100644
--- /dev/null
+++ b/ghc/System/Console/SimpleReadline.hs
@@ -0,0 +1,10 @@
+module System.Console.SimpleReadline(
+  getInputLine,
+  getInputLineHist
+  ) where
+
+getInputLine :: String -> IO (Maybe String)
+getInputLine _ = error "No getInputLine for ghc"
+
+getInputLineHist :: FilePath -> String -> IO (Maybe String)
+getInputLineHist _ _ = error "No getInputLineHist for ghc"
diff --git a/lib/Control/Alternative.hs b/lib/Control/Alternative.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Alternative.hs
@@ -0,0 +1,21 @@
+module Control.Alternative(module Control.Alternative) where
+import Primitives
+import Control.Applicative
+import Data.Bool_Type
+import Data.Functor
+import Data.List
+
+infixl 3 <|>
+
+class Applicative f => Alternative (f :: Type -> Type) where
+    empty :: forall a . f a
+    (<|>) :: forall a . f a -> f a -> f a
+
+    some :: forall a . f a -> f [a]
+    some a = (:) <$> a <*> many a
+
+    many :: forall a . f a -> f [a]
+    many a = some a <|> pure []
+
+guard :: forall (f :: Type -> Type) a . Alternative f => Bool -> f ()
+guard b = if b then pure () else empty
diff --git a/lib/Control/Applicative.hs b/lib/Control/Applicative.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Applicative.hs
@@ -0,0 +1,16 @@
+module Control.Applicative(module Control.Applicative) where
+import Primitives  -- for fixity
+import Data.Functor
+import Data.Function
+
+infixl 4 <*>
+infixl 4 *>
+infixl 4 <*
+
+class Functor f => Applicative (f :: Type -> Type) where
+  pure  :: forall a . a -> f a
+  (<*>) :: forall a b . f (a -> b) -> f a -> f b
+  (*>)  :: forall a b . f a -> f b -> f b
+  (<*)  :: forall a b . f a -> f b -> f a
+  a1 *> a2 = (id <$ a1) <*> a2
+  a1 <* a2 = (const <$> a1) <*> a2
diff --git a/lib/Control/DeepSeq.hs b/lib/Control/DeepSeq.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/DeepSeq.hs
@@ -0,0 +1,12 @@
+module Control.DeepSeq(module Control.DeepSeq) where
+import Primitives
+import Prelude
+
+rnf :: forall a . a -> ()
+rnf = primRnfErr
+
+deepseq :: forall a b . a -> b -> b
+deepseq a b = rnf a `seq` b
+
+force :: forall a . a -> a
+force x = rnf x `seq` x
diff --git a/lib/Control/Error.hs b/lib/Control/Error.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Error.hs
@@ -0,0 +1,11 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Control.Error(module Control.Error) where
+import Primitives
+import Data.Char_Type
+
+error :: forall a . String -> a
+error = primError
+
+undefined :: forall a . a
+undefined = error "undefined"
diff --git a/lib/Control/Exception.hs b/lib/Control/Exception.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Exception.hs
@@ -0,0 +1,20 @@
+module Control.Exception(
+  catch, try,
+  throwIO,
+  Exn(..)
+  ) where
+import Primitives
+import Prelude
+
+newtype Exn = Exn String
+
+catch :: forall a . IO a -> (Exn -> IO a) -> IO a
+catch ioa hdl = primCatch ioa (hdl . Exn)
+
+try :: forall a . IO a -> IO (Either Exn a)
+try ioa = catch (fmap Right ioa) (return . Left)
+
+throwIO :: forall a . Exn -> IO a
+throwIO (Exn s) =
+  let e = error s
+  in  seq e (return e)
diff --git a/lib/Control/Monad.hs b/lib/Control/Monad.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Monad.hs
@@ -0,0 +1,114 @@
+module Control.Monad(module Control.Monad) where
+import Primitives  -- for fixity
+import Control.Applicative
+import Control.Error
+import Data.Bool
+import Data.Char_Type
+import Data.Function
+import Data.Functor
+import Data.List_Type
+--import Data.Maybe
+
+infixl 1 >>
+infixl 1 >>=
+
+class (Applicative m) => Monad (m :: Type -> Type) where
+  (>>=)  :: forall a b . m a -> (a -> m b) -> m b
+  (>>)   :: forall a b . m a -> m b -> m b
+  ma >> mb = ma >>= \ _ -> mb
+
+  -- Maybe remove this
+  return :: forall a . a -> m a
+  return = pure
+
+ap :: forall (m :: Type -> Type) a b . Monad m => m (a -> b) -> m a -> m b
+ap f a = do
+  f' <- f
+  a' <- a
+  return (f' a')
+
+class Monad m => MonadFail (m :: Type -> Type) where
+  fail :: forall a . String -> m a
+  fail = error
+
+mapM :: forall (m :: Type -> Type) a b . Monad m => (a -> m b) -> [a] -> m [b]
+mapM f =
+  let
+    rec arg =
+      case arg of
+        [] -> return []
+        a : as -> do
+          b <- f a
+          bs <- rec as
+          return (b : bs)
+  in rec
+
+mapM_ :: forall (m :: Type -> Type) a b . Monad m => (a -> m b) -> [a] -> m ()
+mapM_ f =
+  let
+    rec arg =
+      case arg of
+        [] -> return ()
+        a : as -> do
+          _ <- f a
+          rec as
+  in rec
+
+when :: forall (m :: Type -> Type) . Monad m => Bool -> m () -> m ()
+when False _ = return ()
+when True ma = ma
+
+sequence :: forall (m :: Type -> Type) a . Monad m => [m a] -> m [a]
+sequence = mapM id
+
+(=<<) :: forall (m :: Type -> Type) a b . Monad m => (a -> m b) -> m a -> m b
+(=<<) = flip (>>=)
+
+infixr 1 <=<
+(<=<) :: forall (m :: Type -> Type) a b c . Monad m => (b -> m c) -> (a -> m b) -> (a -> m c)
+f <=< g = \ a -> do
+  b <- g a
+  f b
+
+infixr 1 >=>
+(>=>) :: forall (m :: Type -> Type) a b c . Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
+(>=>) = flip (<=<)
+
+filterM :: forall (m :: Type -> Type) a . Monad m => (a -> m Bool) -> [a] -> m [a]
+filterM _ [] = return []
+filterM p (x:xs) = do
+  b <- p x
+  ts <- filterM p xs
+  return $ if b then x : ts else ts
+
+partitionM :: forall (m :: Type -> Type) a . Monad m => (a -> m Bool) -> [a] -> m ([a], [a])
+partitionM _ [] = return ([], [])
+partitionM p (x:xs) = do
+  b <- p x
+  (ts,fs) <- partitionM p xs
+  return $ if b then (x:ts, fs) else (ts, x:fs)
+
+instance forall a . Functor ((->) a) where
+  fmap = (.)
+
+instance forall a . Applicative ((->) a) where
+  pure = const
+  f <*> g = \ a -> f a (g a)
+
+instance forall a . Monad ((->) a) where
+  x >>= y = \ z -> y (x z) z
+
+{-
+-- Same for Maybe
+instance Functor Maybe where
+  fmap _ Nothing = Nothing
+  fmap f (Just a) = Just (f a)
+
+instance Applicative Maybe where
+  pure a = Just a
+  (<*>) = ap
+
+instance Monad Maybe where
+  Nothing >>= _ = Nothing
+  Just a  >>= f = f a
+-}
diff --git a/lib/Control/Monad/State/Strict.hs b/lib/Control/Monad/State/Strict.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Monad/State/Strict.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE QualifiedDo #-}
+module Control.Monad.State.Strict(
+  module Control.Monad.State.Strict,
+  module Control.Monad,
+  ) where
+import Prelude
+import Control.Monad
+
+data State s a = S (s -> (a, s))
+
+instance forall s . Functor (State s) where
+  fmap f sa = S $ \ s ->
+    case runState sa s of
+      (a, ss) -> (f a, ss)
+
+instance forall s . Applicative (State s) where
+  pure a = S $ \ s -> (a, s)
+  (<*>) = ap
+  (*>) m k = S $ \ s ->
+    case runState m s of
+      (_, ss) -> runState k ss
+
+instance forall s . Monad (State s) where
+  (>>=) m k = S $ \ s ->
+    case runState m s of
+      (a, ss) -> runState (k a) ss
+  (>>) = (*>)
+  return = pure
+
+runState :: forall s a . State s a -> (s -> (a,s))
+runState (S x) = x
+
+evalState :: forall s a . State s a -> (s -> a)
+evalState sa = fst . runState sa
+
+{-
+(>>=) :: forall s a b . State s a -> (a -> State s b) -> State s b
+(>>=) m k = S $ \ s ->
+  case runState m s of
+    (a, ss) -> runState (k a) ss
+
+(>>) :: forall s a b . State s a -> State s b -> State s b
+(>>) m k = S $ \ s ->
+  case runState m s of
+    (_, ss) -> runState k ss
+
+return :: forall s a . a -> State s a
+return a = S $ \ s -> (a, s)
+
+fmap :: forall s a b . (a -> b) -> State s a -> State s b
+fmap f sa = S $ \ s ->
+  case runState sa s of
+    (a, ss) -> (f a, ss)
+
+(<$>) :: forall s a b . (a -> b) -> State s a -> State s b
+(<$>) = Control.Monad.State.Strict.fmap
+
+(<*>) :: forall s a b . State s (a -> b) -> State s a -> State s b
+(<*>) sf sa = Control.Monad.State.Strict.do
+  f <- sf
+  a <- sa
+  Control.Monad.State.Strict.return (f a)
+-}
+
+modify :: forall s . (s -> s) -> State s ()
+modify f = S $ \ s -> ((), f s)
+
+put :: forall s . s -> State s ()
+put s = S $ \ _ -> ((), s)
+
+get :: forall s . State s s
+get = S $ \ s -> (s, s)
+
+gets :: forall s a . (s -> a) -> State s a
+gets f = S $ \ s -> (f s, s)
+
+{-
+mapM :: forall s a b . (a -> State s b) -> [a] -> State s [b]
+mapM f =
+  let
+    rec arg =
+      case arg of
+        [] -> Control.Monad.State.Strict.return []
+        a : as -> Control.Monad.State.Strict.do
+          b <- f a
+          bs <- rec as
+          Control.Monad.State.Strict.return (b : bs)
+  in rec
+
+mapM_ :: forall s a b . (a -> State s b) -> [a] -> State s ()
+mapM_ f =
+  let
+    rec arg =
+      case arg of
+        [] -> Control.Monad.State.Strict.return ()
+        a : as -> Control.Monad.State.Strict.do
+          f a
+          rec as
+  in rec
+
+fail :: forall s a . String -> State s a
+fail = error
+
+when :: forall s . Bool -> State s () -> State s ()
+when True  s = s
+when False _ = Control.Monad.State.Strict.return ()
+
+sequence :: forall s a . [State s a] -> State s [a]
+sequence = Control.Monad.State.Strict.mapM id
+-}
diff --git a/lib/Data/Bits.hs b/lib/Data/Bits.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Bits.hs
@@ -0,0 +1,93 @@
+module Data.Bits(module Data.Bits) where
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Eq
+import Data.Int()
+import Data.Maybe
+import Data.Ord
+import Data.Num
+
+infixl 8 `shift`, `rotate`, `shiftL`, `shiftR`, `rotateL`, `rotateR`
+infixl 7 .&.
+infixl 6 `xor`
+infixl 5 .|.
+
+class Eq a => Bits a where
+  (.&.)             :: a -> a -> a
+  (.|.)             :: a -> a -> a
+  xor               :: a -> a -> a
+  complement        :: a -> a
+  shift             :: a -> Int -> a
+  rotate            :: a -> Int -> a
+  zeroBits          :: a
+  bit               :: Int -> a
+  setBit            :: a -> Int -> a
+  clearBit          :: a -> Int -> a
+  complementBit     :: a -> Int -> a
+  testBit           :: a -> Int -> Bool
+  shiftL            :: a -> Int -> a
+  unsafeShiftL      :: a -> Int -> a
+  shiftR            :: a -> Int -> a
+  unsafeShiftR      :: a -> Int -> a
+  rotateL           :: a -> Int -> a
+  rotateR           :: a -> Int -> a
+  popCount          :: a -> Int
+  bitSizeMaybe      :: a -> Maybe Int
+  bitSize           :: a -> Int
+
+  x `shift`   i | i<0       = x `shiftR` (negate i)
+                | i>0       = x `shiftL` i
+                | otherwise = x
+
+
+  x `rotate`  i | i<0       = x `rotateR` (negate i)
+                | i>0       = x `rotateL` i
+                | otherwise = x
+
+  {-
+  x `rotate`  i | i<0 && isSigned x && x<0
+                       = let left = i+bitSize x in
+                         ((x `shift` i) .&. complement ((-1) `shift` left))
+                         .|. (x `shift` left)
+                | i<0  = (x `shift` i) .|. (x `shift` (i+bitSize x))
+                | i==0 = x
+                | i>0  = (x `shift` i) .|. (x `shift` (i-bitSize x))
+  -}
+
+  zeroBits            = clearBit (bit 0) 0
+  bitSize b           = fromMaybe (error "bitSize is undefined") (bitSizeMaybe b)
+  x `setBit` i        = x .|. bit i
+  x `clearBit` i      = x .&. complement (bit i)
+  x `complementBit` i = x `xor` bit i
+
+  x `shiftL`  i       = x `shift`  i
+  x `unsafeShiftL` i  = x `shiftL` i
+  x `shiftR`  i       = x `shift`  (negate i)
+  x `unsafeShiftR` i  = x `shiftR` i
+
+  x `rotateL` i       = x `rotate` i
+
+  x `rotateR` i       = x `rotate` (negate i)
+
+
+class Bits b => FiniteBits b where
+  finiteBitSize :: b -> Int
+  countLeadingZeros :: b -> Int
+  countTrailingZeros :: b -> Int
+
+  countLeadingZeros x = (w - 1) - go (w - 1)
+    where
+      go i | i < 0       = i -- no bit set
+           | testBit x i = i
+           | otherwise   = go (i - 1)
+
+      w = finiteBitSize x
+
+  countTrailingZeros x = go 0
+    where
+      go i | i >= w      = i
+           | testBit x i = i
+           | otherwise   = go (i + 1)
+
+      w = finiteBitSize x
diff --git a/lib/Data/Bool.hs b/lib/Data/Bool.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Bool.hs
@@ -0,0 +1,40 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Bool(
+  module Data.Bool,
+  module Data.Bool_Type
+  ) where
+import Primitives
+import Data.Bool_Type
+import Data.Bounded
+import Data.Eq
+import Text.Show
+
+instance Eq Bool where
+  False == x  =  not x
+  True  == x  =  x
+
+instance Show Bool where
+  showsPrec _ False = showString "False"
+  showsPrec _ True  = showString "True"
+
+instance Bounded Bool where
+  minBound = False
+  maxBound = True
+
+infixr 2 ||
+(||) :: Bool -> Bool -> Bool
+(||) False y = y
+(||) True  _ = True
+
+infixr 3 &&
+(&&) :: Bool -> Bool -> Bool
+(&&) False _ = False
+(&&) True  y = y
+
+not :: Bool -> Bool
+not False = True
+not True  = False
+
+otherwise :: Bool
+otherwise = True
diff --git a/lib/Data/Bool_Type.hs b/lib/Data/Bool_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Bool_Type.hs
@@ -0,0 +1,4 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Bool_Type(module Data.Bool_Type) where
+data Bool = False | True
diff --git a/lib/Data/Bounded.hs b/lib/Data/Bounded.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Bounded.hs
@@ -0,0 +1,6 @@
+module Data.Bounded(module Data.Bounded) where
+import Primitives
+
+class Bounded a where
+  minBound :: a
+  maxBound :: a
diff --git a/lib/Data/Char.hs b/lib/Data/Char.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Char.hs
@@ -0,0 +1,107 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Char(
+  module Data.Char,
+  module Data.Char_Type   -- exports Char and String
+  ) where
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Bounded
+import Data.Char_Type
+import Data.Eq
+import Data.Function
+import Data.Int
+import Data.List_Type
+import Data.Num
+import Data.Ord
+import Text.Show
+
+instance Eq Char where
+  (==) = primCharEQ
+  (/=) = primCharNE
+
+instance Ord Char where
+  compare = primCompare
+  (<)  = primCharLT
+  (<=) = primCharLE
+  (>)  = primCharGT
+  (>=) = primCharGE
+
+instance Eq String where
+  (==) = primStringEQ
+
+instance Ord String where
+  compare = primCompare
+  x <  y  =  primCompare x y == LT
+  x <= y  =  primCompare x y /= GT
+  x >  y  =  primCompare x y == GT
+  x >= y  =  primCompare x y /= LT
+
+-- ASCII only for now
+instance Bounded Char where
+  minBound = chr 0
+  maxBound = chr 127
+
+chr :: Int -> Char
+chr = primChr
+
+ord :: Char -> Int
+ord = primOrd
+
+isLower :: Char -> Bool
+isLower c = (primCharLE 'a' c) && (primCharLE c 'z')
+
+isUpper :: Char -> Bool
+isUpper c = (primCharLE 'A' c) && (primCharLE c 'Z')
+
+isAlpha :: Char -> Bool
+isAlpha c = isLower c || isUpper c
+
+isDigit :: Char -> Bool
+isDigit c = (primCharLE '0' c) && (primCharLE c '9')
+
+isHexDigit :: Char -> Bool
+isHexDigit c = isDigit c || (primCharLE 'a' c && primCharLE c 'f') || (primCharLE 'F' c && primCharLE c 'F') 
+
+isAlphaNum :: Char -> Bool
+isAlphaNum c = isAlpha c || isDigit c
+
+isPrint :: Char -> Bool
+isPrint c = primCharLE ' ' c && primCharLE c '~'
+
+isSpace :: Char -> Bool
+isSpace c = c == ' ' || c == '\t' || c == '\n'
+
+digitToInt :: Char -> Int
+digitToInt c | (primCharLE '0' c) && (primCharLE c '9') = ord c - ord '0'
+             | (primCharLE 'a' c) && (primCharLE c 'f') = ord c - (ord 'a' - 10)
+             | (primCharLE 'A' c) && (primCharLE c 'F') = ord c - (ord 'A' - 10)
+             | otherwise                                = error "digitToInt"
+
+toLower :: Char -> Char
+toLower c | primCharLE 'A' c && primCharLE c 'Z' = chr (ord c - ord 'A' + ord 'a')
+          | True = c
+
+toUpper :: Char -> Char
+toUpper c | primCharLE 'a' c && primCharLE c 'a' = chr (ord c - ord 'a' + ord 'A')
+          | True = c
+
+instance Show Char where
+  showsPrec _ '\'' = showString "'\\''"
+  showsPrec _ c = showChar '\'' . showString (encodeChar c) . showChar '\''
+  showList    s = showChar '"'  . f s
+    where f [] = showChar '"'
+          f (c:cs) =
+            if c == '"' then showString "\\\"" . f cs
+            else showString (encodeChar c) . f cs
+
+-- XXX should not export this
+encodeChar :: Char -> String
+encodeChar c =
+  let
+    spec = [('\n', "\\n"), ('\r', "\\r"), ('\t', "\\t"), ('\b', "\\b"),
+            ('\\', "\\\\")]
+    look [] = if isPrint c then [c] else "'\\" ++ show (ord c) ++ "'"
+    look ((d,s):xs) = if d == c then s else look xs
+  in look spec
diff --git a/lib/Data/Char_Type.hs b/lib/Data/Char_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Char_Type.hs
@@ -0,0 +1,5 @@
+module Data.Char_Type(Char, String) where
+import Primitives
+import Data.List_Type
+
+type String = [Char]
diff --git a/lib/Data/Complex.hs b/lib/Data/Complex.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Complex.hs
@@ -0,0 +1,137 @@
+module Data.Complex(module Data.Complex) where
+import Prelude
+
+infix 6 :+
+
+data Complex a = !a :+ !a
+
+instance forall a . Eq a => Eq (Complex a) where
+  (:+) x y == (:+) x' y'  =  x == x' && y == y'   -- parser bug
+
+instance forall a . Show a => Show (Complex a) where
+  show (x :+ y) = show x ++ " :+ " ++ show y
+
+realPart :: forall a . Complex a -> a
+realPart (x :+ _) =  x
+
+imagPart :: forall a . Complex a -> a
+imagPart (_ :+ y) =  y
+
+conjugate        :: forall a . Num a => Complex a -> Complex a
+conjugate (x:+y) =  x :+ (negate y)
+
+mkPolar          :: forall a . Floating a => a -> a -> Complex a
+mkPolar r theta  =  r * cos theta :+ r * sin theta
+
+cis              :: forall a . Floating a => a -> Complex a
+cis theta        =  cos theta :+ sin theta
+
+polar            :: forall a . (RealFloat a) => Complex a -> (a,a)
+polar z          =  (magnitude z, phase z)
+
+magnitude :: forall a . (RealFloat a) => Complex a -> a
+magnitude (x:+y) = sqrt (x*x + y*y)
+{-
+                   scaleFloat k
+                     (sqrt (sqr (scaleFloat mk x) + sqr (scaleFloat mk y)))
+                    where k  = max (exponent x) (exponent y)
+                          mk = negate k
+                          sqr z = z * z
+-}
+
+phase :: forall a . (RealFloat a) => Complex a -> a
+-- XXX phase (0 :+ 0)   = 0
+phase (x:+y) | x==0 && y==0 = 0
+             | otherwise    = atan2 y x
+
+
+instance forall a . (RealFloat a) => Num (Complex a)  where
+    (x:+y) + (x':+y')   =  (x+x') :+ (y+y')
+    (x:+y) - (x':+y')   =  (x-x') :+ (y-y')
+    (x:+y) * (x':+y')   =  (x*x'-y*y') :+ (x*y'+y*x')
+    negate (x:+y)       =  negate x :+ negate y
+    abs z               =  magnitude z :+ 0
+--    signum (0:+0)       =  0
+    signum z@(x:+y) | x==0 && y==0 = 0
+                    | otherwise    =  x/r :+ y/r  where r = magnitude z
+    fromInteger n       =  fromInteger n :+ 0
+
+instance forall a . (RealFloat a) => Fractional (Complex a)  where
+    (x:+y) / (x':+y')   =  (x*x''+y*y'') / d :+ (y*x''-x*y'') / d
+                           where x'' = scaleFloat k x'
+                                 y'' = scaleFloat k y'
+                                 k   = negate $ max (exponent x') (exponent y')
+                                 d   = x'*x'' + y'*y''
+
+    fromRational a      =  fromRational a :+ 0
+
+instance forall a . (RealFloat a) => Floating (Complex a) where
+    pi             =  pi :+ 0
+    exp (x:+y)     =  expx * cos y :+ expx * sin y
+                      where expx = exp x
+    log z          =  log (magnitude z) :+ phase z
+{-
+    x ** y = case (x,y) of
+ {- XXX
+     (_ , (0:+0))  -> 1 :+ 0
+      ((0:+0), (exp_re:+_)) -> case compare exp_re 0 of
+                 GT -> 0 :+ 0
+                 LT -> inf :+ 0
+                 EQ -> nan :+ nan
+-}
+      ((re:+im), (exp_re:+_))
+        | (isInfinite re || isInfinite im) -> case compare exp_re 0 of
+                 GT -> inf :+ 0
+                 LT -> 0 :+ 0
+                 EQ -> nan :+ nan
+        | otherwise -> exp (log x * y)
+     where
+        inf = 1/0
+        nan = 0/0
+-}
+    sqrt z@(x:+y) | x==0 && y==0 = 0
+                  | otherwise    =  u :+ (if y < 0 then negate v else v)
+                      where (u,v) = if x < 0 then (v',u') else (u',v')
+                            v'    = abs y / (u'*2)
+                            u'    = sqrt ((magnitude z + abs x) / 2)
+
+    sin (x:+y)     =  sin x * cosh y :+ cos x * sinh y
+    cos (x:+y)     =  cos x * cosh y :+ (negate (sin x) * sinh y)
+    tan (x:+y)     =  (sinx*coshy:+cosx*sinhy)/(cosx*coshy:+(negate sinx*sinhy))
+                      where sinx  = sin x
+                            cosx  = cos x
+                            sinhy = sinh y
+                            coshy = cosh y
+
+    sinh (x:+y)    =  cos y * sinh x :+ sin  y * cosh x
+    cosh (x:+y)    =  cos y * cosh x :+ sin y * sinh x
+    tanh (x:+y)    =  (cosy*sinhx:+siny*coshx)/(cosy*coshx:+siny*sinhx)
+                      where siny  = sin y
+                            cosy  = cos y
+                            sinhx = sinh x
+                            coshx = cosh x
+
+    asin z@(x:+y)  =  y':+(negate x')
+                      where  (x':+y') = log (((negate y):+x) + sqrt (1 - z*z))
+    acos z         =  y'':+(negate x'')
+                      where (x'':+y'') = log (z + ((negate y'):+x'))
+                            (x':+y')   = sqrt (1 - z*z)
+    atan z@(x:+y)  =  y':+(negate x')
+                      where (x':+y') = log (((1 - y):+x) / sqrt (1+z*z))
+
+    asinh z        =  log (z + sqrt (1+z*z))
+
+    acosh z        =  log (z + (sqrt $ z+1) * (sqrt $ z - 1))
+    atanh z        =  0.5 * log ((1.0+z) / (1.0-z))
+
+    log1p x@(a :+ b)
+      | abs a < 0.5 && abs b < 0.5
+      , u <- 2*a + a*a + b*b = log1p (u/(1 + sqrt(u+1))) :+ atan2 (1 + a) b
+      | otherwise = log (1 + x)
+
+    expm1 x@(a :+ b)
+      | a*a + b*b < 1
+      , u <- expm1 a
+      , v <- sin (b/2)
+      , w <- -2*v*v = (u*w + u + w) :+ (u+1)*sin b
+      | otherwise = exp x - 1
diff --git a/lib/Data/Double.hs b/lib/Data/Double.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Double.hs
@@ -0,0 +1,144 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Double(Double) where
+import Primitives
+import Control.Error
+import Data.Bits
+import Data.Bool
+import Data.Eq
+import Data.Floating
+import Data.Fractional
+import Data.Function
+import Data.Integer
+import Data.Ord
+import Data.Ratio
+import Data.Real
+import Data.RealFloat
+import Data.Num
+import Data.Word
+import Text.Show
+
+instance Num Double where
+  (+)  = primDoubleAdd
+  (-)  = primDoubleSub
+  (*)  = primDoubleMul
+  negate = primDoubleNeg
+  abs x = if x < 0.0 then negate x else x
+  signum x =
+    case compare x 0.0 of
+      LT -> -1.0
+      EQ ->  0.0
+      GT ->  1.0
+  fromInteger = _integerToDouble
+
+instance Fractional Double where
+  (/) = primDoubleDiv
+  -- This version of fromRational can go horribly wrong
+  -- if the integers are bigger than can be represented in a Double.
+  -- It'll do for now.
+  fromRational x = fromInteger (numerator x) `primDoubleDiv` fromInteger (denominator x)
+
+instance Eq Double where
+  (==) = primDoubleEQ
+  (/=) = primDoubleNE
+
+instance Ord Double where
+  (<)  = primDoubleLT
+  (<=) = primDoubleLE
+  (>)  = primDoubleGT
+  (>=) = primDoubleGE
+  
+-- For now, cheat and call C
+instance Show Double where
+  show = primDoubleShow
+
+instance Real Double where
+  toRational x =
+    let (m, e) = decodeDouble x
+    in  toRational m * 2^^e
+
+instance Floating Double where
+  pi     = 3.141592653589793
+  log  x = primPerformIO (clog x)
+  exp  x = primPerformIO (cexp x)
+  sqrt x = primPerformIO (csqrt x)
+  sin  x = primPerformIO (csin x)
+  cos  x = primPerformIO (ccos x)
+  tan  x = primPerformIO (ctan x)
+  asin x = primPerformIO (casin x)
+  acos x = primPerformIO (cacos x)
+  atan x = primPerformIO (catan x)
+
+foreign import ccall "log"  clog  :: Double -> IO Double
+foreign import ccall "exp"  cexp  :: Double -> IO Double
+foreign import ccall "sqrt" csqrt :: Double -> IO Double
+foreign import ccall "sin"  csin  :: Double -> IO Double
+foreign import ccall "cos"  ccos  :: Double -> IO Double
+foreign import ccall "tan"  ctan  :: Double -> IO Double
+foreign import ccall "asin" casin :: Double -> IO Double
+foreign import ccall "acos" cacos :: Double -> IO Double
+foreign import ccall "atan" catan :: Double -> IO Double
+
+-- Assumes 64 bit floats
+instance RealFloat Double where
+  floatRadix     _ = 2
+  floatDigits    _ = 53
+  floatRange     _ = (-1021,1024)
+  decodeFloat      = decodeDouble
+  encodeFloat      = encodeDouble
+  isNaN            = isNaNDouble
+  isInfinite       = isInfDouble
+  isDenormalized   = isDenDouble
+  isNegativeZero   = isNegZeroDouble
+  isIEEE         _ = True
+
+decodeDouble :: Double -> (Integer, Int)
+decodeDouble x =
+  let xw   = primWordFromDoubleRaw x
+      sign =  xw .&. 0x8000000000000000
+      expn = (xw .&. 0x7fffffffffffffff) `shiftR` 52
+      mant =  xw .&. 0x000fffffffffffff
+      neg  = if sign /= 0 then negate else id
+  in  if expn == 0 then
+        -- subnormal or 0
+        (neg (_wordToInteger mant), 0)
+      else if expn == 0x7ff then
+        -- infinity or NaN
+        (0, 0)
+      else
+        -- ordinary number, add hidden bit
+        -- mant is offset-1023, and assumes scaled mantissa (thus -52)
+        (neg (_wordToInteger (mant .|. 0x0010000000000000)),
+         primWordToInt expn - 1023 - 52)
+
+isNaNDouble :: Double -> Bool
+isNaNDouble x =
+  let xw   = primWordFromDoubleRaw x
+      expn = (xw .&. 0x7fffffffffffffff) `shiftR` 52
+      mant =  xw .&. 0x000fffffffffffff
+  in  expn == 0x7ff && mant /= 0
+
+isInfDouble :: Double -> Bool
+isInfDouble x =
+  let xw   = primWordFromDoubleRaw x
+      expn = (xw .&. 0x7fffffffffffffff) `shiftR` 52
+      mant =  xw .&. 0x000fffffffffffff
+  in  expn == 0x7ff && mant == 0
+
+isDenDouble :: Double -> Bool
+isDenDouble x =
+  let xw   = primWordFromDoubleRaw x
+      expn = (xw .&. 0x7fffffffffffffff) `shiftR` 52
+      mant =  xw .&. 0x000fffffffffffff
+  in  expn == 0 && mant /= 0
+
+isNegZeroDouble :: Double -> Bool
+isNegZeroDouble x =
+  let xw   = primWordFromDoubleRaw x
+      sign = xw .&. 0x8000000000000000
+      rest = xw .&. 0x7fffffffffffffff
+  in  sign /= 0 && rest == 0
+
+-- Simple (and sometimes wrong) encoder
+encodeDouble :: Integer -> Int -> Double
+encodeDouble mant expn = fromInteger mant * 2^^expn
diff --git a/lib/Data/Either.hs b/lib/Data/Either.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Either.hs
@@ -0,0 +1,25 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Either(module Data.Either) where
+import Primitives
+import Data.Bool
+import Data.Eq
+import Data.Function
+import Data.Int
+import Data.Ord
+import Text.Show
+
+data Either a b = Left a | Right b
+
+instance forall a b . (Eq a, Eq b) => Eq (Either a b) where
+  Left  a == Left  a'  =  a == a'
+  Right b == Right b'  =  b == b'
+  _       == _         =  False
+
+either :: forall a b r . (a -> r) -> (b -> r) -> Either a b -> r
+either f _ (Left  a) = f a
+either _ f (Right b) = f b
+
+instance forall a b . (Show a, Show b) => Show (Either a b) where
+  showsPrec p (Left  a) = showParen (p>=appPrec1) (showString "Left "  . showsPrec appPrec1 a)
+  showsPrec p (Right b) = showParen (p>=appPrec1) (showString "Right " . showsPrec appPrec1 b)
diff --git a/lib/Data/Enum.hs b/lib/Data/Enum.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Enum.hs
@@ -0,0 +1,70 @@
+module Data.Enum(module Data.Enum) where
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Char_Type
+import Data.Bounded
+import Data.Function
+import Data.Int
+import Data.List
+import Data.Num
+import Data.Ord
+
+class Enum a where
+  succ           :: a -> a
+  pred           :: a -> a
+  toEnum         :: Int -> a
+  fromEnum       :: a -> Int
+
+  enumFrom       :: a -> [a]
+  enumFromThen   :: a -> a -> [a]
+  enumFromTo     :: a -> a -> [a]
+  enumFromThenTo :: a -> a -> a -> [a]
+
+  succ                   = toEnum . (+ 1) . fromEnum
+  pred                   = toEnum . (subtract 1) . fromEnum
+  enumFrom x             = map toEnum [fromEnum x ..]
+  enumFromThen x y       = map toEnum [fromEnum x, fromEnum y ..]
+  enumFromTo x y         = map toEnum [fromEnum x .. fromEnum y]
+  enumFromThenTo x1 x2 y = map toEnum [fromEnum x1, fromEnum x2 .. fromEnum y]
+
+boundedEnumFrom :: forall a . (Enum a, Bounded a) => a -> [a]
+boundedEnumFrom n = map toEnum [fromEnum n .. fromEnum (maxBound `asTypeOf` n)]
+
+boundedEnumFromThen :: forall a . (Enum a, Bounded a) => a -> a -> [a]
+boundedEnumFromThen n1 n2
+  | i_n2 >= i_n1  = map toEnum [i_n1, i_n2 .. fromEnum (maxBound `asTypeOf` n1)]
+  | otherwise     = map toEnum [i_n1, i_n2 .. fromEnum (minBound `asTypeOf` n1)]
+  where
+    i_n1 = fromEnum n1
+    i_n2 = fromEnum n2
+
+-- This instance is difficult to put in Data.Int,
+-- so it gets to live here.
+instance Enum Int where
+  succ x = x + 1
+  pred x = x - 1
+  toEnum x = x
+  fromEnum x = x
+  enumFrom n = n : enumFrom (n+1)
+  enumFromThen n m = from n
+    where d = m - n
+          from i = i : from (i+d)
+  enumFromTo l h = takeWhile (<= h) (enumFrom l)
+  enumFromThenTo l m h =
+    if m > l then
+      takeWhile (<= h) (enumFromThen l m)
+    else
+      takeWhile (>= h) (enumFromThen l m)
+
+-- Likewise for Bool
+instance Enum Bool where
+  fromEnum False = 0
+  fromEnum True  = 1
+  toEnum 0 = False
+  toEnum 1 = True
+  toEnum _ = error "Enum.Bool.toEnum: bad arg"
+
+instance Enum Char where
+  fromEnum = primOrd
+  toEnum   = primChr
diff --git a/lib/Data/Eq.hs b/lib/Data/Eq.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Eq.hs
@@ -0,0 +1,13 @@
+module Data.Eq(
+  module Data.Eq
+  ) where
+import Primitives
+import Data.Bool_Type
+
+infix 4 ==,/=
+
+class Eq a where
+  (==) :: a -> a -> Bool
+  (/=) :: a -> a -> Bool
+  x /= y = if x == y then False else True
+
diff --git a/lib/Data/Floating.hs b/lib/Data/Floating.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Floating.hs
@@ -0,0 +1,45 @@
+module Data.Floating(module Data.Floating) where
+import Primitives
+import Data.Fractional
+import Data.Num
+
+infixr 8 **
+
+class (Fractional a) => Floating a  where
+  pi       :: a
+  exp      :: a -> a
+  log      :: a -> a
+  sqrt     :: a -> a
+  (**)     :: a -> a -> a
+  logBase  :: a -> a -> a
+  sin      :: a -> a
+  cos      :: a -> a
+  tan      :: a -> a
+  asin     :: a -> a
+  acos     :: a -> a
+  atan     :: a -> a
+  sinh     :: a -> a
+  cosh     :: a -> a
+  tanh     :: a -> a
+  asinh    :: a -> a
+  acosh    :: a -> a
+  atanh    :: a -> a
+  log1p    :: a -> a
+  expm1    :: a -> a
+  log1pexp :: a -> a
+  log1mexp :: a -> a
+
+  x ** y              = exp (log x * y)
+  logBase x y         = log y / log x
+  sqrt x              = x ** (1/2)
+  tan  x              = sin  x / cos  x
+  sinh x              = (exp x - exp (negate x)) / 2
+  cosh x              = (exp x + exp (negate x)) / 2
+  tanh x              = sinh x / cosh x
+  asinh x             = log (x + sqrt (x*x + 1))
+  acosh x             = log (x + sqrt (x*x - 1))
+  atanh x             = log ((x + 1) / (x - 1)) / 2
+  log1p x             = log (1 + x)
+  expm1 x             = exp x - 1
+  log1pexp x          = log1p (exp x)
+  log1mexp x          = log1p (negate (exp x))
diff --git a/lib/Data/Fractional.hs b/lib/Data/Fractional.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Fractional.hs
@@ -0,0 +1,19 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Fractional(module Data.Fractional) where
+import Primitives
+import Data.Integral
+import Data.Num
+import Data.Ord
+import Data.Ratio_Type
+
+class Num a => Fractional a where
+  (/) :: a -> a -> a
+  recip :: a -> a
+  fromRational :: Rational -> a
+
+  recip x = 1 / x
+
+infixr 8 ^^
+(^^) :: forall a b . (Fractional a, Integral b, Ord b) => a -> b -> a
+x ^^ n = if n >= 0 then x^n else recip (x^(negate n))
diff --git a/lib/Data/Function.hs b/lib/Data/Function.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Function.hs
@@ -0,0 +1,39 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Function(module Data.Function) where
+import Primitives
+--import Data.Tuple
+
+infixr 0 $
+($) :: forall a b . (a -> b) -> a -> b
+($) f x = f x
+
+infixr 0 $!
+($!) :: forall a b . (a -> b) -> a -> b
+($!) f x = x `primSeq` f x
+
+infixr 9 .
+(.) :: forall a b c . (b -> c) -> (a -> b) -> (a -> c)
+(.) f g x = f (g x)
+
+id :: forall a . a -> a
+id x = x
+
+const :: forall a b . a -> b -> a
+const x _ = x
+
+flip :: forall a b c . (b -> a -> c) -> a -> b -> c
+flip f a b = f b a
+
+fix :: forall a . (a -> a) -> a
+fix = primFix
+
+uncurry :: forall a b c . (a -> b -> c) -> (a, b) -> c
+uncurry f (a, b) = f a b  -- XXX not lazy
+
+infixl 0 `on`
+on :: forall a b c . (a -> a -> b) -> (c -> a) -> (c -> c -> b)
+on op sel x y = op (sel x) (sel y)
+
+asTypeOf :: forall a . a -> a -> a
+asTypeOf = const
diff --git a/lib/Data/Functor.hs b/lib/Data/Functor.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Functor.hs
@@ -0,0 +1,15 @@
+module Data.Functor(module Data.Functor) where
+import Primitives  -- for fixity
+import Data.Function
+
+class Functor (f :: Type -> Type) where
+  fmap :: forall a b . (a -> b) -> f a -> f b
+  (<$) :: forall a b . a -> f b -> f a
+  (<$) =  fmap . const
+
+infixl 4 <$>
+(<$>) :: forall (f :: Type -> Type) a b . Functor f => (a -> b) -> f a -> f b
+(<$>) = fmap
+
+--void :: forall f a . Functor f => f a -> f ()
+--void = fmap (const ())
diff --git a/lib/Data/Identity.hs b/lib/Data/Identity.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Identity.hs
@@ -0,0 +1,24 @@
+module Data.Identity(Data.Identity) where
+import Primitives
+import Control.Applicative
+import Control.Monad
+import Data.Function
+import Data.Functor
+import Data.Int
+import Data.Ord
+import Text.Show
+
+newtype Identity a = Identity a
+
+instance Functor Identity where
+  fmap f (Identity a) = Identity (f a)
+
+instance Applicative Identity where
+  pure a = Identity a
+  Identity f <*> Identity a = Identity (f a)
+
+instance Monad Identity where
+  Identity a >>= f = f a
+
+instance forall a . (Show a) => Show (Identity a) where
+  showsPrec p (Identity a) = showParen (p >= 11) (showString "Identity " . showsPrec 11 a)
diff --git a/lib/Data/Int.hs b/lib/Data/Int.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Int.hs
@@ -0,0 +1,78 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Int(module Data.Int, Int) where
+import Primitives
+import Data.Bool_Type
+import Data.Bounded
+import Data.Char_Type
+import Data.Eq
+import Data.Integer_Type
+import Data.Integral
+import Data.List_Type
+import Data.Num
+import Data.Ord
+import Data.Ratio_Type
+import Data.Real
+import Text.Show
+
+instance Num Int where
+  (+)  = primIntAdd
+  (-)  = primIntSub
+  (*)  = primIntMul
+  negate x = primIntNeg x
+  abs x = if x < 0 then negate x else x
+  signum x =
+    case compare x 0 of
+      LT -> -1
+      EQ ->  0
+      GT ->  1
+  fromInteger = _integerToInt
+
+instance Integral Int where
+  quot = primIntQuot
+  rem  = primIntRem
+  toInteger = _intToInteger
+
+instance Bounded Int where
+  minBound = primWordToInt ((-1::Word) `primWordQuot` 2) + 1
+  maxBound = primWordToInt ((-1::Word) `primWordQuot` 2)
+
+instance Real Int where
+  toRational i = _integerToRational (_intToInteger i)
+
+--------------------------------
+
+instance Eq Int where
+  (==) = primIntEQ
+  (/=) = primIntNE
+
+instance Ord Int where
+  compare = primCompare
+  (<)  = primIntLT
+  (<=) = primIntLE
+  (>)  = primIntGT
+  (>=) = primIntGE
+
+--------------------------------
+
+instance Show Int where
+  show = showInt_
+
+-- XXX these should not be exported
+showInt_ :: Int -> String
+showInt_ n =
+  if n < 0 then
+    '-' : _showUnsignedNegInt n
+  else
+    _showUnsignedNegInt (negate n)
+
+-- Some trickery to show minBound correctly.
+-- To print the number n, pass -n.
+_showUnsignedNegInt :: Int -> String
+_showUnsignedNegInt n =
+  let
+    c = primChr (primOrd '0' - rem n 10)
+  in  if n > -10 then
+        [c]
+      else
+        _showUnsignedNegInt (quot n 10) ++ [c]
diff --git a/lib/Data/IntMap.hs b/lib/Data/IntMap.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/IntMap.hs
@@ -0,0 +1,96 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.IntMap(
+  IntMap,
+  empty, lookup, insert, fromList, toList, insertWith, (!), keys
+  ) where
+import Prelude hiding(lookup)
+
+data IntMap a
+  = Empty
+  | Leaf Int a
+  | Node (IntMap a) (IntMap a) (IntMap a) (IntMap a)
+  --Xderiving (Show)
+
+-- This works for y>0
+divModX :: Int -> Int -> (Int, Int)
+divModX x y =
+  let
+    q = quot x y
+    r = rem x y
+  in
+    if x >= 0 || r == 0 then
+      (q, r)
+    else
+      (q - 1, r + y)
+
+empty :: forall a . IntMap a
+empty = Empty
+
+lookup :: forall a . Int -> IntMap a -> Maybe a
+lookup k am =
+  case am of
+    Empty -> Nothing
+    Leaf i a -> if k == i then Just a else Nothing
+    Node m0 m1 m2 m3 ->
+      let
+        (d, m) = divModX k 4
+      in      if m == 0 then lookup d m0
+         else if m == 1 then lookup d m1
+         else if m == 2 then lookup d m2
+         else                lookup d m3
+
+insert :: forall a . Int -> a -> IntMap a -> IntMap a
+insert = insertWith const
+
+fromList :: forall a . [(Int, a)] -> IntMap a
+fromList = foldr (uncurry insert) empty
+
+-- XXX There must be a better way
+toList :: forall a . IntMap a -> [(Int, a)]
+toList am =
+  let
+    f o (k, a) = (k*4 + o, a)
+  in
+    case am of
+      Empty -> []
+      Leaf l a -> [(l, a)]
+      Node m0 m1 m2 m3 ->
+        map (f 0) (toList m0) `merge`
+        map (f 1) (toList m1) `merge`
+        map (f 2) (toList m2) `merge`
+        map (f 3) (toList m3)
+
+merge :: forall a . [(Int, a)] -> [(Int, a)] -> [(Int, a)]
+merge [] ys = ys
+merge xs [] = xs
+merge xxs@(xa@(x,_):xs) yys@(yb@(y,b):ys) = if x < y then xa : merge xs yys else yb : merge xxs ys
+
+keys :: forall a . IntMap a -> [Int]
+keys = map fst . toList
+
+(!) :: forall a . IntMap a -> Int -> a
+(!) m k =
+  case lookup k m of
+    Just i -> i
+    Nothing -> error "Data.IntMap.!"
+
+insertWith :: forall a . (a -> a -> a) -> Int -> a -> IntMap a -> IntMap a
+insertWith comb ak a =
+  let
+    ins k am =
+      case am of
+        Empty -> Leaf k a
+        Leaf i b ->
+          if k == i then
+            Leaf k (comb a b)
+          else
+            ins k $ insert i b $ Node Empty Empty Empty Empty
+        Node m0 m1 m2 m3 ->
+          let
+            (d, m) = divModX k 4
+          in      if m == 0 then Node (ins d m0) m1 m2 m3
+             else if m == 1 then Node m0 (ins d m1) m2 m3
+             else if m == 2 then Node m0 m1 (ins d m2) m3
+             else                Node m0 m1 m2 (ins d m3)
+  in ins ak
diff --git a/lib/Data/IntSet.hs b/lib/Data/IntSet.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/IntSet.hs
@@ -0,0 +1,29 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.IntSet(
+  IntSet,
+  empty, member, insert, fromList, toList
+  ) where
+import Prelude
+import qualified Data.IntMap as M
+
+newtype IntSet = I (M.IntMap ())
+
+empty :: IntSet
+empty = I M.empty
+
+member :: Int -> IntSet -> Bool
+member k (I m) =
+  case M.lookup k m of
+    Nothing -> False
+    Just _  -> True
+
+insert :: Int -> IntSet -> IntSet
+insert k (I m) = I (M.insert k () m)
+
+fromList :: [Int] -> IntSet
+fromList is = I (M.fromList (zip is (repeat ())))
+
+toList :: IntSet -> [Int]
+toList (I m) = map fst (M.toList m)
+
diff --git a/lib/Data/Integer.hs b/lib/Data/Integer.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Integer.hs
@@ -0,0 +1,488 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Integer(
+  Integer,
+  readInteger,
+  _intToInteger,
+  _integerToInt,
+  _wordToInteger,
+  _integerToWord,
+  _integerToDouble,
+  _integerToRational,
+  _integerToIntList,
+  _intListToInteger,
+  ) where
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Char
+import Data.Enum
+import Data.Eq
+import Data.Function
+import Data.Int
+import Data.Integer_Type
+import Data.Integral
+import Data.List
+import Data.Num
+import Data.Ord
+import Data.Ratio_Type
+import Data.Real
+import Text.Show
+
+--
+-- The Integer is stored in sign-magniture format with digits in base maxD (2^31)
+-- It has the following invariants:
+--  * each digit is >= 0 and < maxD
+--  * least signification digits first, most significant last
+--  * no trailing 0s in the digits
+--  * 0 is positive
+{- These definitions are in Integer_Type
+data Integer = I Sign [Digit]
+  --deriving Show
+
+type Digit = Int
+
+maxD :: Digit
+maxD = 2147483648  -- 2^31, this is used so multiplication of two digit doesn't overflow a 64 bit Int
+
+data Sign = Plus | Minus
+  --deriving Show
+-}
+
+instance Eq Integer where
+  (==) = eqI
+  (/=) = neI
+
+instance Ord Integer where
+  (<)  = ltI
+  (<=) = leI
+  (>)  = gtI
+  (>=) = geI
+
+instance Show Integer where
+  show i = showInteger i
+
+instance Num Integer where
+  (+) = addI
+  (-) = subI
+  (*) = mulI
+  negate = negateI
+  abs = absI
+  signum x =
+    case compare x zeroI of
+      LT -> negOneI
+      EQ -> zeroI
+      GT -> oneI
+  fromInteger x = x
+
+instance Integral Integer where
+  quotRem = quotRemI
+  toInteger x = x
+
+instance Real Integer where
+  toRational i = _integerToRational i
+
+instance Enum Integer where
+  succ x = x + 1
+  pred x = x - 1
+  toEnum x = _intToInteger x
+  fromEnum x = _integerToInt x
+  enumFrom n = n : enumFrom (n+1)
+  enumFromThen n m = from n
+    where d = m - n
+          from i = i : from (i+d)
+  enumFromTo l h = takeWhile (<= h) (enumFrom l)
+  enumFromThenTo l m h =
+    if m > l then
+      takeWhile (<= h) (enumFromThen l m)
+    else
+      takeWhile (>= h) (enumFromThen l m)
+
+------------------------------------------------
+
+isZero :: Integer -> Bool
+isZero (I _ ds) = null ds
+
+instance Eq Sign where
+  (==) Plus Plus = True
+  (==) Minus Minus = True
+  (==) _ _ = False
+
+-- Trim off 0s and make an Integer
+sI :: Sign -> [Digit] -> Integer
+sI s ds =
+  case trim0 ds of
+    []  -> I Plus []
+    ds' -> I s    ds'
+
+zeroD :: Digit
+zeroD = 0
+
+addI :: Integer -> Integer -> Integer
+addI (I Plus  xs) (I Plus  ys)             =  I Plus  (add xs ys)
+addI (I Plus  xs) (I Minus ys) | ltW xs ys = sI Minus (sub ys xs)
+                               | True      = sI Plus  (sub xs ys)
+addI (I Minus xs) (I Plus  ys) | ltW ys xs = sI Minus (sub xs ys)
+                               | True      = sI Plus  (sub ys xs)
+addI (I Minus xs) (I Minus ys)             =  I Minus (add xs ys)
+
+negateI :: Integer -> Integer
+negateI i@(I _    []) = i
+negateI   (I Plus  x) = I Minus x
+negateI   (I Minus x) = I Plus  x
+
+absI :: Integer -> Integer
+absI (I _ x) = I Plus x
+
+subI :: Integer -> Integer -> Integer
+subI x y = addI x (negateI y)
+
+add :: [Digit] -> [Digit] -> [Digit]
+add = add' zeroD
+
+add' :: Digit -> [Digit] -> [Digit] -> [Digit]
+add' ci (x : xs) (y : ys) = s : add' co xs ys  where (co, s) = addD ci x y
+add' ci (x : xs) []       = s : add' co xs []  where (co, s) = addD ci x zeroD
+add' ci []       (y : ys) = s : add' co [] ys  where (co, s) = addD ci zeroD y
+add' ci []       []       = if ci == zeroD then [] else [ci]
+
+-- Add 3 digits with carry
+addD :: Digit -> Digit -> Digit -> (Digit, Digit)
+addD x y z = (quot s maxD, rem s maxD)  where s = x + y + z
+
+-- Invariant: xs >= ys, so result is always >= 0
+sub :: [Digit] -> [Digit] -> [Digit]
+sub xs ys = sub' zeroD xs ys
+
+sub' :: Digit -> [Digit] -> [Digit] -> [Digit]
+sub' bi (x : xs) (y : ys) = d : sub' bo xs ys  where (bo, d) = subW bi x y
+sub' bi (x : xs) []       = d : sub' bo xs []  where (bo, d) = subW bi x zeroD
+sub' 0  []       []       = []
+sub' _  []       _        = undefined
+
+-- Subtract with borrow
+subW :: Digit -> Digit -> Digit -> (Digit, Digit)
+subW b x y =
+  let d = x - y + b
+  in  if d < 0 then
+        (quot d maxD - 1, rem d maxD + maxD)
+      else
+        (quot d maxD, rem d maxD)
+
+-- Remove trailing 0s
+trim0 :: [Digit] -> [Digit]
+trim0 = reverse . dropWhile (== (0::Int)) . reverse
+
+-- Is axs < ays?
+ltW :: [Digit] -> [Digit] -> Bool
+ltW axs ays = lxs < lys || lxs == lys && cmp (reverse axs) (reverse ays)
+  where
+    lxs = length axs
+    lys = length ays
+    cmp (x:xs) (y:ys) = x < y || x == y && cmp xs ys
+    cmp []     []     = False
+    cmp _      _      = error "ltW.cmp"
+    
+mulI :: Integer -> Integer -> Integer
+mulI (I _ []) _ = I Plus []         -- 0 * x = 0
+mulI _ (I _ []) = I Plus []         -- x * 0 = 0
+mulI (I sx [x]) (I sy ys)  = I (mulSign sx sy) (mulD zeroD ys x)
+mulI (I sx xs)  (I sy [y]) = I (mulSign sx sy) (mulD zeroD xs y)
+mulI (I sx xs)  (I sy ys)  = I (mulSign sx sy) (mulM xs ys)
+
+mulSign :: Sign -> Sign -> Sign
+mulSign s t = if s == t then Plus else Minus
+
+-- Multiply with a single digit, and add carry.
+mulD :: Digit -> [Digit] -> Digit -> [Digit]
+mulD ci [] _ = if ci == 0 then [] else [ci]
+mulD ci (x:xs) y = r : mulD q xs y
+  where
+    xy = x * y + ci
+    q = quot xy maxD
+    r = rem  xy maxD
+
+mulM :: [Digit] -> [Digit] -> [Digit]
+mulM xs ys =
+  let rs = map (mulD zeroD xs) ys
+      ss = zipWith (++) (map (`replicate` (0::Int)) [0::Int ..]) rs
+  in  foldl1 add ss
+
+-- Signs:
+--  + +  -> (+,+)
+--  + -  -> (-,+)
+--  - +  -> (-,-)
+--  - -  -> (+,-)
+quotRemI :: Integer -> Integer -> (Integer, Integer)
+quotRemI _         (I _  [])  = error "Integer: division by 0" -- n / 0
+quotRemI (I _  [])          _ = (I Plus [], I Plus [])         -- 0 / n
+quotRemI (I sx xs) (I sy ys) | all (== (0::Int)) ys' =
+  -- All but the MSD are 0.  Scale numerator accordingly and divide.
+  -- Then add back (the ++) the remainder we scaled off.
+    case quotRemD xs' y of
+      (q, r) -> qrRes sx sy (q, rs ++ r)
+  where ys'       = init ys
+        y         = last ys
+        n         = length ys'
+        (rs, xs') = splitAt n xs  -- xs' is the scaled number
+quotRemI (I sx xs) (I sy ys)  = qrRes sx sy (quotRemB xs ys)
+
+qrRes :: Sign -> Sign -> ([Digit], [Digit]) -> (Integer, Integer)
+qrRes sx sy (ds, rs) = (sI (mulSign sx sy) ds, sI sx rs)
+
+quotI :: Integer -> Integer -> Integer
+quotI x y =
+  case quotRemI x y of
+    (q, _) -> q
+
+-- Divide by a single digit.
+-- Does not return normalized numbers.
+quotRemD :: [Digit] -> Digit -> ([Digit], [Digit])
+quotRemD axs y = qr zeroD (reverse axs) []
+  where
+    qr ci []     res = (res, [ci])
+    qr ci (x:xs) res = qr r xs (q:res)
+      where
+        cx = ci * maxD + x
+        q = quot cx y
+        r = rem cx y
+
+-- Simple iterative long division.
+quotRemB :: [Digit] -> [Digit] -> ([Digit], [Digit])
+quotRemB xs ys =
+  let n  = I Plus xs
+      d  = I Plus ys
+      a  = I Plus $ replicate (length ys - (1::Int)) (0::Int) ++ [last ys]  -- only MSD of ys
+      aq = quotI n a
+      ar = addI d oneI
+      loop q r =
+        if absI r `geI` d then
+          let r' = n `subI` (q `mulI` d)
+              qn = q `addI` (r' `quotI` a)
+              q' = (q `addI` qn) `quotI` twoI
+          in  loop q' r'
+        else
+          q
+      q' = loop aq ar
+      r = n `subI` (q' `mulI` d)
+  in  if r `ltI` zeroI then
+        (digits (q' `subI` oneI), digits (r `addI` d))
+      else
+        (digits q', digits r)
+
+digits :: Integer -> [Digit]
+digits (I _ ds) = ds
+
+zeroI :: Integer
+zeroI = I Plus []
+
+oneI :: Integer
+oneI = I Plus [1]
+
+twoI :: Integer
+twoI = I Plus [2]
+
+tenI :: Integer
+tenI = I Plus [10]
+
+negOneI :: Integer
+negOneI = I Minus [1]
+
+--------------
+
+showInteger :: Integer -> String
+showInteger (I _     []) = "0"
+showInteger (I Minus xs) = '-' : showInteger' xs
+showInteger (I Plus  xs) =       showInteger' xs
+
+showInteger' :: [Digit] -> String
+showInteger' [] = ""
+showInteger' xs = showInteger' (trim0 xs') ++ [chr (ord '0' + d)]
+  where
+    (xs', [d]) = quotRemD xs 10
+
+readInteger :: String -> Integer
+readInteger ('-':ds) = negate (readUnsignedInteger ds)
+readInteger ds       =         readUnsignedInteger ds
+
+readUnsignedInteger :: String -> Integer
+readUnsignedInteger = foldl (\ r c -> r * tenI + _intToInteger (ord c - ord '0')) zeroI
+
+eqI :: Integer -> Integer -> Bool
+eqI (I sx xs) (I sy ys) = sx == sy && xs == ys
+
+neI :: Integer -> Integer -> Bool
+neI x y = not (eqI x y)
+
+ltI :: Integer -> Integer -> Bool
+ltI (I Plus  xs) (I Plus  ys) = ltW xs ys
+ltI (I Minus  _) (I Plus   _) = True
+ltI (I Plus   _) (I Minus  _) = False
+ltI (I Minus xs) (I Minus ys) = ltW ys xs
+
+leI :: Integer -> Integer -> Bool
+leI x y = not (ltI y x)
+
+gtI :: Integer -> Integer -> Bool
+gtI x y = ltI y x
+
+geI :: Integer -> Integer -> Bool
+geI x y = not (ltI x y)
+
+-- These two functions return an (opaque) representation of an
+-- Integer as [Int].
+-- This is used by the compiler to generate Integer literals.
+-- First _integerToIntList is used in the compiler to get a list of
+-- Int, and the generated code will have a call to _intListToInteger.
+_integerToIntList :: Integer -> [Int]
+_integerToIntList (I Plus  ds) = ds
+_integerToIntList (I Minus ds) = (-1::Int) : ds
+
+_intListToInteger :: [Int] -> Integer
+_intListToInteger (-1 : ds) = I Minus ds
+_intListToInteger ds        = I Plus  ds
+
+---------------------------------
+{-
+pIntegerToInteger :: P.Integer -> Integer
+pIntegerToInteger i | i >= 0        = I Plus  (f i)
+                    | otherwise     = I Minus (f (negate i))
+  where
+    f 0 = []
+    f x = fromInteger (rem x (toInteger maxD)) : f (quot x (toInteger maxD))
+
+integerToPInteger :: Integer -> P.Integer
+integerToPInteger (I s xs) =
+  let r = foldr (\ d r -> r * toInteger maxD + toInteger d) 0 xs
+  in  case s of
+        Plus  -> r
+        Minus -> negate r
+
+instance Num Integer where
+  (+) = addI
+  (-) = subI
+  (*) = mulI
+  abs x = if x < 0 then -x else x
+  signum x = if x > 0 then 1 else if x < 0 then -1 else 0
+  fromInteger = pIntegerToInteger
+
+instance Enum Integer where
+  fromEnum = fromEnum . integerToPInteger
+  toEnum = _intToInteger
+
+instance Real Integer where
+  toRational = toRational . toInteger
+
+instance Integral Integer where
+  quotRem = quotRemI
+  toInteger = integerToPInteger
+
+--instance Show Integer where
+--  show = showInteger
+
+instance Eq Integer where
+  (==) = eqI
+
+instance Ord Integer where
+  x <  y = x `ltI` y
+  x <= y = x == y || x `ltI` y
+  x >  y = y `ltI` x
+  x >= y = x == y || y `ltI` x
+
+instance Arbitrary Integer where
+  arbitrary = do
+    ndig <- frequency
+      [(5,  pure 0)
+      ,(25, pure 1)
+      ,(20, pure 2)
+      ,(10, pure 3)
+      ,(10, pure 4)
+      ,(2,  pure 5)
+      ,(2,  pure 6)
+      ]
+    digits <- vectorOf ndig (chooseInt (0, maxD - 1))
+    sign <- elements [Plus, Minus]
+    pure $ if null digits then I Plus [] else I sign digits
+
+{-
+newtype SmallInteger = SmallInteger Integer
+  deriving Show
+
+instance Arbitrary SmallInteger where
+  arbitrary = do
+    ndig <- frequency
+      [(25, pure 1)
+      ,(20, pure 2)
+      ,(10, pure 3)
+      ,(10, pure 4)
+      ]
+    digit <- chooseInt (1, maxD - 1)
+    sign <- elements [Plus, Minus]
+    pure $ SmallInteger $ I sign (replicate (ndig - 1) 0 ++ [digit])
+-}
+{-
+sanity :: HasCallStack => Integer -> Integer
+sanity (I Minus []) = undefined
+sanity (I _ ds) | any (< 0) ds = undefined
+sanity (I _ ds) | length ds > 1 && last ds == 0 = undefined
+sanity i = i
+-}
+
+prop_roundtrip1 :: Integer -> Bool
+prop_roundtrip1 i = fromInteger (toInteger i) == i
+
+prop_negate :: Integer -> Bool
+prop_negate i = toInteger (negate i) == negate (toInteger i)
+
+prop_abs :: Integer -> Bool
+prop_abs i = toInteger (abs i) == abs (toInteger i)
+
+prop_add :: Integer -> Integer -> Bool
+prop_add x y = toInteger (addI x y) == toInteger x + toInteger y
+
+prop_sub :: Integer -> Integer -> Bool
+prop_sub x y = toInteger (subI x y) == toInteger x - toInteger y
+
+prop_mul :: Integer -> Integer -> Bool
+prop_mul x y = toInteger (mulI x y) == toInteger x * toInteger y
+
+prop_div :: Integer -> NonZero Integer -> Bool
+prop_div x (NonZero y) =
+  to (quotRemI x y) == toInteger x `quotRem` toInteger y
+  where to (a, b) = (toInteger a, toInteger b)
+  
+prop_muldiv :: Integer -> NonZero Integer -> Bool
+prop_muldiv x (NonZero y) =
+  let (q, r) = quotRemI x y
+  in  q*y + r == x
+
+prop_eq :: Integer -> Integer -> Bool
+prop_eq x y = (eqI x y) == (toInteger x == toInteger y)
+
+prop_ne :: Integer -> Integer -> Bool
+prop_ne x y = (neI x y) == (toInteger x /= toInteger y)
+
+prop_lt :: Integer -> Integer -> Bool
+prop_lt x y = (ltI x y) == (toInteger x < toInteger y)
+
+prop_gt :: Integer -> Integer -> Bool
+prop_gt x y = (gtI x y) == (toInteger x > toInteger y)
+
+prop_le :: Integer -> Integer -> Bool
+prop_le x y = (leI x y) == (toInteger x <= toInteger y)
+
+prop_ge :: Integer -> Integer -> Bool
+prop_ge x y = (geI x y) == (toInteger x >= toInteger y)
+
+prop_show :: Integer -> Bool
+prop_show x = showInteger x == show (toInteger x)
+
+checkAll :: IO ()
+checkAll = do
+  let qc p = quickCheck (withMaxSuccess 100000 p)
+  mapM_ qc [prop_roundtrip1, prop_negate, prop_abs, prop_show]
+  mapM_ qc [prop_add, prop_sub, prop_mul,
+            prop_eq, prop_ne, prop_lt, prop_gt, prop_le, prop_ge]
+  mapM_ qc [prop_div, prop_muldiv]
+  
+-}
diff --git a/lib/Data/Integer_Type.hs b/lib/Data/Integer_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Integer_Type.hs
@@ -0,0 +1,58 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Integer_Type(module Data.Integer_Type) where
+import Primitives
+import Data.Bool_Type
+import Data.List_Type
+
+data Integer = I Sign [Digit]
+
+data Sign = Plus | Minus
+
+type Digit = Int
+
+maxD :: Digit
+maxD = 2147483648  -- 2^31, this is used so multiplication of two digit doesn't overflow a 64 bit Int
+
+_intToInteger :: Int -> Integer
+_intToInteger i | i `primIntGE` 0  = I Plus  (f i)
+                | i `primIntEQ` ni = I Minus [0::Int,0::Int,2::Int]  -- we are at minBound::Int.
+                | True             = I Minus (f ni)
+  where
+    ni = (0::Int) `primIntSub` i
+    f :: Int -> [Int]
+    f 0 = []
+    f x = primIntRem x maxD : f (primIntQuot x maxD)
+
+_integerToInt :: Integer -> Int
+_integerToInt (I sign ds) = s `primIntMul` i
+  where
+    i =
+      case ds of
+        []         -> 0::Int
+        [d1]       -> d1
+        [d1,d2]    -> d1 `primIntAdd` (maxD `primIntMul` d2)
+        d1:d2:d3:_ -> d1 `primIntAdd` (maxD `primIntMul` (d2 `primIntAdd` (maxD `primIntMul` d3)))
+    s =
+      case sign of
+        Plus  -> 1::Int
+        Minus -> 0 `primIntSub` 1
+
+_wordToInteger :: Word -> Integer
+_wordToInteger i = I Plus  (f i)
+  where
+    f :: Word -> [Int]
+    f x = if x `primWordEQ` (0::Word) then [] else primWordToInt (primWordRem x (primIntToWord maxD)) : f (primWordQuot x (primIntToWord maxD))
+
+_integerToWord :: Integer -> Word
+_integerToWord x = primIntToWord (_integerToInt x)
+
+_integerToDouble :: Integer -> Double
+_integerToDouble (I sign ds) = s `primDoubleMul` loop ds
+  where
+    loop [] = 0.0::Double
+    loop (i : is) = primDoubleFromInt i `primDoubleAdd` (primDoubleFromInt maxD `primDoubleMul` loop is)
+    s =
+      case sign of
+        Plus  -> 1.0::Double
+        Minus -> 0.0 `primDoubleSub` 1.0
diff --git a/lib/Data/Integral.hs b/lib/Data/Integral.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Integral.hs
@@ -0,0 +1,58 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Integral(module Data.Integral) where
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Eq
+import Data.Integer_Type
+import Data.Num
+import Data.Ord
+
+infixl 7 `quot`,`rem`
+
+class {-(Real a, Enum a) => -} (Eq a, Num a) => Integral a where
+  quot      :: a -> a -> a
+  rem       :: a -> a -> a
+  div       :: a -> a -> a
+  mod       :: a -> a -> a
+  quotRem   :: a -> a -> (a, a)
+  divMod    :: a -> a -> (a, a)
+  toInteger :: a -> Integer
+
+  n `quot` d       =  q  where (q,r) = quotRem n d
+  n `rem` d        =  r  where (q,r) = quotRem n d
+  n `div` d        =  q  where (q,r) = divMod n d
+  n `mod` d        =  r  where (q,r) = divMod n d
+  divMod n d       =  if signum r == negate (signum d) then (q - 1, r + d) else qr
+                        where qr@(q,r) = quotRem n d
+  quotRem n d      = (quot n d, rem n d)
+
+gcd :: forall a . (Integral a) => a -> a -> a
+gcd x y = gcd' (abs x) (abs y)
+  where gcd' a b = if b == 0 then a else gcd' b (a `rem` b)
+
+lcm :: forall a . (Integral a) => a -> a -> a
+lcm x y =
+  if x == 0 || y == 0 then
+    0
+  else
+    abs ((x `quot` (gcd x y)) * y)
+
+even :: forall a . (Integral a) => a -> Bool
+even n = n `rem` 2 == 0
+
+odd :: forall a . (Integral a) => a -> Bool
+odd n = not (even n)
+
+infixr 8 ^
+(^) :: forall a b . (Num a, Integral b, Ord b) => a -> b -> a
+x0 ^ y0 | y0 < 0    = error "Data.Integral.^: negative exponent"
+        | otherwise = pow x0 y0
+  -- This does not do the minimal number of multiplications, but it's simple.
+  where pow x y | y == 0    = 1
+                | even y    =     pow (x * x) (y `quot` 2)
+                | otherwise = x * pow (x * x) (y `quot` 2)
+
+fromIntegral :: forall a b . (Integral a, Num b) => a -> b
+fromIntegral x = fromInteger (toInteger x)
diff --git a/lib/Data/List.hs b/lib/Data/List.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/List.hs
@@ -0,0 +1,363 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.List(
+  module Data.List,
+  module Data.List_Type
+  ) where
+import Primitives
+import Control.Applicative
+import Control.Error
+import Control.Monad
+import Data.Bool
+import Data.Eq
+import Data.Function
+import Data.Functor
+import Data.Int
+import Data.List_Type
+import Data.Num
+import Data.Ord
+import Data.Maybe_Type
+import Data.Tuple
+import Text.Show
+
+instance {-# OVERLAPPABLE #-} forall a . Eq a => Eq [a] where
+  []     == []      =  True
+  (x:xs) == (y:ys)  =  x == y && xs == ys
+  _      == _       =  False
+
+instance Functor [] where
+  fmap = map
+
+instance Applicative [] where
+  pure a = [a]
+  (<*>) = ap
+
+instance Monad [] where
+  (>>=) = flip concatMap
+
+instance MonadFail [] where
+  fail _ = []
+
+instance forall a . Show a => Show [a] where
+  showsPrec _ = showList
+
+null :: forall a . [a] -> Bool
+null [] = True
+null _  = False
+
+concat :: forall a . [[a]] -> [a]
+concat = foldr (++) []
+
+concatMap :: forall a b . (a -> [b]) -> [a] -> [b]
+concatMap f = concat . map f
+
+map :: forall a b . (a -> b) -> [a] -> [b]
+map f =
+  let
+    rec [] = []
+    rec (a : as) = f a : rec as
+  in rec
+
+filter :: forall a . (a -> Bool) -> [a] -> [a]
+filter p =
+  let
+    rec [] = []
+    rec (x : xs) = if p x then x : rec xs else rec xs
+  in rec
+
+foldr :: forall a b . (a -> b -> b) -> b -> [a] -> b
+foldr f z =
+  let
+    rec [] = z
+    rec (x : xs) = f x (rec xs)
+  in rec
+
+foldr1 :: forall a . (a -> a -> a) -> [a] -> a
+foldr1 _ [] = error "foldr1"
+foldr1 f (x : xs) = foldr f x xs
+
+foldl :: forall a b . (b -> a -> b) -> b -> [a] -> b
+foldl _ z [] = z
+foldl f z (x : xs) = foldl f (f z x) xs
+
+foldl1 :: forall a . (a -> a -> a) -> [a] -> a
+foldl1 _ [] = error "foldl1"
+foldl1 f (x : xs) = foldl f x xs
+
+minimum :: forall a . Ord a => [a] -> a
+minimum [] = error "minimum"
+minimum (x:ys) = foldr (\ y m -> if y < m then y else m) x ys
+
+maximum :: forall a . Ord a => [a] -> a
+maximum [] = error "maximum"
+maximum (x:ys) = foldr (\ y m -> if y > m then y else m) x ys
+
+sum :: forall a . Num a => [a] -> a
+sum = foldr (+) 0
+
+product :: forall a . Num a => [a] -> a
+product = foldr (*) 1
+
+and :: [Bool] -> Bool
+and = foldr (&&) True
+
+or :: [Bool] -> Bool
+or = foldr (||) False
+
+any :: forall a . (a -> Bool) -> [a] -> Bool
+any p = or . map p
+
+all :: forall a . (a -> Bool) -> [a] -> Bool
+all p = and . map p
+
+take :: forall a . Int -> [a] -> [a]
+take n arg =
+  if n <= (0::Int) then
+    []
+  else
+    case arg of
+      [] -> []
+      x : xs -> x : take (n - (1::Int)) xs
+
+drop :: forall a . Int -> [a] -> [a]
+drop n arg =
+  if n <= (0::Int) then
+    arg
+  else
+    case arg of
+      [] -> []
+      _ : xs -> drop (n - (1::Int)) xs
+
+length :: forall a . [a] -> Int
+length =
+  -- Make it tail recursive and strict
+  let
+    rec r [] = r
+    rec r (_:xs) =
+          let r' = r + (1::Int)
+          in  r' `primSeq` rec r' xs
+  in rec (0::Int)
+
+zip :: forall a b . [a] -> [b] -> [(a, b)]
+zip = zipWith (\ x y -> (x, y))
+
+zipWith :: forall a b c . (a -> b -> c) -> [a] -> [b] -> [c]
+zipWith f (x:xs) (y:ys) = f x y : zipWith f xs ys
+zipWith _ _ _ = []
+
+-- XXX not as lazy as it could be
+unzip :: forall a b . [(a, b)] -> ([a], [b])
+unzip axys =
+  case axys of
+    [] -> ([], [])
+    (x,y) : xys ->
+      case unzip xys of
+        (xs, ys) -> (x:xs, y:ys)
+
+-- XXX not as lazy as it could be
+unzip3 :: forall a b c . [(a, b, c)] -> ([a], [b], [c])
+unzip3 axyzs =
+  case axyzs of
+    [] -> ([], [], [])
+    (x, y, z) : xyzs ->
+      case unzip3 xyzs of
+        (xs, ys, zs) -> (x:xs, y:ys, z:zs)
+
+stripPrefix :: forall a . Eq a => [a] -> [a] -> Maybe [a]
+stripPrefix = stripPrefixBy (==)
+
+stripPrefixBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> Maybe [a]
+stripPrefixBy eq [] s = Just s
+stripPrefixBy eq (c:cs) [] = Nothing
+stripPrefixBy eq (c:cs) (d:ds) | eq c d = stripPrefixBy eq cs ds
+                               | otherwise = Nothing
+
+isPrefixOf :: forall a . Eq a => [a] -> [a] -> Bool
+isPrefixOf = isPrefixOfBy (==)
+
+isPrefixOfBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> Bool
+isPrefixOfBy eq (c:cs) (d:ds) = eq c d && isPrefixOfBy eq cs ds
+isPrefixOfBy _ [] _ = True
+isPrefixOfBy _ _  _ = False
+
+isSuffixOf :: forall a . Eq a => [a] -> [a] -> Bool
+isSuffixOf = isSuffixOfBy (==)
+
+isSuffixOfBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> Bool
+isSuffixOfBy eq n h = isPrefixOfBy eq (reverse n) (reverse h)
+
+splitAt :: forall a . Int -> [a] -> ([a], [a])
+splitAt n xs = (take n xs, drop n xs)
+
+reverse :: forall a . [a] -> [a]
+reverse =
+  let
+    rev r [] = r
+    rev r (x:xs) = rev (x:r) xs
+  in  rev []
+
+takeWhile :: forall a . (a -> Bool) -> [a] -> [a]
+takeWhile _ [] = []
+takeWhile p (x:xs) =
+  if p x then
+    x : takeWhile p xs
+  else
+    []
+
+dropWhile :: forall a . (a -> Bool) -> [a] -> [a]
+dropWhile _ [] = []
+dropWhile p (x:xs) =
+  if p x then
+    dropWhile p xs
+  else
+    x : xs
+
+span :: forall a . (a -> Bool) -> [a] -> ([a], [a])
+span p =
+  let
+    rec r [] = (reverse r, [])
+    rec r (x:xs) = if p x then rec (x:r) xs else (reverse r, x:xs)
+  in rec []
+
+spanUntil :: forall a . (a -> Bool) -> [a] -> ([a], [a])
+spanUntil p =
+  let
+    rec r [] = (reverse r, [])
+    rec r (x:xs) = if p x then rec (x:r) xs else (reverse (x:r), xs)
+  in rec []
+
+head :: forall a . [a] -> a
+head [] = error "head"
+head (x:_) = x
+
+tail :: forall a . [a] -> [a]
+tail [] = error "tail"
+tail (_:ys) = ys
+
+intersperse :: forall a . a -> [a] -> [a]
+intersperse _ [] = []
+intersperse sep (a:as) = a : prepend as
+  where
+    prepend [] = []
+    prepend (x:xs) = sep : x : prepend xs
+
+intercalate :: forall a . [a] -> [[a]] -> [a]
+intercalate xs xss = concat (intersperse xs xss)
+
+elem :: forall a . (Eq a) => a -> [a] -> Bool
+elem = elemBy (==)
+
+notElem :: forall a . (Eq a) => a -> [a] -> Bool
+notElem a as = not (elem a as)
+
+elemBy :: forall a . (a -> a -> Bool) -> a -> [a] -> Bool
+elemBy eq a = any (eq a)
+
+find :: forall a . (a -> Bool) -> [a] -> Maybe a
+find p [] = Nothing
+find p (x:xs) = if p x then Just x else find p xs
+
+lookup :: forall a b . Eq a => a -> [(a, b)] -> Maybe b
+lookup = lookupBy (==)
+
+lookupBy :: forall a b . (a -> a -> Bool) -> a -> [(a, b)] -> Maybe b
+lookupBy eq x xys =
+  case find (eq x . fst) xys of
+    Nothing -> Nothing
+    Just (_, b) -> Just b
+
+union :: forall a . Eq a => [a] -> [a] -> [a]
+union = unionBy (==)
+
+unionBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> [a]
+unionBy eq xs ys =  xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs
+
+intersect :: forall a . Eq a => [a] -> [a] -> [a]
+intersect = intersectBy (==)
+
+intersectBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> [a]
+intersectBy eq xs ys = filter (\ x -> not (elemBy eq x ys)) xs
+
+deleteBy :: forall a . (a -> a -> Bool) -> a -> [a] -> [a]
+deleteBy _ _ [] = []
+deleteBy eq x (y:ys) = if eq x y then ys else y : deleteBy eq x ys
+
+deleteAllBy :: forall a . (a -> a -> Bool) -> a -> [a] -> [a]
+deleteAllBy _ _ [] = []
+deleteAllBy eq x (y:ys) = if eq x y then deleteAllBy eq x ys else y : deleteAllBy eq x ys
+
+nub :: forall a . Eq a => [a] -> [a]
+nub = nubBy (==)
+
+nubBy :: forall a . (a -> a -> Bool) -> [a] -> [a]
+nubBy _ [] = []
+nubBy eq (x:xs) = x : nubBy eq (filter (\ y -> not (eq x y)) xs)
+
+replicate :: forall a . Int -> a -> [a]
+replicate n x = take n (repeat x)
+
+repeat :: forall a . a -> [a]
+repeat x =
+  let
+    xs = x:xs
+  in xs
+
+infix 5 \\
+(\\) :: forall a . Eq a => [a] -> [a] -> [a]
+(\\) = deleteFirstsBy (==)
+
+deleteFirstsBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> [a]
+deleteFirstsBy eq = foldl (flip (deleteBy eq))
+
+-- Delete all from the second argument from the first argument
+deleteAllsBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> [a]
+deleteAllsBy eq = foldl (flip (deleteAllBy eq))
+
+infixl 9 !!
+(!!) :: forall a . [a] -> Int -> a
+(!!) axs i =
+  if i < (0::Int) then
+    error "!!: <0"
+  else
+    let
+      nth _ [] = error "!!: empty"
+      nth n (x:xs) = if n == (0::Int) then x else nth (n - (1::Int)) xs
+    in nth i axs
+
+partition :: forall a . (a -> Bool) -> [a] -> ([a], [a])
+partition p xs = (filter p xs, filter (not . p) xs)
+
+sort :: forall a . Ord a => [a] -> [a]
+sort = sortLE (<=)
+
+-- A simple "quicksort" for now.
+sortLE :: forall a . (a -> a -> Bool) -> [a] -> [a]
+sortLE _  [] = []
+sortLE le (x:xs) =
+  case partition (le x) xs of
+    (ge, lt) -> sortLE le lt ++ (x : sortLE le ge)
+
+last :: forall a . [a] -> a
+last [] = error "last: []"
+last [x] = x
+last (_:xs) = last xs
+
+init :: forall a . [a] -> [a]
+init [] = error "init: []"
+init [_] = []
+init (x:xs) = x : init xs
+
+anySame :: forall a . Eq a => [a] -> Bool
+anySame = anySameBy (==)
+
+anySameBy :: forall a . (a -> a -> Bool) -> [a] -> Bool
+anySameBy _ [] = False
+anySameBy eq (x:xs) = elemBy eq x xs || anySameBy eq xs
+
+iterate :: forall a . (a -> a) -> a -> [a]
+iterate f x = x : iterate f (f x)
+
+substString :: forall a . Eq a => [a] -> [a] -> [a] -> [a]
+substString _ _ [] = []
+substString from to xs@(c:cs) | Just rs <- stripPrefix from xs = to ++ substString from to rs
+                              | otherwise = c : substString from to cs
diff --git a/lib/Data/List_Type.hs b/lib/Data/List_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/List_Type.hs
@@ -0,0 +1,12 @@
+module Data.List_Type(module Data.List_Type) where
+import Primitives
+
+infixr 5 :
+data [] a = [] | (:) a [a]  -- Parser hacks makes this acceptable
+
+-- This does not really belong here, but it makes the module structure
+-- much simpler.
+infixr 5 ++
+(++) :: forall a . [a] -> [a] -> [a]
+(++) [] ys = ys
+(++) (x : xs) ys = x : xs ++ ys 
diff --git a/lib/Data/Map.hs b/lib/Data/Map.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Map.hs
@@ -0,0 +1,155 @@
+--
+-- Balanced binary trees
+-- Similar to Data.Map
+-- Based on https://ufal.mff.cuni.cz/~straka/papers/2011-bbtree.pdf
+--
+module Data.Map(
+  Map,
+  insertBy, insertByWith, fromListByWith, fromListBy, lookupBy, empty, elems, size, toList, deleteBy,
+  ) where
+import Prelude hiding (lookupBy, deleteBy)
+
+data Map k a
+  = Nil           -- empty tree
+  | One k a       -- singleton
+  | Node          -- tree node
+    (Map k a)      -- left subtree
+    Int            -- size of this tree
+    k              -- key stored in the node
+    a              -- element stored in the node
+    (Map k a)      -- right subtree
+  --Xderiving(Show)
+
+empty :: forall k a . Map k a
+empty = Nil
+
+elems :: forall k v . Map k v -> [v]
+elems = map snd . toList
+
+toList :: forall k v . Map k v -> [(k, v)]
+toList t = to t []
+  where
+    to Nil q = q
+    to (One k v) q = (k, v):q
+    to (Node l _ k v r) q = to l ((k, v) : to r q)
+
+fromListBy :: forall k v . (k -> k -> Ordering) -> [(k, v)] -> Map k v
+fromListBy cmp = fromListByWith cmp const
+
+fromListByWith :: forall k v . (k -> k -> Ordering) -> (v -> v -> v) -> [(k, v)] -> Map k v
+fromListByWith cmp comb = foldr (uncurry (insertByWith cmp comb)) empty
+
+size :: forall k a . Map k a -> Int
+size Nil = 0
+size (One _ _) = 1
+size (Node _ s _ _ _) = s
+
+node :: forall k a . Map k a -> k -> a -> Map k a -> Map k a
+node Nil  key val Nil   = One key val
+node left key val right = Node left (size left + 1 + size right) key val right
+
+lookupBy :: forall k a . (k -> k -> Ordering) -> k -> Map k a -> Maybe a
+lookupBy cmp k = look
+  where
+    look Nil = Nothing
+    look (One key val) | isEQ (cmp k key) = Just val
+                       | otherwise = Nothing
+    look (Node left _ key val right) =
+      case k `cmp` key of
+        LT -> look left
+        EQ -> Just val
+        GT -> look right
+
+insertBy :: forall k a . (k -> k -> Ordering) -> k -> a -> Map k a -> Map k a
+insertBy cmp = insertByWith cmp const
+
+insertByWith :: forall k a . (k -> k -> Ordering) -> (a -> a -> a) -> k -> a -> Map k a -> Map k a
+insertByWith cmp comb k v = ins
+  where
+    ins Nil = One k v
+    ins (One a v) = ins (Node Nil 1 a v Nil)
+    ins (Node left _ key val right) =
+      case k `cmp` key of
+        LT -> balance (ins left) key val right
+        EQ -> node left k (comb v val) right
+        GT -> balance left key val (ins right)
+
+deleteBy :: forall k a . (k -> k -> Ordering) -> k -> Map k a -> Map k a
+deleteBy cmp k = del
+  where
+    del Nil = Nil
+    del t@(One a _) | isEQ (k `cmp` a) = Nil
+                    | otherwise        = t
+    del (Node left _ key val right) =
+      case k `cmp` key of
+        LT -> balance (del left) key val right
+        EQ -> glue left right
+        GT -> balance left key val (del right)
+      where
+        glue Nil right = right
+        glue left Nil = left
+        glue left right
+          | size left > size right =
+            let (key', val', left') = extractMax left
+            in node left' key' val' right
+          | otherwise =
+            let (key', val', right') = extractMin right
+            in node left key' val' right'
+extractMin :: forall k a . Map k a -> (k, a, Map k a)
+extractMin Nil = undefined
+extractMin (One key val) = (key, val, Nil)
+extractMin (Node Nil _ key val right) = (key, val, right)
+extractMin (Node left _ key val right) =
+  case extractMin left of
+    (min, vmin, left') -> (min, vmin, balance left' key val right)
+
+extractMax :: forall k a . Map k a -> (k, a, Map k a)
+extractMax Nil = undefined
+extractMax (One key val) = (key, val, Nil)
+extractMax (Node left _ key val Nil) = (key, val, left)
+extractMax (Node left _ key val right) =
+  case extractMax right of
+    (max, vmax, right') -> (max, vmax, balance left key val right')
+
+omega :: Int
+omega = 3
+alpha :: Int
+alpha = 2
+delta :: Int
+delta = 0
+
+balance :: forall k a . Map k a -> k -> a -> Map k a -> Map k a
+balance left key val right
+  | size left + size right <= 1 = node left key val right
+balance (One k v) key val right = balance (Node Nil 1 k v Nil) key val right
+balance left key val (One k v)  = balance left key val (Node Nil 1 k v Nil)
+balance left key val right
+  | size right > omega * size left + delta =
+      case right of
+        (Node rl _ _ _ rr) | size rl < alpha*size rr -> singleL left key val right
+                           | otherwise -> doubleL left key val right
+        _ -> undefined
+  | size left > omega * size right + delta =
+      case left of
+        (Node ll _ _ _ lr) | size lr < alpha*size ll -> singleR left key val right
+                           | otherwise -> doubleR left key val right
+        _ -> undefined
+  | otherwise = node left key val right
+
+singleL :: forall k a . Map k a -> k -> a -> Map k a -> Map k a
+singleL l k v (Node rl _ rk rv rr) = node (node l k v rl) rk rv rr
+singleL _ _ _ _ = undefined
+
+singleR :: forall k a . Map k a -> k -> a -> Map k a -> Map k a
+singleR (Node ll _ lk lv lr) k v r = node ll lk lv (node lr k v r)
+singleR _ _ _ _ = undefined
+
+doubleL :: forall k a . Map k a -> k -> a -> Map k a -> Map k a
+doubleL l k v (Node (Node rll _ rlk rlv rlr) _ rk rv rr) = node (node l k v rll) rlk rlv (node rlr rk rv rr)
+doubleL l k v (Node (One        rlk rlv    ) _ rk rv rr) = node (node l k v Nil) rlk rlv (node Nil rk rv rr)
+doubleL _ _ _ _ = undefined
+
+doubleR :: forall k a . Map k a -> k -> a -> Map k a -> Map k a
+doubleR (Node ll _ lk lv (Node lrl _ lrk lrv lrr)) k v r = node (node ll lk lv lrl) lrk lrv (node lrr k v r)
+doubleR (Node ll _ lk lv (One        lrk lrv    )) k v r = node (node ll lk lv Nil) lrk lrv (node Nil k v r)
+doubleR _ _ _ _ = undefined
diff --git a/lib/Data/Maybe.hs b/lib/Data/Maybe.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Maybe.hs
@@ -0,0 +1,69 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Maybe(module Data.Maybe, module Data.Maybe_Type) where
+import Primitives
+import Control.Applicative
+import Control.Monad
+import Data.Bool
+import Data.Char
+import Data.Eq
+import Data.Function
+import Data.Functor
+import Data.Int
+import Data.List
+import Data.Maybe_Type
+import Data.Ord
+import Text.Show
+
+instance forall a . Eq a => Eq (Maybe a) where
+  Nothing == Nothing  =  True
+  Just x  == Just x'  =  x == x'
+  _       == _        =  False
+
+instance forall a . (Show a) => Show (Maybe a) where
+  showsPrec _ Nothing  = showString "Nothing"
+  showsPrec p (Just a) = showParen (p >= 11) (showString "Just " . showsPrec 11 a)
+
+instance Functor Maybe where
+  fmap _ Nothing  = Nothing
+  fmap f (Just a) = Just (f a)
+
+instance Applicative Maybe where
+  pure = Just
+  Just f <*> Just a = Just (f a)
+  _      <*> _      = Nothing
+
+instance Monad Maybe where
+  return = pure
+  Nothing >>= _ = Nothing
+  Just a  >>= f = f a
+
+instance MonadFail Maybe where
+  fail _ = Nothing
+
+maybe :: forall a r . r -> (a -> r) -> Maybe a -> r
+maybe r _ Nothing = r
+maybe _ f (Just a) = f a
+
+fromMaybe :: forall a . a -> Maybe a -> a
+fromMaybe a Nothing = a
+fromMaybe _ (Just a) = a
+
+catMaybes :: forall a . [Maybe a] -> [a]
+catMaybes mxs = [ x | Just x <- mxs ]
+
+isJust :: forall a . Maybe a -> Bool
+isJust Nothing = False
+isJust (Just _) = True
+
+mapMaybe :: forall a b . (a -> Maybe b) -> [a] -> [b]
+mapMaybe _ [] = []
+mapMaybe f (a:as) =
+  case f a of
+    Nothing -> mapMaybe f as
+    Just b -> b : mapMaybe f as
+
+maybeToList :: forall a . Maybe a -> [a]
+maybeToList Nothing = []
+maybeToList (Just a) = [a]
+
diff --git a/lib/Data/Maybe_Type.hs b/lib/Data/Maybe_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Maybe_Type.hs
@@ -0,0 +1,5 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Maybe_Type(module Data.Maybe_Type) where
+
+data Maybe a = Nothing | Just a
diff --git a/lib/Data/Monoid.hs b/lib/Data/Monoid.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Monoid.hs
@@ -0,0 +1,8 @@
+module Data.Monoid(module Data.Monoid) where
+import Primitives
+import Data.Semigroup
+
+class Semigroup a => Monoid a where
+  mempty :: a
+  mappend :: a -> a -> a
+  mappend = (<>)
diff --git a/lib/Data/Num.hs b/lib/Data/Num.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Num.hs
@@ -0,0 +1,21 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Num(module Data.Num) where
+import Primitives
+import Data.Integer_Type
+
+infixl 6 +,-
+infixl 7 *
+
+class Num a where
+  (+) :: a -> a -> a
+  (-) :: a -> a -> a
+  (*) :: a -> a -> a
+  negate :: a -> a
+  abs :: a -> a
+  signum :: a -> a
+  fromInteger :: Integer -> a
+  negate x = 0 - x
+
+subtract :: forall a . Num a => a -> a -> a
+subtract x y = y - x
diff --git a/lib/Data/Ord.hs b/lib/Data/Ord.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Ord.hs
@@ -0,0 +1,48 @@
+module Data.Ord(
+  module Data.Ord,
+  module Data.Ordering_Type,
+  ) where
+import Primitives
+import Data.Bool_Type
+import Data.Bounded
+import Data.Ordering_Type
+import Data.Eq
+import Text.Show
+
+infix 4 <,<=,>,>=
+
+class Eq a => Ord a where
+  compare :: a -> a -> Ordering
+  (<) :: a -> a -> Bool
+  (<=) :: a -> a -> Bool
+  (>) :: a -> a -> Bool
+  (>=) :: a -> a -> Bool
+  max :: a -> a -> a
+  min :: a -> a -> a
+  -- XXX Check with the Haskell report
+  compare x y = if x <= y then (if y <= x then EQ else LT) else GT
+  x < y   = if y <= x then False else True
+  x > y   = if x <= y then False else True
+  x >= y  = x <= y
+  min x y = if x <= y then x else y
+  max x y = if x <= y then y else x
+
+instance Eq Ordering where
+  LT == LT  =  True
+  EQ == EQ  =  True
+  GT == GT  =  True
+  _  == _   =  False
+
+isEQ :: Ordering -> Bool
+isEQ EQ = True
+isEQ _  = False
+
+instance Show Ordering where
+  showsPrec _ LT = showString "LT"
+  showsPrec _ EQ = showString "EQ"
+  showsPrec _ GT = showString "GT"
+
+instance Bounded Ordering where
+  minBound = LT
+  maxBound = GT
+
diff --git a/lib/Data/Ordering_Type.hs b/lib/Data/Ordering_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Ordering_Type.hs
@@ -0,0 +1,2 @@
+module Data.Ordering_Type(Ordering(..)) where
+data Ordering = LT | EQ | GT
diff --git a/lib/Data/Ratio.hs b/lib/Data/Ratio.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Ratio.hs
@@ -0,0 +1,83 @@
+module Data.Ratio(
+  Ratio, Rational,
+  (%),
+  numerator, denominator,
+  rationalInfinity,
+  rationalNaN,
+  Rational,
+  ) where
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Eq
+import Data.Fractional
+import Data.Function
+--import Data.Int
+import Data.Integer
+import Data.Integral
+import Data.Num
+import Data.Ord
+import Data.Ratio_Type
+import Text.Show
+
+{- in Data.Ratio_Type
+data Ratio a = (:%) a a   -- XXX should be strict
+
+type Rational = Ratio Integer
+-}
+
+instance forall a . Eq a => Eq (Ratio a) where
+  (x :% y) == (x' :% y')  =  x == x' && y == y'
+
+instance forall a . (Integral a, Ord a) => Ord (Ratio a) where
+  (x :% y) <= (x' :% y')  =  x * y' <= x' * y
+  (x :% y) <  (x' :% y')  =  x * y' <  x' * y
+  (x :% y) >= (x' :% y')  =  x * y' >= x' * y
+  (x :% y) >  (x' :% y')  =  x * y' >  x' * y
+
+instance forall a . (Integral a) => Num (Ratio a) where
+  (x:%y) + (x':%y')   =  reduce (x*y' + x'*y) (y*y')
+  (x:%y) - (x':%y')   =  reduce (x*y' - x'*y) (y*y')
+  (x:%y) * (x':%y')   =  reduce (x * x') (y * y')
+  negate (x:%y)       =  (negate x) :% y
+  abs (x:%y)          =  abs x :% y
+  signum (x:%_)       =  signum x :% 1
+  fromInteger x       =  fromInteger x :% 1
+
+instance forall a . (Integral a, Ord a) => Fractional (Ratio a) where
+  (x:%y) / (x':%y')   = (x*y') % (y*x')
+  recip (x:%y)
+    | y == 0        = error "Data.Ratio.recip: division by 0"
+    | x < 0         = negate y :% negate x
+    | otherwise     = y :% x
+  fromRational (x:%y) =  fromInteger x % fromInteger y
+
+instance forall a . (Show a) => Show (Ratio a)  where
+  showsPrec p (x:%y) = showParen (p > 7) $
+                       showsPrec 8 x .
+                       showString " % " .
+                       showsPrec 8 y
+
+rationalInfinity :: Rational
+rationalInfinity = 1 :% 0
+
+rationalNaN :: Rational
+rationalNaN = 0 :% 0
+
+infixl 7 %
+(%) :: forall a . (Integral a) => a -> a -> Ratio a
+x % y = reduce (x * signum y) (abs y)
+
+reduce :: forall a . (Integral a) => a -> a -> Ratio a
+reduce x y =
+  if y == 0 then
+    error "Data.Ratio.%: 0 denominator"
+  else
+    let d = gcd x y
+    in  (x `quot` d) :% (y `quot` d)
+
+numerator :: forall a . Ratio a -> a
+numerator (x :% _) = x
+
+denominator :: forall a . Ratio a -> a
+denominator (_ :% y) = y
diff --git a/lib/Data/Ratio_Type.hs b/lib/Data/Ratio_Type.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Ratio_Type.hs
@@ -0,0 +1,13 @@
+module Data.Ratio_Type(module Data.Ratio_Type) where
+import Primitives
+import Data.Integer_Type
+
+data Ratio a = !a :% !a
+
+type Rational = Ratio Integer
+
+_integerToRational :: Integer -> Rational
+_integerToRational x = x :% (1::Integer)
+
+_mkRational :: Integer -> Integer -> Rational
+_mkRational = (:%)
diff --git a/lib/Data/Real.hs b/lib/Data/Real.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Real.hs
@@ -0,0 +1,6 @@
+module Data.Real(module Data.Real) where
+import Primitives
+import Data.Ratio_Type
+
+class Real a where
+  toRational :: a -> Rational
diff --git a/lib/Data/RealFloat.hs b/lib/Data/RealFloat.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/RealFloat.hs
@@ -0,0 +1,68 @@
+module Data.RealFloat(
+  RealFloat(..),
+  ) where
+import Primitives
+import Data.Bool
+import Data.Eq
+import Data.Floating
+import Data.Fractional
+import Data.Int
+import Data.Integer
+import Data.Num
+import Data.Ord
+
+class (Fractional a, Ord a, Floating a) => RealFloat a  where
+  floatRadix          :: a -> Integer
+  floatDigits         :: a -> Int
+  floatRange          :: a -> (Int,Int)
+  decodeFloat         :: a -> (Integer,Int)
+  encodeFloat         :: Integer -> Int -> a
+  exponent            :: a -> Int
+  significand         :: a -> a
+  scaleFloat          :: Int -> a -> a
+  isNaN               :: a -> Bool
+  isInfinite          :: a -> Bool
+  isDenormalized      :: a -> Bool
+  isNegativeZero      :: a -> Bool
+  isIEEE              :: a -> Bool
+  atan2               :: a -> a -> a
+
+  exponent x          =  if m == 0 then 0 else n + floatDigits x
+                         where (m,n) = decodeFloat x
+
+  significand x       =  encodeFloat m (negate (floatDigits x))
+                         where (m,_) = decodeFloat x
+
+  scaleFloat 0 x      =  x
+  scaleFloat k x
+    | isFix           =  x
+    | otherwise       =  encodeFloat m (n + clamp b k)
+                         where (m,n) = decodeFloat x
+                               (l,h) = floatRange x
+                               d     = floatDigits x
+                               b     = h - l + 4*d
+                               -- n+k may overflow, which would lead
+                               -- to wrong results, hence we clamp the
+                               -- scaling parameter.
+                               -- If n + k would be larger than h,
+                               -- n + clamp b k must be too, similar
+                               -- for smaller than l - d.
+                               -- Add a little extra to keep clear
+                               -- from the boundary cases.
+                               isFix = x == 0 || isNaN x || isInfinite x
+
+  atan2 y x
+    | x > 0            =  atan (y/x)
+    | x == 0 && y > 0  =  pi/2
+    | x <  0 && y > 0  =  pi + atan (y/x)
+    |(x <= 0 && y < 0)            ||
+     (x <  0 && isNegativeZero y) ||
+     (isNegativeZero x && isNegativeZero y)
+                       = negate (atan2 (negate y) x)
+    | y == 0 && (x < 0 || isNegativeZero x)
+                        =  pi    -- must be after the previous test on zero y
+    | x==0 && y==0      =  y     -- must be after the other double zero tests
+    | otherwise         =  x + y -- x or y is a NaN, return a NaN (via +)
+
+clamp :: Int -> Int -> Int
+clamp bd k = max (negate bd) (min bd k)
diff --git a/lib/Data/Semigroup.hs b/lib/Data/Semigroup.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Semigroup.hs
@@ -0,0 +1,6 @@
+module Data.Semigroup(Data.Semigroup) where
+import Primitive
+
+infixr 6 <>
+class Semigroup a where
+  (<>) :: a -> a -> a
diff --git a/lib/Data/Tuple.hs b/lib/Data/Tuple.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Tuple.hs
@@ -0,0 +1,60 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Tuple(
+  module Data.Tuple,
+  ()(..)
+  ) where
+import Primitives  -- for ()
+import Data.Bool
+import Data.Bounded
+import Data.Eq
+import Data.Function
+import Text.Show
+
+--data (a,b) = (a,b)  -- all tuples are built in
+--data (a,b,c) = (a,b,c)
+-- etc
+
+fst :: forall a b . (a, b) -> a
+fst (a, _) = a
+
+snd :: forall a b . (a, b) -> b
+snd (_, b) = b
+
+instance forall a b . (Eq a, Eq b) => Eq (a, b) where
+  (a1, b1) == (a2, b2)  =  a1 == a2 && b1 == b2
+
+instance forall a b c . (Eq a, Eq b, Eq c) => Eq (a, b, c) where
+  (a1, b1, c1) == (a2, b2, c2)  =  a1 == a2 && b1 == b2 && c1 == c2
+
+instance forall a b c d . (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d) where
+  (a1, b1, c1, d1) == (a2, b2, c2, d2)  =  a1 == a2 && b1 == b2 && c1 == c2 && d1 == d2
+
+instance Show () where
+  showsPrec _ () = showString "()"
+
+instance forall a b . (Show a, Show b) => Show (a, b) where
+  showsPrec _ (a, b) = showParen True (showsPrec 0 a . showString "," . showsPrec 0 b)
+
+instance forall a b c . (Show a, Show b, Show c) => Show (a, b, c) where
+  showsPrec _ (a, b, c) = showParen True (showsPrec 0 a . showString "," . showsPrec 0 b . showString "," . showsPrec 0 c)
+
+instance forall a b c d . (Show a, Show b, Show c, Show d) => Show (a, b, c, d) where
+  showsPrec _ (a, b, c, d) = showParen True (showsPrec 0 a . showString "," . showsPrec 0 b . showString "," . showsPrec 0 c .
+                                             showString "," . showsPrec 0 d)
+
+instance Bounded () where
+  minBound = ()
+  maxBound = ()
+
+instance forall a b . (Bounded a, Bounded b) => Bounded (a, b) where
+  minBound = (minBound, minBound)
+  maxBound = (maxBound, maxBound)
+
+instance forall a b c . (Bounded a, Bounded b, Bounded c) => Bounded (a, b, c) where
+  minBound = (minBound, minBound, minBound)
+  maxBound = (maxBound, maxBound, maxBound)
+
+instance forall a b c d . (Bounded a, Bounded b, Bounded c, Bounded d) => Bounded (a, b, c, d) where
+  minBound = (minBound, minBound, minBound, minBound)
+  maxBound = (maxBound, maxBound, maxBound, maxBound)
diff --git a/lib/Data/Word.hs b/lib/Data/Word.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Word.hs
@@ -0,0 +1,99 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Data.Word(module Data.Word, Word) where
+import Primitives
+import Data.Bits
+import Data.Bool_Type
+import Data.Bounded
+import Data.Char
+import Data.Enum
+import Data.Eq
+import Data.Int()  -- instances only
+import Data.Integer
+import Data.Integral
+import Data.List
+import Data.Num
+import Data.Ord
+import Data.Real
+import Text.Show
+
+instance Num Word where
+  (+)  = primWordAdd
+  (-)  = primWordSub
+  (*)  = primWordMul
+  abs x = x
+  signum x = if x == 0 then 0 else 1
+  fromInteger x = primIntToWord (_integerToInt x)
+
+instance Integral Word where
+  quot = primWordQuot
+  rem  = primWordRem
+  toInteger = _wordToInteger
+
+instance Bounded Word where
+  minBound = 0::Word
+  maxBound = (-1::Word)
+
+instance Real Word where
+  toRational i = _integerToRational (_wordToInteger i)
+
+--------------------------------
+
+instance Enum Word where
+  succ x = x + 1
+  pred x = x - 1
+  toEnum = primIntToWord
+  fromEnum = primWordToInt
+  enumFrom n = n : enumFrom (n+1)
+  enumFromThen n m = from n
+    where d = m - n
+          from i = i : from (i+d)
+  enumFromTo l h = takeWhile (<= h) (enumFrom l)
+  enumFromThenTo l m h =
+    if m > l then
+      takeWhile (<= h) (enumFromThen l m)
+    else
+      takeWhile (>= h) (enumFromThen l m)
+
+--------------------------------
+
+instance Eq Word where
+  (==) = primWordEQ
+  (/=) = primWordNE
+
+instance Ord Word where
+  (<)  = primWordLT
+  (<=) = primWordLE
+  (>)  = primWordGT
+  (>=) = primWordGE
+
+instance Enum Word where
+  toEnum = primIntToWord
+  fromEnum = primWordToInt
+
+--------------------------------
+
+instance Bits Word where
+  (.&.) = primWordAnd
+  (.|.) = primWordOr
+  xor   = primWordXor
+  complement = primWordInv
+  shiftL = primWordShl
+  shiftR = primWordShr
+--  bitSizeMaybe _ = Just 64   -- XXX
+  bitSize _ = 64
+  bit n = primWordShl 1 n
+  zeroBits = 0
+
+--------------------------------
+
+instance Show Word where
+  show = showWord
+    where
+      showWord :: Word -> String
+      showWord n =
+        let
+          c = chr (ord '0' + primWordToInt (rem n (10::Word)))
+        in  case n < (10::Word) of
+              False -> showWord (quot n (10::Word)) ++ [c]
+              True  -> [c]
diff --git a/lib/Debug/Trace.hs b/lib/Debug/Trace.hs
new file mode 100644
--- /dev/null
+++ b/lib/Debug/Trace.hs
@@ -0,0 +1,13 @@
+module Debug.Trace(module Debug.Trace) where
+import Prelude
+import Primitives
+
+trace :: forall a . String -> a -> a
+trace msg a = primitive "IO.performIO" (
+  do
+    putStrLn msg
+    return a
+  )
+
+traceM :: forall (m :: Type -> Type) a . Monad m => String -> m ()
+traceM s = trace s (return ())
diff --git a/lib/Foreign/C/String.hs b/lib/Foreign/C/String.hs
new file mode 100644
--- /dev/null
+++ b/lib/Foreign/C/String.hs
@@ -0,0 +1,24 @@
+module Foreign.C.String(
+  CChar, CString,
+  newCAString, withCAString,
+  peekCAString,
+  ) where
+import Primitives
+import Data.Char_Type
+import Foreign.Marshal.Alloc
+
+type CChar = Char
+type CString = Ptr CChar
+
+newCAString :: String -> IO CString
+newCAString = primNewCAString
+
+withCAString :: forall a . String -> (CString -> IO a) -> IO a
+withCAString s io =
+  newCAString s `primBind` \ cs ->
+  io cs `primBind` \ a ->
+  free cs `primThen`
+  primReturn a
+
+peekCAString :: CString -> IO String
+peekCAString = primPeekCAString
diff --git a/lib/Foreign/Marshal/Alloc.hs b/lib/Foreign/Marshal/Alloc.hs
new file mode 100644
--- /dev/null
+++ b/lib/Foreign/Marshal/Alloc.hs
@@ -0,0 +1,15 @@
+module Foreign.Marshal.Alloc(
+  free,
+  mallocBytes,
+  ) where
+import Primitives
+
+foreign import ccall "free" c_free :: forall a . Ptr a -> IO ()
+
+free :: forall a . Ptr a -> IO ()
+free = c_free
+
+foreign import ccall "malloc" c_malloc :: forall a . Int -> IO (Ptr a)
+
+mallocBytes :: forall a . Int -> IO (Ptr a)
+mallocBytes = c_malloc
diff --git a/lib/Foreign/Ptr.hs b/lib/Foreign/Ptr.hs
new file mode 100644
--- /dev/null
+++ b/lib/Foreign/Ptr.hs
@@ -0,0 +1,15 @@
+module Foreign.Ptr(Ptr, nullPtr) where
+import Primitives
+import Data.Word
+import Data.Eq
+import Data.Function
+import Text.Show
+
+instance forall a . Eq (Ptr a) where
+  p == q  =  primPtrToWord p == primPtrToWord q
+
+instance forall a . Show (Ptr a) where
+  showsPrec _ p = showString "PTR#" . showsPrec 0 (primPtrToWord p)
+
+nullPtr :: forall a . Ptr a
+nullPtr = primWordToPtr 0
diff --git a/lib/Prelude.hs b/lib/Prelude.hs
new file mode 100644
--- /dev/null
+++ b/lib/Prelude.hs
@@ -0,0 +1,65 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Prelude(
+  module Control.Applicative,
+  module Control.Error,
+  module Control.Monad,
+  module Data.Bool,
+  module Data.Bounded,
+  module Data.Char,
+  module Data.Double,
+  module Data.Either,
+  module Data.Enum,
+  module Data.Eq,
+  module Data.Floating,
+  module Data.Fractional,
+  module Data.Function,
+  module Data.Functor,
+  module Data.Int,
+  module Data.Integer,
+  module Data.Integral,
+  module Data.List,
+  module Data.Maybe,
+  module Data.Num,
+  module Data.Ord,
+  module Data.Ratio,
+  module Data.Real,
+  module Data.RealFloat,
+  module Data.Tuple,
+  module System.IO,
+  module Text.Show,
+  module Text.String,
+  usingMhs,
+  ) where
+import Control.Applicative
+import Control.Error
+import Control.Monad
+import Data.Bool
+import Data.Bounded
+import Data.Char
+import Data.Double
+import Data.Either
+import Data.Enum
+import Data.Eq
+import Data.Floating
+import Data.Fractional
+import Data.Function
+import Data.Functor
+import Data.Int
+import Data.Integer
+import Data.Integral
+import Data.List
+import Data.Maybe
+import Data.Num
+import Data.Ord
+import Data.Ratio(Rational)
+import Data.Real
+import Data.RealFloat
+import Data.Tuple
+import System.IO
+import Text.Show
+import Text.String
+
+-- So we can detect mhs vs ghc
+usingMhs :: Bool
+usingMhs = True
diff --git a/lib/Primitives.hs b/lib/Primitives.hs
new file mode 100644
--- /dev/null
+++ b/lib/Primitives.hs
@@ -0,0 +1,206 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Primitives(module Primitives) where
+import Data.Bool_Type
+--import Data.List_Type
+import Data.Ordering_Type
+
+infixr -1 ->
+infixr -2 =>
+infix   4 ~
+
+data Any
+data Char
+data Handle
+data Int
+data Double
+data IO a
+data Word
+data Ptr a
+
+-- Type equality as a constraint.
+class a ~ b {-x | a -> b, b -> a-}
+
+data () = ()   -- Parser hacks allows () to be used
+
+primIntAdd :: Int -> Int -> Int
+primIntAdd  = primitive "+"
+primIntSub :: Int -> Int -> Int
+primIntSub  = primitive "-"
+primIntMul :: Int -> Int -> Int
+primIntMul  = primitive "*"
+primIntQuot :: Int -> Int -> Int
+primIntQuot = primitive "quot"
+primIntRem :: Int -> Int -> Int
+primIntRem  = primitive "rem"
+primIntSubR :: Int -> Int -> Int
+primIntSubR = primitive "subtract"
+primIntNeg :: Int -> Int
+primIntNeg = primitive "neg"
+
+primDoubleAdd :: Double -> Double -> Double
+primDoubleAdd  = primitive "fadd"
+primDoubleSub :: Double -> Double -> Double
+primDoubleSub  = primitive "fsub"
+primDoubleMul :: Double -> Double -> Double
+primDoubleMul  = primitive "fmul"
+primDoubleDiv :: Double -> Double -> Double
+primDoubleDiv = primitive "fdiv"
+primDoubleNeg :: Double -> Double
+primDoubleNeg = primitive "fneg"
+primDoubleEQ :: Double -> Double -> Bool
+primDoubleEQ = primitive "feq"
+primDoubleNE :: Double -> Double -> Bool
+primDoubleNE = primitive "fne"
+primDoubleLT :: Double -> Double -> Bool
+primDoubleLT = primitive "flt"
+primDoubleLE :: Double -> Double -> Bool
+primDoubleLE = primitive "fle"
+primDoubleGT :: Double -> Double -> Bool
+primDoubleGT = primitive "fgt"
+primDoubleGE :: Double -> Double -> Bool
+primDoubleGE = primitive "fge"
+primDoubleShow :: Double -> [Char]
+primDoubleShow = primitive "fshow"
+primDoubleRead :: [Char] -> Double
+primDoubleRead = primitive "fread"
+primDoubleFromInt :: Int -> Double
+primDoubleFromInt = primitive "itof"
+
+primWordAdd :: Word -> Word -> Word
+primWordAdd  = primitive "+"
+primWordSub :: Word -> Word -> Word
+primWordSub  = primitive "-"
+primWordMul :: Word -> Word -> Word
+primWordMul  = primitive "*"
+primWordQuot :: Word -> Word -> Word
+primWordQuot = primitive "uquot"
+primWordRem :: Word -> Word -> Word
+primWordRem  = primitive "urem"
+primWordAnd :: Word -> Word -> Word
+primWordAnd  = primitive "and"
+primWordOr :: Word -> Word -> Word
+primWordOr  = primitive "or"
+primWordXor :: Word -> Word -> Word
+primWordXor  = primitive "xor"
+primWordShl :: Word -> Int -> Word
+primWordShl  = primitive "shl"
+primWordShr :: Word -> Int -> Word
+primWordShr  = primitive "shr"
+primWordAshr :: Word -> Int -> Word
+primWordAshr  = primitive "ashr"
+primWordInv :: Word -> Word
+primWordInv  = primitive "inv"
+primWordToDoubleRaw :: Word -> Double
+primWordToDoubleRaw = primitive "toDbl"
+primWordFromDoubleRaw :: Double -> Word
+primWordFromDoubleRaw = primitive "toInt"
+
+primIntEQ   :: Int -> Int -> Bool
+primIntEQ   = primitive "=="
+primIntNE   :: Int -> Int -> Bool
+primIntNE   = primitive "/="
+primIntLT   :: Int -> Int -> Bool
+primIntLT   = primitive "<"
+primIntLE   :: Int -> Int -> Bool
+primIntLE   = primitive "<="
+primIntGT   :: Int -> Int -> Bool
+primIntGT   = primitive ">"
+primIntGE   :: Int -> Int -> Bool
+primIntGE   = primitive ">="
+
+primWordEQ  :: Word -> Word -> Bool
+primWordEQ  = primitive "=="
+primWordNE  :: Word -> Word -> Bool
+primWordNE  = primitive "/="
+primWordLT  :: Word -> Word -> Bool
+primWordLT  = primitive "u<"
+primWordLE   :: Word -> Word -> Bool
+primWordLE   = primitive "<="
+primWordGT   :: Word -> Word -> Bool
+primWordGT   = primitive ">"
+primWordGE   :: Word -> Word -> Bool
+primWordGE   = primitive ">="
+
+primWordToInt :: Word -> Int
+primWordToInt = primitive "I"
+primIntToWord :: Int -> Word
+primIntToWord = primitive "I"
+
+primCharEQ :: Char -> Char -> Bool
+primCharEQ  = primitive "=="
+primCharNE :: Char -> Char -> Bool
+primCharNE  = primitive "/="
+primCharLT :: Char -> Char -> Bool
+primCharLT  = primitive "<"
+primCharLE :: Char -> Char -> Bool
+primCharLE  = primitive "<="
+primCharGT :: Char -> Char -> Bool
+primCharGT  = primitive ">"
+primCharGE :: Char -> Char -> Bool
+primCharGE  = primitive ">="
+
+primError  :: forall a . [Char] -> a
+primError  = primitive "error"
+
+primFix    :: forall a . (a -> a) -> a
+primFix    = primitive "Y"
+
+primSeq    :: forall a b . a -> b -> b
+primSeq    = primitive "seq"
+
+--primEqual  :: forall a . a -> a -> Bool
+--primEqual  = primitive "equal"
+
+-- Works for Int, Char, String
+primCompare :: forall a . a -> a -> Ordering
+primCompare  = primitive "compare"
+
+primStringEQ  :: [Char] -> [Char] -> Bool
+primStringEQ  = primitive "equal"
+
+primChr :: Int -> Char
+primChr = primitive "I"
+primOrd :: Char -> Int
+primOrd = primitive "I"
+
+primUnsafeCoerce :: forall a b . a -> b
+primUnsafeCoerce = primitive "I"
+
+primBind         :: forall a b . IO a -> (a -> IO b) -> IO b
+primBind          = primitive "IO.>>="
+primThen         :: forall a b . IO a -> IO b -> IO b
+primThen          = primitive "IO.>>"
+primReturn       :: forall a . a -> IO a
+primReturn        = primitive "IO.return"
+primGetArgs      :: IO [[Char]]
+primGetArgs       = primitive "IO.getArgs"
+primDropArgs     :: Int -> IO ()
+primDropArgs      = primitive "IO.dropArgs"
+primPerformIO    :: forall a . IO a -> a
+primPerformIO     = primitive "IO.performIO"
+
+primWithDropArgs :: forall a . Int -> IO a -> IO a
+primWithDropArgs i ioa = primThen (primDropArgs i) ioa
+
+-- Use string for the exception until we can do better.
+primCatch        :: forall a . IO a -> ([Char] -> IO a) -> IO a
+primCatch         = primitive "IO.catch"
+
+primRnfErr       :: forall a . a -> ()
+primRnfErr        = primitive "rnf" (0::Int)
+
+primRnfNoErr     :: forall a . a -> ()
+primRnfNoErr      = primitive "rnf" (1::Int)
+
+primNewCAString :: [Char] -> IO (Ptr Char)
+primNewCAString = primitive "newCAString"
+
+primPeekCAString :: Ptr Char -> IO [Char]
+primPeekCAString = primitive "peekCAString"
+
+primWordToPtr :: forall a . Word -> Ptr a
+primWordToPtr = primitive "toPtr"
+
+primPtrToWord :: forall a . Ptr a -> Word
+primPtrToWord = primitive "toInt"
diff --git a/lib/System/Console/SimpleReadline.hs b/lib/System/Console/SimpleReadline.hs
new file mode 100644
--- /dev/null
+++ b/lib/System/Console/SimpleReadline.hs
@@ -0,0 +1,174 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+--
+-- Simple readline with line editing and history.
+-- Only assumes the terminal is capable of (sane) backspace.
+module System.Console.SimpleReadline(
+  getInputLine,
+  getInputLineHist
+  ) where
+import Prelude
+import Control.Monad
+import Data.Char
+import System.IO
+--Ximport Compat
+
+foreign import ccall "getRaw" c_getRaw :: IO Int
+
+
+-- Get an input line with editing.
+-- Return Nothing if the input is ^D, otherwise the typed string.
+getInputLine :: String -> IO (Maybe String)
+getInputLine prompt = do
+  (_, r) <- loop ([],[]) "" ""
+  return r
+
+
+-- Get an input line with editing.
+-- Return Nothing if the input is ^D, otherwise the typed string.
+-- The FilePath gives the name of a file that stores the history.
+getInputLineHist :: FilePath -> String -> IO (Maybe String)
+getInputLineHist hfn prompt = do
+  mhdl <- openFileM hfn ReadMode
+  hist <-
+    case mhdl of
+      Nothing -> return []
+      Just hdl -> do
+        file <- hGetContents hdl
+        let h = lines file
+        seq (length h) (return h)   -- force file to be read
+  putStr prompt
+  (hist', r) <- loop (reverse hist, []) "" ""
+--  putStrLn $ "done: " ++ hfn ++ "\n" ++ unlines hist'
+  writeFile hfn $ unlines hist'
+  return r   -- XXX no type error
+
+getRaw :: IO Int
+getRaw = do
+  i <- c_getRaw
+  when (i < 0) $
+    error "getRaw failed"
+  return i
+
+type Hist = ([String], [String])
+
+loop :: Hist -> String -> String -> IO ([String], Maybe String)
+loop hist before after = do
+  hFlush stdout
+  i <- getRaw
+  let
+    cur = reverse before ++ after
+    back n = putStr (replicate n '\b')
+
+    add c = do
+      putChar c
+      putStr after
+      back (length after)
+      loop hist (c:before) after
+    backward =
+      case before of
+        [] -> noop
+        c:cs -> do
+          back 1
+          loop hist cs (c:after)
+    forward =
+      case after of
+        [] -> noop
+        c:cs -> do
+          putChar c
+          loop hist (c:before) cs
+    bol = do
+      back (length before)
+      loop hist "" (reverse before ++ after)
+    eol = do
+      putStr after
+      loop hist (reverse after ++ before) ""
+    bs = do
+      case before of
+        [] -> noop
+        _:cs -> do
+          back 1
+          putStr after
+          putChar ' '
+          back (length after + 1)
+          loop hist cs after
+    del = do
+      case after of
+        [] -> noop
+        _:cs -> do
+          putStr cs
+          putChar ' '
+          back (length cs + 1)
+          loop hist before cs
+    send =
+      ret (Just cur)
+    ret ms = do
+      putChar '\n'
+      hFlush stdout
+      let
+        o = reverse (fst hist) ++ snd hist
+        l =
+          case ms of
+            Nothing -> []
+            Just "" -> []
+            Just s  | not (null o) && s == last o -> []
+                    | otherwise -> [s]
+        h = o ++ l
+      return (h, ms)
+    erase = do
+      eraseLine
+      loop hist "" ""
+    noop = loop hist before after
+    kill = do
+      putStr after
+      putStr $ concat $ replicate (length after) "\b \b"
+      loop hist before ""
+
+    next =
+      case hist of
+        (_, []) -> noop
+        (p, l:n) -> setLine (l:p, n) l
+    previous =
+      case hist of
+        ([], _) -> noop
+        (l:p, n) -> setLine (p, l:n) l
+    setLine h s = do
+      eraseLine
+      putStr s
+      loop h (reverse s) ""
+
+    eraseLine = do
+      putStr after
+      putStr $ concat $ replicate (length before + length after) "\b \b"
+
+  case i of
+    4 ->                     -- CTL-D, EOF
+      if null before && null after then
+        ret Nothing
+      else
+        del
+    2  -> backward           -- CTL-B, backwards
+    6  -> forward            -- CTL-F, forwards
+    1  -> bol                -- CTL-A, beginning of line
+    5  -> eol                -- CTL-E, end of line
+    8  -> bs                 -- BS, backspace
+    127 -> bs                -- DEL, backspace
+    13 -> send               -- CR, return
+    10 -> send               -- LF, return
+    14 -> next               -- CTL-N, next line
+    15 -> previous           -- CTL-P, previous line
+    21 -> erase              -- CTL-U, erase line
+    11 -> kill               -- CTL-K, kill to eol
+    27 -> do                 -- ESC
+      b <- getRaw
+      if b /= ord '[' then
+        noop
+       else do
+        c <- getRaw
+        case chr c of
+          'A' -> previous
+          'B' -> next
+          'C' -> forward
+          'D' -> backward
+          _ -> noop
+    _ -> if i >= 32 && i < 127 then add (chr i) else noop
diff --git a/lib/System/Directory.hs b/lib/System/Directory.hs
new file mode 100644
--- /dev/null
+++ b/lib/System/Directory.hs
@@ -0,0 +1,12 @@
+module System.Directory(removeFile) where
+import Prelude
+import Foreign.C.String
+import Foreign.Ptr
+
+foreign import ccall "unlink" c_unlink :: CString -> IO Int
+
+removeFile :: FilePath -> IO ()
+removeFile fn = do
+  r <- withCAString fn c_unlink
+  when (r /= 0) $
+    error "removeFile failed"
diff --git a/lib/System/Environment.hs b/lib/System/Environment.hs
new file mode 100644
--- /dev/null
+++ b/lib/System/Environment.hs
@@ -0,0 +1,23 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module System.Environment(module System.Environment) where
+import Prelude
+import Primitives
+import Foreign.C.String
+import Foreign.Ptr
+
+getArgs :: IO [String]
+getArgs = primGetArgs
+
+withDropArgs :: forall a . Int -> IO a -> IO a
+withDropArgs = primWithDropArgs
+
+foreign import ccall "getenv" c_getenv :: CString -> IO CString
+
+lookupEnv :: String -> IO (Maybe String)
+lookupEnv var = do
+  cptr <- withCAString var c_getenv
+  if cptr == nullPtr then
+    return Nothing
+   else
+    Just <$> peekCAString cptr
diff --git a/lib/System/IO.hs b/lib/System/IO.hs
new file mode 100644
--- /dev/null
+++ b/lib/System/IO.hs
@@ -0,0 +1,236 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module System.IO(
+  module System.IO, Handle, IO,
+  module Data.Functor,
+  module Control.Applicative,
+  module Control.Monad,
+  ) where
+import Primitives
+import Control.Applicative
+import Control.Error
+import Control.Monad
+import Data.Bool
+import Data.Char
+import Data.Eq
+import Data.Function
+import Data.Functor
+import Data.Int
+import Data.List
+import Data.Maybe
+import Data.Num
+import Data.Tuple
+import Text.Show
+import Foreign.C.String
+import Foreign.Marshal.Alloc
+import Foreign.Ptr
+
+data FILE
+newtype Handle = Handle (Ptr FILE)
+
+primHSerialize   :: forall a . Handle -> a -> IO ()
+primHSerialize    = primitive "IO.serialize"
+primHPrint       :: forall a . Handle -> a -> IO ()
+primHPrint        = primitive "IO.print"
+primHDeserialize :: forall a . Handle -> IO a
+primHDeserialize  = primitive "IO.deserialize"
+primStdin        :: Handle
+primStdin         = primitive "IO.stdin"
+primStdout       :: Handle
+primStdout        = primitive "IO.stdout"
+primStderr       :: Handle
+primStderr        = primitive "IO.stderr"
+
+foreign import ccall "fopen"        c_fopen        :: CString -> CString -> IO Handle
+foreign import ccall "fclose"       c_fclose       :: Handle             -> IO Int
+foreign import ccall "fflush"       c_fflush       :: Handle             -> IO Int
+foreign import ccall "fgetc"        c_fgetc        :: Handle             -> IO Int
+foreign import ccall "fputc"        c_fputc        :: Int ->     Handle  -> IO Int
+foreign import ccall "getTimeMilli" c_getTimeMilli ::                       IO Int
+
+----------------------------------------------------------
+
+instance Eq Handle where
+  Handle p == Handle q  =  p == q
+
+instance Show Handle where
+  show (Handle p) = "Handle-" ++ show p
+
+nullHandle :: Handle
+nullHandle = Handle nullPtr
+
+type FilePath = String
+
+data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteMode
+
+instance Functor IO where
+  fmap f ioa   = ioa `primBind` \ a -> primReturn (f a)
+instance Applicative IO where
+  pure         = primReturn
+  (<*>)        = ap
+instance Monad IO where
+  (>>=)        = primBind
+  (>>)         = primThen
+  return       = primReturn
+instance MonadFail IO where
+  fail         = error
+
+hSerialize   :: forall a . Handle -> a -> IO ()
+hSerialize   = primHSerialize
+
+hDeserialize :: forall a . Handle -> IO a
+hDeserialize = primHDeserialize
+
+stdin        :: Handle
+stdin        = primStdin
+stdout       :: Handle
+stdout       = primStdout
+stderr       :: Handle
+stderr       = primStderr
+
+hClose       :: Handle -> IO ()
+hClose h     = do { c_fclose h; return () }  -- ignore error code
+
+hFlush       :: Handle -> IO ()
+hFlush h     = do { c_fflush h; return () }  -- ignore error code
+
+hGetChar :: Handle -> IO Char
+hGetChar h = do
+  c <- c_fgetc h
+  if c == (-1::Int) then
+    error "hGetChar: EOF"
+   else
+    return (chr c)
+
+hPutChar :: Handle -> Char -> IO ()
+hPutChar h c = do { c_fputc (ord c) h; return () }  -- ignore error code
+
+openFileM :: FilePath -> IOMode -> IO (Maybe Handle)
+openFileM p m = do
+  let
+    ms = case m of
+          ReadMode -> "r"
+          WriteMode -> "w"
+          AppendMode -> "a"
+          ReadWriteMode -> "w+"
+  h <- withCAString p $ \cp -> withCAString ms $ \ cm -> c_fopen cp cm
+  if h == nullHandle then
+    return Nothing
+   else
+    return (Just h)
+
+openFile :: String -> IOMode -> IO Handle
+openFile p m = do
+  mh <- openFileM p m
+  case mh of
+    Nothing -> error ("openFile: cannot open " ++ p)
+    Just h -> return h
+
+putChar :: Char -> IO ()
+putChar = hPutChar stdout
+
+getChar :: IO Char
+getChar = hGetChar stdin
+
+cprint :: forall a . a -> IO ()
+cprint a = primRnfNoErr a `seq` primHPrint stdout a
+
+cuprint :: forall a . a -> IO ()
+cuprint = primHPrint stdout
+
+print :: forall a . (Show a) => a -> IO ()
+print a = putStrLn (show a)
+
+putStr :: String -> IO ()
+putStr = hPutStr stdout
+
+hPutStr :: Handle -> String -> IO ()
+hPutStr h = mapM_ (hPutChar h)
+
+putStrLn :: String -> IO ()
+putStrLn = hPutStrLn stdout
+
+hPutStrLn :: Handle -> String -> IO ()
+hPutStrLn h s = hPutStr h s >> hPutChar h '\n'
+
+writeFile :: FilePath -> String -> IO ()
+writeFile p s = do
+  h <- openFile p WriteMode
+  hPutStr h s
+  hClose h
+
+-- Lazy readFile
+readFile :: FilePath -> IO String
+readFile p = do
+  h <- openFile p ReadMode
+  cs <- hGetContents h
+  --hClose h  can't close with lazy hGetContents
+  return cs
+
+-- Lazy hGetContents
+hGetContents :: Handle -> IO String
+hGetContents h = do
+  c <- c_fgetc h
+  if c == (-1::Int) then do
+    hClose h   -- EOF, so close the handle
+    return ""
+   else do
+    cs <- unsafeInterleaveIO (hGetContents h)
+    return (chr c : cs)
+  
+writeSerialized :: forall a . FilePath -> a -> IO ()
+writeSerialized p s = do
+  h <- openFile p WriteMode
+  hSerialize h s
+  hClose h
+
+readSerialized :: forall a . FilePath -> IO a
+readSerialized p = do
+  h <- openFile p ReadMode
+  a <- hDeserialize h
+  hClose h
+  return a
+
+getTimeMilli :: IO Int
+getTimeMilli = c_getTimeMilli
+
+unsafeInterleaveIO :: forall a . IO a -> IO a
+unsafeInterleaveIO ioa = return (primPerformIO ioa)
+
+seq :: forall a b . a -> b -> b
+seq = primSeq
+
+-- MicroHs is always in binary mode
+hSetBinaryMode :: Handle -> Bool -> IO ()
+hSetBinaryMode _ _ = return ()
+
+--------
+
+-- Create a temporary file, take a prefix and a suffix
+-- and returns a malloc()ed string.
+foreign import ccall "tmpname" c_tmpname :: CString -> CString -> IO CString
+
+-- Create and open a temporary file.
+openTmpFile :: String -> IO (String, Handle)
+openTmpFile tmpl = do
+  let (pre, suf) =
+        case span (/= '.') (reverse tmpl) of
+          (rsuf, "") -> (tmpl, "")
+          (rsuf, _:rpre) -> (reverse rpre, '.':reverse rsuf)
+  ctmp <- withCAString pre $ withCAString suf . c_tmpname
+  tmp <- peekCAString ctmp
+  free ctmp
+  h <- openFile tmp WriteMode
+  return (tmp, h)
+
+--------
+
+-- Helper for interactive system
+class PrintOrRun a where
+  printOrRun :: a -> IO ()
+
+instance PrintOrRun (IO ()) where
+  printOrRun a = a
+
+instance forall a . Show a => PrintOrRun a where
+  printOrRun a = putStrLn (show a)
diff --git a/lib/System/Process.hs b/lib/System/Process.hs
new file mode 100644
--- /dev/null
+++ b/lib/System/Process.hs
@@ -0,0 +1,11 @@
+module System.Process(callCommand) where
+import Prelude
+import Foreign.C.String
+
+foreign import ccall "system" systemc :: CString -> IO Int
+
+callCommand :: String -> IO ()
+callCommand cmd = do
+  r <- withCAString cmd systemc
+  when (r /= 0) $
+    error $ "callCommand: failed " ++ show r
diff --git a/lib/Text/PrettyPrint/HughesPJ.hs b/lib/Text/PrettyPrint/HughesPJ.hs
new file mode 100644
--- /dev/null
+++ b/lib/Text/PrettyPrint/HughesPJ.hs
@@ -0,0 +1,368 @@
+--  Based on the pretty-printer outlined in the paper
+-- 'The Design of a Pretty-printing Library' by
+-- John Hughes in Advanced Functional Programming, 1995.
+-- With inspiration and code from the from the Hackage package pretty.
+module Text.PrettyPrint.HughesPJ(
+  Doc,
+  text, empty,
+  (<>), (<+>), ($$), ($+$),
+  hcat, hsep,
+  vcat,
+  sep, cat,
+  nest, hang,
+  punctuate,
+  parens, brackets, braces,
+  maybeParens,
+  Style,
+  render, renderStyle,
+  ) where
+import Prelude
+
+infixl 6 <>, <+>
+infixl 5 $$, $+$
+
+data Doc
+  = Empty                                            -- ^ An empty span, see 'empty'.
+  | NilAbove Doc                                     -- ^ @text "" $$ x@.
+  | TextBeside String Doc                            -- ^ @text s <> x@.
+  | Nest Int Doc                                     -- ^ @nest k x@.
+  | Union Doc Doc                                    -- ^ @ul `union` ur@.
+  | NoDoc                                            -- ^ The empty set of documents.
+  | Beside Doc Bool Doc                              -- ^ True <=> space between.
+  | Above Doc Bool Doc                               -- ^ True <=> never overlap.
+
+type RDoc = Doc
+
+text :: String -> Doc
+text s = TextBeside s Empty
+
+empty :: Doc
+empty = Empty
+
+reduceDoc :: Doc -> RDoc
+reduceDoc (Beside p g q) = beside p g (reduceDoc q)
+reduceDoc (Above  p g q) = above  p g (reduceDoc q)
+reduceDoc p              = p
+
+hcat :: [Doc] -> Doc
+hcat = snd . reduceHoriz . foldr (\p q -> Beside p False q) empty
+
+hsep :: [Doc] -> Doc
+hsep = snd . reduceHoriz . foldr (\p q -> Beside p True q)  empty
+
+vcat :: [Doc] -> Doc
+vcat = snd . reduceVert . foldr (\p q -> Above p False q) empty
+
+nest :: Int -> Doc -> Doc
+nest k p = mkNest k (reduceDoc p)
+
+-- | @hang d1 n d2 = sep [d1, nest n d2]@
+hang :: Doc -> Int -> Doc -> Doc
+hang d1 n d2 = sep [d1, nest n d2]
+
+punctuate :: Doc -> [Doc] -> [Doc]
+punctuate _ []     = []
+punctuate p (x:xs) = go x xs
+                   where go y []     = [y]
+                         go y (z:zs) = (y <> p) : go z zs
+
+maybeParens :: Bool -> Doc -> Doc
+maybeParens False = id
+maybeParens True = parens
+
+parens :: Doc -> Doc
+parens p = text "(" <> p <> text ")"
+braces :: Doc -> Doc
+braces p = text "{" <> p <> text "}"
+brackets :: Doc -> Doc
+brackets p = text "[" <> p <> text "]"
+
+-- mkNest checks for Nest's invariant that it doesn't have an Empty inside it
+mkNest :: Int -> Doc -> Doc
+mkNest k _ | k `seq` False = undefined
+mkNest k (Nest k1 p)       = mkNest (k + k1) p
+mkNest _ NoDoc             = NoDoc
+mkNest _ Empty             = Empty
+mkNest 0 p                 = p
+mkNest k p                 = nest_ k p
+
+-- mkUnion checks for an empty document
+mkUnion :: Doc -> Doc -> Doc
+mkUnion Empty _ = Empty
+mkUnion p q     = p `union_` q
+
+data IsEmpty = IsEmpty | NotEmpty
+
+reduceHoriz :: Doc -> (IsEmpty, Doc)
+reduceHoriz (Beside p g q) = eliminateEmpty Beside (snd (reduceHoriz p)) g (reduceHoriz q)
+reduceHoriz doc            = (NotEmpty, doc)
+
+reduceVert :: Doc -> (IsEmpty, Doc)
+reduceVert (Above  p g q) = eliminateEmpty Above  (snd (reduceVert p)) g (reduceVert q)
+reduceVert doc            = (NotEmpty, doc)
+
+eliminateEmpty ::
+  (Doc -> Bool -> Doc -> Doc) ->
+  Doc -> Bool -> (IsEmpty, Doc) -> (IsEmpty, Doc)
+eliminateEmpty _    Empty _ q          = q
+eliminateEmpty cons p     g q          =
+  (NotEmpty,
+   case q of
+     (NotEmpty, q') -> cons p g q'
+     (IsEmpty, _) -> p
+  )
+
+nilAbove_ :: RDoc -> RDoc
+nilAbove_ = NilAbove
+
+-- | Arg of a TextBeside is always an RDoc.
+textBeside_ :: String -> RDoc -> RDoc
+textBeside_  = TextBeside
+
+nest_ :: Int -> RDoc -> RDoc
+nest_ = Nest
+
+union_ :: RDoc -> RDoc -> RDoc
+union_ = Union
+
+($$) :: Doc -> Doc -> Doc
+p $$  q = above_ p False q
+
+-- | Above, with no overlapping.
+-- '$+$' is associative, with identity 'empty'.
+($+$) :: Doc -> Doc -> Doc
+p $+$ q = above_ p True q
+
+above_ :: Doc -> Bool -> Doc -> Doc
+above_ p _ Empty = p
+above_ Empty _ q = q
+above_ p g q     = Above p g q
+
+above :: Doc -> Bool -> RDoc -> RDoc
+above (Above p g1 q1)  g2 q2 = above p g1 (above q1 g2 q2)
+above p@(Beside _ _ _) g  q  = aboveNest (reduceDoc p) g 0 (reduceDoc q)
+above p g q                  = aboveNest p             g 0 (reduceDoc q)
+
+-- Specfication: aboveNest p g k q = p $g$ (nest k q)
+aboveNest :: RDoc -> Bool -> Int -> RDoc -> RDoc
+aboveNest _                   _ k _ | k `seq` False = undefined
+aboveNest NoDoc               _ _ _ = NoDoc
+aboveNest (p1 `Union` p2)     g k q = aboveNest p1 g k q `union_`
+                                      aboveNest p2 g k q
+
+aboveNest Empty               _ k q = mkNest k q
+aboveNest (Nest k1 p)         g k q = nest_ k1 (aboveNest p g (k - k1) q)
+                                  -- p can't be Empty, so no need for mkNest
+
+aboveNest (NilAbove p)        g k q = nilAbove_ (aboveNest p g k q)
+aboveNest (TextBeside s p)    g k q = TextBeside s rest
+                                    where
+                                      k1  = k - length s
+                                      rest = case p of
+                                                Empty -> nilAboveNest g k1 q
+                                                _     -> aboveNest  p g k1 q
+
+aboveNest (Above  _ _ _)      _ _ _ = error "aboveNest Above"
+aboveNest (Beside _ _ _)      _ _ _ = error "aboveNest Beside"
+
+-- Specification: text s <> nilaboveNest g k q
+--              = text s <> (text "" $g$ nest k q)
+nilAboveNest :: Bool -> Int -> RDoc -> RDoc
+nilAboveNest _ k _           | k `seq` False = undefined
+nilAboveNest _ _ Empty       = Empty
+                               -- Here's why the "text s <>" is in the spec!
+nilAboveNest g k (Nest k1 q) = nilAboveNest g (k + k1) q
+nilAboveNest g k q           | not g && k > 0      -- No newline if no overlap
+                             = textBeside_ (replicate k ' ') q
+                             | otherwise           -- Put them really above
+                             = nilAbove_ (mkNest k q)
+
+(<>) :: Doc -> Doc -> Doc
+p <>  q = beside_ p False q
+
+-- | Beside, separated by space, unless one of the arguments is 'empty'.
+-- '<+>' is associative, with identity 'empty'.
+(<+>) :: Doc -> Doc -> Doc
+p <+> q = beside_ p True  q
+
+beside_ :: Doc -> Bool -> Doc -> Doc
+beside_ p _ Empty = p
+beside_ Empty _ q = q
+beside_ p g q     = Beside p g q
+
+-- Specification: beside g p q = p <g> q
+beside :: Doc -> Bool -> RDoc -> RDoc
+beside NoDoc               _ _   = NoDoc
+beside (p1 `Union` p2)     g q   = beside p1 g q `union_` beside p2 g q
+beside Empty               _ q   = q
+beside (Nest k p)          g q   = nest_ k $! beside p g q
+beside p@(Beside p1 g1 q1) g2 q2
+         | g1 == g2              = beside p1 g1 $! beside q1 g2 q2
+         | otherwise             = beside (reduceDoc p) g2 q2
+beside p@(Above _ _ _)     g q   = let { d = reduceDoc p } in beside d g q
+beside (NilAbove p)        g q   = nilAbove_ $! beside p g q
+beside (TextBeside t p)    g q   = TextBeside t rest
+                               where
+                                  rest = case p of
+                                           Empty -> nilBeside g q
+                                           _     -> beside p g q
+
+-- Specification: text "" <> nilBeside g p
+--              = text "" <g> p
+nilBeside :: Bool -> RDoc -> RDoc
+nilBeside _ Empty         = Empty -- Hence the text "" in the spec
+nilBeside g (Nest _ p)    = nilBeside g p
+nilBeside g p | g         = textBeside_ " " p
+              | otherwise = p
+
+sep  :: [Doc] -> Doc
+sep = sepX True   -- Separate with spaces
+
+-- | Either 'hcat' or 'vcat'.
+cat :: [Doc] -> Doc
+cat = sepX False  -- Don't
+
+sepX :: Bool -> [Doc] -> Doc
+sepX _ []     = empty
+sepX x (p:ps) = sep1 x (reduceDoc p) 0 ps
+
+
+-- Specification: sep1 g k ys = sep (x : map (nest k) ys)
+--                            = oneLiner (x <g> nest k (hsep ys))
+--                              `union` x $$ nest k (vcat ys)
+sep1 :: Bool -> RDoc -> Int -> [Doc] -> RDoc
+sep1 _ _                   k _  | k `seq` False = undefined
+sep1 _ NoDoc               _ _  = NoDoc
+sep1 g (p `Union` q)       k ys = sep1 g p k ys `union_`
+                                  aboveNest q False k (reduceDoc (vcat ys))
+
+sep1 g Empty               k ys = mkNest k (sepX g ys)
+sep1 g (Nest n p)          k ys = nest_ n (sep1 g p (k - n) ys)
+
+sep1 _ (NilAbove p)        k ys = nilAbove_
+                                  (aboveNest p False k (reduceDoc (vcat ys)))
+sep1 g (TextBeside s p) k ys    = textBeside_ s (sepNB g p (k - length s) ys)
+sep1 _ (Above _ _ _)       _ _  = error "sep1 Above"
+sep1 _ (Beside _ _ _)      _ _  = error "sep1 Beside"
+
+sepNB :: Bool -> Doc -> Int -> [Doc] -> Doc
+sepNB g (Nest _ p) k ys
+  = sepNB g p k ys
+sepNB g Empty k ys
+  = oneLiner (nilBeside g (reduceDoc rest)) `mkUnion`
+    nilAboveNest False k (reduceDoc (vcat ys))
+  where
+    rest | g         = hsep ys
+         | otherwise = hcat ys
+sepNB g p k ys
+  = sep1 g p k ys
+
+oneLiner :: Doc -> Doc
+oneLiner NoDoc               = NoDoc
+oneLiner Empty               = Empty
+oneLiner (NilAbove _)        = NoDoc
+oneLiner (TextBeside s p)    = textBeside_ s (oneLiner p)
+oneLiner (Nest k p)          = nest_ k (oneLiner p)
+oneLiner (p `Union` _)       = oneLiner p
+oneLiner (Above _ _ _)       = error "oneLiner Above"
+oneLiner (Beside _ _ _)      = error "oneLiner Beside"
+
+-- ---------------------------------------------------------------------------
+-- Rendering
+
+-- | A rendering style. Allows us to specify constraints to choose among the
+-- many different rendering options.
+data Style = Style Int Rat
+lineLength :: Style -> Int
+lineLength (Style l _) = l
+ribbonsPerLine :: Style -> Rat
+ribbonsPerLine (Style _ r) = r
+
+type Rat = (Int, Int)
+
+style :: Style
+style = Style 100 (3, 2)
+
+-- | Render the @Doc@ to a String using the default @Style@ (see 'style').
+render :: Doc -> String
+render = renderStyle style
+
+-- | Render the @Doc@ to a String using the given @Style@.
+renderStyle :: Style -> Doc -> String
+renderStyle s = fullRender (lineLength s) (ribbonsPerLine s) ""
+
+-- | The general rendering interface. Please refer to the @Style@ and @Mode@
+-- types for a description of rendering mode, line length and ribbons.
+fullRender :: Int                     -- ^ Line length.
+           -> Rat                     -- ^ Ribbons per line.
+           -> String                  -- ^ What to do at the end.
+           -> Doc                     -- ^ The document.
+           -> String                  -- ^ Result.
+fullRender lineLen (num, den) rest doc
+  = display lineLen ribbonLen rest doc'
+  where
+    doc' = best bestLineLen ribbonLen (reduceDoc doc)
+
+    ribbonLen   = (lineLen * den) `quot` num
+    bestLineLen = lineLen
+                    
+display :: Int -> Int -> String -> Doc -> String
+display _page_width _ribbon_width end doc
+  = let lay :: Int -> Doc -> String
+        lay k (Nest k1 p)  = lay (k + k1) p
+        lay _ Empty        = end
+        lay k (NilAbove p) = "\n" ++ lay k p
+        lay k (TextBeside s p) = lay1 k s p
+        lay _ _            = error "display lay"
+
+        lay1 k s p        = let r = k + length s
+                            in replicate k ' ' ++ (s ++ lay2 r p)
+
+        lay2 :: Int -> Doc -> String
+        lay2 k (NilAbove p)        = "\n" ++ lay k p
+        lay2 k (TextBeside s p)    = s ++ lay2 (k + length s) p
+        lay2 k (Nest _ p)          = lay2 k p
+        lay2 _ Empty               = end
+        lay2 _ _                   = error "display lay2"
+    in  lay 0 doc
+
+best :: Int   -- Line length.
+     -> Int   -- Ribbon length.
+     -> RDoc
+     -> RDoc  -- No unions in here!.
+best w0 r = get w0
+  where
+    get _ Empty               = Empty
+    get _ NoDoc               = NoDoc
+    get w (NilAbove p)        = nilAbove_ (get w p)
+    get w (TextBeside s p)    = textBeside_ s (get1 w (length s) p)
+    get w (Nest k p)          = nest_ k (get (w - k) p)
+    get w (p `Union` q)       = nicest w r (get w p) (get w q)
+    get _ _                   = error "best get"
+
+    get1 _ _  Empty               = Empty
+    get1 _ _  NoDoc               = NoDoc
+    get1 w sl (NilAbove p)        = nilAbove_ (get (w - sl) p)
+    get1 w sl (TextBeside s p)    = textBeside_ s (get1 w (sl + length s) p)
+    get1 w sl (Nest _ p)          = get1 w sl p
+    get1 w sl (p `Union` q)       = nicest1 w r sl (get1 w sl p)
+                                                   (get1 w sl q)
+    get1 _ _  _                   = error "best get1"
+
+nicest :: Int -> Int -> Doc -> Doc -> Doc
+nicest w r = nicest1 w r 0
+
+nicest1 :: Int -> Int -> Int -> Doc -> Doc -> Doc
+nicest1 w r sl p q | fits (minWR - sl) p = p
+                   | otherwise           = q
+  where minWR = if w < r then w else r
+
+fits :: Int  -- Space available
+     -> Doc
+     -> Bool -- True if *first line* of Doc fits in space available
+fits n _ | n < 0           = False
+fits _ NoDoc               = False
+fits _ Empty               = True
+fits _ (NilAbove _)        = True
+fits n (TextBeside s p)    = fits (n - length s) p
+fits _ _                   = error "fits"
diff --git a/lib/Text/Show.hs b/lib/Text/Show.hs
new file mode 100644
--- /dev/null
+++ b/lib/Text/Show.hs
@@ -0,0 +1,41 @@
+module Text.Show(module Text.Show) where
+import Primitives
+import Data.Bool_Type
+import Data.Char_Type
+import Data.List_Type
+
+type ShowS = String -> String
+
+class Show a where
+  showsPrec :: Int -> a -> ShowS
+  show      :: a -> String
+  showList  :: [a] -> ShowS
+
+  showsPrec _ x s = show x ++ s
+  show x          = showsPrec 0 x ""
+  showList        = showListWith shows
+
+shows :: forall a . Show a => a -> ShowS
+shows = showsPrec 0
+
+showChar :: Char -> ShowS
+showChar = (:)
+
+showString :: String -> ShowS
+showString = (++)
+
+showParen :: Bool -> ShowS -> ShowS
+showParen False sh = sh
+showParen True  sh = \ x -> '(' : sh (')' : x)
+
+showListWith :: forall a . (a -> ShowS) -> [a] -> ShowS
+showListWith _  []     s = '[' : ']' : s
+showListWith sh (x:xs) s = '[' : sh x (shl xs)
+  where
+    shl []     = ']' : s
+    shl (y:ys) = ',' : sh y (shl ys)
+
+appPrec :: Int
+appPrec = 10
+appPrec1 :: Int
+appPrec1 = 11
diff --git a/lib/Text/String.hs b/lib/Text/String.hs
new file mode 100644
--- /dev/null
+++ b/lib/Text/String.hs
@@ -0,0 +1,86 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module Text.String(module Text.String) where
+import Primitives
+import Data.Bool
+import Data.Char
+import Data.Either
+import Data.Eq
+import Data.Fractional
+import Data.Function
+import Data.Int
+import Data.Integer
+import Data.Integral
+import Data.List
+import Data.Maybe
+import Data.Num
+import Data.Ord
+import Data.Ratio
+import Data.Real
+import Data.Tuple
+import Text.Show
+
+readInt :: String -> Int
+readInt cs =
+  let
+    rd = foldl (\ a c -> a * (10::Int) + ord c - ord '0') (0::Int)
+  in if head cs == '-' then (0::Int) - rd (tail cs) else rd cs
+
+readDouble :: String -> Double
+readDouble = primDoubleRead
+
+showListS :: forall a . (a -> String) -> [a] -> String
+showListS sa as = showListWith (\ a s -> sa a ++ s) as ""
+
+showPairS :: forall a b . (a -> String) -> (b -> String) -> (a, b) -> String
+showPairS sa sb (a, b) = "(" ++ sa a ++ "," ++ sb b ++ ")"
+
+lines :: String -> [String]
+lines "" = []
+lines s =
+  case span (not . (== '\n')) s of
+    (l, s') -> case s' of { [] -> [l]; _:s'' -> l : lines s'' }
+
+unlines :: [String] -> String
+unlines = concatMap (++ "\n")
+
+words :: String -> [String]
+words s =
+  case dropWhile isSpace s of
+    "" -> []
+    s' -> w : words s''
+      where (w, s'') = span (not . isSpace) s'
+
+unwords :: [String] -> String
+unwords ss = intercalate " " ss
+
+padLeft :: Int -> String -> String
+padLeft n s = replicate (n - length s) ' ' ++ s
+
+forceString :: String -> ()
+forceString [] = ()
+forceString (c:cs) = c `primSeq` forceString cs
+
+-- Convert string in scientific notation to a rational number.
+readRational :: String -> Rational
+readRational acs@(sgn:as) | sgn == '-' = negate $ rat1 as
+                          | otherwise  =          rat1 acs
+  where
+    rat1 s1 =
+      case span isDigit s1 of
+        (ds1, cr1) | ('.':r1) <- cr1                   -> rat2 f1 r1
+                   | (c:r1)   <- cr1, toLower c == 'e' -> rat3 f1 r1
+                   | otherwise                         -> f1
+          where f1 = toRational (readInteger ds1)
+
+    rat2 f1 s2 =
+      case span isDigit s2 of
+        (ds2, cr2) | (c:r2) <- cr2, toLower c == 'e' -> rat3 f2 r2
+                   | otherwise                       -> f2
+          where f2 = f1 + toRational (readInteger ds2) * 10 ^^ (negate $ length ds2)
+
+    rat3 f2 ('+':s) = f2 * expo s
+    rat3 f2 ('-':s) = f2 / expo s
+    rat3 f2      s  = f2 * expo s
+
+    expo s = 10 ^ readInteger s
diff --git a/lib/Unsafe/Coerce.hs b/lib/Unsafe/Coerce.hs
new file mode 100644
--- /dev/null
+++ b/lib/Unsafe/Coerce.hs
@@ -0,0 +1,5 @@
+module Unsafe.Coerce(module Unsafe.Coerce, Any) where
+import Primitives
+
+unsafeCoerce :: forall a b . a -> b
+unsafeCoerce = primUnsafeCoerce
diff --git a/src/MicroHs/Compile.hs b/src/MicroHs/Compile.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Compile.hs
@@ -0,0 +1,197 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module MicroHs.Compile(
+  compileTop,
+  Flags(..), verbose, runIt, output, compileOnly,
+  compileCacheTop, getCachedPrelude,
+  Cache, emptyCache, deleteFromCache,
+  ) where
+import Prelude
+import System.IO
+import Control.DeepSeq
+import qualified MicroHs.IdentMap as M
+import MicroHs.StateIO
+import MicroHs.Desugar
+import MicroHs.Exp
+import MicroHs.Expr
+import MicroHs.Ident
+import MicroHs.Parse
+import MicroHs.TypeCheck
+--Ximport Compat
+
+data Flags = Flags
+  Int        -- verbosity level
+  Bool       -- run instead of compile
+  [String]   -- module search path
+  String     -- output file
+  Bool       -- show loading message
+  Bool       -- separate compilation
+  --Xderiving (Show)
+
+type Time = Int
+
+verbose :: Flags -> Int
+verbose (Flags x _ _ _ _ _) = x
+
+runIt :: Flags -> Bool
+runIt (Flags _ x _ _ _ _) = x
+
+paths :: Flags -> [String]
+paths (Flags _ _ x _ _ _) = x
+
+output :: Flags -> String
+output (Flags _ _ _ x _ _) = x
+
+loading :: Flags -> Bool
+loading (Flags _ _ _ _ x _) = x
+
+compileOnly :: Flags -> Bool
+compileOnly (Flags _ _ _ _ _ x) = x
+
+-----------------
+
+type CModule = TModule [LDef]
+data Cache = Cache [IdentModule] (M.Map CModule)
+  --Xderiving (Show)
+
+--Xinstance NFData Cache where rnf _ = ()  -- dummy instance
+
+working :: Cache -> [IdentModule]
+working (Cache x _) = x
+
+updWorking :: [IdentModule] -> Cache -> Cache
+updWorking w (Cache _ m) = Cache w m
+
+cache :: Cache -> M.Map CModule
+cache (Cache _ x) = x
+
+emptyCache :: Cache
+emptyCache = Cache [] M.empty
+
+deleteFromCache :: Ident -> Cache -> Cache
+deleteFromCache mn (Cache is m) = Cache is (M.delete mn m)
+
+-----------------
+
+-- Compile the module with the given name, starting with the given cache.
+-- Return the "compiled module" and the resulting cache.
+compileCacheTop :: Flags -> IdentModule -> Cache -> IO ([(Ident, Exp)], Cache)
+compileCacheTop flags mn ch = do
+  (ds, ch') <- compile flags mn ch
+  t1 <- getTimeMilli
+  let
+    dsn = [ (n, compileOpt e) | (n, e) <- ds ]
+  () <- return (rnf dsn)
+  t2 <- getTimeMilli
+  when (verbose flags > 0) $
+    putStrLn $ "combinator conversion " ++ padLeft 6 (show (t2-t1)) ++ "ms"
+  when (verbose flags > 3) $
+    putStrLn $ "combinators:\n" ++ showLDefs dsn
+  return (dsn, ch')
+
+getCachedPrelude :: Flags -> IO Cache
+getCachedPrelude _ | not usingMhs = return emptyCache
+getCachedPrelude flags = do
+  mhin <- openFileM "cache/Prelude.comb" ReadMode
+  case mhin of
+    Nothing -> return emptyCache
+    Just hin -> do
+--      putStrLn "deserialize cache"
+      cach <- hDeserialize hin
+      hClose hin
+      when (loading flags) $
+        putStrLn "loaded cached Prelude"
+      return cach
+
+--compileTop :: Flags -> IdentModule -> IO [LDef]
+compileTop :: Flags -> Ident -> IO [(Ident, Exp)]
+compileTop flags mn = do
+  cach <- getCachedPrelude flags
+  fst <$> compileCacheTop flags mn cach
+
+compile :: Flags -> IdentModule -> Cache -> IO ([LDef], Cache)
+compile flags nm ach = do
+  ((_, t), ch) <- runStateIO (compileModuleCached flags nm) ach
+  when (verbose flags > 0) $
+    putStrLn $ "total import time     " ++ padLeft 6 (show t) ++ "ms"
+  return (concatMap bindingsOf $ M.elems $ cache ch, ch)
+
+-- Compile a module with the given name.
+-- If the module has already been compiled, return the cached result.
+compileModuleCached :: Flags -> IdentModule -> StateIO Cache (CModule, Time)
+compileModuleCached flags mn = do
+  ch <- gets cache
+  case M.lookup mn ch of
+    Nothing -> do
+      ws <- gets working
+      when (elem mn ws) $
+        error $ "recursive module: " ++ showIdent mn ++ ", import chain: " ++ unwords (map showIdent ws)
+      modify $ \ c -> updWorking (mn : working c) c
+      when (verbose flags > 0) $
+        liftIO $ putStrLn $ "importing " ++ showIdent mn
+      (cm, tp, tt, ts) <- compileModule flags mn
+      when (verbose flags > 0) $
+        liftIO $ putStrLn $ "importing done " ++ showIdent mn ++ ", " ++ show (tp + tt) ++
+                 "ms (" ++ show tp ++ " + " ++ show tt ++ ")"
+      when (loading flags && mn /= mkIdent "Interactive") $
+        liftIO $ putStrLn $ "loaded " ++ showIdent mn
+      c <- get
+      put $ Cache (tail (working c)) (M.insert mn cm (cache c))
+      return (cm, tp + tt + ts)
+    Just cm -> do
+      when (verbose flags > 0) $
+        liftIO $ putStrLn $ "importing cached " ++ showIdent mn
+      return (cm, 0)
+
+-- Find and compile a module with the given name.
+-- The times are (parsing, typecheck+desugar, imported modules)
+compileModule :: Flags -> IdentModule -> StateIO Cache (CModule, Time, Time, Time)
+compileModule flags nm = do
+  t1 <- liftIO getTimeMilli
+  let
+    fn = map (\ c -> if c == '.' then '/' else c) (unIdent nm) ++ ".hs"
+  (pathfn, file) <- liftIO (readFilePath (getSLoc nm) (paths flags) fn)
+  let mdl@(EModule nmn _ defs) = parseDie pTop pathfn file
+  -- liftIO $ putStrLn $ showEModule mdl
+  -- liftIO $ putStrLn $ showEDefs defs
+  when (nm /= nmn) $
+    error $ "module name does not agree with file name: " ++ showIdent nm ++ " " ++ showIdent nmn
+  let
+    specs = [ s | Import s <- defs ]
+  t2 <- liftIO getTimeMilli
+  (impMdls, ts) <- fmap unzip $ mapM (compileModuleCached flags) [ m | ImportSpec _ m _ _ <- specs ]
+  t3 <- liftIO getTimeMilli
+  let
+    tmdl = typeCheck (zip specs impMdls) mdl
+  when (verbose flags > 2) $
+    liftIO $ putStrLn $ "type checked:\n" ++ showTModule showEDefs tmdl ++ "-----\n"
+  let
+    dmdl = desugar tmdl
+  () <- return $ rnf $ bindingsOf dmdl
+  t4 <- liftIO getTimeMilli
+  when (verbose flags > 3) $
+    (liftIO $ putStrLn $ "desugared:\n" ++ showTModule showLDefs dmdl)
+  return (dmdl, t2-t1, t4-t3, sum ts)
+
+------------------
+
+readFilePath :: SLoc -> [FilePath] -> FilePath -> IO (FilePath, String)
+readFilePath loc path name = do
+  mh <- openFilePath path name
+  case mh of
+    Nothing -> errorMessage loc $ "File not found: " ++ show name ++ "\npath=" ++ show path
+    Just (fn, h) -> do
+      file <- hGetContents h
+      return (fn, file)
+
+openFilePath :: [FilePath] -> FilePath -> IO (Maybe (FilePath, Handle))
+openFilePath adirs fileName =
+  case adirs of
+    [] -> return Nothing
+    dir:dirs -> do
+      let
+        path = dir ++ "/" ++ fileName
+      mh <- openFileM path ReadMode
+      case mh of
+        Nothing -> openFilePath dirs fileName -- If opening failed, try the next directory
+        Just hdl -> return (Just (path, hdl))
diff --git a/src/MicroHs/Desugar.hs b/src/MicroHs/Desugar.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Desugar.hs
@@ -0,0 +1,556 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+{-# OPTIONS_GHC -Wno-incomplete-uni-patterns -Wno-unused-imports -Wno-dodgy-imports #-}
+module MicroHs.Desugar(
+  desugar,
+  LDef, showLDefs,
+  encodeInteger,
+  ) where
+import Prelude
+import Data.Char
+import Data.Function
+import Data.List
+import Data.Maybe
+import Data.Ratio
+import Control.Monad.State.Strict as S --Xhiding(ap)
+--Ximport Control.Monad as S hiding(ap)
+--Ximport Compat
+--Ximport GHC.Stack
+import Debug.Trace
+
+import MicroHs.Expr
+import MicroHs.Exp
+import MicroHs.Graph
+import MicroHs.Ident
+import MicroHs.TypeCheck
+
+type LDef = (Ident, Exp)
+
+desugar :: TModule [EDef] -> TModule [LDef]
+desugar atm =
+  case atm of
+    TModule mn fxs tys syns clss insts vals ds ->
+      TModule mn fxs tys syns clss insts vals $ map lazier $ checkDup $ concatMap (dsDef mn) ds
+
+dsDef :: IdentModule -> EDef -> [LDef]
+dsDef mn adef =
+  case adef of
+    Data _ cs ->
+      let
+        f i = mkIdent ("$f" ++ show i)
+        fs = [f i | (i, _) <- zip [0::Int ..] cs]
+        dsConstr i (Constr _ ctx c ets) =
+          let
+            ss = (if null ctx then [] else [False]) ++
+                 map fst (either id (map snd) ets)   -- strict flags
+            xs = [mkIdent ("$x" ++ show j) | (j, _) <- zip [0::Int ..] ss]
+            strict (False:ys) (_:is) e = strict ys is e
+            strict (True:ys)  (x:is) e = App (App (Lit (LPrim "seq")) (Var x)) (strict ys is e)
+            strict _ _ e = e
+          in (qualIdent mn c, lams xs $ strict ss xs $ lams fs $ apps (Var (f i)) (map Var xs))
+      in  zipWith dsConstr [0::Int ..] cs
+    Newtype _ (Constr _ _ c _) -> [ (qualIdent mn c, Lit (LPrim "I")) ]
+    Type _ _ -> []
+    Fcn f eqns -> [(f, dsEqns (getSLoc f) eqns)]
+    Sign _ _ -> []
+    Import _ -> []
+    ForImp ie i _ -> [(i, Lit $ LForImp ie)]
+    Infix _ _ -> []
+    Class ctx (c, _) _ bs ->
+      let f = mkIdent "$f"
+          meths :: [Ident]
+          meths = [ qualIdent mn i | (BSign i _) <- bs ]
+          supers :: [Ident]
+          supers = [ qualIdent mn $ mkSuperSel c i | i <- [1 .. length ctx] ]
+          xs = [ mkIdent ("$x" ++ show j) | j <- [ 1 .. length ctx + length meths ] ]
+      in  (qualIdent mn $ mkClassConstructor c, lams xs $ Lam f $ apps (Var f) (map Var xs)) :
+          zipWith (\ i x -> (expectQualified i, Lam f $ App (Var f) (lams xs $ Var x))) (supers ++ meths) xs
+    Instance _ _ _ _ -> []
+    Default _ -> []
+
+oneAlt :: Expr -> EAlts
+oneAlt e = EAlts [([], e)] []
+
+dsBind :: Ident -> EBind -> [LDef]
+dsBind v abind =
+  case abind of
+    BFcn f eqns -> [(f, dsEqns (getSLoc f) eqns)]
+    BPat p e ->
+      let
+        de = (v, dsExpr e)
+        ds = [ (i, dsExpr (ECase (EVar v) [(p, oneAlt $ EVar i)])) | i <- patVars p ]
+      in  de : ds
+    BSign _ _ -> []
+
+dsEqns :: SLoc -> [Eqn] -> Exp
+dsEqns loc eqns =
+  case eqns of
+    Eqn aps _ : _ ->
+      let
+        vs = allVarsBind $ BFcn (mkIdent "") eqns
+        xs = take (length aps) $ newVars "$q" vs
+        mkArm (Eqn ps alts) =
+          let ps' = map dsPat ps
+          in  (ps', dsAlts alts, hasGuards alts || any hasLit ps')
+        ex = runS loc (vs ++ xs) (map Var xs) (map mkArm eqns)
+      in foldr Lam ex xs
+    _ -> impossible
+
+hasGuards :: EAlts -> Bool
+hasGuards (EAlts [([], _)] _) = False
+hasGuards _ = True
+
+hasLit :: EPat -> Bool
+hasLit (ELit _ _) = True
+hasLit (EVar _) = False
+hasLit (ECon _) = False
+hasLit (EApp f a) = hasLit f || hasLit a
+hasLit (EAt _ p) = hasLit p
+hasLit _ = impossible
+
+dsAlts :: EAlts -> (Exp -> Exp)
+dsAlts (EAlts alts bs) = dsBinds bs . dsAltsL alts
+
+dsAltsL :: [EAlt] -> (Exp -> Exp)
+dsAltsL []                 dflt = dflt
+dsAltsL [([], e)]             _ = dsExpr e  -- fast special case
+dsAltsL ((ss, rhs) : alts) dflt =
+  let
+    erest = dsAltsL alts dflt
+    x = newVar (allVarsExp erest)
+  in eLet x erest (dsExpr $ dsAlt (EVar x) ss rhs)
+
+dsAlt :: Expr -> [EStmt] -> Expr -> Expr
+dsAlt _ [] rhs = rhs
+dsAlt dflt (SBind p e : ss) rhs = ECase e [(p, EAlts [(ss, rhs)] []), (EVar dummyIdent, oneAlt dflt)]
+dsAlt dflt (SThen (EVar i) : ss) rhs | isIdent "Data.Bool.otherwise" i = dsAlt dflt ss rhs
+dsAlt dflt (SThen e   : ss) rhs = EIf e (dsAlt dflt ss rhs) dflt
+dsAlt dflt (SLet bs   : ss) rhs = ELet bs (dsAlt dflt ss rhs)
+
+dsBinds :: [EBind] -> Exp -> Exp
+dsBinds [] ret = ret
+dsBinds ads ret =
+  let
+    avs = concatMap allVarsBind ads
+    pvs = newVars "$p" avs
+    mvs = newVars "$m" avs
+    ds = concat $ zipWith dsBind pvs ads
+    node ie@(i, e) = (ie, i, freeVars e)
+    gr = map node $ checkDup ds
+    asccs = stronglyConnComp (<=) gr
+    loop _ [] = ret
+    loop vs (AcyclicSCC (i, e) : sccs) =
+      letE i e $ loop vs sccs
+    loop vs (CyclicSCC [(i, e)] : sccs) =
+      letRecE i e $ loop vs sccs
+    loop vvs (CyclicSCC ies : sccs) =
+      let (v:vs) = vvs
+      in mutualRec v ies (loop vs sccs)
+  in loop mvs asccs
+
+letE :: Ident -> Exp -> Exp -> Exp
+letE i e b = eLet i e b          -- do some minor optimizations
+             --App (Lam i b) e
+
+letRecE :: Ident -> Exp -> Exp -> Exp
+letRecE i e b = letE i (App (Lit (LPrim "Y")) (Lam i e)) b
+
+-- Do mutual recursion by tupling up all the definitions.
+--  let f = ... g ...
+--      g = ... f ...
+--  in  body
+-- turns into
+--  letrec v =
+--        let f = sel_0_2 v
+--            g = sel_1_2 v
+--        in  (... g ..., ... f ...)
+--  in
+--    let f = sel_0_2 v
+--        g = sel_1_2 v
+--    in  body
+mutualRec :: Ident -> [LDef] -> Exp -> Exp
+mutualRec v ies body =
+  let (is, es) = unzip ies
+      n = length is
+      ev = Var v
+      one m i = letE i (mkTupleSelE m n ev)
+      bnds = foldr (.) id $ zipWith one [0..] is
+  in  letRecE v (bnds $ mkTupleE es) $
+      bnds body
+
+encodeInteger :: Integer -> Exp
+encodeInteger i | toInteger (minBound::Int) <= i && i < toInteger (maxBound::Int) =
+--  trace ("*** small integer " ++ show i) $
+  App (Var (mkIdent "Data.Integer_Type._intToInteger")) (Lit (LInt (_integerToInt i)))
+                | otherwise =
+--  trace ("*** large integer " ++ show i) $
+  App (Var (mkIdent "Data.Integer._intListToInteger")) (encodeList (map (Lit . LInt) (_integerToIntList i)))
+
+encodeRational :: Rational -> Exp
+encodeRational r =
+  App (App (Var (mkIdent "Data.Ratio_Type._mkRational")) (encodeInteger (numerator r))) (encodeInteger (denominator r))
+
+dsExpr :: Expr -> Exp
+dsExpr aexpr =
+  case aexpr of
+    EVar i -> Var i
+    EApp f a -> App (dsExpr f) (dsExpr a)
+    ELam qs -> dsEqns (getSLoc aexpr) qs
+    ELit _ (LChar c) -> Lit (LInt (ord c))
+    ELit _ (LInteger i) -> encodeInteger i
+    ELit _ (LRat i) -> encodeRational i
+    ELit _ l -> Lit l
+    ECase e as -> dsCase (getSLoc aexpr) e as
+    ELet ads e -> dsBinds ads (dsExpr e)
+    ETuple es -> Lam (mkIdent "$f") $ foldl App (Var $ mkIdent "$f") $ map dsExpr es
+    EIf e1 e2 e3 ->
+      app2 (dsExpr e1) (dsExpr e3) (dsExpr e2)
+    EListish (LList es) -> encodeList $ map dsExpr es
+    EListish (LCompr e astmts) ->
+      case astmts of
+        [] -> dsExpr (EListish (LList [e]))
+        stmt : stmts ->
+          case stmt of
+            SBind p b ->
+              let
+                nv = newVar (allVarsExpr aexpr)
+                body = ECase (EVar nv) [(p, oneAlt $ EListish (LCompr e stmts)), (EVar dummyIdent, oneAlt $ EListish (LList []))]
+              in app2 (Var (mkIdent "Data.List.concatMap")) (dsExpr (eLam [EVar nv] body)) (dsExpr b)
+            SThen c ->
+              dsExpr (EIf c (EListish (LCompr e stmts)) (EListish (LList [])))
+            SLet ds ->
+              dsExpr (ELet ds (EListish (LCompr e stmts)))
+    ECon c ->
+      let
+        ci = conIdent c
+      in
+        case getTupleConstr ci of
+          Just n ->
+            let
+              xs = [mkIdent ("x" ++ show i) | i <- [1 .. n] ]
+              body = mkTupleE $ map Var xs
+            in foldr Lam body xs
+          Nothing -> Var (conIdent c)
+    _ -> impossible
+
+-- Use tuple encoding to make a tuple
+mkTupleE :: [Exp] -> Exp
+mkTupleE = Lam (mkIdent "$f") . foldl App (Var (mkIdent "$f"))
+
+-- Select component m from an n-tuple
+mkTupleSelE :: Int -> Int -> Exp -> Exp
+mkTupleSelE m n tup =
+  let
+    xs = [mkIdent ("x" ++ show i) | i <- [1 .. n] ]
+  in App tup (foldr Lam (Var (xs !! m)) xs)
+
+-- Handle special syntax for lists and tuples
+dsPat :: --XHasCallStack =>
+         EPat -> EPat
+dsPat ap =
+  case ap of
+    EVar _ -> ap
+    ECon _ -> ap
+    EApp f a -> EApp (dsPat f) (dsPat a)
+    EListish (LList ps) -> dsPat $ foldr (\ x xs -> EApp (EApp consCon x) xs) nilCon ps
+    ETuple ps -> dsPat $ foldl EApp (tupleCon (getSLoc ap) (length ps)) ps
+    EAt i p -> EAt i (dsPat p)
+    ELit loc (LStr cs) | length cs < 2 -> dsPat (EListish (LList (map (ELit loc . LChar) cs)))
+    ELit _ _ -> ap
+    _ -> impossible
+
+iNil :: Ident
+iNil = mkIdent $ listPrefix ++ "[]"
+
+iCons :: Ident
+iCons = mkIdent $ listPrefix ++ ":"
+
+consCon :: EPat
+consCon = ECon $ ConData [(iNil, 0), (iCons, 2)] iCons
+
+nilCon :: EPat
+nilCon = ECon $ ConData [(iNil, 0), (iCons, 2)] iNil
+
+tupleCon :: SLoc -> Int -> EPat
+tupleCon loc n =
+  let
+    c = tupleConstr loc n
+  in ECon $ ConData [(c, n)] c
+
+lams :: [Ident] -> Exp -> Exp
+lams xs e = foldr Lam e xs
+
+apps :: Exp -> [Exp] -> Exp
+apps f = foldl App f
+
+newVars :: String -> [Ident] -> [Ident]
+newVars s is = deleteAllsBy (==) [ mkIdent (s ++ show i) | i <- [1::Int ..] ] is
+
+newVar :: [Ident] -> Ident
+newVar = head . newVars "$q"
+
+showLDefs :: [LDef] -> String
+showLDefs = unlines . map showLDef
+
+showLDef :: LDef -> String
+showLDef a =
+  case a of
+    (i, e) -> showIdent i ++ " = " ++ show e
+
+----------------
+
+dsCase :: SLoc -> Expr -> [ECaseArm] -> Exp
+dsCase loc ae as =
+  runS loc (allVarsExpr (ECase ae as)) [dsExpr ae] (map mkArm as)
+  where
+    mkArm (p, alts) =
+      let p' = dsPat p
+      in  ([p'], dsAlts alts, hasGuards alts || hasLit p')
+
+type MState = [Ident]  -- supply of unused variables.
+
+type M a = State MState a
+type Arm = ([EPat], Exp -> Exp, Bool)  -- boolean indicates that the arm has guards
+type Matrix = [Arm]
+
+--showArm :: Arm -> String
+--showArm (ps, _, b) = showListS showExpr ps ++ "," ++ show b
+
+newIdents :: Int -> M [Ident]
+newIdents n = do
+  is <- get
+  put (drop n is)
+  return (take n is)
+
+newIdent :: M Ident
+newIdent = do
+  is <- get
+  put (tail is)
+  return (head is)
+
+runS :: SLoc -> [Ident] -> [Exp] -> Matrix -> Exp
+runS loc used ss mtrx =
+  let
+    supply = newVars "$x" used
+    ds xs aes =
+      case aes of
+        []   -> dsMatrix (eMatchErr loc) (reverse xs) mtrx
+        e:es -> letBind (return e) $ \ x -> ds (x:xs) es
+  in evalState (ds [] ss) supply
+
+data SPat = SPat Con [Ident]    -- simple pattern
+  --Xderiving(Show, Eq)
+
+-- Desugar a pattern matrix.
+-- The input is a (usually identifier) vector e1, ..., en
+-- and patterns matrix p11, ..., p1n   -> e1
+--                     p21, ..., p2n
+--                     pm1, ..., pmn   -> em
+-- Note that the RHSs are of type Exp.
+dsMatrix :: --XHasCallStack =>
+            Exp -> [Exp] -> Matrix -> M Exp
+dsMatrix dflt iis aarms =
+ if null aarms then
+   return dflt
+ else
+ case iis of
+ [] -> let { (_, f, _) : _ = aarms } in return $ f dflt
+ i:is -> do
+  let
+    (arms, darms, rarms) = splitArms aarms
+    ndarms = map (\ (EVar x : ps, ed, g) -> (ps, substAlpha x i . ed, g) ) darms
+--  traceM ("split " ++ show (arms, darms, rarms))
+  letBind (dsMatrix dflt iis rarms) $ \ drest ->
+    letBind (dsMatrix drest is ndarms) $ \ ndflt ->
+     if null arms then
+       return ndflt
+     else do
+      let
+        idOf (p:_, _, _) = pConOf p
+        idOf _ = impossible
+        grps = groupEq (on (==) idOf) arms
+        oneGroup grp = do
+          let
+            (pat:_, _, _) : _ = grp
+            con = pConOf pat
+          xs <- newIdents (conArity con)
+          let
+            one arg =
+              case arg of
+                (p : ps, e, g) ->
+                  case p of
+                    EAt a pp -> one (pp:ps, substAlpha a i . e, g)
+                    _        -> (pArgs p ++ ps, e, g)
+                _ -> impossible
+          cexp <- dsMatrix ndflt (map Var xs ++ is) (map one grp)
+          return (SPat con xs, cexp)
+--      traceM $ "grps " ++ show grps
+      narms <- mapM oneGroup grps
+      return $ mkCase i narms ndflt
+
+eMatchErr :: SLoc -> Exp
+eMatchErr (SLoc fn l c) =
+  App (App (App (Lit (LPrim "noMatch")) (Lit (LStr fn))) (Lit (LInt l))) (Lit (LInt c))
+
+-- If the first expression isn't a variable/literal, then use
+-- a let binding and pass variable to f.
+letBind :: M Exp -> (Exp -> M Exp) -> M Exp
+letBind me f = do
+  e <- me
+  if cheap e then
+    f e
+   else do
+    x <- newIdent
+    r <- f (Var x)
+    return $ eLet x e r
+
+cheap :: Exp -> Bool
+cheap ae =
+  case ae of
+    Var _ -> True
+    Lit _ -> True
+    _ -> False
+
+eEqInt :: Exp
+eEqInt = Lit (LPrim "==")
+
+eEqChar :: Exp
+eEqChar = Lit (LPrim "==")
+
+eEqStr :: Exp
+eEqStr = Lit (LPrim "equal")
+
+mkCase :: Exp -> [(SPat, Exp)] -> Exp -> Exp
+mkCase var pes dflt =
+  --trace ("mkCase " ++ show pes) $
+  case pes of
+    [] -> dflt
+    [(SPat (ConNew _) [x], arhs)] -> eLet x var arhs
+    (SPat (ConLit _ l) _,   arhs) : rpes -> 
+      let
+        cond =
+          case l of
+            LInt  _ -> app2 eEqInt  var (Lit l)
+            LChar c -> app2 eEqChar var (Lit (LInt (ord c)))
+            LStr  _ -> app2 eEqStr  var (Lit l)
+            _ -> impossible
+      in app2 cond (mkCase var rpes dflt) arhs
+    (SPat (ConData cs _) _, _) : _ ->
+      let
+        arm ck =
+          let
+            (c, k) = ck
+            (vs, rhs) = head $ [ (xs, e) | (SPat (ConData _ i) xs, e) <- pes, c == i ] ++
+                               [ (replicate k dummyIdent, dflt) ]
+          in (SPat (ConData cs c) vs, rhs)
+      in  eCase var (map arm cs)
+    _ -> impossible
+
+eCase :: Exp -> [(SPat, Exp)] -> Exp
+eCase e as =
+--  trace ("eCase " ++ show e ++ "\n" ++
+--         unlines [ unwords (map showIdent (conIdent c : xs)) ++ " -> " ++ show r | (SPat c xs, r) <- as ]) $
+  apps e [lams xs r | (SPat _ xs, r) <- as ]
+
+-- Split the matrix into segments so each first column has initially patterns -- followed by variables, followed by the rest.
+splitArms :: Matrix -> (Matrix, Matrix, Matrix)
+splitArms am =
+  let
+    isConPat (p:_, _, _) = not (isPVar p)
+    isConPat _ = impossible
+    (ps, nps) = span isConPat am
+    loop xs [] = (reverse xs, [])
+    loop xs pps@(pg@(p:_, _, g) : rps) | not (isPVar p) = (reverse xs, pps)
+                                       | otherwise = if g then (reverse (pg:xs), rps)
+                                                          else loop (pg:xs) rps
+    loop _ _ = impossible
+    (ds, rs)  = loop [] nps
+  in (ps, ds, rs)
+
+-- Change from x to y inside e.
+substAlpha :: Ident -> Exp -> Exp -> Exp
+substAlpha x y e =
+  if x == dummyIdent then
+    e
+  else
+    substExp x y e
+
+eLet :: Ident -> Exp -> Exp -> Exp
+eLet i e b =
+  if i == dummyIdent then
+    b
+  else
+    case b of
+      Var j | i == j -> e
+      _ ->
+        case filter (== i) (freeVars b) of
+          []  -> b                -- no occurences, no need to bind
+          [_] -> substExp i e b   -- single occurrence, substitute  XXX could be worse if under lambda
+          _   -> App (Lam i b) e  -- just use a beta redex
+
+pConOf :: --XHasCallStack =>
+          EPat -> Con
+pConOf ap =
+  case ap of
+    ECon c -> c
+    EAt _ p -> pConOf p
+    EApp p _ -> pConOf p
+    ELit loc l -> ConLit loc l
+    EVar _ -> undefined
+    _ -> impossibleShow ap
+
+pArgs :: EPat -> [EPat]
+pArgs ap =
+  case ap of
+    ECon _ -> []
+    EApp f a -> pArgs f ++ [a]
+    ELit _ _ -> []
+    _ -> impossible
+
+-- XXX quadratic
+groupEq :: forall a . (a -> a -> Bool) -> [a] -> [[a]]
+groupEq eq axs =
+  case axs of
+    [] -> []
+    x:xs ->
+      case partition (eq x) xs of
+        (es, ns) -> (x:es) : groupEq eq ns
+
+getDups :: forall a . (a -> a -> Bool) -> [a] -> [[a]]
+getDups eq = filter ((> 1) . length) . groupEq eq
+
+checkDup :: [LDef] -> [LDef]
+checkDup ds =
+  case getDups (==) (filter (/= dummyIdent) $ map fst ds) of
+    [] -> ds
+    (i1:_i2:_) : _ ->
+      errorMessage (getSLoc i1) $ "duplicate definition " ++ showIdent i1
+        -- XXX mysteriously the location for i2 is the same as i1
+        -- ++ ", also at " ++ showSLoc (getSLoc i2)
+    _ -> error "checkDup"
+
+-- Make recursive definitions lazier.
+-- The idea is that we have
+--  f x y = ... (f x) ...
+-- we turn this into
+--  f x = letrec f' y = ... f' ... in f'
+-- thus avoiding the extra argument passing.
+-- XXX should generalize for an arbitrary length prefix of variables.
+-- This gives a small speedup with overloading.
+lazier :: LDef -> LDef
+lazier def@(fcn, Lam x (Lam y body)) =
+  let fcn' = addIdentSuffix fcn "@"
+      vfcn' = Var fcn'
+      repl :: Exp -> State Bool Exp
+      repl (Lam i e) = Lam i <$> repl e
+      repl (App (Var af) (Var ax)) | af == fcn && ax == x = do
+        put True
+        return vfcn'
+      repl (App f a) = App <$> repl f <*> repl a
+      repl e@(Var _) = return e
+      repl e@(Lit _) = return e
+  in  case runState (repl body) False of
+        (_, False) -> def
+        (e', True) -> (fcn, Lam x $ letRecE fcn' (Lam y e') vfcn')
+
+lazier def = def
diff --git a/src/MicroHs/Exp.hs b/src/MicroHs/Exp.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Exp.hs
@@ -0,0 +1,543 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+{-# LANGUAGE PatternSynonyms #-}
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module MicroHs.Exp(
+  compileOpt,
+--  compileOptX,
+  substExp,
+  Exp(..), toStringP,
+  PrimOp,
+  encodeString,
+  app2, cCons, cNil, cFlip,
+  allVarsExp, freeVars,
+  encodeList,
+  ) where
+import Prelude --Xhiding((<>))
+import Data.Char
+import Data.List
+import MicroHs.Ident
+import MicroHs.Expr(Lit(..), showLit)
+import Text.PrettyPrint.HughesPJ
+--Ximport Control.DeepSeq
+--Ximport Compat
+import Debug.Trace
+
+type PrimOp = String
+
+--
+-- Used combinators
+--   * indicates that the implementation uses an indirection
+--   A indicates allocation in the implementation
+-- S  x y z   = x z (y z)             A
+-- K  x y     = x                     *
+-- I  x       = x                     *
+-- B  x y z   = x (y z)               A
+-- C  x y z   = x z y                 A
+-- S' x y z w = x (y w) (z w)         A
+-- B' x y z w = x y (z w)             A
+-- C' x y z w = x (y w) z             A
+-- A  x y     = y                     *
+-- T  x y     = y x
+-- n@(Y x)    = x n
+-- Z x y z   = x y
+-- P  x y z   = z x y                 A
+-- R  x y z   = y z x                 A
+-- O  x y z w = w x y                 A
+--
+
+data Exp
+  = Var Ident
+  | App Exp Exp
+  | Lam Ident Exp
+  | Lit Lit
+
+--Xinstance NFData Exp where rnf (Var i) = rnf i; rnf (App f a) = rnf f `seq` rnf a; rnf (Lam i e) = rnf i `seq` rnf e; rnf (Lit l) = rnf l
+
+instance Eq Exp where
+  (==) (Var i1)    (Var i2)    = i1 == i2
+  (==) (App f1 a1) (App f2 a2) = f1 == f2 && a1 == a2
+  (==) (Lam i1 e1) (Lam i2 e2) = i1 == i2 && e1 == e2
+  (==) (Lit l1)    (Lit l2)    = l1 == l2
+  (==) _           _           = False
+
+data MaybeApp = NotApp | IsApp Exp Exp
+
+getApp :: Exp -> MaybeApp
+getApp ae =
+  case ae of
+    App f a -> IsApp f a
+    _       -> NotApp
+
+isPrim :: String -> Exp -> Bool
+isPrim s ae =
+  case ae of
+    Lit (LPrim ss) -> s == ss
+    _       -> False
+
+isK :: Exp -> Bool
+isK = isPrim "K"
+
+isI :: Exp -> Bool
+isI = isPrim "I"
+
+isB :: Exp -> Bool
+isB = isPrim "B"
+
+isC :: Exp -> Bool
+isC = isPrim "C"
+
+isY :: Exp -> Bool
+isY = isPrim "Y"
+
+isP :: Exp -> Bool
+isP = isPrim "P"
+
+app2 :: Exp -> Exp -> Exp -> Exp
+app2 f a1 a2 = App (App f a1) a2
+
+app3 :: Exp -> Exp -> Exp -> Exp -> Exp
+app3 f a1 a2 a3 = App (app2 f a1 a2) a3
+
+cCons :: Exp
+cCons = Lit (LPrim "O")
+
+cNil :: Exp
+cNil = Lit (LPrim "K")
+
+cFlip :: Exp
+cFlip = Lit (LPrim "C")
+
+cId :: Exp
+cId = Lit (LPrim "I")
+
+cConst :: Exp
+cConst = Lit (LPrim "K")
+
+cSpread :: Exp
+cSpread = Lit (LPrim "S")
+
+cP :: Exp
+cP = Lit (LPrim "P")
+
+--cR :: Exp
+--cR = Lit (LPrim "R")
+
+-- Avoid quadratic concatenation by using difference lists,
+-- turning concatenation into function composition.
+toStringP :: Exp -> (String -> String)
+toStringP ae =
+  case ae of
+    Var x   -> (showIdent x ++)
+    Lit (LStr s) ->
+      -- Encode very short string directly as combinators.
+      if length s > 1 then
+        (quoteString s ++)
+      else
+        toStringP (encodeString s)
+    Lit (LInteger _) -> undefined
+    Lit (LRat _) -> undefined
+    Lit l   -> (showLit l ++)
+    Lam x e -> (("(\\" ++ showIdent x ++ " ") ++) . toStringP e . (")" ++)
+    App f a -> ("(" ++) . toStringP f . (" " ++) . toStringP a . (")" ++)
+
+quoteString :: String -> String
+quoteString s =
+  let
+    achar c =
+      if c == '"' || c == '\\' || c < ' ' || c > '~' then
+        '\\' : show (ord c) ++ ['&']
+      else
+        [c]
+  in '"' : concatMap achar s ++ ['"']
+
+encodeString :: String -> Exp
+encodeString = encodeList . map (Lit . LInt . ord)
+
+encodeList :: [Exp] -> Exp
+encodeList = foldr (app2 cCons) cNil
+
+compileOpt :: Exp -> Exp
+compileOpt = improveT . compileExp
+
+compileExp :: Exp -> Exp
+compileExp ae =
+  case ae of
+    App f a -> App (compileExp f) (compileExp a)
+    Lam x a -> abstract x a
+    _       -> ae
+
+abstract :: Ident -> Exp -> Exp
+abstract x ae =
+  case ae of
+    Var y  -> if x == y then cId else cK (Var y)
+    App f a -> cS (abstract x f) (abstract x a)
+    Lam y e -> abstract x $ abstract y e
+    Lit _ -> cK ae
+
+cK :: Exp -> Exp
+cK e  = App cConst e
+
+cS :: Exp -> Exp -> Exp
+cS a1 a2 =
+ if isK a1 then cId else
+  let
+    r = cS2 a1 a2
+  in
+    case getApp a1 of
+      NotApp -> r
+      IsApp k1 e1 ->
+        if isK k1 then
+          case getApp a2 of
+            IsApp k2 e2 ->
+              if isK k2 then
+                cK (App e1 e2)
+              else
+                cB e1 a2
+            NotApp ->
+              if isI a2 then
+                e1
+              else
+                cB e1 a2
+        else
+          r
+cS2 :: Exp -> Exp -> Exp
+cS2 a1 a2 =
+  case getApp a2 of
+    NotApp -> cS3 a1 a2
+    IsApp k2 e2 ->
+      if isK k2 then
+        cC a1 e2
+      else
+        cS3 a1 a2
+
+cS3 :: Exp -> Exp -> Exp
+cS3 a1 a2 =
+  let
+    r = app2 cSpread a1 a2
+  in
+    case getApp a1 of
+      NotApp -> r
+      IsApp be1 e2 ->
+        case getApp be1 of
+          NotApp -> r
+          IsApp b1 e1 ->
+            if isB b1 then
+              cSS e1 e2 a2
+            else
+              r
+
+{-
+--cS e1 e2 | trace ("S (" ++ toString e1 ++ ") (" ++ toString e2 ++ ")") False = undefined
+cS CK              _           = CI                -- S K e           = I
+cS (App CK e1)     (App CK e2) = cK (App e1 e2)    -- S (K e1) (K e2) = K (e1 e2)
+cS (App CK e1)     CI          = e1                -- S (K e1) I      = e1
+cS (App CK e1)     e2          = cB e1 e2          -- S (K e1) e2     = B e1 e2
+cS e1              (App CK e2) = cC e1 e2          -- S e1     (K e2) = C e1 e2
+cS (App (App CB e1) e2) e3     = cSS e1 e2 e3      -- S (B e1 e2) e3  = S' e1 e2 e3
+cS e1 e2                       = App2 CS e1 e2
+-}
+
+cC :: Exp -> Exp -> Exp
+cC a1 e3 =
+  let
+    r = cC2 a1 e3
+  in
+    case getApp a1 of
+      NotApp -> r
+      IsApp x1 e2 ->
+        case getApp x1 of
+          NotApp -> r
+          IsApp bc e1 ->
+            if isB bc then
+              cCC e1 e2 e3
+            else if isC bc && isI e1 then
+              app2 cP e2 e3
+--            else if isC bc && isC e1 then
+--              app2 cR e2 e3
+            else
+              r
+
+cC2 :: Exp -> Exp -> Exp
+cC2 a1 a2 = app2 cFlip a1 a2
+
+{-
+cC (App (App CB e1) e2) e3          = cCC e1 e2 e3      -- C (B e1 e2) e3  = C' e1 e2 e3
+cC (Var op)             e2 | Just op' <- lookup op flipOps = App (Var op') e2 -- C op e = flip-op e
+cC (App (App CC CI) e2) e3          = app2 CP e2 e3
+cC (App (App CC CC) e2) e3          = app2 CR e2 e3
+cC e1                   e2          = app2 CC e1 e2
+-}
+
+cB :: Exp -> Exp -> Exp
+cB a1 a2 =
+  let
+    r = cB2 a1 a2
+  in
+    case getApp a1 of
+      NotApp -> r
+      IsApp cb ck ->
+        if isB cb && isK ck && isP a2 then
+          Lit (LPrim "O")
+        else
+          r
+
+cB2 :: Exp -> Exp -> Exp
+cB2 a1 a2 =
+  let
+    r = cB3 a1 a2
+  in
+    case getApp a2 of
+      IsApp x1 x2 ->
+        case getApp x1 of
+          IsApp cb ck ->
+            if isY a1 && isB cb && isK ck then
+              x2
+            else
+              r
+          NotApp ->
+            if isC a1 && isC x1 && isI x2 then
+              cP
+            else
+              r
+      NotApp -> r
+
+cB3 :: Exp -> Exp -> Exp
+cB3 a1 a2 =
+  if isI a1 then
+    a2
+  else
+    app2 (Lit (LPrim "B")) a1 a2
+
+{-
+cB (App CB CK) CP             = CO -- Cons
+cB CY          (App (App CB CK) e) = e  -- B Y (B K e) = e
+cB CC          (App CC CI)    = CP -- Pair
+cB CI          e              = e  -- B I e = e
+cB e1          e2             = app2 CB e1 e2
+-}
+
+cSS :: Exp -> Exp -> Exp -> Exp
+cSS e1 e2 e3 = app3 (Lit (LPrim "S'")) e1 e2 e3
+
+cCC :: Exp -> Exp -> Exp -> Exp
+cCC e1 e2 e3 = app3 (Lit (LPrim "C'")) e1 e2 e3
+
+improveT :: Exp -> Exp
+improveT ae =
+  case getApp ae of
+    NotApp -> ae
+    IsApp f a ->
+      let
+        ff = improveT f
+        aa = improveT a
+      in
+        if isK ff && isI aa then
+          Lit (LPrim "A")
+{- Using I x --> x does not improve things.
+        else if isI ff then
+          aa
+-}
+        else if isB ff && isK aa then
+          Lit (LPrim "Z")
+        else if isC ff && isI aa then
+          Lit (LPrim "U")
+        else if isB ff && isB aa then
+          Lit (LPrim "B'")
+        else if isC ff && isC aa then
+          Lit (LPrim "R")
+        else
+          let
+            def =
+              case getApp aa of
+                IsApp ck e ->
+                  if isY ff && isK ck then
+                    e
+                  else
+                    App ff aa
+                NotApp -> App ff aa
+          in
+            def
+{-
+            case getApp ff of
+              IsApp xf xa ->
+                if isK xf then
+                  xa
+                else
+                  def
+              NotApp -> def
+-}
+            
+{-
+-- K I      -->  A
+-- C I      -->  T
+-- B B      -->  B'
+-- Y (K e)  -->  e
+-- K x y    -->  x
+improveT (App f a) =
+  case (improveT f, improveT a) of
+    (CK,                     CI) -> CA
+--    (CI,                      e) -> e
+    (CY,               App CK e) -> e
+--    (App CK e1,              e2) -> e1
+    (e1,                     e2) -> App e1 e2
+improveT e = e
+-}
+
+instance Show Exp where
+  show = render . ppExp
+
+ppExp :: Exp -> Doc
+ppExp ae =
+  case ae of
+--    Let i e b -> sep [ text "let" <+> ppIdent i <+> text "=" <+> ppExp e, text "in" <+> ppExp b ]
+    Var i -> ppIdent i
+    App f a -> parens $ ppExp f <+> ppExp a
+    Lam i e -> parens $ text "\\" <> ppIdent i <> text "." <+> ppExp e
+    Lit l -> text (showLit l)
+
+substExp :: Ident -> Exp -> Exp -> Exp
+substExp si se ae =
+  case ae of
+    Var i -> if i == si then se else ae
+    App f a -> App (substExp si se f) (substExp si se a)
+    Lam i e -> if si == i then
+                 ae
+               else if elem i (freeVars se) then
+                 let
+                   fe = allVarsExp e
+                   ase = allVarsExp se
+                   j = head [ v | n <- enumFrom (0::Int), let { v = mkIdent ("a" ++ show n) }, not (elem v ase), not (elem v fe) ]
+                 in
+                   --trace ("substExp " ++ unwords [si, i, j]) $
+                   Lam j (substExp si se (substExp i (Var j) e))
+               else
+                   Lam i (substExp si se e)
+    Lit _ -> ae
+
+freeVars :: Exp -> [Ident]
+freeVars ae =
+  case ae of
+    Var i -> [i]
+    App f a -> freeVars f ++ freeVars a
+    Lam i e -> deleteAllBy (==) i (freeVars e)
+    Lit _ -> []
+
+allVarsExp :: Exp -> [Ident]
+allVarsExp ae =
+  case ae of
+    Var i -> [i]
+    App f a -> allVarsExp f ++ allVarsExp a
+    Lam i e -> i : allVarsExp e
+    Lit _ -> []
+
+--------
+-- Possible additions
+--
+-- Added:
+--  R = C C
+--  R x y z = (C C x y) z = C y x z = y z x
+--
+--  Q = C I
+--  Q x y z = (C I x y) z = I y x z = y x z
+--
+-- Added:
+--  Z = B K
+--  Z x y z = B K x y z = K (x y) z = x y
+--
+--  ZK = Z K
+--  ZK x y z = Z K x y z = (K x) z = x
+--
+--  C'B = C' B
+--  C'B x y z w = C' B x y z w = B (x z) y w = x z (y w)
+
+--  B (B e) x y z = B e (x y) z = e (x y z)
+--
+--  B' :: (a -> b -> c) -> a -> (d -> b) -> d -> c
+--  B' k f g x = k f (g x)
+--
+-- Common:
+--  817: C' B
+--  616: B Z
+--  531: C' C
+--  352: Z K
+--  305: C' S
+--
+--  BZ = B Z
+--  BZ x y z w = B Z x y z w = Z (x y) z w = x y z
+--
+--  C'C = C' C
+--  C'C x y z w = C' C x y z w = C (x z) y w = x z w y
+
+
+---------------------------------------------------------------
+
+{-
+-- Oleg's abstraction algorithm
+
+data Peano = S Peano | Z
+  --Xderiving (Show)
+data DB = N Peano | L DB | A DB DB | Free Ident | K Lit
+  --Xderiving (Show)
+
+index :: Ident -> [Ident] -> Maybe Peano
+index x xs = lookupBy eqIdent x $ zip xs $ iterate S Z
+
+deBruijn :: Exp -> DB
+deBruijn = go [] where
+  go binds e =
+    case e of
+      Var x -> maybe (Free x) N $ index x binds
+      App t u -> A (go binds t) (go binds u)
+      Lam x t -> L $ go (x:binds) t
+      Lit l -> K l
+
+type CL = Exp
+type BCL = ([Bool], CL)
+
+com :: String -> Exp
+com s = Lit (LPrim s)
+(@@) :: Exp -> Exp -> Exp
+(@@) f a = App f a
+
+convertBool :: (BCL -> BCL -> CL) -> DB -> BCL
+convertBool (#) ee =
+  case ee of
+    N Z -> (True:[], com "I")
+    N (S e) -> (False:g, d) where (g, d) = rec $ N e
+    L e -> case rec e of
+             ([], d) -> ([], com "K" @@ d)
+             (False:g, d) -> (g, ([], com "K") # (g, d))
+             (True:g, d) -> (g, d)
+    A e1 e2 -> (zipWithDefault False (||) g1 g2, t1 # t2) where
+      t1@(g1, _) = rec e1
+      t2@(g2, _) = rec e2
+    Free s -> ([], Var s)
+    K l -> ([], Lit l)
+  where rec = convertBool (#)
+
+optEta :: DB -> BCL
+optEta = convertBool (#) where
+  (#) ([], d1)           {- # -} ([],       d2)      = d1 @@ d2
+  (#) ([], d1)           {- # -} (True:[],  Lit (LPrim "I")) = d1
+  (#) ([], d1)           {- # -} (True:g2,  d2)      = ([], com "B" @@ d1) # (g2, d2)
+  (#) ([], d1)           {- # -} (False:g2, d2)      = ([], d1) # (g2, d2)
+  (#) (True:[], Lit (LPrim "I")) {- # -} ([],       d2)      = com "U" @@ d2
+  (#) (True:[], Lit (LPrim "I")) {- # -} (False:g2, d2)      = ([], com "U") # (g2, d2)
+  (#) (True:g1, d1)      {- # -} ([],       d2)      = ([], com "R" @@ d2) # (g1, d1)
+  (#) (True:g1, d1)      {- # -} (True:g2,  d2)      = (g1, ([], com "S") # (g1, d1)) # (g2, d2)
+  (#) (True:g1, d1)      {- # -} (False:g2, d2)      = (g1, ([], com "C") # (g1, d1)) # (g2, d2)
+  (#) (False:g1, d1)     {- # -} ([],       d2)      = (g1, d1) # ([], d2)
+  (#) (False:_g1, d1)    {- # -} (True:[],  Lit (LPrim "I")) = d1
+  (#) (False:g1, d1)     {- # -} (True:g2,  d2)      = (g1, ([], com "B") # (g1, d1)) # (g2, d2)
+  (#) (False:g1, d1)     {- # -} (False:g2, d2)      = (g1, d1) # (g2, d2)
+
+zipWithDefault :: forall a b . a -> (a -> a -> b) -> [a] -> [a] -> [b]
+zipWithDefault d f     []     ys = map (f d) ys
+zipWithDefault d f     xs     [] = map (flip f d) xs
+zipWithDefault d f (x:xt) (y:yt) = f x y : zipWithDefault d f xt yt
+
+compileOptX :: Exp -> Exp
+compileOptX = snd . optEta . deBruijn
+-}
+
diff --git a/src/MicroHs/Expr.hs b/src/MicroHs/Expr.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Expr.hs
@@ -0,0 +1,653 @@
+module MicroHs.Expr(
+  IdentModule,
+  EModule(..),
+  ExportItem(..),
+  ImportSpec(..),
+  ImportItem(..),
+  EDef(..), showEDefs,
+  Expr(..), eLam, eEqns, showExpr, eqExpr,
+  Listish(..),
+  Lit(..), showLit,
+  EBind(..), showEBind, showEBinds,
+  Eqn(..),
+  EStmt(..),
+  EAlts(..),
+  EAlt,
+  ECaseArm,
+  FunDep,
+  EType, showEType, eqEType,
+  EConstraint,
+  EPat, patVars, isPVar, isPConApp,
+  EKind, kType, kConstraint,
+  IdKind(..), idKindIdent,
+  LHS,
+  Constr(..), ConstrField, SType,
+  ConTyInfo,
+  Con(..), conIdent, conArity,
+  tupleConstr, getTupleConstr,
+  mkTupleSel,
+  subst,
+  allVarsExpr, allVarsBind, allVarsEqn,
+  setSLocExpr,
+  errorMessage,
+  Assoc(..), Fixity,
+  getBindsVars,
+  HasLoc(..),
+  ) where
+import Prelude --Xhiding (Monad(..), Applicative(..), MonadFail(..), Functor(..), (<$>), (<>))
+import Data.Maybe
+import MicroHs.Ident
+import Text.PrettyPrint.HughesPJ
+--Ximport GHC.Stack
+--Ximport Control.DeepSeq
+
+type IdentModule = Ident
+
+----------------------
+
+data EModule = EModule IdentModule [ExportItem] [EDef]
+  --Xderiving (Show)
+
+data ExportItem
+  = ExpModule IdentModule
+  | ExpTypeCon Ident
+  | ExpType Ident
+  | ExpValue Ident
+  --Xderiving (Show)
+
+data EDef
+  = Data LHS [Constr]
+  | Newtype LHS Constr
+  | Type LHS EType
+  | Fcn Ident [Eqn]
+  | Sign Ident EType
+  | Import ImportSpec
+  | ForImp String Ident EType
+  | Infix Fixity [Ident]
+  | Class [EConstraint] LHS [FunDep] [EBind]  -- XXX will probable need initial forall with FD
+  | Instance [IdKind] [EConstraint] EConstraint [EBind]  -- no deriving yet
+  | Default [EType]
+  --Xderiving (Show)
+
+data ImportSpec = ImportSpec Bool Ident (Maybe Ident) (Maybe (Bool, [ImportItem]))  -- first Bool indicates 'qualified', second 'hiding'
+  --Xderiving (Show)
+
+data ImportItem
+  = ImpTypeCon Ident
+  | ImpType Ident
+  | ImpValue Ident
+  --Xderiving (Show)
+
+data Expr
+  = EVar Ident
+  | EApp Expr Expr
+  | EOper Expr [(Ident, Expr)]
+  | ELam [Eqn]
+  | ELit SLoc Lit
+  | ECase Expr [ECaseArm]
+  | ELet [EBind] Expr
+  | ETuple [Expr]
+  | EListish Listish
+  | EDo (Maybe Ident) [EStmt]
+  | ESectL Expr Ident
+  | ESectR Ident Expr
+  | EIf Expr Expr Expr
+  | ESign Expr EType
+  | EAt Ident Expr  -- only in patterns
+  -- Only while type checking
+  | EUVar Int
+  -- Constructors after type checking
+  | ECon Con
+  | EForall [IdKind] Expr -- only in types
+  --deriving (Show, Eq)
+
+type FunDep = ([Ident], [Ident])
+
+eLam :: [EPat] -> Expr -> Expr
+eLam ps e = ELam $ eEqns ps e
+
+eEqns :: [EPat] -> Expr -> [Eqn]
+eEqns ps e = [Eqn ps (EAlts [([], e)] [])]
+
+data Con
+  = ConData ConTyInfo Ident
+  | ConNew Ident
+  | ConLit SLoc Lit
+  --Xderiving(Show)
+
+data Listish
+  = LList [Expr]
+  | LCompr Expr [EStmt]
+  | LFrom Expr
+  | LFromTo Expr Expr
+  | LFromThen Expr Expr
+  | LFromThenTo Expr Expr Expr
+  --deriving(Show, Eq)
+
+conIdent :: --XHasCallStack =>
+            Con -> Ident
+conIdent (ConData _ i) = i
+conIdent (ConNew i) = i
+conIdent _ = error "conIdent"
+
+conArity :: Con -> Int
+conArity (ConData cs i) = fromMaybe (error "conArity") $ lookup i cs
+conArity (ConNew _) = 1
+conArity (ConLit _ _) = 0
+
+instance Eq Con where
+  (==) (ConData _ i) (ConData _ j) = i == j
+  (==) (ConNew    i) (ConNew    j) = i == j
+  (==) (ConLit _  l) (ConLit _  k) = l == k
+  (==) _             _             = False
+
+data Lit
+  = LInt Int
+  | LInteger Integer
+  | LDouble Double
+  | LRat Rational
+  | LChar Char
+  | LStr String
+  | LPrim String
+  | LForImp String
+  --Xderiving (Show)
+--Xinstance NFData Lit where rnf (LInt i) = rnf i; rnf (LInteger i) = rnf i; rnf (LDouble d) = rnf d; rnf (LRat r) = rnf r; rnf (LChar c) = rnf c; rnf (LStr s) = rnf s; rnf (LPrim s) = rnf s; rnf (LForImp s) = rnf s
+
+instance Eq Lit where
+  (==) (LInt x)     (LInt  y) = x == y
+  (==) (LInteger x) (LInteger  y) = x == y
+  (==) (LDouble x)  (LDouble y) = x == y
+  (==) (LRat x)     (LRat y) = x == y
+  (==) (LChar x)    (LChar y) = x == y
+  (==) (LStr  x)    (LStr  y) = x == y
+  (==) (LPrim x)    (LPrim y) = x == y
+  (==) (LForImp x)  (LForImp y) = x == y
+  (==) _         _         = False
+
+type ECaseArm = (EPat, EAlts)
+
+data EStmt = SBind EPat Expr | SThen Expr | SLet [EBind]
+  --Xderiving (Show)
+
+data EBind = BFcn Ident [Eqn] | BPat EPat Expr | BSign Ident EType
+  --Xderiving (Show)
+
+-- A single equation for a function
+data Eqn = Eqn [EPat] EAlts
+  --Xderiving (Show)
+
+data EAlts = EAlts [EAlt] [EBind]
+  --Xderiving (Show)
+
+type EAlt = ([EStmt], Expr)
+
+type ConTyInfo = [(Ident, Int)]    -- All constructors with their arities
+
+type EPat = Expr
+
+isPVar :: EPat -> Bool
+isPVar (EVar i) = not (isConIdent i)
+isPVar _ = False    
+
+isPConApp :: EPat -> Bool
+isPConApp (EVar i) = isConIdent i
+isPConApp (EApp f _) = isPConApp f
+isPConApp _ = True
+
+patVars :: EPat -> [Ident]
+patVars = filter isVar . allVarsExpr
+  where isVar v = not (isConIdent v) && not (isDummyIdent v)
+
+type LHS = (Ident, [IdKind])
+
+data Constr = Constr
+  [IdKind] [EConstraint]          -- existentials: forall vs . ctx =>
+  Ident                           -- constructor name
+  (Either [SType] [ConstrField])  -- types or named fields
+  --Xderiving(Show)
+
+type ConstrField = (Ident, SType)              -- record label and type
+type SType = (Bool, EType)                     -- the Bool indicates strict
+
+-- Expr restricted to
+--  * after desugaring: EApp and EVar
+--  * before desugaring: EApp, EVar, ETuple, EList
+type EType = Expr
+
+type EConstraint = EType
+
+data IdKind = IdKind Ident EKind
+  --deriving (Show, Eq)
+
+instance Show IdKind where
+  show (IdKind i k) = "(" ++ show i ++ "::" ++ show k ++ ")"
+
+idKindIdent :: IdKind -> Ident
+idKindIdent (IdKind i _) = i
+
+type EKind = EType
+
+kType :: EKind
+kType = EVar (Ident noSLoc "Primitives.Type")
+
+kConstraint :: EKind
+kConstraint = EVar (Ident noSLoc "Primitives.Constraint")
+
+tupleConstr :: SLoc -> Int -> Ident
+tupleConstr loc n = mkIdentSLoc loc (replicate (n - 1) ',')
+
+-- Check if it is a suple constructor
+getTupleConstr :: Ident -> Maybe Int
+getTupleConstr i =
+  case unIdent i of
+    ',':xs -> Just (length xs + 2)  -- "," is 2-tuple
+    _ -> Nothing
+
+-- Create a tuple selector, component i (0 based) of n
+mkTupleSel :: Int -> Int -> Expr
+mkTupleSel i n = eLam [ETuple [ EVar $ if k == i then x else dummyIdent | k <- [0 .. n - 1] ]] (EVar x)
+  where x = mkIdent "$x"
+
+---------------------------------
+
+-- Get the location of a syntactic element
+class HasLoc a where
+  getSLoc :: a -> SLoc
+
+instance HasLoc Ident where
+  getSLoc (Ident l _) = l
+
+-- Approximate location; only identifiers and literals carry a location
+instance HasLoc Expr where
+  getSLoc (EVar i) = getSLoc i
+  getSLoc (EApp e _) = getSLoc e
+  getSLoc (EOper e _) = getSLoc e
+  getSLoc (ELam qs) = getSLoc qs
+  getSLoc (ELit l _) = l
+  getSLoc (ECase e _) = getSLoc e
+  getSLoc (ELet bs _) = getSLoc bs
+  getSLoc (ETuple es) = getSLoc es
+  getSLoc (EListish l) = getSLoc l
+  getSLoc (EDo (Just i) _) = getSLoc i
+  getSLoc (EDo _ ss) = getSLoc ss
+  getSLoc (ESectL e _) = getSLoc e
+  getSLoc (ESectR i _) = getSLoc i
+  getSLoc (EIf e _ _) = getSLoc e
+  getSLoc (ESign e _) = getSLoc e
+  getSLoc (EAt i _) = getSLoc i
+  getSLoc (EUVar _) = error "getSLoc EUVar"
+  getSLoc (ECon c) = getSLoc c
+  getSLoc (EForall [] e) = getSLoc e
+  getSLoc (EForall iks _) = getSLoc iks
+
+instance forall a . HasLoc a => HasLoc [a] where
+  getSLoc [] = error "getSLoc []"
+  getSLoc (a:_) = getSLoc a
+
+instance HasLoc IdKind where
+  getSLoc (IdKind i _) = getSLoc i
+
+instance HasLoc Con where
+  getSLoc (ConData _ i) = getSLoc i
+  getSLoc (ConNew i) = getSLoc i
+  getSLoc (ConLit l _) = l
+
+instance HasLoc Listish where
+  getSLoc (LList es) = getSLoc es
+  getSLoc (LCompr e _) = getSLoc e
+  getSLoc (LFrom e) = getSLoc e
+  getSLoc (LFromTo e _) = getSLoc e
+  getSLoc (LFromThen e _) = getSLoc e
+  getSLoc (LFromThenTo e _ _) = getSLoc e
+
+instance HasLoc EStmt where
+  getSLoc (SBind p _) = getSLoc p
+  getSLoc (SThen e) = getSLoc e
+  getSLoc (SLet bs) = getSLoc bs
+
+instance HasLoc EBind where
+  getSLoc (BFcn i _) = getSLoc i
+  getSLoc (BPat p _) = getSLoc p
+  getSLoc (BSign i _) = getSLoc i
+
+instance HasLoc Eqn where
+  getSLoc (Eqn [] a) = getSLoc a
+  getSLoc (Eqn (p:_) _) = getSLoc p
+
+instance HasLoc EAlts where
+  getSLoc (EAlts as _) = getSLoc as
+
+instance HasLoc EAlt where
+  getSLoc ([], e) = getSLoc e
+  getSLoc (ss, _) = getSLoc ss
+
+---------------------------------
+
+data Assoc = AssocLeft | AssocRight | AssocNone
+  --Xderiving (Show)
+
+instance Eq Assoc where
+  AssocLeft  == AssocLeft  = True
+  AssocRight == AssocRight = True
+  AssocNone  == AssocNone  = True
+  _          == _          = False
+
+type Fixity = (Assoc, Int)
+
+---------------------------------
+
+-- Enough to handle subsitution in types
+subst :: [(Ident, Expr)] -> Expr -> Expr
+subst [] = id
+subst s =
+  let
+    sub ae =
+      case ae of
+        EVar i -> fromMaybe ae $ lookup i s
+        EApp f a -> EApp (sub f) (sub a)
+        ESign e t -> ESign (sub e) t
+        EUVar _ -> ae
+        EForall iks t -> EForall iks $ subst [ x | x@(i, _) <- s, not (elem i is) ] t
+          where is = map idKindIdent iks
+        _ -> error "subst unimplemented"
+  in sub
+
+---------------------------------
+
+-- XXX needs more?
+eqEType :: EType -> EType -> Bool
+eqEType = eqExpr
+
+-- Very partial implementation of Expr equality.
+-- It is only used to compare instances, so this suffices.
+eqExpr :: --XHasCallStack =>
+          Expr -> Expr -> Bool
+eqExpr (EVar i) (EVar i') = i == i'
+eqExpr (EVar _) (EApp _ _) = False
+eqExpr (EApp f a) (EApp f' a') = eqExpr f f' && eqExpr a a'
+eqExpr (EApp _ _) (EVar _) = False
+eqExpr _ _ = False -- XXX good enough for instances
+--eqExpr e1 e2 = error $ "eqExpr: unimplemented " ++ showExpr e1 ++ " == " ++ showExpr e2
+
+---------------------------------
+
+allVarsBind :: EBind -> [Ident]
+allVarsBind abind =
+  case abind of
+    BFcn i eqns -> i : concatMap allVarsEqn eqns
+    BPat p e -> allVarsPat p ++ allVarsExpr e
+    BSign i _ -> [i]
+
+allVarsEqn :: Eqn -> [Ident]
+allVarsEqn eqn =
+  case eqn of
+    Eqn ps alts -> concatMap allVarsPat ps ++ allVarsAlts alts
+
+allVarsAlts :: EAlts -> [Ident]
+allVarsAlts (EAlts alts bs) = concatMap allVarsAlt alts ++ concatMap allVarsBind bs
+
+allVarsAlt :: EAlt -> [Ident]
+allVarsAlt (ss, e) = concatMap allVarsStmt ss ++ allVarsExpr e
+
+allVarsPat :: EPat -> [Ident]
+allVarsPat = allVarsExpr
+
+allVarsExpr :: Expr -> [Ident]
+allVarsExpr aexpr =
+  case aexpr of
+    EVar i -> [i]
+    EApp e1 e2 -> allVarsExpr e1 ++ allVarsExpr e2
+    EOper e1 ies -> allVarsExpr e1 ++ concatMap (\ (i,e2) -> i : allVarsExpr e2) ies
+    ELam qs -> concatMap allVarsEqn qs
+    ELit _ _ -> []
+    ECase e as -> allVarsExpr e ++ concatMap allVarsCaseArm as
+    ELet bs e -> concatMap allVarsBind bs ++ allVarsExpr e
+    ETuple es -> concatMap allVarsExpr es
+    EListish (LList es) -> concatMap allVarsExpr es
+    EDo mi ss -> maybe [] (:[]) mi ++ concatMap allVarsStmt ss
+    ESectL e i -> i : allVarsExpr e
+    ESectR i e -> i : allVarsExpr e
+    EIf e1 e2 e3 -> allVarsExpr e1 ++ allVarsExpr e2 ++ allVarsExpr e3
+    EListish l -> allVarsListish l
+    ESign e _ -> allVarsExpr e
+    EAt i e -> i : allVarsExpr e
+    EUVar _ -> []
+    ECon c -> [conIdent c]
+    EForall iks e -> map (\ (IdKind i _) -> i) iks ++ allVarsExpr e
+
+allVarsListish :: Listish -> [Ident]
+allVarsListish (LList es) = concatMap allVarsExpr es
+allVarsListish (LCompr e ss) = allVarsExpr e ++ concatMap allVarsStmt ss
+allVarsListish (LFrom e) = allVarsExpr e
+allVarsListish (LFromTo e1 e2) = allVarsExpr e1 ++ allVarsExpr e2
+allVarsListish (LFromThen e1 e2) = allVarsExpr e1 ++ allVarsExpr e2
+allVarsListish (LFromThenTo e1 e2 e3) = allVarsExpr e1 ++ allVarsExpr e2 ++ allVarsExpr e3
+
+allVarsCaseArm :: ECaseArm -> [Ident]
+allVarsCaseArm (p, alts) = allVarsPat p ++ allVarsAlts alts
+
+allVarsStmt :: EStmt -> [Ident]
+allVarsStmt astmt =
+  case astmt of
+    SBind p e -> allVarsPat p ++ allVarsExpr e
+    SThen e -> allVarsExpr e
+    SLet bs -> concatMap allVarsBind bs
+
+-----------------------------
+
+setSLocExpr :: SLoc -> Expr -> Expr
+setSLocExpr l (EVar i) = EVar (setSLocIdent l i)
+setSLocExpr l (ECon c) = ECon (setSLocCon l c)
+setSLocExpr l (ELit _ k) = ELit l k
+setSLocExpr _ _ = error "setSLocExpr"  -- what other cases do we need?
+
+setSLocCon :: SLoc -> Con -> Con
+setSLocCon l (ConData ti i) = ConData ti (setSLocIdent l i)
+setSLocCon l (ConNew i) = ConNew (setSLocIdent l i)
+setSLocCon _ c = c
+
+errorMessage :: --XHasCallStack =>
+                forall a . SLoc -> String -> a
+errorMessage loc msg = error $ showSLoc loc ++ ": " ++ msg
+
+----------------
+
+instance Show Expr where
+  show = showExpr
+
+showExpr :: Expr -> String
+showExpr = render . ppExpr
+
+showEDefs :: [EDef] -> String
+showEDefs = render . ppEDefs
+
+showEBind :: EBind -> String
+showEBind = render . ppEBind
+
+showEBinds :: [EBind] -> String
+showEBinds = render . vcat . map ppEBind
+
+showEType :: EType -> String
+showEType = render . ppEType
+
+ppImportItem :: ImportItem -> Doc
+ppImportItem ae =
+  case ae of
+    ImpTypeCon i -> ppIdent i <> text "(..)"
+    ImpType i -> ppIdent i
+    ImpValue i -> ppIdent i
+
+ppEDef :: EDef -> Doc
+ppEDef def =
+  case def of
+    Data lhs [] -> text "data" <+> ppLHS lhs
+    Data lhs cs -> text "data" <+> ppLHS lhs <+> text "=" <+> hsep (punctuate (text " |") (map ppConstr cs))
+    Newtype lhs c -> text "newtype" <+> ppLHS lhs <+> text "=" <+> ppConstr c
+    Type lhs t -> text "type" <+> ppLHS lhs <+> text "=" <+> ppEType t
+    Fcn i eqns -> ppEqns (ppIdent i) (text "=") eqns
+    Sign i t -> ppIdent i <+> text "::" <+> ppEType t
+    Import (ImportSpec q m mm mis) -> text "import" <+> (if q then text "qualified" else empty) <+> ppIdent m <> text (maybe "" ((" as " ++) . unIdent) mm) <>
+      case mis of
+        Nothing -> empty
+        Just (h, is) -> text (if h then " hiding" else "") <> parens (hsep $ punctuate (text ", ") (map ppImportItem is))
+    ForImp ie i t -> text ("foreign import ccall " ++ show ie) <+> ppIdent i <+> text "::" <+> ppEType t
+    Infix (a, p) is -> text ("infix" ++ f a) <+> text (show p) <+> hsep (punctuate (text ", ") (map ppIdent is))
+      where f AssocLeft = "l"; f AssocRight = "r"; f AssocNone = ""
+    Class sup lhs fds bs -> ppWhere (text "class" <+> ppCtx sup <+> ppLHS lhs <+> ppFunDeps fds) bs
+    Instance vs ct ty bs -> ppWhere (text "instance" <+> ppForall vs <+> ppCtx ct <+> ppEType ty) bs
+    Default ts -> text "default" <+> parens (hsep (punctuate (text ", ") (map ppEType ts)))
+
+ppCtx :: [EConstraint] -> Doc
+ppCtx [] = empty
+ppCtx ts = ppEType (ETuple ts) <+> text "=>"
+
+ppFunDeps :: [FunDep] -> Doc
+ppFunDeps [] = empty
+ppFunDeps fds =
+  text "|" <+> hsep (punctuate (text ",") (map (\ (is, os) -> hsep (map ppIdent is) <+> text "-" <+> hsep (map ppIdent os)) fds))
+
+ppEqns :: Doc -> Doc -> [Eqn] -> Doc
+ppEqns name sepr = vcat . map (\ (Eqn ps alts) -> sep [name <+> hsep (map ppEPat ps), ppAlts sepr alts])
+
+ppConstr :: Constr -> Doc
+ppConstr (Constr iks ct c cs) = ppForall iks <+> ppCtx ct <+> ppIdent c <+> ppCs cs
+  where ppCs (Left  ts) = hsep (map ppSType ts)
+        ppCs (Right fs) = braces (hsep $ map f fs)
+          where f (i, t) = ppIdent i <+> text "::" <+> ppSType t <> text ","
+
+ppSType :: SType -> Doc
+ppSType (False, t) = ppEType t
+ppSType (True, t) = text "!" <> ppEType t
+
+ppLHS :: LHS -> Doc
+ppLHS (f, vs) = hsep (ppIdent f : map ppIdKind vs)
+
+ppIdKind :: IdKind -> Doc
+ppIdKind (IdKind i k) = parens $ ppIdent i <> text "::" <> ppEKind k
+
+ppEDefs :: [EDef] -> Doc
+ppEDefs ds = vcat (map pp ds)
+  where pp d@(Sign _ _) = ppEDef d
+        pp d@(Import _) = ppEDef d
+        pp d            = ppEDef d $+$ text ""
+
+ppAlts :: Doc -> EAlts -> Doc
+ppAlts asep (EAlts alts bs) = ppWhere (ppAltsL asep alts) bs
+
+ppWhere :: Doc -> [EBind] -> Doc
+ppWhere d [] = d
+ppWhere d bs = (d <+> text "where") $+$ nest 2 (vcat (map ppEBind bs))
+
+ppAltsL :: Doc -> [EAlt] -> Doc
+ppAltsL asep [([], e)] = text "" <+> asep <+> ppExpr e
+ppAltsL asep alts = vcat (map (ppAlt asep) alts)
+
+ppAlt :: Doc -> EAlt -> Doc
+ppAlt asep (ss, e) = text " |" <+> hsep (punctuate (text ",") (map ppEStmt ss)) <+> asep <+> ppExpr e
+
+ppExpr :: Expr -> Doc
+ppExpr ae =
+  case ae of
+    EVar i | isOperChar cop -> parens (text op)
+           | otherwise      -> text op
+             where op = unIdent (unQualIdent i)
+                   cop = head op
+    EApp _ _ -> ppApp [] ae
+    EOper e ies -> ppExpr (foldl (\ e1 (i, e2) -> EApp (EApp (EVar i) e1) e2) e ies)
+    ELam qs -> parens $ text "\\" <> ppEqns empty (text "->") qs
+    ELit _ i -> text (showLit i)
+    ECase e as -> text "case" <+> ppExpr e <+> text "of" $$ nest 2 (vcat (map ppCaseArm as))
+    ELet bs e -> text "let" $$ nest 2 (vcat (map ppEBind bs)) $$ text "in" <+> ppExpr e
+    ETuple es -> parens $ hsep $ punctuate (text ",") (map ppExpr es)
+    EListish (LList es) -> ppList ppExpr es
+    EDo mn ss -> maybe (text "do") (\ n -> ppIdent n <> text ".do") mn $$ nest 2 (vcat (map ppEStmt ss))
+    ESectL e i -> parens $ ppExpr e <+> ppIdent i
+    ESectR i e -> parens $ ppIdent i <+> ppExpr e
+    EIf e1 e2 e3 -> parens $ sep [text "if" <+> ppExpr e1, text "then" <+> ppExpr e2, text "else" <+> ppExpr e3]
+    EListish l -> ppListish l
+    ESign e t -> ppExpr e <+> text "::" <+> ppEType t
+    EAt i e -> ppIdent i <> text "@" <> ppExpr e
+    EUVar i -> text ("a" ++ show i)
+    ECon c -> ppCon c
+    EForall iks e -> ppForall iks <+> ppEType e
+--  where
+ppApp :: [Expr] -> Expr -> Doc
+ppApp as (EApp f a) = ppApp (a:as) f
+ppApp as (EVar i) | isOperChar cop, [a, b] <- as = parens $ ppExpr a <+> text op <+> ppExpr b
+                  | isOperChar cop, [a] <- as    = parens $ ppExpr a <+> text op
+                  | cop == ','                   = ppExpr (ETuple as)
+                  | op == "[]", length as == 1   = ppExpr (EListish (LList as))
+                    where op = unIdent (unQualIdent i)
+                          cop = head op
+ppApp as f = parens $ hsep (map ppExpr (f:as))
+
+ppForall :: [IdKind] -> Doc
+--ppForall [] = empty
+ppForall iks = text "forall" <+> hsep (map ppIdKind iks) <+> text "."
+
+ppListish :: Listish -> Doc
+ppListish _ = text "<<Listish>>"
+
+ppCon :: Con -> Doc
+ppCon (ConData _ s) = ppIdent s
+ppCon (ConNew s) = ppIdent s
+ppCon (ConLit _ l) = text (showLit l)
+
+-- Literals are tagged the way they appear in the combinator file:
+--  #   Int
+--  %   Double
+--  '   Char    (not in file)
+--  "   String
+--  ^   FFI function
+--      primitive
+showLit :: Lit -> String
+showLit l =
+  case l of
+    LInt i     -> '#' : show i
+    LInteger i -> '#' : '#' : show i
+    LDouble d  -> '&' : show d
+    LRat r     -> '%' : show r
+    LChar c    -> show c
+    LStr s     -> show s
+    LPrim s    -> s
+    LForImp s  -> '^' : s
+
+ppEStmt :: EStmt -> Doc
+ppEStmt as =
+  case as of
+    SBind p e -> ppEPat p <+> text "<-" <+> ppExpr e
+    SThen e -> ppExpr e
+    SLet bs -> text "let" $$ nest 2 (vcat (map ppEBind bs))
+
+ppEBind :: EBind -> Doc
+ppEBind ab =
+  case ab of
+    BFcn i eqns -> ppEDef (Fcn i eqns)
+    BPat p e -> ppEPat p <+> text "=" <+> ppExpr e
+    BSign i t -> ppIdent i <+> text "::" <+> ppEType t
+
+ppCaseArm :: ECaseArm -> Doc
+ppCaseArm arm =
+  case arm of
+    (p, alts) -> ppEPat p <> ppAlts (text "->") alts
+
+ppEPat :: EPat -> Doc
+ppEPat = ppExpr
+
+ppEType :: EType -> Doc
+ppEType = ppExpr
+
+ppEKind :: EKind -> Doc
+ppEKind = ppEType
+
+ppList :: forall a . (a -> Doc) -> [a] -> Doc
+ppList pp xs = brackets $ hsep $ punctuate (text ",") (map pp xs)
+getBindVars :: EBind -> [Ident]
+getBindVars abind =
+  case abind of
+    BFcn i _  -> [i]
+    BPat p _  -> patVars p
+    BSign _ _ -> []
+
+getBindsVars :: [EBind] -> [Ident]
+getBindsVars = concatMap getBindVars
diff --git a/src/MicroHs/Graph.hs b/src/MicroHs/Graph.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Graph.hs
@@ -0,0 +1,158 @@
+{-# OPTIONS_GHC -Wno-unused-imports #-}
+-----------------------------------------------------------------------------
+-- Loosely based on:
+--
+-- Module      :  Data.Graph
+-- Copyright   :  (c) The University of Glasgow 2002
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
+--
+-----------------------------------------------------------------------------
+
+module MicroHs.Graph (
+  stronglyConnComp,
+  SCC(..)
+  ) where
+import Prelude
+--Ximport Compat
+
+import qualified Data.IntSet as IS
+import qualified Data.IntMap as IM
+
+import Data.List
+import Data.Maybe
+
+data Tree a = Node a [Tree a]
+  --deriving (Eq, Ord, Show)
+
+type Forest a = [Tree a]
+
+-- | Strongly connected component.
+data SCC vertex = AcyclicSCC vertex     -- ^ A single vertex that is not
+                                        -- in any cycle.
+                | CyclicSCC  [vertex]   -- ^ A maximal set of mutually
+                                        -- reachable vertices.
+  --Xderiving (Show)
+
+stronglyConnComp
+        :: forall key node .
+           (key -> key -> Bool)
+        -> [(node, key, [key])]
+                -- ^ The graph: a list of nodes uniquely identified by keys,
+                -- with a list of keys of nodes this node has edges to.
+                -- The out-list may contain keys that don't correspond to
+                -- nodes of the graph; such edges are ignored.
+        -> [SCC node]
+stronglyConnComp le edges0
+  = map get_node (stronglyConnCompR le edges0)
+  where
+    get_node (AcyclicSCC (n, _, _)) = AcyclicSCC n
+    get_node (CyclicSCC triples)    = CyclicSCC [n | (n,_,_) <- triples]
+
+stronglyConnCompR
+        :: forall key node .
+           (key -> key -> Bool)
+        -> [(node, key, [key])]
+                -- ^ The graph: a list of nodes uniquely identified by keys,
+                -- with a list of keys of nodes this node has edges to.
+                -- The out-list may contain keys that don't correspond to
+                -- nodes of the graph; such edges are ignored.
+        -> [SCC (node, key, [key])]     -- ^ Reverse topologically sorted
+stronglyConnCompR _ [] = []
+stronglyConnCompR le edges0
+  = map decode forest
+  where
+    (graph, vertex_fn) = graphFromEdges le edges0
+    forest             = scc graph
+    mentions_itself v = elemBy (==) v (graph IM.! v)
+    decode (Node v []) | mentions_itself v = CyclicSCC [vertex_fn v]
+                       | otherwise         = AcyclicSCC (vertex_fn v)
+    decode other = CyclicSCC (dec other [])
+                 where
+                   dec (Node v ts) vs = vertex_fn v : foldr dec vs ts
+
+type Vertex = Int
+type Graph  = IM.IntMap [Vertex]
+type Edge   = (Vertex, Vertex)
+
+vertices :: Graph -> [Vertex]
+vertices  = IM.keys
+
+edges  :: Graph -> [Edge]
+edges g = [ (v, w) | v <- vertices g, w <- g IM.! v ]
+
+buildG :: [Vertex] -> [Edge] -> Graph
+buildG vs es =
+  let mt = IM.fromList (zip vs (repeat []))
+  in  foldr (\ (v, w) -> IM.insertWith (++) v [w]) mt es
+
+transposeG  :: Graph -> Graph
+transposeG g = buildG (vertices g) (reverseE g)
+
+reverseE  :: Graph -> [Edge]
+reverseE g = [ (w, v) | (v, w) <- edges g ]
+
+graphFromEdges
+        :: forall key node .
+           (key -> key -> Bool)
+        -> [(node, key, [key])]
+        -> (Graph, Vertex -> (node, key, [key]))
+graphFromEdges le edges0
+  = (graph, \v -> vertex_map IM.! v)
+  where
+    lek (_,k1,_) (_,k2,_) = le k1 k2
+
+    max_v           = length edges0 - 1
+    sorted_edges    = sortLE lek edges0
+    edges1          = zip [0..] sorted_edges
+
+    key_map         = IM.fromList [(v, k)                      | (v, (_,    k, _ )) <- edges1]
+
+    -- key_vertex :: key -> Maybe Vertex
+    --  returns Nothing for non-interesting vertices
+    key_vertex k   = findVertex 0 max_v
+                   where
+                     findVertex a b | a > b
+                              = Nothing
+                     findVertex a b =
+                         if k `le` m then
+                           if m `le` k then
+                             Just mid
+                           else
+                             findVertex a (mid - 1)
+                         else
+                           findVertex (mid + 1) b
+                       where
+                         mid = a + (b - a) `quot` 2
+                         m = key_map IM.! mid
+
+    graph           = IM.fromList [(v, mapMaybe key_vertex ks) | (v, (_,    _, ks)) <- edges1]
+    vertex_map      = IM.fromList edges1
+
+dff   :: Graph -> [Tree Vertex]
+dff g = dfs g (vertices g)
+
+dfs :: Graph -> [Vertex] -> Forest Vertex
+dfs g vs0 = snd $ go IS.empty vs0
+  where
+    go :: IS.IntSet -> [Vertex] -> (IS.IntSet, Forest Vertex)
+    go done [] = (done, [])
+    go done (v:vs) =
+      if IS.member v done
+      then go done vs
+      else
+        let (done', as) = go (IS.insert v done) (g IM.! v)
+            (done'', bs) = go done' vs
+        in  (done'', Node v as : bs)
+
+
+postorder :: forall a . Tree a -> [a] -> [a]
+postorder (Node a ts) = postorderF ts . (a :)
+
+postorderF :: forall a . [Tree a] -> [a] -> [a]
+postorderF ts = foldr (.) id $ map postorder ts
+
+postOrd :: Graph -> [Vertex]
+postOrd g = postorderF (dff g) []
+
+scc  :: Graph -> [Tree Vertex]
+scc g = dfs g (reverse (postOrd (transposeG g)))
diff --git a/src/MicroHs/Ident.hs b/src/MicroHs/Ident.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Ident.hs
@@ -0,0 +1,144 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module MicroHs.Ident(
+  Line, Col, Loc,
+  Ident(..),
+  mkIdent, mkIdentLoc, unIdent, isIdent,
+  qualIdent, showIdent, setSLocIdent,
+  ppIdent,
+  mkIdentSLoc,
+  isLower_, isIdentChar, isOperChar, isConIdent,
+  dummyIdent, isDummyIdent,
+  unQualIdent,
+  unQualString,
+  addIdentSuffix,
+  SLoc(..), noSLoc, isNoSLoc,
+  showSLoc,
+  expectQualified,
+  ) where
+import Data.Eq
+import Prelude
+import Data.Char
+import Text.PrettyPrint.HughesPJ
+--Ximport Control.DeepSeq
+--Ximport GHC.Stack
+
+type Line = Int
+type Col  = Int
+type Loc  = (Line, Col)
+
+data SLoc = SLoc !FilePath !Line !Col
+  --Xderiving (Eq)
+
+instance Show SLoc where
+  show (SLoc f l c) = show f ++ "," ++ show l ++ ":" ++ show c
+
+data Ident = Ident !SLoc String
+  --deriving (Show)
+--Xinstance NFData Ident where rnf (Ident _ s) = rnf s
+
+instance Eq Ident where
+  Ident _ i == Ident _ j  =  i == j
+
+instance Ord Ident where
+  compare (Ident _ i) (Ident _ j) = compare i j
+  Ident _ i <  Ident _ j  =  i <  j
+  Ident _ i <= Ident _ j  =  i <= j
+  Ident _ i >  Ident _ j  =  i >  j
+  Ident _ i >= Ident _ j  =  i >= j
+
+instance Show Ident where
+  show = showIdent
+
+noSLoc :: SLoc
+noSLoc = SLoc "" 0 0
+
+isNoSLoc :: SLoc -> Bool
+isNoSLoc (SLoc _ 0 0) = True
+isNoSLoc _ = False
+
+mkIdent :: String -> Ident
+mkIdent = Ident noSLoc
+
+mkIdentSLoc :: SLoc -> String -> Ident
+mkIdentSLoc = Ident
+
+mkIdentLoc :: FilePath -> Loc -> String -> Ident
+mkIdentLoc fn (l, c) s = Ident (SLoc fn l c) s
+
+unIdent :: Ident -> String
+unIdent (Ident _ s) = s
+
+setSLocIdent :: SLoc -> Ident -> Ident
+setSLocIdent l (Ident _ s) = Ident l s
+
+showIdent :: Ident -> String
+showIdent (Ident _ i) = i
+
+ppIdent :: Ident -> Doc
+ppIdent (Ident _ i) = text i
+
+isIdent :: String -> Ident -> Bool
+isIdent s (Ident _ i) = s == i
+
+qualIdent :: --XHasCallStack =>
+             Ident -> Ident -> Ident
+--XqualIdent _ (Ident _ i) | isQual i = error $ "already qualified " ++ i
+qualIdent (Ident _ qi) (Ident loc i) = Ident loc (qi ++ "." ++ i)
+
+expectQualified :: --XHasCallStack =>
+                   Ident -> Ident
+--XexpectQualified (Ident _ s) | not (isQual s) = error $ "not qualified " ++ s
+expectQualified i = i
+
+--XisQual :: String -> Bool
+--XisQual (c:'.':_:_) | isAlphaNum c = True
+--XisQual (_:cs) = isQual cs
+--XisQual "" = False
+
+addIdentSuffix :: Ident -> String -> Ident
+addIdentSuffix (Ident loc i) s = Ident loc (i ++ s)
+
+unQualString :: --XHasCallStack =>
+                String -> String
+unQualString [] = ""
+unQualString s@(c:_) =
+  if isIdentChar c then
+    case dropWhile (/= '.') s of
+      "" -> s
+      '.':r -> unQualString r
+      _ -> undefined -- This cannot happen, but GHC doesn't know that
+  else
+    s
+
+unQualIdent :: Ident -> Ident
+unQualIdent (Ident l s) = Ident l (unQualString s)
+
+isConIdent :: Ident -> Bool
+isConIdent (Ident _ i) =
+  let
+    c = head i
+  in isUpper c || c == ':' || c == ',' || i == "[]"  || i == "()"
+
+isOperChar :: Char -> Bool
+isOperChar c = elem c "@\\=+-:<>.!#$%^&*/|~?"
+
+isIdentChar :: Char -> Bool
+isIdentChar c = isLower_ c || isUpper c || isDigit c || c == '\''
+
+isLower_ :: Char -> Bool
+isLower_ c = isLower c || c == '_'
+
+dummyIdent :: Ident
+dummyIdent = mkIdent "_"
+
+isDummyIdent :: Ident -> Bool
+isDummyIdent (Ident _ "_") = True
+isDummyIdent _ = False
+
+showSLoc :: SLoc -> String
+showSLoc (SLoc fn l c) =
+  if null fn then "no location" else
+  show fn ++ 
+    if l == 0 && c == 0 then ""
+    else ": line " ++ show l ++ ", col " ++ show c
diff --git a/src/MicroHs/IdentMap.hs b/src/MicroHs/IdentMap.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/IdentMap.hs
@@ -0,0 +1,169 @@
+{-# OPTIONS_GHC -Wno-name-shadowing #-}
+--
+-- Balanced binary trees
+-- Similar to Data.Map
+-- Based on https://ufal.mff.cuni.cz/~straka/papers/2011-bbtree.pdf
+--
+module MicroHs.IdentMap(
+  Map,
+  empty, singleton,
+  insertWith, insert,
+  fromListWith, fromList,
+  delete,
+  lookup,
+  size,
+  toList, elems,
+  ) where
+import Prelude hiding(lookup)
+import MicroHs.Ident
+
+data Map a
+  = Nil           -- empty tree
+  | One Ident a   -- singleton
+  | Node          -- tree node
+    (Map a)        -- left subtree
+    Int            -- size of this tree
+    Ident          -- key stored in the node
+    a              -- element stored in the node
+    (Map a)        -- right subtree
+  --Xderiving(Show)
+
+empty :: forall a . Map a
+empty = Nil
+
+singleton :: forall a . Ident -> a -> Map a
+singleton i a = One i a
+
+elems :: forall v . Map v -> [v]
+elems = map snd . toList
+
+toList :: forall v . Map v -> [(Ident, v)]
+toList t = to t []
+  where
+    to Nil q = q
+    to (One k v) q = (k, v):q
+    to (Node l _ k v r) q = to l ((k, v) : to r q)
+
+fromList :: forall v . [(Ident, v)] -> Map v
+fromList = fromListWith const
+
+fromListWith :: forall v . (v -> v -> v) -> [(Ident, v)] -> Map v
+fromListWith comb = foldr (uncurry (insertWith comb)) empty
+
+size :: forall a . Map a -> Int
+size Nil = 0
+size (One _ _) = 1
+size (Node _ s _ _ _) = s
+
+node :: forall a . Map a -> Ident -> a -> Map a -> Map a
+node Nil  key val Nil   = One key val
+node left key val right = Node left (size left + 1 + size right) key val right
+
+lookup :: forall a . Ident -> Map a -> Maybe a
+lookup k = look
+  where
+    look Nil = Nothing
+    look (One key val) =
+      case compare k key of
+        EQ -> Just val
+        _  -> Nothing
+    look (Node left _ key val right) =
+      case k `compare` key of
+        LT -> look left
+        EQ -> Just val
+        GT -> look right
+
+insert :: forall a . Ident -> a -> Map a -> Map a
+insert = insertWith const
+
+insertWith :: forall a . (a -> a -> a) -> Ident -> a -> Map a -> Map a
+insertWith comb k v = ins
+  where
+    ins Nil = One k v
+    ins (One a v) = ins (Node Nil 1 a v Nil)
+    ins (Node left _ key val right) =
+      case k `compare` key of
+        LT -> balance (ins left) key val right
+        EQ -> node left k (comb v val) right
+        GT -> balance left key val (ins right)
+
+delete :: forall a . Ident -> Map a -> Map a
+delete k = del
+  where
+    del Nil = Nil
+    del t@(One a _) | (k `compare` a) == EQ = Nil
+                    | otherwise        = t
+    del (Node left _ key val right) =
+      case k `compare` key of
+        LT -> balance (del left) key val right
+        EQ -> glue left right
+        GT -> balance left key val (del right)
+      where
+        glue Nil right = right
+        glue left Nil = left
+        glue left right
+          | size left > size right =
+            let (key', val', left') = extractMax left
+            in node left' key' val' right
+          | otherwise =
+            let (key', val', right') = extractMin right
+            in node left key' val' right'
+
+extractMin :: forall a . Map a -> (Ident, a, Map a)
+extractMin Nil = undefined
+extractMin (One key val) = (key, val, Nil)
+extractMin (Node Nil _ key val right) = (key, val, right)
+extractMin (Node left _ key val right) =
+  case extractMin left of
+    (min, vmin, left') -> (min, vmin, balance left' key val right)
+
+extractMax :: forall a . Map a -> (Ident, a, Map a)
+extractMax Nil = undefined
+extractMax (One key val) = (key, val, Nil)
+extractMax (Node left _ key val Nil) = (key, val, left)
+extractMax (Node left _ key val right) =
+  case extractMax right of
+    (max, vmax, right') -> (max, vmax, balance left key val right')
+
+omega :: Int
+omega = 3
+alpha :: Int
+alpha = 2
+delta :: Int
+delta = 0
+
+balance :: forall a . Map a -> Ident -> a -> Map a -> Map a
+balance left key val right
+  | size left + size right <= 1 = node left key val right
+balance (One k v) key val right = balance (Node Nil 1 k v Nil) key val right
+balance left key val (One k v)  = balance left key val (Node Nil 1 k v Nil)
+balance left key val right
+  | size right > omega * size left + delta =
+      case right of
+        (Node rl _ _ _ rr) | size rl < alpha*size rr -> singleL left key val right
+                           | otherwise -> doubleL left key val right
+        _ -> undefined
+  | size left > omega * size right + delta =
+      case left of
+        (Node ll _ _ _ lr) | size lr < alpha*size ll -> singleR left key val right
+                           | otherwise -> doubleR left key val right
+        _ -> undefined
+  | otherwise = node left key val right
+
+singleL :: forall a . Map a -> Ident -> a -> Map a -> Map a
+singleL l k v (Node rl _ rk rv rr) = node (node l k v rl) rk rv rr
+singleL _ _ _ _ = undefined
+
+singleR :: forall a . Map a -> Ident -> a -> Map a -> Map a
+singleR (Node ll _ lk lv lr) k v r = node ll lk lv (node lr k v r)
+singleR _ _ _ _ = undefined
+
+doubleL :: forall a . Map a -> Ident -> a -> Map a -> Map a
+doubleL l k v (Node (Node rll _ rlk rlv rlr) _ rk rv rr) = node (node l k v rll) rlk rlv (node rlr rk rv rr)
+doubleL l k v (Node (One        rlk rlv    ) _ rk rv rr) = node (node l k v Nil) rlk rlv (node Nil rk rv rr)
+doubleL _ _ _ _ = undefined
+
+doubleR :: forall a . Map a -> Ident -> a -> Map a -> Map a
+doubleR (Node ll _ lk lv (Node lrl _ lrk lrv lrr)) k v r = node (node ll lk lv lrl) lrk lrv (node lrr k v r)
+doubleR (Node ll _ lk lv (One        lrk lrv    )) k v r = node (node ll lk lv Nil) lrk lrv (node Nil k v r)
+doubleR _ _ _ _ = undefined
diff --git a/src/MicroHs/Interactive.hs b/src/MicroHs/Interactive.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Interactive.hs
@@ -0,0 +1,170 @@
+module MicroHs.Interactive(module MicroHs.Interactive) where
+import Prelude
+--Ximport Data.List
+--import Control.DeepSeq
+import Control.Exception
+import MicroHs.StateIO
+import MicroHs.Compile
+import MicroHs.Desugar(LDef)
+import MicroHs.Ident(mkIdent)
+import MicroHs.Parse
+import MicroHs.Translate
+import Unsafe.Coerce
+import System.Console.SimpleReadline
+--Ximport Compat
+
+type IState = (String, Flags, Cache)
+
+type I a = StateIO IState a
+
+mainInteractive :: Flags -> IO ()
+mainInteractive (Flags a b c d _ f) = do
+  when (not usingMhs) $
+    error "Interactive mhs not available when compiled with ghc"
+  putStrLn "Welcome to interactive MicroHs!"
+  let flags' = Flags a b c d True f
+  cach <- getCachedPrelude flags'
+  _ <- runStateIO start (preamble, flags', cach)
+  return ()
+
+preamble :: String
+preamble = "module " ++ interactiveName ++ "(module " ++ interactiveName ++
+           ") where\nimport Prelude\ndefault (Integer, Double)\n"
+
+start :: I ()
+start = do
+  reload
+  liftIO $ putStrLn "Type ':quit' to quit, ':help' for help"
+  repl
+
+repl :: I ()
+repl = do
+  ms <- liftIO $ getInputLineHist ".mhsi" "> "
+  case ms of
+    Nothing -> repl
+    Just s ->
+      case s of
+        [] -> repl
+        ':':r -> do
+          c <- command r
+          if c then repl else liftIO $ putStrLn "Bye"
+        _ -> do
+          oneline s
+          repl
+
+command :: String -> I Bool
+command s =
+  case words s of
+    [] -> return True
+    c : ws ->
+      case filter (isPrefixOf c . fst) commands of
+        [] -> do
+          liftIO $ putStrLn "Unrecognized command"
+          return True
+        [(_, cmd)] ->
+          cmd (unwords ws)
+        xs -> do
+          liftIO $ putStrLn $ "Ambiguous command: " ++ unwords (map fst xs)
+          return True
+
+commands :: [(String, String -> I Bool)]
+commands =
+  [ ("quit", const $ return False)
+  , ("clear", const $ do
+      updateLines (const preamble)
+      modify $ \ (ls, flgs, _) -> (ls, flgs, emptyCache)
+      return True
+    )
+  , ("reload", const $ do
+      modify $ \ (ls, flgs, _) -> (ls, flgs, emptyCache)
+      reload
+      return True
+    )
+  , ("delete", \ del -> do
+      updateLines (unlines . filter (not . isPrefixOf del) . lines)
+      return True
+    )
+  , ("help", \ _ -> do
+      liftIO $ putStrLn helpText
+      return True
+    )
+  ]
+
+reload :: I ()
+reload = do
+  (ls, _, _) <- get
+  rld <- tryCompile ls   -- reload modules right away
+  case rld of
+    Left msg -> liftIO $ err msg
+    Right _  -> return ()
+
+helpText :: String
+helpText = "Commands:\n  :quit      quit MicroHs\n  :reload    reload modules\n  :clear     clear all definitions\n  :delete d  delete definition(s) d\n  :help      this text\n  expr       evaluate expression\n  defn       add top level definition\n"
+
+updateLines :: (String -> String) -> I ()
+updateLines f = modify $ \ (ls, flgs, cache) -> (f ls, flgs, cache)
+
+interactiveName :: String
+interactiveName = "Interactive"
+
+itName :: String
+itName = "_it"
+
+mkIt :: String -> String
+mkIt l = itName ++ " :: IO ()\n" ++ itName ++ " = printOrRun (" ++ l ++ ")\n"
+
+err :: Exn -> IO ()
+err (Exn s) = putStrLn $ "Error: " ++ s
+
+oneline :: String -> I ()
+oneline line = do
+  (ls, _, _) <- get
+  -- Try adding the line as a definition
+  let lls = ls ++ line ++ "\n"
+  case parse pTop "" lls of
+    Right _ -> do
+--      liftIO $ putStrLn "pTop succeeded"
+      -- Can parse as a definition, so compile it and report any errors.
+      defTest <- tryCompile lls
+      case defTest of
+        Right _ -> updateLines (const lls)
+        Left  e -> liftIO $ err e
+    Left  _ -> do
+--      liftIO $ putStrLn "pTop failed"
+      -- Cannot parse as a definition.
+      -- Try parsing it as an expression, and make it a definition
+      case parse pExprTop "" line of
+        Right _ -> do
+--          liftIO $  putStrLn "pExprTop succeeded"
+          exprTest <- tryCompile (ls ++ "\n" ++ mkIt line)
+          case exprTest of
+            Right m -> evalExpr m
+            Left  e -> liftIO $ err e
+        Left  e -> liftIO $ err (Exn e)
+
+tryCompile :: String -> I (Either Exn [LDef])
+tryCompile file = do
+  (ls, flgs, cache) <- get
+  let
+    iid = mkIdent interactiveName
+  liftIO $ writeFile (interactiveName ++ ".hs") file
+  res <- liftIO $ try $ compileCacheTop flgs iid cache
+  case res of
+    Left e -> return (Left e)
+    Right (m, cache') -> do
+      put (ls, flgs, deleteFromCache iid cache')
+      return (Right m)
+
+evalExpr :: [LDef] -> I ()
+evalExpr cmdl = do
+  let ares = translate (mkIdent (interactiveName ++ "." ++ itName), cmdl)
+      res = unsafeCoerce ares :: IO ()
+  mval <- liftIO $ try (seq res (return res))
+  liftIO $
+    case mval of
+      Left  e -> err e
+      Right val -> do
+        mio <- try val
+        case mio of
+          Left  e -> err e
+          Right _ -> return ()
diff --git a/src/MicroHs/Lex.hs b/src/MicroHs/Lex.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Lex.hs
@@ -0,0 +1,232 @@
+module MicroHs.Lex(
+  lexTop,
+  Token(..), showToken,
+  tokensLoc) where
+import Prelude --Xhiding(lex)
+import Data.Char
+import Data.List
+--Ximport Compat
+import MicroHs.Ident
+
+data Token
+  = TIdent  Loc [String] String
+  | TString Loc String
+  | TChar   Loc Char
+  | TInt    Loc Integer
+  | TRat    Loc Rational
+  | TSpec   Loc Char
+  | TError  Loc String
+  | TBrace  Loc
+  | TIndent Loc
+  --Xderiving (Show)
+
+showToken :: Token -> String
+showToken (TIdent _ ss s) = intercalate "." (ss ++ [s])
+showToken (TString _ s) = show s
+showToken (TChar _ c) = show c
+showToken (TInt _ i) = show i
+showToken (TRat _ d) = show d
+showToken (TSpec _ c) = [c]
+showToken (TError _ s) = "ERROR " ++ s
+showToken (TBrace _) = "TBrace"
+showToken (TIndent _) = "TIndent"
+
+incrLine :: Loc -> Loc
+incrLine (l, _) = (l+1, 1)
+
+addCol :: Loc -> Int -> Loc
+addCol (l, c) i = (l, c + i)
+
+mkLoc :: Line -> Col -> Loc
+mkLoc l c = (l, c)
+
+getCol :: Loc -> Col
+getCol (_, c) = c
+
+--getLin :: Loc -> Col
+--getLin (l, _) = l
+
+{-  This is slower and allocates more.
+    It needs some strictness, probably
+type Loc = Int
+
+incrLine :: Loc -> Loc
+incrLine l = (quot l 1000000 + 1) * 1000000 + 1
+
+addCol :: Loc -> Int -> Loc
+addCol loc i = loc + i
+
+mkLoc :: Line -> Col -> Loc
+mkLoc l c = l * 1000000 + c
+
+getCol :: Loc -> Col
+getCol loc = rem loc 1000000
+
+getLin :: Loc -> Line
+getLin loc = quot loc 1000000
+-}
+
+---------
+
+lexTop :: String -> [Token]
+lexTop = layout [] .
+         lex (mkLoc 1 1)
+
+-- | Take a location and string and produce a list of tokens
+lex :: Loc -> String -> [Token]
+lex loc (' ':cs)  = lex (addCol loc 1) cs
+lex loc ('\n':cs) = tIndent (lex (incrLine loc) cs)
+lex loc ('\r':cs) = lex loc cs
+lex loc ('{':'-':cs) = skipNest (addCol loc 2) 1 cs
+lex loc ('-':'-':cs) | isComm rs = skipLine (addCol loc $ 2+length ds) cs
+  where
+    (ds, rs) = span (== '-') cs
+    isComm [] = True
+    isComm (d:_) = not (isOperChar d)
+lex loc (d:cs) | isLower_ d =
+  case span isIdentChar cs of
+    (ds, rs) -> tIdent loc [] (d:ds) (lex (addCol loc $ 1 + length ds) rs)
+lex loc cs@(d:_) | isUpper d = upperIdent loc loc [] cs
+lex loc ('0':x:cs) | toLower x == 'x' = hexNumber loc cs
+lex loc ('-':cs@(d:_)) | isDigit d = number loc "-" cs
+lex loc      cs@(d:_)  | isDigit d = number loc ""  cs
+lex loc (d:cs) | isOperChar d  =
+  case span isOperChar cs of
+    (ds, rs) -> TIdent loc [] (d:ds) : lex (addCol loc $ 1 + length ds) rs
+lex loc (d:cs) | isSpec d  = TSpec loc d : lex (addCol loc 1) cs
+lex loc ('"':cs) =
+  case takeChars loc (TString loc) '"' 0 [] cs of
+    (t, n, rs) -> t : lex (addCol loc $ 2 + n) rs
+lex loc ('\'':cs) =
+  let tchar [c] = TChar loc c
+      tchar _ = TError loc "Illegal Char literal"
+  in  case takeChars loc tchar '\'' 0 [] cs of  -- XXX head of
+        (t, n, rs) -> t : lex (addCol loc $ 2 + n) rs
+lex loc (d:_) = [TError loc $ "Unrecognized input: " ++ show d]
+lex _ [] = []
+
+hexNumber :: Loc -> String -> [Token]
+hexNumber loc cs =
+  case span isHexDigit cs of
+    (ds, rs) -> TInt loc (readHex ds) : lex (addCol loc $ length ds + 2) rs
+
+number :: Loc -> String -> String -> [Token]   -- neg="-" means negative, neg=0 means positive
+number loc sign cs =
+  case span isDigit cs of
+    (ds, rs) | null rs || not (head rs == '.') || (take 2 rs) == ".." ->
+               let s = sign ++ ds
+                   i = readInteger s
+               in  TInt loc i : lex (addCol loc $ length s) rs
+             | otherwise ->
+               case span isDigit (tail rs) of
+                 (ns, rs') ->
+                   let s = sign ++ ds ++ '.':ns
+                       mkD x r = TRat loc (readRational x) : lex (addCol loc $ length x) r
+                   in  case expo rs' of
+                         Nothing -> mkD s rs'
+                         Just (es, rs'') -> mkD (s ++ es) rs''
+  where
+    expo (e:'-':xs@(d:_)) | toLower e == 'e' && isDigit d = Just ('e':'-':as, bs) where (as, bs) = span isDigit xs
+    expo (e:'+':xs@(d:_)) | toLower e == 'e' && isDigit d = Just ('e':'+':as, bs) where (as, bs) = span isDigit xs
+    expo (e:    xs@(d:_)) | toLower e == 'e' && isDigit d = Just ('e':    as, bs) where (as, bs) = span isDigit xs
+    expo _ = Nothing
+
+-- Skip a {- -} style comment
+skipNest :: Loc -> Int -> String -> [Token]
+skipNest loc 0 cs           = lex loc cs
+skipNest loc n ('{':'-':cs) = skipNest (addCol loc 2) (n + 1) cs
+skipNest loc n ('-':'}':cs) = skipNest (addCol loc 2) (n - 1) cs
+skipNest loc n ('\n':cs)    = skipNest (incrLine loc)  n      cs
+skipNest loc n ('\r':cs)    = skipNest loc             n      cs
+skipNest loc n (_:cs)       = skipNest (addCol loc 1)  n      cs
+skipNest loc _ []           = [TError loc "Unclosed {- comment"]
+
+-- Skip a -- style comment
+skipLine :: Loc -> String -> [Token]
+skipLine loc cs@('\n':_) = lex loc cs
+skipLine loc (_:cs)      = skipLine loc cs
+skipLine   _ []          = []
+
+-- | Takes a list of tokens and produces a list of tokens. If the first token in
+-- the input list is a TIndent, the input is returned unaltered. Otherwise, a
+-- TIndent is prepended to the input list        
+tIndent :: [Token] -> [Token]
+tIndent ts@(TIndent _ : _) = ts
+tIndent ts = TIndent (tokensLoc ts) : ts
+
+takeChars :: Loc -> (String -> Token) -> Char -> Int -> String -> String -> (Token, Int, String)
+takeChars loc _ c n _ [] = (TError loc ("Unmatched " ++ [c]), n, [])
+takeChars loc fn c n str ('\\':cs) =
+  case decodeChar (n+1) cs of
+    (d, m, rs) -> takeChars loc fn c m (d:str) rs
+takeChars   _ fn c n str (d:cs) | c == d = (fn (reverse str), n, cs)
+takeChars loc fn c n str (d:cs) = takeChars loc fn c (n+1) (d:str) cs
+
+decodeChar :: Int -> String -> (Char, Int, String)
+decodeChar n ('n':cs) = ('\n', n+1, cs)
+decodeChar n ('r':cs) = ('\r', n+1, cs)
+decodeChar n ('t':cs) = ('\t', n+1, cs)
+decodeChar n ('b':cs) = ('\b', n+1, cs)
+decodeChar n (c  :cs) = (c,    n+1, cs)
+decodeChar n []       = ('X',  n,   [])
+
+isSpec :: Char -> Bool
+isSpec c = elem c "()[],{}`;"
+
+upperIdent :: Loc -> Loc -> [String] -> String -> [Token]
+--upperIdent l c qs acs | trace (show (l, c, qs, acs)) False = undefined
+upperIdent loc sloc qs acs =
+  case span isIdentChar acs of
+   (ds, rs) ->
+    case rs of
+      '.':cs@(d:_) | isUpper d    -> upperIdent (addCol loc $ 1 + length ds) sloc (ds:qs) cs
+                   | isLower d    -> ident isIdentChar
+                   | isOperChar d -> ident isOperChar
+         where {
+           ident p =
+             case span p cs of
+               (xs, ys) -> tIdent sloc (reverse (ds:qs)) xs (lex (addCol loc $ 1 + length ds + length xs) ys)
+           }
+      _ -> TIdent sloc (reverse qs) ds : lex (addCol loc $ length ds) rs
+
+tIdent :: Loc -> [String] -> String -> [Token] -> [Token]
+tIdent loc qs kw ats | elem kw ["let", "where", "do", "of"]
+                                 = ti : tBrace ats
+                     | otherwise = ti : ats
+  where {
+    ti = TIdent loc qs kw;
+
+    tBrace ts@(TSpec _ '{' : _) = ts;
+    tBrace ts@(TIndent _ : TSpec _ '{' : _) = ts;
+    tBrace (TIndent _ : ts) = TBrace (tokensLoc ts) : ts;
+    tBrace ts = TBrace (tokensLoc ts) : ts
+    }
+
+tokensLoc :: [Token] -> Loc
+tokensLoc (TIdent  loc _ _:_) = loc
+tokensLoc (TString loc _  :_) = loc
+tokensLoc (TChar   loc _  :_) = loc
+tokensLoc (TInt    loc _  :_) = loc
+tokensLoc (TRat    loc _ : _) = loc
+tokensLoc (TSpec   loc _  :_) = loc
+tokensLoc (TError  loc _  :_) = loc
+tokensLoc (TBrace  loc    :_) = loc
+tokensLoc (TIndent loc    :_) = loc
+tokensLoc []                  = mkLoc 0 1
+
+-- | This is the magical layout resolver, straight from the Haskell report.
+layout :: [Int] -> [Token] -> [Token]
+layout mms@(m : ms) tts@(TIndent x       : ts) | n == m = TSpec (tokensLoc ts) ';' : layout    mms  ts
+                                               | n <  m = TSpec (tokensLoc ts) '}' : layout     ms tts where {n = getCol x}
+layout          ms      (TIndent _       : ts)          =                            layout     ms  ts
+layout mms@(m :  _)     (TBrace x        : ts) | n > m  = TSpec (tokensLoc ts) '{' : layout (n:mms) ts where {n = getCol x}
+layout          []      (TBrace x        : ts) | n > 0  = TSpec (tokensLoc ts) '{' : layout     [n] ts where {n = getCol x}
+layout     (0 : ms)     (t@(TSpec _ '}') : ts)          =                        t : layout     ms  ts 
+layout           _      (  (TSpec l '}') :  _)          = TError l "layout error }": []
+layout          ms      (t@(TSpec _ '{') : ts)          =                        t : layout  (0:ms) ts
+layout          ms      (t               : ts)          =                        t : layout     ms  ts
+layout     (_ : ms)     []                              = TSpec (mkLoc 0 0) '}'    : layout     ms  []
+layout          []      []                              =                            []
+
+readHex :: String -> Integer
+readHex = foldl (\ r c -> r * 16 + toInteger (digitToInt c)) 0
diff --git a/src/MicroHs/Main.hs b/src/MicroHs/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Main.hs
@@ -0,0 +1,129 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+{-# OPTIONS_GHC -Wno-unused-do-bind #-}
+module MicroHs.Main(main) where
+import Prelude
+--Ximport Data.List
+import Control.DeepSeq
+import Control.Monad
+import Data.Maybe
+import System.Environment
+import MicroHs.Compile
+import MicroHs.Exp
+import MicroHs.Ident
+import qualified MicroHs.IdentMap as M
+import MicroHs.Translate
+import MicroHs.Interactive
+import MicroHs.MakeCArray
+import System.Directory
+import System.IO
+import System.Process
+--Ximport Compat
+
+-- Version number of combinator file.
+-- Must match version in eval.c.
+combVersion :: String
+combVersion = "v5.1\n"
+
+mhsVersion :: String
+mhsVersion = "0.8"
+
+main :: IO ()
+main = do
+  aargs <- getArgs
+  mdir <- lookupEnv "MHSDIR"
+  let dir = fromMaybe "." mdir
+  let
+    args = takeWhile (/= "--") aargs
+    ss = filter ((/= "-") . take 1) args
+    flags = Flags (length (filter (== "-v") args))
+                  (elem "-r" args)
+                  ("." : (dir ++ "/lib") : catMaybes (map (stripPrefix "-i") args))
+                  (head $ catMaybes (map (stripPrefix "-o") args) ++ ["out.comb"])
+                  (elem "-l" args)
+                  (elem "-c" args)
+  if "--version" `elem` args then
+    putStrLn $ "MicroHs, version " ++ mhsVersion ++ ", combinator file version " ++ combVersion
+   else
+    case ss of
+      []  -> mainInteractive flags
+      [s] -> mainCompile dir flags (mkIdentSLoc (SLoc "command-line" 0 0) s)
+      _   -> error "Usage: mhs [-v] [-l] [-r] [-c] [-iPATH] [-oFILE] [ModuleName]"
+
+mainCompile :: FilePath -> Flags -> Ident -> IO ()
+mainCompile mhsdir flags mn | compileOnly flags = compileAndSave flags mn
+                            | otherwise = do
+  ds <- compileTop flags mn
+  t1 <- getTimeMilli
+  let
+    mainName = qualIdent mn (mkIdent "main")
+    cmdl = (mainName, ds)
+    ref i = Var $ mkIdent $ "_" ++ show i
+    defs = M.fromList [ (n, ref i) | ((n, _), i) <- zip ds (enumFrom (0::Int)) ]
+    findIdent n = fromMaybe (error $ "main: findIdent: " ++ showIdent n) $
+                  M.lookup n defs
+    emain = findIdent mainName
+    substv aexp =
+      case aexp of
+        Var n -> findIdent n
+        App f a -> App (substv f) (substv a)
+        e -> e
+    def :: ((Ident, Exp), Int) -> (String -> String) -> (String -> String)
+    def ((_, e), i) r =
+      (("((A :" ++ show i ++ " ") ++) . toStringP (substv e) . (") " ++) . r . (")" ++)
+    res = foldr def (toStringP emain) (zip ds (enumFrom 0)) ""
+    numDefs = M.size defs
+  when (verbose flags > 0) $
+    putStrLn $ "top level defns: " ++ show numDefs
+  when (verbose flags > 1) $
+    mapM_ (\ (i, e) -> putStrLn $ showIdent i ++ " = " ++ toStringP e "") ds
+  if runIt flags then do
+    let
+      prg = translateAndRun cmdl
+--    putStrLn "Run:"
+--    writeSerialized "ser.comb" prg
+    prg
+--    putStrLn "done"
+   else do
+    let outData = combVersion ++ show numDefs ++ "\n" ++ res
+    seq (length outData) (return ())
+    t2 <- getTimeMilli
+    when (verbose flags > 0) $
+      putStrLn $ "final pass            " ++ padLeft 6 (show (t2-t1)) ++ "ms"
+    
+    -- Decode what to do:
+    --  * file ends in .comb: write combinator file
+    --  * file ends in .c: write C version of combinator
+    --  * otherwise, write C file and compile to a binary with cc
+    let outFile = output flags
+    if ".comb" `isSuffixOf` outFile then
+      writeFile outFile outData
+     else if ".c" `isSuffixOf` outFile then
+      writeFile outFile $ makeCArray outData
+     else do
+       (fn, h) <- openTmpFile "mhsc.c"
+       hPutStr h $ makeCArray outData
+       hClose h
+       ct1 <- getTimeMilli
+       mcc <- lookupEnv "MHSCC"
+       let cc = fromMaybe ("cc -w -Wall -O3 " ++ mhsdir ++ "/src/runtime/eval.c $IN -lm -o $OUT") mcc
+           cmd = substString "$IN" fn $ substString "$OUT" outFile cc
+       when (verbose flags > 0) $
+         putStrLn $ "Execute: " ++ show cmd
+       callCommand cmd
+       removeFile fn
+       ct2 <- getTimeMilli
+       when (verbose flags > 0) $
+         putStrLn $ "C compilation         " ++ padLeft 6 (show (ct2-ct1)) ++ "ms"
+
+compileAndSave :: Flags -> Ident -> IO ()
+compileAndSave flags mn = do
+--  putStrLn "Start"
+  (_, cache) <- compileCacheTop flags mn emptyCache
+--  putStrLn "compile done"
+  () <- seq (rnf cache) (return ())
+--  putStrLn "rnf done"
+  hout <- openFile (output flags) WriteMode
+  hSerialize hout cache
+--  putStrLn "write done"
+  hClose hout
diff --git a/src/MicroHs/MakeCArray.hs b/src/MicroHs/MakeCArray.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/MakeCArray.hs
@@ -0,0 +1,24 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module MicroHs.MakeCArray(makeCArray) where
+import Prelude
+import Data.Char
+
+chunkify :: Int -> String -> [String]
+chunkify _ [] = []
+chunkify n xs =
+  let (as, bs) = splitAt n xs
+  in  as : chunkify n bs
+
+showChunk :: [Char] -> String
+showChunk = concatMap (\ c -> show (ord c) ++ ",")
+
+makeCArray :: String -> String
+makeCArray file =
+  let chunks = chunkify 20 file
+  in  unlines $ ["static unsigned char data[] = {"] ++
+                map showChunk chunks ++
+                ["};",
+                 "unsigned char *combexpr = data;",
+                 "int combexprlen = " ++ show (length file) ++ ";"
+                ]
diff --git a/src/MicroHs/Parse.hs b/src/MicroHs/Parse.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Parse.hs
@@ -0,0 +1,590 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+{-# OPTIONS_GHC -Wno-incomplete-uni-patterns -Wno-unused-do-bind #-}
+module MicroHs.Parse(pTop, parseDie, parse, pExprTop) where
+import Prelude --Xhiding (Monad(..), Applicative(..), MonadFail(..), Functor(..), (<$>))
+import Data.Char
+import Data.List
+import Text.ParserComb as P
+import MicroHs.Lex
+import MicroHs.Expr
+import MicroHs.Ident
+--Ximport Compat
+
+type P a = Prsr FilePath Token a
+
+getFileName :: P FilePath
+getFileName = get
+
+parseDie :: forall a . --X (Show a) =>
+            P a -> FilePath -> String -> a
+parseDie p fn file =
+  case parse p fn file of
+    Left msg -> error msg
+    Right a -> a
+
+parse :: forall a . --X (Show a) =>
+         P a -> FilePath -> String -> Either String a
+parse p fn file =
+  let { ts = lexTop file } in
+  case runPrsr fn p ts of
+    Left lf -> Left $ formatFailed fn ts lf
+    Right [(a, _)] -> Right a
+    Right as -> Left $ "Ambiguous:"
+--X                     ++ unlines (map (show . fst) as)
+
+getLoc :: P Loc
+getLoc = do
+  t <- nextToken
+  pure (tokensLoc [t])
+
+pTop :: P EModule
+pTop = pModule <* eof
+
+pExprTop :: P Expr
+pExprTop = pExpr <* eof
+
+pModule :: P EModule
+pModule = EModule <$> (pKeyword "module" *> pUQIdentA) <*>
+                      (pSpec '(' *> esepEndBy pExportItem (pSpec ',') <* pSpec ')') <*>
+                      (pKeyword "where" *> pBlock pDef)
+
+pQIdent :: P Ident
+pQIdent = do
+  fn <- getFileName
+  let
+    is (TIdent loc qs s) | isAlpha_ (head s) = Just (qualName fn loc qs s)
+    is _ = Nothing
+  satisfyM "QIdent" is
+
+pUIdentA :: P Ident
+pUIdentA = do
+  fn <- getFileName
+  let
+    is (TIdent loc [] s) | isUpper (head s) = Just (mkIdentLoc fn loc s)
+    is _ = Nothing
+  satisfyM "UIdent" is
+
+pUIdent :: P Ident
+pUIdent =
+      pUIdentA
+  <|< pUIdentSpecial
+
+pUIdentSym :: P Ident
+pUIdentSym = pUIdent <|< pParens pUSymOper
+
+pUIdentSpecial :: P Ident
+pUIdentSpecial = do
+  fn <- getFileName
+  loc <- getLoc
+  let
+    mk = mkIdentLoc fn loc
+  
+  (mk . map (const ',') <$> (pSpec '(' *> esome (pSpec ',') <* pSpec ')'))
+    <|< (mk "()" <$ (pSpec '(' *> pSpec ')'))  -- Allow () as a constructor name
+    <|< (mk "[]" <$ (pSpec '[' *> pSpec ']'))  -- Allow [] as a constructor name
+
+pUQIdentA :: P Ident
+pUQIdentA = do
+  fn <- getFileName
+  let
+    is (TIdent loc qs s) | isUpper (head s) = Just (qualName fn loc qs s)
+    is _ = Nothing
+  satisfyM "UQIdent" is
+
+pUQIdent :: P Ident
+pUQIdent =
+      pUQIdentA
+  <|< pUIdentSpecial
+
+pLIdent :: P Ident
+pLIdent = do
+  fn <- getFileName
+  let
+    is (TIdent loc [] s) | isLower_ (head s) && not (elem s keywords) = Just (mkIdentLoc fn loc s)
+    is _ = Nothing
+  satisfyM "LIdent" is
+
+pLQIdent :: P Ident
+pLQIdent = do
+  fn <- getFileName
+  let
+    is (TIdent loc qs s) | isLower_ (head s) && not (elem s keywords) = Just (qualName fn loc qs s)
+    is _ = Nothing
+  satisfyM "LQIdent" is
+
+-- Type names can be any operator
+pTypeIdentSym :: P Ident
+pTypeIdentSym = pUIdent <|< pParens pSymOper
+
+keywords :: [String]
+keywords =
+  ["case", "class", "data", "default", "do", "else", "forall", "foreign", "if",
+   "import", "in", "infix", "infixl", "infixr", "instance",
+   "let", "module", "newtype", "of", "primitive", "then", "type", "where"]
+
+pSpec :: Char -> P ()
+pSpec c = () <$ satisfy [c] is
+  where
+    is (TSpec _ d) = c == d
+    is _ = False
+
+pSymbol :: String -> P ()
+pSymbol sym = () <$ satisfy sym is
+  where
+    is (TIdent _ [] s) = s == sym
+    is _ = False
+
+pOper :: P Ident
+pOper = pQSymOper <|< (pSpec '`' *> pQIdent <* pSpec '`')
+
+pQSymOper :: P Ident
+pQSymOper = do
+  fn <- getFileName
+  let
+    is (TIdent loc qs s) | not (isAlpha_ (head s)) && not (elem s reservedOps) = Just (qualName fn loc qs s)
+    is _ = Nothing
+  satisfyM "QSymOper" is
+
+pSymOper :: P Ident
+pSymOper = do
+  fn <- getFileName
+  let
+    is (TIdent loc [] s) | not (isAlpha_ (head s)) && not (elem s reservedOps) = Just (mkIdentLoc fn loc s)
+    is _ = Nothing
+  satisfyM "SymOper" is
+
+pUQSymOper :: P Ident
+pUQSymOper = do
+  s <- pQSymOper
+  guard (isUOper s)
+  pure s
+
+isUOper :: Ident -> Bool
+isUOper = (== ':') . head . unIdent
+
+pUSymOper :: P Ident
+pUSymOper = do
+  s <- pSymOper
+  guard (isUOper s)
+  pure s
+
+pLQSymOper :: P Ident
+pLQSymOper = do
+  s <- pQSymOper
+  guard (not (isUOper s))
+  pure s
+
+-- Allow -> as well
+pLQSymOperArr :: P Ident
+pLQSymOperArr = pLQSymOper <|< pQArrow
+
+-- Parse ->, possibly qualified
+pQArrow :: P Ident
+pQArrow = do
+  fn <- getFileName
+  let
+    is (TIdent loc qs s@"->") = Just (qualName fn loc qs s)
+    is _ = Nothing
+  satisfyM "->" is
+
+pLSymOper :: P Ident
+pLSymOper = do
+  s <- pSymOper
+  guard (not (isUOper s))
+  pure s
+
+reservedOps :: [String]
+reservedOps = ["=", "|", "::", "<-", "@", "..", "->"]
+
+pUQIdentSym :: P Ident
+pUQIdentSym = pUQIdent <|< pParens pUQSymOper
+
+pLQIdentSym :: P Ident
+pLQIdentSym = pLQIdent <|< pParens pLQSymOperArr
+
+pLIdentSym :: P Ident
+pLIdentSym = pLIdent <|< pParens pLSymOper
+
+pParens :: forall a . P a -> P a
+pParens p = pSpec '(' *> p <* pSpec ')'
+
+pLit :: P Expr
+pLit = do
+  fn <- getFileName
+  let
+    is (TString (l, c) s) = Just (ELit (SLoc fn l c) (LStr s))
+    is (TChar   (l, c) a) = Just (ELit (SLoc fn l c) (LChar a))
+    is (TInt    (l, c) i) = Just (ELit (SLoc fn l c) (LInteger i))
+    is (TRat    (l, c) d) = Just (ELit (SLoc fn l c) (LRat d))
+    is _ = Nothing
+  satisfyM "literal" is
+
+pString :: P String
+pString = satisfyM "string" is
+  where
+    is (TString _ s) = Just s
+    is _ = Nothing
+
+---------------
+
+pExportItem :: P ExportItem
+pExportItem =
+      ExpModule <$> (pKeyword "module" *> pUQIdent)
+  <|< ExpTypeCon <$> (pUQIdentSym <* pSpec '(' <* pSymbol ".." <* pSpec ')')
+  <|< ExpType <$> pUQIdentSym
+  <|< ExpValue <$> pLQIdentSym
+
+pKeyword :: String -> P ()
+pKeyword kw = () <$ satisfy kw is
+  where
+    is (TIdent _ [] s) = kw == s
+    is _ = False
+
+pBlock :: forall a . P a -> P [a]
+pBlock p = do
+  pSpec '{'
+  as <- esepBy p (pSpec ';')
+  eoptional (pSpec ';')
+  pSpec '}'
+  pure as
+
+pDef :: P EDef
+pDef =
+      Data        <$> (pKeyword "data"    *> pLHS) <*> ((pSymbol "=" *> esepBy1 pConstr (pSymbol "|"))
+                                                        <|< pure [])
+  <|< Newtype     <$> (pKeyword "newtype" *> pLHS) <*> (pSymbol "=" *> (Constr [] [] <$> pUIdentSym <*> pField))
+  <|< Type        <$> (pKeyword "type"    *> pLHS) <*> (pSymbol "=" *> pType)
+  <|< uncurry Fcn <$> pEqns
+  <|< Sign        <$> (pLIdentSym <* pSymbol "::") <*> pType
+  <|< Import      <$> (pKeyword "import"  *> pImportSpec)
+  <|< ForImp      <$> (pKeyword "foreign" *> pKeyword "import" *> pKeyword "ccall" *> pString) <*> pLIdent <*> (pSymbol "::" *> pType)
+  <|< Infix       <$> ((,) <$> pAssoc <*> pPrec) <*> esepBy1 pTypeOper (pSpec ',')
+  <|< Class       <$> (pKeyword "class"    *> pContext) <*> pLHS <*> pFunDeps     <*> pWhere pClsBind
+  <|< Instance    <$> (pKeyword "instance" *> pForall)  <*> pContext <*> pTypeApp <*> pWhere pClsBind
+  <|< Default     <$> (pKeyword "default"  *> pParens (esepBy pType (pSpec ',')))
+  where
+    pAssoc = (AssocLeft <$ pKeyword "infixl") <|< (AssocRight <$ pKeyword "infixr") <|< (AssocNone <$ pKeyword "infix")
+    dig (TInt _ ii) | -2 <= i && i <= 9 = Just i  where i = _integerToInt ii
+    dig _ = Nothing
+    pPrec = satisfyM "digit" dig
+
+    pFunDeps = (pSymbol "|" *> esepBy1 pFunDep (pSpec ',')) <|< pure []
+    pFunDep = (,) <$> esome pLIdent <*> (pSymbol "->" *> esome pLIdent)
+    pField = do
+      fs <- pFields
+      guard $ either length length fs == 1
+      pure fs
+
+pContext :: P [EConstraint]
+pContext = (pCtx <* pSymbol "=>") <|< pure []
+  where
+    pCtx = pParens (emany pType) <|< ((:[]) <$> pTypeApp)
+
+pConstr :: P Constr
+pConstr = (Constr <$> pForall <*> pContext <*> pUIdentSym <*> pFields)
+      <|< ((\ vs ct t1 c t2 -> Constr vs ct c (Left [t1, t2])) <$>
+            pForall <*> pContext <*> pSAType <*> pUSymOper <*> pSAType)
+
+pFields :: P (Either [SType] [(Ident, SType)])
+pFields = Left  <$> emany pSAType <|<
+          Right <$> (pSpec '{' *> esepBy ((,) <$> (pLIdentSym <* pSymbol "::") <*> pSType) (pSpec ',') <* pSpec '}')
+
+pSAType :: P (Bool, EType)
+pSAType = (,) <$> pStrict <*> pAType
+pSType :: P (Bool, EType)
+pSType  = (,) <$> pStrict <*> pType
+pStrict :: P Bool
+pStrict = (True <$ pSymbol "!") <|< pure False
+
+pLHS :: P LHS
+pLHS = (,) <$> pTypeIdentSym <*> emany pIdKind
+    <|< (\ a c b -> (c, [a,b])) <$> pIdKind <*> pSymOper <*> pIdKind
+
+pImportSpec :: P ImportSpec
+pImportSpec =
+  let
+    pQua = (True <$ pKeyword "qualified") <|< pure False
+  in  ImportSpec <$> pQua <*> pUQIdentA <*> eoptional (pKeyword "as" *> pUQIdent) <*>
+        eoptional ((,) <$> ((True <$ pKeyword "hiding") <|> pure False) <*> pParens (esepEndBy pImportItem (pSpec ',')))
+
+pImportItem :: P ImportItem
+pImportItem =
+      ImpTypeCon <$> (pUQIdentSym <* pSpec '(' <* pSymbol ".." <* pSpec ')')
+  <|< ImpType <$> pUQIdentSym
+  <|< ImpValue <$> pLQIdentSym
+
+--------
+-- Types
+
+pIdKind :: P IdKind
+pIdKind =
+      ((\ i -> IdKind i kType) <$> pLIdentSym)
+  <|< pParens (IdKind <$> pLIdentSym <*> (pSymbol "::" *> pKind))
+
+pKind :: P EKind
+pKind = pType
+
+--
+-- Partial copy of pExpr, but that includes '->'.
+-- Including '->' in pExprOp interacts poorly with '->'
+-- in lambda and 'case'.
+pType :: P EType
+pType = do
+  vs <- pForall
+  t <- pTypeOp
+  pure $ if null vs then t else EForall vs t
+
+pForall :: P [IdKind]
+pForall = (pKeyword "forall" *> esome pIdKind <* pSymbol ".") <|< pure []
+
+pTypeOp :: P EType
+pTypeOp = pOperators pTypeOper pTypeArg
+
+pTypeOper :: P Ident
+pTypeOper = pOper <|< (mkIdent "->" <$ pSymbol "->") <|< (mkIdent "=>" <$ pSymbol "=>")
+
+pTypeArg :: P EType
+pTypeArg = pTypeApp
+
+pTypeApp :: P EType
+pTypeApp = do
+  f <- pAType
+  as <- emany pAType
+  mt <- eoptional (pSymbol "::" *> pType)
+  let
+    r = foldl EApp f as
+  pure $ maybe r (ESign r) mt
+
+pAType :: P Expr
+pAType =
+      (EVar <$> pLQIdentSym)
+  <|< (EVar <$> pUQIdentSym)
+  <|< pLit
+  <|< (eTuple <$> (pSpec '(' *> esepBy1 pType (pSpec ',') <* pSpec ')'))
+  <|< (EListish . LList . (:[]) <$> (pSpec '[' *> pType <* pSpec ']'))  -- Unlike expressions, only allow a single element.
+
+-------------
+-- Patterns
+
+-- Sadly pattern and expression parsing cannot be joined because the
+-- use of '->' in 'case' and lambda makes it weird.
+-- Instead this is just a copy of some of the expression rules.
+-- XXX This can probably be joined with pExpr again now that pType
+-- is separate.
+pAPat :: P EPat
+pAPat =
+      (do
+         i <- pLIdentSym
+         (EAt i <$> (pSymbol "@" *> pAPat)) <|< pure (EVar i)
+      )
+  <|< (EVar <$> pUQIdentSym)
+  <|< pLit
+  <|< (eTuple <$> (pSpec '(' *> esepBy1 pPat (pSpec ',') <* pSpec ')'))
+  <|< (EListish . LList <$> (pSpec '[' *> esepBy1 pPat (pSpec ',') <* pSpec ']'))
+
+pPat :: P EPat
+pPat = pPatOp
+
+pPatOp :: P EPat
+pPatOp = pOperators pOper pPatArg
+
+pPatArg :: P EPat
+pPatArg = pPatApp
+
+pPatApp :: P EPat
+pPatApp = do
+  f <- pAPat
+  as <- emany pAPat
+  guard (null as || isPConApp f)
+  pure $ foldl EApp f as
+
+pPatNotVar :: P EPat
+pPatNotVar = do
+  p <- pPat
+  guard (not (isPVar p))
+  pure p
+
+-------------
+
+pEqns :: P (Ident, [Eqn])
+pEqns = do
+  (name, eqn@(Eqn ps alts)) <- pEqn (\ _ _ -> True)
+  case (ps, alts) of
+    ([], EAlts [_] []) ->
+      -- don't collect equations when of the form 'i = e'
+      pure (name, [eqn])
+    _ -> do
+      neqns <- emany (pSpec ';' *> pEqn (\ n l -> n == name && l == length ps))
+      pure (name, eqn : map snd neqns)
+
+pEqn :: (Ident -> Int -> Bool) -> P (Ident, Eqn)
+pEqn test = do
+  (name, pats) <- pEqnLHS
+  alts <- pAlts (pSymbol "=")
+  guard (test name (length pats))
+  pure (name, Eqn pats alts)
+
+pEqnLHS :: P (Ident, [EPat])
+pEqnLHS =
+  ((,) <$> pLIdentSym <*> emany pAPat)
+  <|>   -- XXX this <|> causes a slowdown, but is necessary
+  pOpLHS
+  <|<
+  ((\ (i, ps1) ps2 -> (i, ps1 ++ ps2)) <$> pParens pOpLHS <*> emany pAPat)
+  where
+    pOpLHS = (\ p1 i p2 -> (i, [p1,p2])) <$> pPatApp <*> pLOper <*> pPatApp
+    pLOper = do
+      i <- pOper
+      guard (not (isConIdent i))
+      pure i
+
+pAlts :: P () -> P EAlts
+pAlts sep = do
+  alts <- pAltsL sep
+  bs <- pWhere pBind
+  pure (EAlts alts bs)
+  
+pAltsL :: P () -> P [EAlt]
+pAltsL sep =
+      esome ((,) <$> (pSymbol "|" *> esepBy1 pStmt (pSpec ',')) <*> (sep *> pExpr))
+  <|< ((\ e -> [([], e)]) <$> (sep *> pExpr))
+
+pWhere :: P EBind -> P [EBind]
+pWhere pb =
+      (pKeyword "where" *> pBlock pb)
+  <|< pure []
+
+-------------
+-- Statements
+
+pStmt :: P EStmt
+pStmt =
+      (SBind <$> (pPat <* pSymbol "<-") <*> pExpr)
+  <|< (SLet  <$> (pKeyword "let" *> pBlock pBind))
+  <|< (SThen <$> pExpr)
+
+-------------
+-- Expressions
+
+pExpr :: P Expr
+pExpr = pExprOp
+
+pExprArg :: P Expr
+pExprArg = pExprApp <|< pLam <|< pCase <|< pLet <|< pIf <|< pDo
+
+pExprApp :: P Expr
+pExprApp = do
+  f <- pAExpr
+  as <- emany pAExpr
+  mt <- eoptional (pSymbol "::" *> pType)
+  let
+    r = foldl EApp f as
+  pure $ maybe r (ESign r) mt
+
+pLam :: P Expr
+pLam = eLam <$> (pSymbol "\\" *> esome pAPat) <*> (pSymbol "->" *> pExpr)
+
+pCase :: P Expr
+pCase = ECase <$> (pKeyword "case" *> pExpr) <*> (pKeyword "of" *> pBlock pCaseArm)
+
+pCaseArm :: P ECaseArm
+pCaseArm = (,) <$> pPat <*> pAlts (pSymbol "->")
+
+pLet :: P Expr
+pLet = ELet <$> (pKeyword "let" *> pBlock pBind) <*> (pKeyword "in" *> pExpr)
+
+pDo :: P Expr
+pDo = EDo <$> ((Just <$> pQualDo) <|< (Nothing <$ pKeyword "do")) <*> pBlock pStmt
+
+pIf :: P Expr
+pIf = EIf <$> (pKeyword "if" *> pExpr) <*> (pKeyword "then" *> pExpr) <*> (pKeyword "else" *> pExpr)
+
+pQualDo :: P Ident
+pQualDo = do
+  fn <- getFileName
+  let
+    is (TIdent loc qs@(_:_) "do") = Just (mkIdentLoc fn loc (intercalate "." qs))
+    is _ = Nothing
+  satisfyM "QualDo" is
+
+pOperComma :: P Ident
+pOperComma = pOper <|< pComma
+  where
+    pComma = mkIdentLoc <$> getFileName <*> getLoc <*> ("," <$ pSpec ',')
+
+pAExpr :: P Expr
+pAExpr = (
+      (EVar   <$> pLQIdentSym)
+  <|< (EVar   <$> pUQIdentSym)
+  <|< pLit
+  <|< (eTuple <$> (pSpec '(' *> esepBy1 pExpr (pSpec ',') <* pSpec ')'))
+  <|< EListish <$> (pSpec '[' *> pListish <* pSpec ']')
+  <|< (ESectL <$> (pSpec '(' *> pExprArg) <*> (pOperComma <* pSpec ')'))
+  <|< (ESectR <$> (pSpec '(' *> pOperComma) <*> (pExprArg <* pSpec ')'))
+  <|< (ELit noSLoc . LPrim <$> (pKeyword "primitive" *> pString))
+  )
+  -- This weirdly slows down parsing
+  -- <?> "aexpr"
+
+pListish :: P Listish
+pListish = do
+  e1 <- pExpr
+  let
+    pMore = do
+      e2 <- pExpr
+      ((\ es -> LList (e1:e2:es)) <$> esome (pSpec ',' *> pExpr))
+       <|< (LFromThenTo e1 e2 <$> (pSymbol ".." *> pExpr))
+       <|< (LFromThen e1 e2 <$ pSymbol "..")
+       <|< pure (LList [e1,e2])
+  (pSpec ',' *> pMore)
+   <|< (LCompr e1 <$> (pSymbol "|" *> esepBy1 pStmt (pSpec ',')))
+   <|< (LFromTo e1 <$> (pSymbol ".." *> pExpr))
+   <|< (LFrom e1 <$ pSymbol "..")
+   <|< pure (LList [e1])
+
+pExprOp :: P Expr
+pExprOp = pOperators pOper pExprArg
+
+pOperators :: P Ident -> P Expr -> P Expr
+pOperators oper one = eOper <$> one <*> emany ((,) <$> oper <*> one)
+  where eOper e [] = e
+        eOper e ies = EOper e ies
+
+-------------
+-- Bindings
+
+pBind :: P EBind
+pBind = 
+      BPat         <$> (pPatNotVar <* pSymbol "=") <*> pExpr
+  <|< pClsBind
+
+pClsBind :: P EBind
+pClsBind = 
+      uncurry BFcn <$> pEqns
+  <|< BSign        <$> (pLIdentSym <* pSymbol "::") <*> pType
+
+-------------
+
+eTuple :: [Expr] -> Expr
+eTuple [] = error "eTuple"
+eTuple [e] = e
+eTuple es = ETuple es
+
+isAlpha_ :: Char -> Bool
+isAlpha_ c = isLower_ c || isUpper c
+
+qualName :: FilePath -> Loc -> [String] -> String -> Ident
+qualName fn loc qs s = mkIdentLoc fn loc (intercalate "." (qs ++ [s]))
+
+-------------
+
+formatFailed :: String -> [Token] -> LastFail Token -> String
+formatFailed fn _fs (LastFail _ ts msgs) =
+  let
+    (line, col) = tokensLoc ts
+    sloc = SLoc fn line col
+  in
+    showSLoc sloc ++ ":\n"
+      ++ "  found:    " ++ head (map showToken ts ++ ["EOF"]) ++ "\n"
+      ++ "  expected: " ++ unwords (nub msgs)
diff --git a/src/MicroHs/StateIO.hs b/src/MicroHs/StateIO.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/StateIO.hs
@@ -0,0 +1,67 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+{-# OPTIONS_GHC -Wno-unused-imports -Wno-dodgy-imports #-}
+-- State monad over IO
+module MicroHs.StateIO(
+  module MicroHs.StateIO,
+  module Control.Applicative,
+  module Control.Monad,
+  module Data.Functor,
+  ) where
+import Prelude
+import Control.Applicative
+import Control.Monad
+import Data.Functor --Xhiding(unzip)
+
+data StateIO s a = S (s -> IO (a,s))
+
+runStateIO :: forall s a . StateIO s a -> (s -> IO (a,s))
+runStateIO sa =
+  case sa of
+    S x -> x
+
+{-
+execStateIO :: forall s a . StateIO s a -> s -> IO s
+execStateIO sa s = do
+  as <- runStateIO sa s
+  case as of
+    (_, ss) -> return ss
+-}
+
+instance forall s . Functor (StateIO s) where
+  fmap f sa = S $ \ s -> do
+    (a, ss) <- runStateIO sa s
+    return (f a, ss)
+
+instance forall s . Applicative (StateIO s) where
+  pure a = S $ \ s -> return (a, s)
+  (<*>) = ap
+  (*>) m k = S $ \ s -> do
+    (_, ss) <- runStateIO m s
+    runStateIO k ss
+
+instance forall s . Monad (StateIO s) where
+  (>>=) m k = S $ \ s -> do
+    (a, ss) <- runStateIO m s
+    runStateIO (k a) ss
+  (>>) = (*>)
+
+instance forall s . MonadFail (StateIO s) where
+  fail = error
+
+gets :: forall s a . (s -> a) -> StateIO s a
+gets f = S $ \ s -> return (f s, s)
+
+modify :: forall s . (s -> s) -> StateIO s ()
+modify f = S $ \ s -> return ((), f s)
+
+put :: forall s . s -> StateIO s ()
+put s = S $ \ _ -> return ((), s)
+
+get :: forall s . StateIO s s
+get = S $ \ s -> return (s, s)
+
+liftIO :: forall s a . IO a -> StateIO s a
+liftIO io = S $ \ s -> do
+  a <- io
+  return (a, s)
diff --git a/src/MicroHs/TCMonad.hs b/src/MicroHs/TCMonad.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/TCMonad.hs
@@ -0,0 +1,31 @@
+{-# OPTIONS_GHC -Wno-orphans -Wno-dodgy-imports -Wno-unused-imports #-}
+module MicroHs.TCMonad(
+  TC, tcRun,
+  fmap, (<$>), (<*>),
+  (>>=), (>>), return, fail,
+  get, put, gets,
+  mapM, mapM_,
+  sequence,
+  when,
+  tcError
+  ) where
+--Ximport Control.Monad hiding(ap)
+--Ximport Data.Functor.Identity
+--Ximport GHC.Stack
+import Data.Char  -- for String
+import Control.Applicative
+import Control.Monad.State.Strict --Xhiding(ap)
+import Data.Functor
+import MicroHs.Ident
+import MicroHs.Expr
+
+type TC s a = State s a
+
+tcRun :: forall s a . TC s a -> s -> (a, s)
+tcRun = runState
+
+tcError :: --XHasCallStack =>
+           forall s a . SLoc -> String -> TC s a
+tcError = errorMessage
+
+--Xinstance MonadFail Identity where fail = error
diff --git a/src/MicroHs/Translate.hs b/src/MicroHs/Translate.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/Translate.hs
@@ -0,0 +1,135 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+module MicroHs.Translate(
+  translate, translateAndRun
+  ) where
+import Prelude
+import Data.Maybe
+import qualified MicroHs.IdentMap as M
+import System.Environment
+import Unsafe.Coerce
+--Ximport GHC.Types
+--Ximport Compat
+--Ximport PrimTable
+
+import MicroHs.Desugar(LDef, encodeInteger)
+import MicroHs.Expr
+import MicroHs.Exp
+import MicroHs.Ident
+
+translateAndRun :: (Ident, [LDef]) -> IO ()
+--translateAndRun :: (Ident, [(Ident, Exp)]) -> IO ()
+translateAndRun defs = do
+  -- Drop all argument up to '--'
+  args <- getArgs
+  let prog = unsafeCoerce $ translate defs
+  withDropArgs (length (takeWhile (/= "--") args) + 1)
+    prog
+
+translate :: (Ident, [LDef]) -> Any
+--translate :: (Ident, [(Ident, Exp)]) -> Any
+translate (mainName, ds) =
+  let
+    look m n = fromMaybe (error $ "translate: not found " ++ showIdent n) $ M.lookup n m
+    mp = M.fromList [(n, trans (look mp) d) | (n, d) <- ds ]
+  in look mp mainName
+
+trans :: (Ident -> Any) -> Exp -> Any
+trans r ae =
+  case ae of
+    Var n -> r n
+    App f a -> unsafeCoerce (trans r f) (trans r a)
+    Lit (LInt i) -> unsafeCoerce i
+    Lit (LDouble i) -> unsafeCoerce i
+    Lit (LStr s) -> trans r (encodeString s)
+    Lit (LPrim p) -> fromMaybe (error $ "trans: no primop " ++ p) $ lookup p primTable
+    Lit (LInteger i) -> trans r (encodeInteger i)
+    Lit (LForImp s) -> trans r (App (Lit (LPrim "dynsym")) (Lit (LStr s)))
+    _ -> error $ "trans: impossible: " ++ show ae
+
+-- Use linear search in this table.
+-- 99% of the hits are among the combinators.
+primTable :: [(String, Any)]
+primTable = [
+  ("B", primitive "B"),
+  ("O", primitive "O"),
+  ("K", primitive "K"),
+  ("C'", primitive "C'"),
+  ("C", primitive "C"),
+  ("A", primitive "A"),
+  ("S'", primitive "S'"),
+  ("P", primitive "P"),
+  ("I", primitive "I"),
+  ("S", primitive "S"),
+  ("U", primitive "U"),
+  ("Y", primitive "Y"),
+  ("B'", primitive "B'"),
+  ("Z", primitive "Z"),
+  ("R", primitive "R"),
+  ("+", primitive "+"),
+  ("-", primitive "-"),
+  ("*", primitive "*"),
+  ("quot", primitive "quot"),
+  ("rem", primitive "rem"),
+  ("uquot", primitive "uquot"),
+  ("urem", primitive "urem"),
+  ("neg", primitive "neg"),
+  ("and", primitive "and"),
+  ("or", primitive "or"),
+  ("xor", primitive "xor"),
+  ("inv", primitive "inv"),
+  ("shl", primitive "shl"),
+  ("shr", primitive "shr"),
+  ("ashr", primitive "ashr"),
+  ("subtract", primitive "subtract"),
+  ("==", primitive "=="),
+  ("/=", primitive "/="),
+  ("<", primitive "<"),
+  ("<=", primitive "<="),
+  (">", primitive ">"),
+  (">=", primitive ">="),
+  ("u<", primitive "u<"),
+  ("u<=", primitive "u<="),
+  ("u>", primitive "u>"),
+  ("u>=", primitive "u>="),
+  ("fadd", primitive "fadd"),
+  ("fsub", primitive "fsub"),
+  ("fmul", primitive "fmul"),
+  ("fdiv", primitive "fdiv"),
+  ("feq", primitive "feq"),
+  ("fne", primitive "fne"),
+  ("flt", primitive "flt"),
+  ("fle", primitive "fle"),
+  ("fgt", primitive "fgt"),
+  ("fge", primitive "fge"),
+  ("fneg", primitive "fneg"),
+  ("fshow", primitive "fshow"),
+  ("fread", primitive "fread"),
+  ("itof", primitive "itof"),
+  ("seq", primitive "seq"),
+  ("error", primitive "error"),
+  ("equal", primitive "equal"),
+  ("compare", primitive "compare"),
+  ("rnf", primitive "rnf"),
+  ("noMatch", primitive "noMatch"),
+  ("noDefault", primitive "noDefault"),
+  ("IO.>>=", primitive "IO.>>="),
+  ("IO.>>", primitive "IO.>>"),
+  ("IO.return", primitive "IO.return"),
+  ("IO.print", primitive "IO.print"),
+  ("IO.serialize", primitive "IO.serialize"),
+  ("IO.deserialize", primitive "IO.deserialize"),
+  ("IO.stdin", primitive "IO.stdin"),
+  ("IO.stdout", primitive "IO.stdout"),
+  ("IO.stderr", primitive "IO.stderr"),
+  ("IO.getArgs", primitive "IO.getArgs"),
+  ("IO.dropArgs", primitive "IO.dropArgs"),
+  ("IO.performIO", primitive "IO.performIO"),
+  ("IO.catch", primitive "IO.catch"),
+  ("dynsym", primitive "dynsym"),
+  ("newCAString", primitive "newCAString"),
+  ("peekCAString", primitive "peekCAString"),
+  ("toInt", primitive "toInt"),
+  ("toPtr", primitive "toPtr"),
+  ("toDbl", primitive "toDbl")
+  ]
diff --git a/src/MicroHs/TypeCheck.hs b/src/MicroHs/TypeCheck.hs
new file mode 100644
--- /dev/null
+++ b/src/MicroHs/TypeCheck.hs
@@ -0,0 +1,2498 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+{-# OPTIONS_GHC -Wno-incomplete-uni-patterns -Wno-unused-imports #-}
+{-# LANGUAGE FlexibleContexts #-}
+module MicroHs.TypeCheck(
+  typeCheck,
+  TModule(..), showTModule,
+  impossible, impossibleShow,
+  mkClassConstructor,
+  mkSuperSel,
+  bindingsOf,
+  boolPrefix,
+  listPrefix,
+  ) where
+import Data.Eq -- XXX why needed?
+import Prelude
+import Data.Char
+import Data.Function
+import Data.List
+import Data.Maybe
+import qualified Data.IntMap as IM
+import MicroHs.TCMonad as T
+import qualified MicroHs.IdentMap as M
+import MicroHs.Ident
+import MicroHs.Expr
+--Ximport Compat
+--Ximport GHC.Stack
+--Ximport Debug.Trace
+
+boolPrefix :: String
+boolPrefix = "Data.Bool_Type."
+
+listPrefix :: String
+listPrefix = "Data.List_Type."
+
+nameInt :: String
+nameInt = "Primitives.Int"
+
+nameWord :: String
+nameWord = "Primitives.Word"
+
+nameDouble :: String
+nameDouble = "Primitives.Double"
+
+nameChar :: String
+nameChar = "Primitives.Char"
+
+nameInteger :: String
+nameInteger = "Data.Integer_Type.Integer"
+
+nameTypeEq :: String
+nameTypeEq = "Primitives.~"
+
+nameImplies :: String
+nameImplies = "Primitives.=>"
+
+nameArrow :: String
+nameArrow = "Primitives.->"
+
+----------------------
+
+data TModule a = TModule
+  IdentModule     -- module names
+  [FixDef]        -- all fixities, exported or not
+  [TypeExport]    -- exported types
+  [SynDef]        -- all type synonyms, exported or not
+  [ClsDef]        -- all classes
+  [InstDef]       -- all instances
+  [ValueExport]   -- exported values (including from T(..))
+  a               -- bindings
+  --Xderiving (Show)
+
+bindingsOf :: forall a . TModule a -> a
+bindingsOf (TModule _ _ _ _ _ _ _ a) = a
+
+data TypeExport = TypeExport
+  Ident           -- unqualified name
+  Entry           -- symbol table entry
+  [ValueExport]   -- associated values, i.e., constructors, selectors, methods
+  --Xderiving (Show)
+
+data ValueExport = ValueExport
+  Ident           -- unqualified name
+  Entry           -- symbol table entry
+  --Xderiving (Show)
+
+type FixDef = (Ident, Fixity)
+type SynDef = (Ident, EType)
+type ClsDef = (Ident, ClassInfo)
+type InstDef= (Ident, InstInfo)
+
+type ClassInfo = ([IdKind], [EConstraint], EType, [Ident], [IFunDep])  -- class tyvars, superclasses, class kind, methods, fundeps
+type IFunDep = ([Bool], [Bool])           -- the length of the lists is the number of type variables
+
+-- Symbol table entry for symbol i.
+data Entry = Entry
+  Expr             -- convert (EVar i) to this expression; sometimes just (EVar i)
+  EType            -- type/kind of identifier
+  --Xderiving(Show)
+
+instance Eq Entry where
+  Entry x _ == Entry y _  =  getIdent x == getIdent y
+
+
+entryType :: Entry -> EType
+entryType (Entry _ t) = t
+
+type ValueTable = SymTab Entry     -- type of value identifiers, used during type checking values
+type TypeTable  = SymTab Entry     -- kind of type  identifiers, used during kind checking types
+type KindTable  = SymTab Entry     -- sort of kind  identifiers, used during sort checking kinds
+type SynTable   = M.Map EType      -- body of type synonyms
+type FixTable   = M.Map Fixity     -- precedence and associativity of operators
+type AssocTable = M.Map [Ident]    -- maps a type identifier to its associated construcors/selectors/methods
+type ClassTable = M.Map ClassInfo  -- maps a class identifier to its associated information
+type InstTable  = M.Map InstInfo   -- indexed by class name
+type Constraints= [(Ident, EConstraint)]
+type Defaults   = [EType]          -- Current defaults
+
+-- To make type checking fast it is essential to solve constraints fast.
+-- The naive implementation of InstInfo would be [InstDict], but
+-- that is slow.
+-- Instead, the data structure is specialized
+--  * For single parameter type classes for atomic types, e.g., Eq Int
+--    we use the type name (i.e., Int) to index into a map that gives
+--    the dictionary directly.  This map is also used for dictionary arguments
+--    of type, e.g., Eq a.
+--  * NOT IMPLEMENTED: look up by type name of the left-most type
+--  * As a last resort, just look through dictionaries.
+data InstInfo = InstInfo
+       (M.Map Expr)               -- map for direct lookup of atomic types
+       [InstDict]                 -- slow path
+       [IFunDep]
+  --Xderiving (Show)
+
+-- This is the dictionary expression, instance variables, instance context,
+-- and instance.
+type InstDictC  = (Expr, [IdKind], [EConstraint], EConstraint, [IFunDep])
+-- This is the dictionary expression, instance context, and types.
+-- An instance (C T1 ... Tn) has the type list [T1,...,Tn]
+-- The types and constraint have their type variables normalized to EUVar (-1), EUVar (-2), etc
+type InstDict   = (Expr, [EConstraint], [EType])
+
+-- All known type equalities, contains the transitive&commutative closure.
+type TypeEqTable = [(EType, EType)]
+
+type Sigma = EType
+--type Tau   = EType
+type Rho   = EType
+type TyVar = Ident
+
+typeCheck :: forall a . [(ImportSpec, TModule a)] -> EModule -> TModule [EDef]
+typeCheck aimps (EModule mn exps defs) =
+--  trace (unlines $ map (showTModuleExps . snd) aimps) $
+  let
+    imps = map filterImports aimps
+    (fs, ts, ss, cs, is, vs, as) = mkTables imps
+  in case tcRun (tcDefs defs) (initTC mn fs ts ss cs is vs as) of
+       (tds, tcs) ->
+         let
+           thisMdl = (mn, mkTModule tds tcs)
+           impMdls = [(fromMaybe m mm, tm) | (ImportSpec _ m mm _, tm) <- imps]
+           impMap = M.fromList [(i, m) | (i, m) <- thisMdl : impMdls]
+           (texps, cexps, vexps) =
+             unzip3 $ map (getTVExps impMap (typeTable tcs) (valueTable tcs) (assocTable tcs) (classTable tcs)) exps
+           fexps = [ fe | TModule _ fe _ _ _ _ _ _ <- M.elems impMap ]
+           sexps = M.toList (synTable tcs)
+           iexps = M.toList (instTable tcs)
+         in  tModule mn (nubBy ((==) `on` fst) (concat fexps)) (concat texps) sexps (concat cexps) iexps (concat vexps) tds
+
+-- A hack to force evaluation of errors.
+-- This should be redone to all happen in the T monad.
+tModule :: IdentModule -> [FixDef] -> [TypeExport] -> [SynDef] -> [ClsDef] -> [InstDef] -> [ValueExport] -> [EDef] ->
+           TModule [EDef]
+tModule mn fs ts ss cs is vs ds =
+--  trace ("tmodule " ++ showIdent mn ++ ":\n" ++ show vs) $
+  tseq ts `seq` vseq vs `seq` TModule mn fs ts ss cs is vs ds
+  where
+    tseq [] = ()
+    tseq (TypeExport _ e _:xs) = e `seq` tseq xs
+    vseq [] = ()
+    vseq (ValueExport _ e:xs) = e `seq` vseq xs
+
+filterImports :: forall a . (ImportSpec, TModule a) -> (ImportSpec, TModule a)
+filterImports it@(ImportSpec _ _ _ Nothing, _) = it
+filterImports (imp@(ImportSpec _ _ _ (Just (hide, is))), TModule mn fx ts ss cs ins vs a) =
+  let
+    keep x xs = elem x xs /= hide
+    ivs = [ i | ImpValue i <- is ]
+    vs' = filter (\ (ValueExport i _) -> keep i ivs) vs
+    cts = [ i | ImpTypeCon i <- is ]
+    its = [ i | ImpType i <- is ] ++ cts
+    ts' = map (\ te@(TypeExport i e _) -> if keep i cts then te else TypeExport i e []) $
+          filter (\ (TypeExport i _ _) -> keep i its) ts
+  in
+    --trace (show (ts, vs)) $
+    (imp, TModule mn fx ts' ss cs ins vs' a)
+
+-- Type and value exports
+getTVExps :: forall a . M.Map (TModule a) -> TypeTable -> ValueTable -> AssocTable -> ClassTable -> ExportItem ->
+           ([TypeExport], [ClsDef], [ValueExport])
+getTVExps impMap _ _ _ _ (ExpModule m) =
+  case M.lookup m impMap of
+    Just (TModule _ _ te _ ce _ ve _) -> (te, ce, ve)
+    _ -> errorMessage (getSLoc m) $ "undefined module: " ++ showIdent m
+getTVExps _ tys vals ast cls (ExpTypeCon i) =
+  let
+    e = expLookup i tys
+    qi = tyQIdent e
+    ves = getAssocs vals ast qi
+    cl = case M.lookup qi cls of
+           Just ci -> [(qi, ci)]
+           Nothing -> []
+  in ([TypeExport i e ves], cl, [])
+getTVExps _ tys _ _ cls (ExpType i) =
+  let
+    e = expLookup i tys
+    qi = tyQIdent e
+    cl = case M.lookup qi cls of
+           Just ci -> [(qi, ci)]
+           Nothing -> []
+  in ([TypeExport i e []], cl, [])
+getTVExps _ _ vals _ _ (ExpValue i) =
+    ([], [], [ValueExport i (expLookup i vals)])
+
+-- Export all fixities and synonyms.
+-- The synonyms might be needed, and the fixities are harmless
+--getFSExps :: forall a . M.Map (TModule a) -> [([FixDef], [SynDef])]
+--getFSExps impMap = [ (fe, se) | TModule _ fe _ se _ _ <- M.elems impMap ]
+
+expLookup :: Ident -> SymTab Entry -> Entry
+expLookup i m = either (errorMessage (getSLoc i)) id $ stLookup "export" i m
+
+tyQIdent :: Entry -> Ident
+tyQIdent (Entry (EVar qi) _) = qi
+tyQIdent _ = error "tyQIdent"
+
+eVarI :: SLoc -> String -> Expr
+eVarI loc = EVar . mkIdentSLoc loc
+
+getAppCon :: EType -> Ident
+getAppCon (EVar i) = i
+getAppCon (EApp f _) = getAppCon f
+getAppCon _ = error "getAppCon"
+
+getApp :: EType -> (Ident, [EType])
+getApp = loop []
+  where loop as (EVar i) = (i, as)
+        loop as (EApp f a) = loop (a:as) f
+        loop _ _ = error "getApp"
+
+-- Construct a dummy TModule for the currently compiled module.
+-- It has all the relevant export tables.
+-- The value&type export tables will later be filtered through the export list.
+mkTModule :: forall a . [EDef] -> TCState -> TModule a
+mkTModule tds tcs =
+  let
+    mn = moduleName tcs
+    tt = typeTable  tcs
+    at = assocTable tcs
+    vt = valueTable tcs
+    ct = classTable tcs
+    it = instTable  tcs
+
+    -- Find the Entry for a type.
+    tentry i =
+      case stLookup "" (qualIdent mn i) tt of
+        Right e -> e
+        _       -> impossible
+    -- Find all value Entry for names associated with a type.
+    assoc i = getAssocs vt at (qualIdent mn i)
+
+    -- All top level values possible to export.
+    ves = [ ValueExport i (Entry (EVar (qualIdent mn i)) ts) | Sign i ts <- tds ]
+
+    -- All top level types possible to export.
+    tes =
+      [ TypeExport i (tentry i) (assoc i) | Data    (i, _) _ <- tds ] ++
+      [ TypeExport i (tentry i) (assoc i) | Newtype (i, _) _ <- tds ] ++
+      [ TypeExport i (tentry i) (assoc i) | Class _ (i, _) _ _ <- tds ] ++
+      [ TypeExport i (tentry i) []        | Type    (i, _) _ <- tds ]
+
+    -- All type synonym definitions.
+    ses = [ (qualIdent mn i, EForall vs t) | Type (i, vs) t  <- tds ]
+
+    -- All fixity declaration.
+    fes = [ (qualIdent mn i, fx) | Infix fx is <- tds, i <- is ]
+
+    -- All classes
+    -- XXX only export the locally defined classes
+    ces = M.toList ct
+
+    -- All instances
+    ies = M.toList it
+  in  TModule mn fes tes ses ces ies ves impossible
+
+-- Find all value Entry for names associated with a type.
+getAssocs :: ValueTable -> AssocTable -> Ident -> [ValueExport]
+getAssocs vt at ai =
+  let qis = fromMaybe [] $ M.lookup ai at
+      val qi = case stLookup "" qi vt of
+                 Right e -> e
+                 _       -> impossible
+  in  map (\ qi -> ValueExport (unQualIdent qi) (val qi)) qis
+
+mkTables :: forall a . [(ImportSpec, TModule a)] ->
+            (FixTable, TypeTable, SynTable, ClassTable, InstTable, ValueTable, AssocTable)
+mkTables mdls =
+  let
+    qns (ImportSpec q _ mas _) mn i =
+      let
+        m = fromMaybe mn mas
+      in  if q then [qualIdent m i] else [i, qualIdent m i]
+    allValues :: ValueTable
+    allValues =
+      let
+        syms (is, TModule mn _ tes _ cls _ ves _) =
+          [ (v, [e]) | ValueExport i e    <- ves,                        v <- qns is mn i ] ++
+          [ (v, [e]) | TypeExport  _ _ cs <- tes, ValueExport i e <- cs, v <- qns is mn i ] ++
+          [ (v, [Entry (EVar v) t]) | (i, (_, _, t, _, _)) <- cls, let { v = mkClassConstructor i } ]
+      in  stFromListWith union $ concatMap syms mdls
+    allSyns =
+      let
+        syns (_, TModule _ _ _ ses _ _ _ _) = ses
+      in  M.fromList (concatMap syns mdls)
+    allTypes :: TypeTable
+    allTypes =
+      let
+        types (is, TModule mn _ tes _ _ _ _ _) = [ (v, [e]) | TypeExport i e _ <- tes, v <- qns is mn i ]
+      in stFromListWith union $ concatMap types mdls
+    allFixes =
+      let
+        fixes (_, TModule _ fes _ _ _ _ _ _) = fes
+      in M.fromList (concatMap fixes mdls)
+    allAssocs :: AssocTable
+    allAssocs =
+      let
+        assocs (ImportSpec _ _ mas _, TModule mn _ tes _ _ _ _ _) =
+          let
+            m = fromMaybe mn mas
+          in  [ (qualIdent m i, [qualIdent m a | ValueExport a _ <- cs]) | TypeExport i _ cs <- tes ]
+      in  M.fromList $ concatMap assocs mdls
+    allClasses :: ClassTable
+    allClasses =
+      let
+        clss (_, TModule _ _ _ _ ces _ _ _) = ces
+      in  --(\ m -> trace ("allClasses: " ++ showListS showIdentClassInfo (M.toList m)) m) $
+          M.fromList $ concatMap clss mdls
+    allInsts :: InstTable
+    allInsts =
+      let
+        insts (_, TModule _ _ _ _ _ ies _ _) = ies
+      in  M.fromListWith mergeInstInfo $ concatMap insts mdls
+  in  (allFixes, allTypes, allSyns, allClasses, allInsts, allValues, allAssocs)
+
+mergeInstInfo :: InstInfo -> InstInfo -> InstInfo
+mergeInstInfo (InstInfo m1 l1 fds) (InstInfo m2 l2 _) =
+  let
+    m = foldr (uncurry $ M.insertWith mrg) m2 (M.toList m1)
+    mrg e1 _e2 = e1 -- XXX improve this if eqExpr e1 e2 then e1 else errorMessage (getSLoc e1) $ "Multiple instances: " ++ showSLoc (getSLoc e2)
+    l = unionBy eqInstDict l1 l2
+  in  InstInfo m l fds
+
+getIdent :: Expr -> Ident
+getIdent ae =
+  case ae of
+    EVar i -> i
+    ECon c -> conIdent c
+    _ -> impossible
+
+-- Approximate equality for dictionaries.
+-- The important thing is to avoid exact duplicates in the instance table.
+eqInstDict :: InstDict -> InstDict -> Bool
+eqInstDict (e, _, _) (e', _, _) = eqExpr e e'
+
+--------------------------
+
+type Typed a = (a, EType)
+
+data TCState = TC
+  IdentModule           -- current module name
+  Int                   -- unique number
+  FixTable              -- fixities, indexed by QIdent
+  TypeTable             -- type symbol table
+  SynTable              -- synonyms, indexed by QIdent
+  ValueTable            -- value symbol table
+  AssocTable            -- values associated with a type, indexed by QIdent
+  (IM.IntMap EType)     -- mapping from unique id to type
+  TCMode                -- pattern, value, or type
+  ClassTable            -- class info, indexed by QIdent
+  (InstTable,           -- instances
+   TypeEqTable)         -- type equalities
+  Constraints           -- constraints that have to be solved
+  Defaults              -- current defaults
+  --Xderiving (Show)
+
+data TCMode = TCExpr | TCType
+  --Xderiving (Show)
+
+typeTable :: TCState -> TypeTable
+typeTable (TC _ _ _ tt _ _ _ _ _ _ _ _ _) = tt
+
+valueTable :: TCState -> ValueTable
+valueTable (TC _ _ _ _ _ vt _ _ _ _ _ _ _) = vt
+
+synTable :: TCState -> SynTable
+synTable (TC _ _ _ _ st _ _ _ _ _ _ _ _) = st
+
+fixTable :: TCState -> FixTable
+fixTable (TC _ _ ft _ _ _ _ _ _ _ _ _ _) = ft
+
+assocTable :: TCState -> AssocTable
+assocTable (TC _ _ _ _ _ _ ast _ _ _ _ _ _) = ast
+
+uvarSubst :: TCState -> IM.IntMap EType
+uvarSubst (TC _ _ _ _ _ _ _ sub _ _ _ _ _) = sub
+
+moduleName :: TCState -> IdentModule
+moduleName (TC mn _ _ _ _ _ _ _ _ _ _ _ _) = mn
+
+classTable :: TCState -> ClassTable
+classTable (TC _ _ _ _ _ _ _ _ _ ct _ _ _) = ct
+
+tcMode :: TCState -> TCMode
+tcMode (TC _ _ _ _ _ _ _ _ m _ _ _ _) = m
+
+instTable :: TCState -> InstTable
+instTable (TC _ _ _ _ _ _ _ _ _ _ (is, _) _ _) = is
+
+typeEqTable :: TCState -> TypeEqTable
+typeEqTable (TC _ _ _ _ _ _ _ _ _ _ (_, es) _ _) = es
+
+constraints :: TCState -> Constraints
+constraints (TC _ _ _ _ _ _ _ _ _ _ _ e _) = e
+
+defaults :: TCState -> Defaults
+defaults (TC _ _ _ _ _ _ _ _ _ _ _ _ ds) = ds
+
+putValueTable :: ValueTable -> T ()
+putValueTable venv = do
+  TC mn n fx tenv senv _ ast sub m cs is es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+putTypeTable :: TypeTable -> T ()
+putTypeTable tenv = do
+  TC mn n fx _ senv venv ast sub m cs is es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+putSynTable :: SynTable -> T ()
+putSynTable senv = do
+  TC mn n fx tenv _ venv ast sub m cs is es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+putUvarSubst :: IM.IntMap EType -> T ()
+putUvarSubst sub = do
+  TC mn n fx tenv senv venv ast _ m cs is es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+putTCMode :: TCMode -> T ()
+putTCMode m = do
+  TC mn n fx tenv senv venv ast sub _ cs is es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+putInstTable :: InstTable -> T ()
+putInstTable is = do
+  TC mn n fx tenv senv venv ast sub m cs (_,eqs) es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs (is,eqs) es ds)
+
+putTypeEqTable :: TypeEqTable -> T ()
+putTypeEqTable eqs = do
+  TC mn n fx tenv senv venv ast sub m cs (is,_) es ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs (is,eqs) es ds)
+
+putConstraints :: Constraints -> T ()
+putConstraints es = do
+  TC mn n fx tenv senv venv ast sub m cs is _ ds <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+putDefaults :: Defaults -> T ()
+putDefaults ds = do
+  TC mn n fx tenv senv venv ast sub m cs is es _ <- get
+  put (TC mn n fx tenv senv venv ast sub m cs is es ds)
+
+withTCMode :: forall a . TCMode -> T a -> T a
+withTCMode m ta = do
+  om <- gets tcMode
+  putTCMode m
+  a <- ta
+  putTCMode om
+  return a
+
+-- Use the type table as the value table, and the primKind table as the type table.
+withTypeTable :: forall a . T a -> T a
+withTypeTable ta = do
+  TC mn n fx tt st vt ast sub m cs is es ds <- get
+  put (TC mn n fx primKindTable st tt ast sub m cs is es ds)
+  a <- ta
+  -- Discard kind table, it will not have changed
+  TC mnr nr fxr _kr str ttr astr subr mr csr isr esr dsr <- get
+  -- Keep everyting, except that the returned value table
+  -- becomes the type tables, and the old type table is restored.
+  put (TC mnr nr fxr ttr str vt astr subr mr csr isr esr dsr)
+  return a
+
+addAssocTable :: Ident -> [Ident] -> T ()
+addAssocTable i ids = do
+  TC mn n fx tt st vt ast sub m cs is es ds <- get
+  put $ TC mn n fx tt st vt (M.insert i ids ast) sub m cs is es ds
+
+addClassTable :: Ident -> ClassInfo -> T ()
+addClassTable i x = do
+  TC mn n fx tt st vt ast sub m cs is es ds <- get
+  put $ TC mn n fx tt st vt ast sub m (M.insert i x cs) is es ds
+
+addInstTable :: [InstDictC] -> T ()
+addInstTable ics = do
+  let
+    -- Change type variable to unique unification variables.
+    -- These unification variables will never leak, but as an extra caution
+    -- we use negative numbers..
+    freshSubst iks =
+      zipWith (\ ik j -> (idKindIdent ik, EUVar j)) iks [-1, -2 ..]
+
+    mkInstInfo :: InstDictC -> T (Ident, InstInfo)
+    mkInstInfo (e, iks, ctx, ct, fds) = do
+      ct' <- expandSyn ct
+      case (iks, ctx, getApp ct') of
+        ([], [], (c, [EVar i])) -> return $ (c, InstInfo (M.singleton i e) [] fds)
+        (_,  _,  (c, ts      )) -> return $ (c, InstInfo M.empty [(e, ctx', ts')] fds)
+          where ctx' = map (subst s) ctx
+                ts'  = map (subst s) ts
+                s    = freshSubst iks
+  iis <- mapM mkInstInfo ics
+  it <- gets instTable
+  putInstTable $ foldr (uncurry $ M.insertWith mergeInstInfo) it iis
+
+addConstraint :: Ident -> EConstraint -> T ()
+addConstraint d ctx = do
+--  traceM $ "addConstraint: " ++ msg ++ " " ++ showIdent d ++ " :: " ++ showEType ctx
+  ctx' <- expandSyn ctx
+  TC mn n fx tt st vt ast sub m cs is es ds <- get
+  put $ TC mn n fx tt st vt ast sub m cs is ((d, ctx') : es) ds
+
+withDicts :: forall a . [(Ident, EConstraint)] -> T a -> T a
+withDicts [] ta = ta
+withDicts ((i, c):ds) ta = withDict i c $ withDicts ds ta
+
+withDict :: forall a . Ident -> EConstraint -> T a -> T a
+withDict i c ta = do
+  c' <- expandSyn c >>= derefUVar
+  when (not (null (metaTvs [c']))) $ impossible
+  case c' of
+    (EApp (EApp (EVar eq) t1) t2) | eq == mkIdent nameTypeEq -> withEqDict i t1 t2 ta
+    _ -> withInstDict i c' ta
+
+withInstDict :: forall a . Ident -> EConstraint -> T a -> T a
+withInstDict i c ta = do
+  is <- gets instTable
+  ics <- expandDict (EVar i) c
+  addInstTable ics
+  a <- ta
+  putInstTable is
+  return a
+
+withEqDict :: forall a . Ident -> EType -> EType -> T a -> T a
+withEqDict _i t1 t2 ta = do
+  is <- gets typeEqTable
+  putTypeEqTable (addTypeEq t1 t2 is)
+  a <- ta
+  putTypeEqTable is
+  return a
+
+initTC :: IdentModule -> FixTable -> TypeTable -> SynTable -> ClassTable -> InstTable -> ValueTable -> AssocTable -> TCState
+initTC mn fs ts ss cs is vs as =
+--  trace ("**** initTC " ++ showIdent mn ++ ": " ++ showListS (showPairS showIdent showEType) (M.toList ss)) $
+  let
+    xts = foldr (uncurry stInsertGlb) ts primTypes
+    xvs = foldr (uncurry stInsertGlb) vs primValues
+  in TC mn 1 fs xts ss xvs as IM.empty TCExpr cs (is,[]) [] []
+
+kTypeS :: EType
+kTypeS = kType
+
+kTypeTypeS :: EType
+kTypeTypeS = kArrow kType kType
+
+kTypeTypeTypeS :: EType
+kTypeTypeTypeS = kArrow kType $ kArrow kType kType
+
+-- (=>) :: Constraint -> Type -> Type
+kConstraintTypeTypeS :: EType
+kConstraintTypeTypeS = kArrow kConstraint $ kArrow kType kType
+
+-- (~) :: Type -> Type -> Constraint
+kTypeTypeConstraintS :: EType
+kTypeTypeConstraintS = kArrow kType (kArrow kType kConstraint)
+
+builtinLoc :: SLoc
+builtinLoc = SLoc "builtin" 0 0
+
+mkIdentB :: String -> Ident
+mkIdentB = mkIdentSLoc builtinLoc
+
+primKindTable :: KindTable
+primKindTable =
+  let
+    entry i = Entry (EVar (mkIdentB i))
+  in stFromList [
+       -- The kinds are wired in (for now)
+       (mkIdentB "Primitives.Type",       [entry "Primitives.Type" kTypeS]),
+       (mkIdentB "Type",                  [entry "Primitives.Type" kTypeS]),
+       (mkIdentB "Constraint",            [entry "Primitives.Constraint" kTypeS]),
+       (mkIdentB "Primitives.Constraint", [entry "Primitives.Constraint" kTypeS]),
+       (mkIdentB nameArrow,               [entry nameArrow   kTypeTypeTypeS]),
+       (mkIdentB "->",                    [entry nameArrow   kTypeTypeTypeS])
+       ]
+
+primTypes :: [(Ident, [Entry])]
+primTypes =
+  let
+    entry i = Entry (EVar (mkIdentB i))
+    k = mkIdent "k"
+    kv = EVar k
+    kk = IdKind k kTypeS
+    tuple n =
+      let
+        i = tupleConstr builtinLoc n
+      in  (i, [entry (unIdent i) $ EForall [kk] $ foldr kArrow kv (replicate n kv)])
+  in
+      [
+       -- The function arrow et al are bothersome to define in Primitives, so keep them here.
+       -- But the fixity is defined in Primitives.
+       (mkIdentB "->",           [entry nameArrow    kTypeTypeTypeS]),
+       (mkIdentB "=>",           [entry nameImplies  kConstraintTypeTypeS]),
+       (mkIdentB "~",            [entry nameTypeEq   kTypeTypeConstraintS]),
+       -- Primitives.hs uses the type [], and it's annoying to fix that.
+       -- XXX should not be needed
+       (mkIdentB (listPrefix ++ "[]"), [entry (listPrefix ++ "[]")        kTypeTypeS])
+      ] ++
+      map tuple (enumFromTo 2 10)
+
+primValues :: [(Ident, [Entry])]
+primValues =
+  let
+    tuple n =
+      let
+        c = tupleConstr builtinLoc n
+        vks = [IdKind (mkIdent ("a" ++ show i)) kType | i <- enumFromTo 1 n]
+        ts = map tVarK vks
+        r = tApps c ts
+      in  (c, [Entry (ECon $ ConData [(c, n)] c) $ EForall vks $ foldr tArrow r ts ])
+  in  map tuple (enumFromTo 2 10)
+
+type T a = TC TCState a
+
+tCon :: Ident -> EType
+tCon = EVar
+
+tVarK :: IdKind -> EType
+tVarK (IdKind i _) = EVar i
+
+tApp :: EType -> EType -> EType
+tApp = EApp
+
+tApps :: Ident -> [EType] -> EType
+tApps i ts = foldl tApp (tCon i) ts
+
+tArrow :: EType -> EType -> EType
+tArrow a r = tApp (tApp (tConI builtinLoc "Primitives.->") a) r
+
+tImplies :: EType -> EType -> EType
+tImplies a r = tApp (tApp (tConI builtinLoc "Primitives.=>") a) r
+
+kArrow :: EKind -> EKind -> EKind
+kArrow = tArrow
+
+{-
+isArrow :: EType -> Bool
+isArrow = isJust . getArrow
+-}
+
+getArrow :: EType -> Maybe (EType, EType)
+getArrow (EApp (EApp (EVar n) a) b) =
+  if isIdent "->" n || isIdent "Primitives.->" n then Just (a, b) else Nothing
+getArrow _ = Nothing
+
+getImplies :: EType -> Maybe (EType, EType)
+getImplies (EApp (EApp (EVar n) a) b) =
+  if isIdent "=>" n || isIdent "Primitives.=>" n then Just (a, b) else Nothing
+getImplies _ = Nothing
+
+{-
+getTuple :: Int -> EType -> Maybe [EType]
+getTuple n t = loop t []
+  where loop (EVar i) r | isTupleConstr n i && length r == n = Just (reverse r)
+        loop (EApp f a) r = loop f (a:r)
+        loop _ _ = Nothing
+-}
+
+setUVar :: TRef -> EType -> T ()
+setUVar i t = do
+  TC mn n fx tenv senv venv ast sub m cs is es ds <- get
+  put (TC mn n fx tenv senv venv ast (IM.insert i t sub) m cs is es ds)
+
+getUVar :: Int -> T (Maybe EType)
+getUVar i = gets (IM.lookup i . uvarSubst)
+
+munify :: --XHasCallStack =>
+          SLoc -> Expected -> EType -> T ()
+munify loc (Infer r) b = tSetRefType loc r b
+munify loc (Check a) b = unify loc a b
+
+expandSyn :: --XHasCallStack =>
+             EType -> T EType
+expandSyn at =
+  let
+    syn ts t =
+      case t of
+        EApp f a -> do
+          aa <- expandSyn a
+          syn (aa:ts) f
+        EVar i -> do
+          syns <- gets synTable
+          case M.lookup i syns of
+            Nothing -> return $ foldl tApp t ts
+            Just (EForall vks tt) ->
+              if length vks /= length ts then tcError (getSLoc i) $ "bad synonym use"
+                                                                         --X ++ "\nXX " ++ show (i, vks, ts)
+              else expandSyn $ subst (zip (map idKindIdent vks) ts) tt
+            Just _ -> impossible
+        EUVar _ -> return $ foldl tApp t ts
+        ESign a _ -> expandSyn a   -- Throw away signatures, they don't affect unification
+        EForall iks tt | null ts -> EForall iks <$> expandSyn tt
+        _ -> impossible
+  in syn [] at
+
+derefUVar :: EType -> T EType
+derefUVar at =
+  case at of
+    EApp f a -> do
+      fx <- derefUVar f
+      ax <- derefUVar a
+      return $ EApp fx ax
+    EUVar i -> do
+      mt <- getUVar i
+      case mt of
+        Nothing -> return at
+        Just t -> do
+          t' <- derefUVar t
+          setUVar i t'
+          return t'
+    EVar _ -> return at
+    ESign t k -> flip ESign k <$> derefUVar t
+    EForall iks t -> EForall iks <$> derefUVar t
+    _ -> impossible
+
+tcErrorTK :: --XHasCallStack =>
+             SLoc -> String -> T ()
+tcErrorTK loc msg = do
+  tcm <- gets tcMode
+  let s = case tcm of
+            TCType -> "kind"
+            _      -> "type"
+  tcError loc $ s ++ " error: " ++ msg
+
+unify :: --XHasCallStack =>
+         SLoc -> EType -> EType -> T ()
+unify loc a b = do
+  aa <- expandSyn a
+  bb <- expandSyn b
+  unifyR loc aa bb
+
+-- XXX should do occur check
+unifyR :: --XHasCallStack =>
+          SLoc -> EType -> EType -> T ()
+unifyR _   (EVar x1)    (EVar x2)  | x1 == x2      = return ()
+unifyR loc (EApp f1 a1) (EApp f2 a2)               = do { unifyR loc f1 f2; unifyR loc a1 a2 }
+unifyR _   (EUVar r1)   (EUVar r2) | r1 == r2      = return ()
+unifyR loc (EUVar r1)   t2                         = unifyVar loc r1 t2
+unifyR loc t1           (EUVar r2)                 = unifyVar loc r2 t1
+unifyR loc t1           t2                         = do
+  tcm <- gets tcMode
+  case tcm of
+    TCType -> tcErrorTK loc $ "cannot unify " ++ showExpr t1 ++ " and " ++ showExpr t2
+    -- Defer to constraint solver.
+    -- XXX needs changing if we have kind equalities.
+    _      -> addEqConstraint loc t1 t2
+
+unifyVar :: --XHasCallStack =>
+            SLoc -> TRef -> EType -> T ()
+unifyVar loc r t = do
+  mt <- getUVar r
+  case mt of
+    Nothing -> unifyUnboundVar loc r t
+    Just t' -> unify loc t' t
+
+unifyUnboundVar :: --XHasCallStack =>
+                   SLoc -> TRef -> EType -> T ()
+unifyUnboundVar loc r1 at2@(EUVar r2) = do
+  -- We know r1 /= r2
+  mt2 <- getUVar r2
+  case mt2 of
+    Nothing -> setUVar r1 at2
+    Just t2 -> unify loc (EUVar r1) t2
+unifyUnboundVar loc r1 t2 = do
+  vs <- getMetaTyVars [t2]
+  if elemBy (==) r1 vs then
+    tcErrorTK loc $ "cyclic " ++ showExpr (EUVar r1) ++ " = " ++ showExpr t2
+   else
+    setUVar r1 t2
+
+-- Reset unification map
+tcReset :: T ()
+tcReset = do
+  TC mn u fx tenv senv venv ast _ m cs is es ds <- get
+  put (TC mn u fx tenv senv venv ast IM.empty m cs is es ds)
+
+newUVar :: T EType
+newUVar = EUVar <$> newUniq
+
+type TRef = Int
+
+newUniq :: T TRef
+newUniq = do
+  TC mn n fx tenv senv venv ast sub m cs is es ds <- get
+  let n' = n+1
+  put (seq n' $ TC mn n' fx tenv senv venv ast sub m cs is es ds)
+  return n
+
+newIdent :: SLoc -> String -> T Ident
+newIdent loc s = do
+  u <- newUniq
+  return $ mkIdentSLoc loc $ s ++ "$" ++ show u
+
+tLookup :: --XHasCallStack =>
+           String -> Ident -> T (Expr, EType)
+tLookup msg i = do
+  env <- gets valueTable
+  case stLookup msg i env of
+    Right (Entry e s) -> return (setSLocExpr (getSLoc i) e, s)
+    Left            e -> do
+--      let SymTab m _ = env
+--      traceM (showListS showIdent (map fst (M.toList m)))
+      tcError (getSLoc i) e
+
+tLookupV :: --XHasCallStack =>
+           Ident -> T (Expr, EType)
+tLookupV i = do
+  tcm <- gets tcMode
+  let s = case tcm of
+            TCType -> "type"
+            _      -> "value"
+  tLookup s i
+
+tInst :: (Expr, EType) -> T (Expr, EType)
+tInst (ae, EForall vks t) = tInstForall ae vks t >>= tInst
+tInst (ae, at) | Just (ctx, t) <- getImplies at = do
+  d <- newIdent (getSLoc ae) "dict"
+  --traceM $ "tInst: addConstraint: " ++ showIdent d ++ " :: " ++ showEType ctx ++ " " ++ showSLoc loc
+  addConstraint d ctx
+  tInst (EApp ae (EVar d), t)
+tInst at = return at
+
+tInstForall :: Expr -> [IdKind] -> EType -> T (Expr, EType)
+tInstForall ae vks t =
+  if null vks then
+    return (ae, t)
+  else do
+    let vs = map idKindIdent vks
+    us <- mapM (const newUVar) vks
+    return (ae, subst (zip vs us) t)
+
+tInst' :: (Expr, EType) -> T (Expr, EType)
+tInst' (ae, EForall vks t) = tInstForall ae vks t
+tInst' et = return et
+
+extValE :: --XHasCallStack =>
+           Ident -> EType -> Expr -> T ()
+extValE i t e = do
+  venv <- gets valueTable
+  putValueTable (stInsertLcl i (Entry e t) venv)
+
+-- Extend the global symbol table with i = e :: t
+-- Add both qualified and unqualified versions of i.
+extValETop :: --XHasCallStack =>
+              Ident -> EType -> Expr -> T ()
+extValETop i t e = do
+  mn <- gets moduleName
+  venv <- gets valueTable
+  let qi = qualIdent mn i
+      venv'  = stInsertGlb qi [Entry e t] venv
+      venv'' = stInsertGlb  i [Entry e t] venv'
+  putValueTable venv''
+
+-- Extend symbol table with i::t.
+-- The translation for i will be the qualified name.
+-- Add both qualified and unqualified versions of i.
+extValQTop :: --XHasCallStack =>
+              Ident -> EType -> T ()
+extValQTop i t = do
+  mn <- gets moduleName
+  extValETop i t (EVar (qualIdent mn i))
+
+extVal :: --XHasCallStack =>
+          Ident -> EType -> T ()
+extVal i t = extValE i t $ EVar i
+
+extVals :: --XHasCallStack =>
+           [(Ident, EType)] -> T ()
+extVals = mapM_ (uncurry extVal)
+
+extTyp :: Ident -> EType -> T ()
+extTyp i t = do
+  tenv <- gets typeTable
+  putTypeTable (stInsertLcl i (Entry (EVar i) t) tenv)
+
+extTyps :: [(Ident, EType)] -> T ()
+extTyps = mapM_ (uncurry extTyp)
+
+extSyn :: Ident -> EType -> T ()
+extSyn i t = do
+  senv <- gets synTable
+  putSynTable (M.insert i t senv)
+
+extFix :: Ident -> Fixity -> T ()
+extFix i fx = do
+  TC mn n fenv tenv senv venv ast sub m cs is es ds <- get
+  put $ TC mn n (M.insert i fx fenv) tenv senv venv ast sub m cs is es ds
+  return ()
+
+withExtVal :: forall a . --XHasCallStack =>
+              Ident -> EType -> T a -> T a
+withExtVal i t ta = do
+  venv <- gets valueTable
+  extVal i t
+  a <- ta
+  putValueTable venv
+  return a
+
+withExtVals :: forall a . --XHasCallStack =>
+               [(Ident, EType)] -> T a -> T a
+withExtVals env ta = do
+  venv <- gets valueTable
+  extVals env
+  a <- ta
+  putValueTable venv
+  return a
+
+withExtTyps :: forall a . [IdKind] -> T a -> T a
+withExtTyps iks ta = do
+  let env = map (\ (IdKind v k) -> (v, k)) iks
+  venv <- gets typeTable
+  extTyps env
+  a <- ta
+  putTypeTable venv
+  return a
+
+tcDefs :: [EDef] -> T [EDef]
+tcDefs ds = do
+  mapM_ tcAddInfix ds
+  dst <- tcDefsType ds
+  mapM_ addTypeSyn dst
+  dst' <- tcExpand dst
+--  traceM (showEDefs dst')
+  setDefault dst'
+  tcDefsValue dst'
+
+setDefault :: [EDef] -> T ()
+setDefault defs =
+  putDefaults $ last $ [] : [ ts | Default ts <- defs ]
+
+tcAddInfix :: EDef -> T ()
+tcAddInfix (Infix fx is) = do
+  mn <- gets moduleName
+  mapM_ (\ i -> extFix (qualIdent mn i) fx) is
+tcAddInfix _ = return ()
+
+-- Check type definitions
+tcDefsType :: [EDef] -> T [EDef]
+tcDefsType ds = withTypeTable $ do
+  dsk <- mapM tcDefKind ds                     -- Check&rename kinds in all type definitions
+  mapM_ addTypeKind dsk                        -- Add the kind of each type to the environment
+  mapM tcDefType dsk                           -- Kind check all type expressions (except local signatures)
+
+-- Expand class and instance definitions (must be done after type synonym processing)
+tcExpand :: [EDef] -> T [EDef]
+tcExpand dst = withTypeTable $ do
+  dsc <- mapM expandClass dst                  -- Expand all class definitions
+  dsi <- mapM expandInst (concat dsc)          -- Expand all instance definitions
+  return (concat dsi)
+
+-- Make sure that the kind expressions are well formed.
+tcDefKind :: EDef -> T EDef
+tcDefKind adef = do
+  tcReset
+  case adef of
+    Data    (i, vks) cs  -> withVks vks kType $ \ vvks _  -> return $ Data    (i, vvks) cs
+    Newtype (i, vks) c   -> withVks vks kType $ \ vvks _  -> return $ Newtype (i, vvks) c
+    Type    (i, vks) at  ->
+      case at of
+        ESign t k        -> withVks vks k     $ \ vvks kr -> return $ Type    (i, vvks) (ESign t kr)
+        _                -> withVks vks kType $ \ vvks _  -> return $ Type    (i, vvks) at
+    Class ctx (i, vks) fds ms-> withVks vks kConstraint $ \ vvks _ -> return $ Class ctx (i, vvks) fds ms
+    Instance vks ctx t d -> withVks vks kConstraint $ \ vvks _ -> return $ Instance vvks ctx t d
+    _                    -> return adef
+
+-- Check&rename the given kinds, apply reconstruction at the end
+withVks :: forall a . [IdKind] -> EKind -> ([IdKind] -> EKind -> T a) -> T a
+withVks vks kr fun = do
+  (nvks, nkr) <-
+    withTypeTable $ do
+      let
+        loop r [] = do
+          kkr <- tInferTypeT kr
+          return (reverse r, kkr)
+        loop r (IdKind i k : iks) = do
+          kk <- tInferTypeT k
+          withExtVal i kk $ loop (IdKind i kk : r) iks
+      loop [] vks
+  fun nvks nkr
+
+-- Add symbol table entries (with kind) for all top level typeish definitions
+addTypeKind :: EDef -> T ()
+addTypeKind adef = do
+  let
+    addAssoc i is = do
+      mn <- gets moduleName
+      addAssocTable (qualIdent mn i) (map (qualIdent mn) is)
+    assocData (Constr _ _ c (Left _)) = [c]
+    assocData (Constr _ _ c (Right its)) = c : map fst its
+  case adef of
+    Data    lhs@(i, _) cs -> do
+      addLHSKind lhs kType
+      addAssoc i (nub $ concatMap assocData cs)
+    Newtype lhs@(i, _) c  -> do
+      addLHSKind lhs kType
+      addAssoc i (assocData c)
+    Type    lhs t         -> addLHSKind lhs (getTypeKind t)
+    Class _ lhs@(i, _) _ ms -> do
+      addLHSKind lhs kConstraint
+      addAssoc i [ x | BSign m _ <- ms, x <- [m, mkDefaultMethodId m] ]
+    _ -> return ()
+
+getTypeKind :: EType -> EKind
+getTypeKind (ESign _ k) = k
+getTypeKind _ = kType
+
+addLHSKind :: LHS -> EKind -> T ()
+addLHSKind (i, vks) kret =
+--  trace ("addLHSKind " ++ showIdent i ++ " :: " ++ showExpr (lhsKind vks kret)) $
+  extValQTop i (lhsKind vks kret)
+
+lhsKind :: [IdKind] -> EKind -> EKind
+lhsKind vks kret = foldr (\ (IdKind _ k) -> kArrow k) kret vks
+
+-- Add type synonyms to the synonym table
+addTypeSyn :: EDef -> T ()
+addTypeSyn adef =
+  case adef of
+    Type (i, vs) t -> do
+      let t' = EForall vs t
+      extSyn i t'
+      mn <- gets moduleName
+      extSyn (qualIdent mn i) t'
+    _ -> return ()
+
+-- Do kind checking of all typeish definitions.
+tcDefType :: EDef -> T EDef
+tcDefType d = do
+  tcReset
+  case d of
+    Data    lhs@(_, iks) cs     -> withVars iks $ Data    lhs   <$> mapM tcConstr cs
+    Newtype lhs@(_, iks) c      -> withVars iks $ Newtype lhs   <$> tcConstr c
+    Type    lhs@(_, iks)    t   -> withVars iks $ Type    lhs   <$> tInferTypeT t
+    Sign         i          t   ->                Sign    i     <$> tCheckTypeT kType t
+    ForImp  ie i            t   ->                ForImp ie i   <$> tCheckTypeT kType t
+    Class   ctx lhs@(_, iks) fds ms -> withVars iks $ Class     <$> tcCtx ctx <*> return lhs <*> mapM tcFD fds <*> mapM tcMethod ms
+    Instance iks ctx c m        -> withVars iks $ Instance iks  <$> tcCtx ctx <*> tCheckTypeT kConstraint c <*> return m
+    Default ts                  ->                Default       <$> mapM (tCheckTypeT kType) ts
+    _                           -> return d
+ where
+   tcMethod (BSign i t) = BSign i <$> tcTypeT (Check kType) t
+   tcMethod m = return m
+   tcFD (is, os) = (,) <$> mapM tcV is <*> mapM tcV os
+     where tcV i = do { _ <- tLookup "fundep" i; return i }
+
+tcCtx :: [EConstraint] -> T [EConstraint]
+tcCtx = mapM (tCheckTypeT kConstraint)
+
+withVars :: forall a . [IdKind] -> T a -> T a
+withVars aiks ta =
+  case aiks of
+    [] -> ta
+    IdKind i k : iks -> do
+      withExtVal i k $ withVars iks ta
+
+tcConstr :: Constr -> T Constr
+tcConstr (Constr iks ct c ets) =
+  withVars iks $
+    Constr iks <$> tcCtx ct <*> pure c <*>
+      either (\ x -> Left  <$> mapM (\ (s,t)     ->         (s,)  <$> tcTypeT (Check kType) t) x)
+             (\ x -> Right <$> mapM (\ (i,(s,t)) -> ((i,) . (s,)) <$> tcTypeT (Check kType) t) x) ets
+
+-- Expand a class defintion to
+--  * a "data" type for the dictionary, with kind Constraint
+--  * superclass selectors
+--  * method selectors
+--  * default methods
+-- E.g.
+--   class Eq a where
+--     (==) :: a -> a -> Bool
+--     (/=) :: a -> a -> a
+--     x /= y = not (x == y)
+-- expands to
+--   data Eq a = Eq$ (a -> a -> Bool) (a -> a -> Bool)
+--               :: Constraint
+--   == :: forall a . Eq a -> (a -> a -> Bool)
+--   == (Eq x _) = x
+--   /= :: forall a . Eq a -> (a -> a -> Bool)
+--   /= (Eq _ x) = x
+--   ==$dflt :: forall a . (Eq a) => (a -> a -> Bool)
+--   ==$dflt = _noDefault "Eq.=="
+--   /=$dflt :: forall a . (Eq a) => (a -> a -> Bool)
+--   /=$dflt x y = not (x == y)
+--
+--   class (Eq a) => Ord a where
+--     (<=) :: a -> a -> Bool
+-- expands to
+--   data Ord a = Ord$ (Eq a) (a -> a -> Bool)
+--   Ord$super1 :: forall a . Ord a -> Eq a
+--   <= :: forall a . Ord a -> (a -> a -> Bool)
+--   <=$dflt = _noDefault "Ord.<="
+--
+--   instance Eq Int where (==) = primEqInt
+-- expands to
+--   inst$999 = Eq$ meth$1 meth$2
+--     where meth$1 = primEqInt
+--           meth$2 = /=$dflt dict$999
+--
+--   instance Ord Int where (<=) = primLEInt
+-- expands to
+--   inst$888 = Ord$ dict$ meth$1
+--     where meth$1 = primLEInt
+-- where dict$ is a special magic identifier that the type checker expands
+-- to whatever dictionary is forced by the type.
+-- In this case (dict$ :: Eq Int), so it with be inst$999
+--
+-- The actual definitions for the constructor and methods are added
+-- in the desugaring pass.
+-- Default methods are added as actual definitions.
+-- The constructor and methods are added to the symbol table in addValueType.
+-- XXX FunDep
+expandClass :: EDef -> T [EDef]
+expandClass dcls@(Class ctx (iCls, vks) fds ms) = do
+  mn <- gets moduleName
+  let
+      meths = [ b | b@(BSign _ _) <- ms ]
+      methIds = map (\ (BSign i _) -> i) meths
+      mdflts = [ (i, eqns) | BFcn i eqns <- ms ]
+      tCtx = tApps (qualIdent mn iCls) (map (EVar . idKindIdent) vks)
+      mkDflt (BSign methId t) = [ Sign iDflt $ EForall vks $ tCtx `tImplies` t, def $ lookup methId mdflts ]
+        where def Nothing = Fcn iDflt [Eqn [] $ EAlts [([], noDflt)] []]
+              def (Just eqns) = Fcn iDflt eqns
+              iDflt = mkDefaultMethodId methId
+              -- XXX This isn't right, "Prelude._nodefault" might not be in scope
+              noDflt = EApp noDefaultE (ELit noSLoc (LStr (unIdent iCls ++ "." ++ unIdent methId)))
+      mkDflt _ = impossible
+      dDflts = concatMap mkDflt meths
+  addClassTable (qualIdent mn iCls) (vks, ctx, EUVar 0, methIds, mkIFunDeps (map idKindIdent vks) fds)   -- Initial entry, no type needed.
+  return $ dcls : dDflts
+expandClass d = return [d]
+
+mkIFunDeps :: [Ident] -> [FunDep] -> [IFunDep]
+mkIFunDeps vs [] = [(map (const True) vs, map (const False) vs)]
+mkIFunDeps vs fds = map (\ (is, os) -> (map (`elem` is) vs, map (`elem` os) vs)) fds
+
+noDefaultE :: Expr
+noDefaultE = ELit noSLoc $ LPrim "noDefault"
+
+-- Turn (unqualified) class and method names into a default method name
+mkDefaultMethodId :: Ident -> Ident
+mkDefaultMethodId meth = addIdentSuffix meth "$dflt"
+
+{-
+clsToDict :: EType -> T EType
+clsToDict = do
+  -- XXX for now, only allow contexts of the form (C t1 ... tn)
+  let usup as (EVar c) | isConIdent c = return (tApps c as)
+      usup as (EApp f a) = usup (a:as) f
+      usup _ t = tcError (getSLoc t) ("bad context " ++ showEType t)
+  usup []
+-}
+
+addConstraints :: [EConstraint] -> EType -> EType
+addConstraints []  t = t
+addConstraints cs  t = tupleConstraints cs `tImplies` t
+
+tupleConstraints :: [EConstraint] -> EConstraint
+tupleConstraints []  = error "tupleConstraints"
+tupleConstraints [c] = c
+tupleConstraints cs  = tApps (tupleConstr noSLoc (length cs)) cs
+
+expandInst :: EDef -> T [EDef]
+expandInst dinst@(Instance vks ctx cc bs) = do
+  let loc = getSLoc cc
+      qiCls = getAppCon cc
+  iInst <- newIdent loc "inst"
+  let sign = Sign iInst (eForall vks $ addConstraints ctx cc)
+--  (e, _) <- tLookupV iCls
+  ct <- gets classTable
+--  let qiCls = getAppCon e
+  (_, supers, _, mis, fds) <-
+    case M.lookup qiCls ct of
+      Nothing -> tcError loc $ "not a class " ++ showIdent qiCls
+      Just x -> return x
+  -- XXX this ignores type signatures and other bindings
+  -- XXX should tack on signatures with ESign
+  let ies = [(i, ELam qs) | BFcn i qs <- bs]
+      meth i = fromMaybe (EVar $ setSLocIdent loc $ mkDefaultMethodId i) $ lookup i ies
+      meths = map meth mis
+      sups = map (const (EVar $ mkIdentSLoc loc "dict$")) supers
+      args = sups ++ meths
+  let bind = Fcn iInst $ eEqns [] $ foldl EApp (EVar $ mkClassConstructor qiCls) args
+  mn <- gets moduleName
+  addInstTable [(EVar $ qualIdent mn iInst, vks, ctx, cc, fds)]
+  return [dinst, sign, bind]
+expandInst d = return [d]
+
+eForall :: [IdKind] -> EType -> EType
+eForall [] t = t
+eForall vs t = EForall vs t
+
+---------------------
+
+tcDefsValue :: [EDef] -> T [EDef]
+tcDefsValue ds = do
+  mapM_ addValueType ds
+  mapM (\ d -> do { tcReset; tcDefValue d}) ds
+
+addValueType :: EDef -> T ()
+addValueType adef = do
+  mn <- gets moduleName
+  case adef of
+    Sign i t -> extValQTop i t
+    Data (i, vks) cs -> do
+      let
+        cti = [ (qualIdent mn c, either length length ets + if null ctx then 0 else 1) | Constr _ ctx c ets <- cs ]
+        tret = foldl tApp (tCon (qualIdent mn i)) (map tVarK vks)
+        addCon (Constr evks ectx c ets) = do
+          let ts = either id (map snd) ets
+              cty = EForall vks $ EForall evks $ addConstraints ectx $ foldr (tArrow . snd) tret ts
+          extValETop c cty (ECon $ ConData cti (qualIdent mn c))
+      mapM_ addCon cs
+    Newtype (i, vks) (Constr _ _ c fs) -> do
+      let
+        t = snd $ head $ either id (map snd) fs
+        tret = foldl tApp (tCon (qualIdent mn i)) (map tVarK vks)
+      extValETop c (EForall vks $ EForall [] $ tArrow t tret) (ECon $ ConNew (qualIdent mn c))
+    ForImp _ i t -> extValQTop i t
+    Class ctx (i, vks) fds ms -> addValueClass ctx i vks fds ms
+    _ -> return ()
+
+-- XXX FunDep
+addValueClass :: [EConstraint] -> Ident -> [IdKind] -> [FunDep] -> [EBind] -> T ()
+addValueClass ctx iCls vks fds ms = do
+  mn <- gets moduleName
+  let
+      meths = [ b | b@(BSign _ _) <- ms ]
+      methTys = map (\ (BSign _ t) -> t) meths
+      methIds = map (\ (BSign i _) -> i) meths
+      supTys = ctx  -- XXX should do some checking
+      targs = supTys ++ methTys
+      qiCls = qualIdent mn iCls
+      tret = tApps qiCls (map tVarK vks)
+      cti = [ (qualIdent mn iCon, length targs) ]
+      iCon = mkClassConstructor iCls
+      iConTy = EForall vks $ foldr tArrow tret targs
+  extValETop iCon iConTy (ECon $ ConData cti (qualIdent mn iCon))
+  let addMethod (BSign i t) = extValETop i (EForall vks $ tApps qiCls (map (EVar . idKindIdent) vks) `tImplies` t) (EVar $ qualIdent mn i)
+      addMethod _ = impossible
+--  traceM ("addValueClass " ++ showEType (ETuple ctx))
+  mapM_ addMethod meths
+  -- Update class table, now with actual constructor type.
+  addClassTable qiCls (vks, ctx, iConTy, methIds, mkIFunDeps (map idKindIdent vks) fds)
+
+{-
+bundleConstraints :: [EConstraint] -> EType -> EType
+bundleConstraints []  t = t
+bundleConstraints [c] t = tImplies c t
+bundleConstraints cs  t = tImplies (ETuple cs) t
+-}
+
+mkClassConstructor :: Ident -> Ident
+mkClassConstructor i = addIdentSuffix i "$C"
+
+{-
+unForall :: EType -> ([IdKind], EType)
+unForall (EForall iks t) = (iks, t)
+unForall t = ([], t)
+-}
+
+tcDefValue :: --XHasCallStack =>
+              EDef -> T EDef
+tcDefValue adef =
+  case adef of
+    Fcn i eqns -> do
+      (_, tt) <- tLookup "type signature" i
+--      traceM $ "tcDefValue: " ++ showIdent i ++ " :: " ++ showExpr tt
+--      traceM $ "tcDefValue: def=" ++ showEDefs [adef]
+      mn <- gets moduleName
+      teqns <- tcEqns True tt eqns
+--      traceM ("tcDefValue: after " ++ showEDefs [adef, Fcn i teqns])
+      checkConstraints
+      return $ Fcn (qualIdent mn i) teqns
+    ForImp ie i t -> do
+      mn <- gets moduleName
+      return (ForImp ie (qualIdent mn i) t)
+    _ -> return adef
+
+tCheckTypeT :: EType -> EType -> T EType
+tCheckTypeT = tCheck tcTypeT
+
+tInferTypeT :: EType -> T EType
+tInferTypeT t = fst <$> tInfer tcTypeT t
+
+-- Kind check a type while already in type checking mode
+tcTypeT :: --XHasCallStack =>
+           Expected -> EType -> T EType
+tcTypeT mk t = withTCMode TCType (tcExpr mk (dsType t))
+
+-- Kind check a type while in value checking mode
+tcType :: --XHasCallStack =>
+          Expected -> EType -> T EType
+tcType mk = withTypeTable . tcTypeT mk
+
+{-
+-- Sort check a kind while already in type cheking mode
+tcKind :: --XHasCallStack =>
+          EKind -> T EKind
+tcKind e = fst <$> withTypeTable (tcType (Just kType) e)
+-}
+
+-- When inferring the type, the resulting type will
+-- be assigned to the TRef (using tSetRefType),
+-- and can then be read of (using tGetRefType).
+-- When checking, the expected type is simple given.
+data Expected = Infer TRef | Check EType
+  --Xderiving(Show)
+
+tInfer :: forall a b . --XHasCallStack =>
+          (Expected -> a -> T b) -> a -> T (Typed b)
+tInfer tc a = do
+  ref <- newUniq
+  a' <- tc (Infer ref) a
+  t <- tGetRefType ref
+  return (a', t)
+
+tCheck :: forall a b . (Expected -> a -> T b) -> EType -> a -> T b
+tCheck tc t = tc (Check t)
+
+tInferExpr :: --XHasCallStack =>
+              Expr -> T (Typed Expr)
+tInferExpr = tInfer tcExpr
+
+tCheckExpr :: --XHasCallStack =>
+              EType -> Expr -> T Expr
+tCheckExpr t _e | Just (_ctx, _t') <- getImplies t = do
+  undefined
+{-
+  _ <- undefined -- XXX
+  u <- newUniq
+  let d = mkIdentSLoc (getSLoc e) ("adict$" ++ show u)
+  e' <- withDict d ctx $ tCheckExpr t' e
+  return $ eLam [EVar d] e'
+-}
+tCheckExpr t e = tCheck tcExpr t e
+
+tGetRefType :: --XHasCallStack =>
+               TRef -> T EType
+tGetRefType ref = do
+  m <- gets uvarSubst
+  case IM.lookup ref m of
+    Nothing -> return (EUVar ref) -- error "tGetRefType"
+    Just t  -> return t
+
+-- Set the type for an Infer
+tSetRefType :: --XHasCallStack =>
+               SLoc -> TRef -> EType -> T ()
+tSetRefType loc ref t = do
+  m <- gets uvarSubst
+  case IM.lookup ref m of
+    Nothing -> putUvarSubst (IM.insert ref t m)
+    Just tt -> unify loc tt t
+
+-- Get the type of an already set Expected
+tGetExpType :: Expected -> T EType
+tGetExpType (Check t) = return t
+tGetExpType (Infer r) = tGetRefType r
+
+{-
+-- Get the type of a possibly unset Expected
+tGetExpTypeSet :: SLoc -> Expected -> T EType
+tGetExpTypeSet _   (Check t) = return t
+tGetExpTypeSet loc (Infer r) = tGetRefType r {-do
+  t <- newUVar
+  tSetRefType loc r t
+  return t-}
+-}
+
+tcExpr :: --XHasCallStack =>
+          Expected -> Expr -> T Expr
+tcExpr mt ae = do
+--  traceM ("tcExpr enter: " ++ showExpr ae)
+  r <- tcExprR mt ae
+--  traceM ("tcExpr exit: " ++ showExpr r)
+  return r
+tcExprR :: --XHasCallStack =>
+           Expected -> Expr -> T Expr
+tcExprR mt ae =
+  let { loc = getSLoc ae } in
+--  trace ("tcExprR " ++ show ae) $
+  case ae of
+    EVar i | isIdent "dict$" i -> do
+             -- Magic variable that just becomes the dictionary
+             d <- newIdent (getSLoc i) "dict$"
+             case mt of
+               Infer _ -> impossible
+               Check t -> addConstraint d t
+             return (EVar d)
+
+           | isDummyIdent i -> impossibleShow ae
+           | otherwise -> do
+             -- Type checking an expression (or type)
+             (e, t) <- tLookupV i
+             -- Variables bound in patterns start out with an (EUVar ref) type,
+             -- which can be instantiated to a polytype.
+             -- Dereference such a ref.
+             t' <-
+               case t of
+                 EUVar r -> fmap (fromMaybe t) (getUVar r)
+                 _ -> return t
+--             traceM ("EVar " ++ showIdent i ++ " :: " ++ showExpr t ++ " = " ++ showExpr t')
+             instSigma loc e t' mt
+
+    EApp f a -> do
+      (f', ft) <- tInferExpr f
+--      traceM $ "EApp f=" ++ showExpr f ++ "; e'=" ++ showExpr f' ++ " :: " ++ showEType ft
+      (at, rt) <- unArrow loc ft
+--      traceM ("tcExpr EApp: " ++ showExpr f ++ " :: " ++ showEType ft)
+      a' <- checkSigma a at
+      instSigma loc (EApp f' a') rt mt
+
+    EOper e ies -> do e' <- tcOper e ies; tcExpr mt e'
+    ELam qs -> tcExprLam mt qs
+    ELit loc' l -> do
+      let getExpected (Infer _) = pure Nothing
+          getExpected (Check t) = do
+            t' <- derefUVar t >>= expandSyn
+            case t' of
+              EVar v -> pure (Just v)
+              _      -> pure Nothing
+      case l of
+        LInteger i -> do
+          mex <- getExpected mt
+          case mex of
+            -- Convert to Int in the compiler, that way (99::Int) will never involve fromInteger
+            -- (which is not always in scope).
+            Just v | v == mkIdent nameInt     -> tcLit  mt loc' (LInt (_integerToInt i))
+                   | v == mkIdent nameWord    -> tcLit' mt loc' (LInt (_integerToInt i)) (tConI loc' nameWord)
+                   | v == mkIdent nameDouble  -> tcLit  mt loc' (LDouble (_integerToDouble i))
+                   | v == mkIdent nameInteger -> tcLit  mt loc' l
+            _ -> do
+              (f, ft) <- tInferExpr (EVar (mkIdentSLoc loc' "fromInteger"))  -- XXX should have this qualified somehow
+              (_at, rt) <- unArrow loc ft
+              -- We don't need to check that _at is Integer, it's part of the fromInteger type.
+              instSigma loc (EApp f ae) rt mt
+        LRat r -> do
+          mex <- getExpected mt
+          case mex of
+            Just v | v == mkIdent nameDouble  -> tcLit  mt loc' (LDouble (fromRational r))
+            _ -> do
+              (f, ft) <- tInferExpr (EVar (mkIdentSLoc loc' "fromRational"))  -- XXX should have this qualified somehow
+              (_at, rt) <- unArrow loc ft
+              -- We don't need to check that _at is Rational, it's part of the fromRational type.
+              instSigma loc (EApp f ae) rt mt
+        -- Not LInteger, LRat
+        _ -> tcLit mt loc' l
+    ECase a arms -> do
+      (ea, ta) <- tInferExpr a
+      tt <- tGetExpType mt
+      earms <- mapM (tcArm tt ta) arms
+      return (ECase ea earms)
+    ELet bs a -> tcBinds bs $ \ ebs -> do { ea <- tcExpr mt a; return (ELet ebs ea) }
+    ETuple es -> do
+      let
+        n = length es
+      (ees, tes) <- fmap unzip (mapM tInferExpr es)
+      let
+        ttup = tApps (tupleConstr loc n) tes
+      munify loc mt ttup
+      return (ETuple ees)
+    EDo mmn ass -> do
+      case ass of
+        [] -> impossible
+        [as] ->
+          case as of
+            SThen a -> tcExpr mt a
+            _ -> tcError loc $ "bad final do statement"
+        as : ss -> do
+          case as of
+            SBind p a -> do
+              let
+                sbind = maybe (mkIdentSLoc loc ">>=") (\ mn -> qualIdent mn (mkIdentSLoc loc ">>=")) mmn
+              tcExpr mt (EApp (EApp (EVar sbind) a)
+                              (eLam [eVarI loc "$x"] (ECase (eVarI loc "$x") [(p, EAlts [([], EDo mmn ss)] [])])))
+            SThen a -> do
+              let
+                sthen = maybe (mkIdentSLoc loc ">>") (\ mn -> qualIdent mn (mkIdentSLoc loc ">>") ) mmn
+              tcExpr mt (EApp (EApp (EVar sthen) a) (EDo mmn ss))
+                
+            SLet bs ->
+              tcExpr mt (ELet bs (EDo mmn ss))
+
+    ESectL e i -> tcExpr mt (EApp (EVar i) e)
+    ESectR i e -> do
+      let x = eVarI loc "$x"
+      tcExpr mt (eLam [x] (EApp (EApp (EVar i) x) e))
+    EIf e1 e2 e3 -> do
+      e1' <- tCheckExpr (tBool (getSLoc e1)) e1
+      case mt of
+        Check t -> do
+          e2' <- checkSigma e2 t
+          e3' <- checkSigma e3 t
+          return (EIf e1' e2' e3')
+        Infer ref -> do
+          (e2', t2) <- tInferExpr e2
+          (e3', t3) <- tInferExpr e3
+          e2'' <- subsCheck loc e2' t2 t3
+          e3'' <- subsCheck loc e3' t3 t2
+          tSetRefType loc ref t2
+          return (EIf e1' e2'' e3'')
+
+    EListish (LList es) -> do
+      te <- newUVar
+      munify loc mt (tApp (tList loc) te)
+      es' <- mapM (tCheckExpr te) es
+      return (EListish (LList es'))
+    EListish (LCompr eret ass) -> do
+      let
+        doStmts :: [EStmt] -> [EStmt] -> T ([EStmt], Typed Expr)
+        doStmts rss xs =
+          case xs of
+            [] -> do
+              r <- tInferExpr eret
+              return (reverse rss, r)
+            as : ss ->
+              case as of
+                SBind p a -> do
+                  v <- newUVar
+                  ea <- tCheckExprAndSolve (tApp (tList loc) v) a
+                  tCheckPatC v p $ \ ep -> doStmts (SBind ep ea : rss) ss
+                SThen a -> do
+                  ea <- tCheckExprAndSolve (tBool (getSLoc a)) a
+                  doStmts (SThen ea : rss) ss
+                SLet bs ->
+                  tcBinds bs $ \ ebs ->
+                    doStmts (SLet ebs : rss) ss
+      (rss, (ea, ta)) <- doStmts [] ass
+      let
+        tr = tApp (tList loc) ta
+      munify loc mt tr
+      return (EListish (LCompr ea rss))
+    EListish (LFrom       e)        -> tcExpr mt (enum loc "From" [e])
+    EListish (LFromTo     e1 e2)    -> tcExpr mt (enum loc "FromTo" [e1, e2])
+    EListish (LFromThen   e1 e2)    -> tcExpr mt (enum loc "FromThen" [e1,e2])
+    EListish (LFromThenTo e1 e2 e3) -> tcExpr mt (enum loc "FromThenTo" [e1,e2,e3])
+    ESign e t -> do
+      t' <- tcType (Check kType) t
+      e' <- instSigma loc e t' mt
+      checkSigma e' t'
+    EForall vks t ->
+      withVks vks kType $ \ vvks _ -> do
+        tt <- withVars vvks (tcExpr mt t)
+        return (EForall vvks tt)
+    _ -> error $ "tcExpr: " ++ show (getSLoc ae) ++ " " ++ show ae
+      -- impossible
+
+enum :: SLoc -> String -> [Expr] -> Expr
+enum loc f = foldl EApp (EVar (mkIdentSLoc loc ("enum" ++ f)))
+
+tcLit :: Expected -> SLoc -> Lit -> T Expr
+tcLit mt loc l@(LPrim _) = newUVar >>= tcLit' mt loc l
+tcLit mt loc l = do
+  let t =
+        case l of
+          LInt _     -> tConI loc nameInt
+          LInteger _ -> tConI loc nameInteger
+          LDouble _  -> tConI loc nameDouble
+          LChar _    -> tConI loc nameChar
+          LStr _     -> tApp (tList loc) (tConI loc nameChar)
+          _          -> impossible
+  tcLit' mt loc l t
+
+tcLit' :: Expected -> SLoc -> Lit -> EType -> T Expr
+tcLit' mt loc l t = instSigma loc (ELit loc l) t mt
+
+-- tcOper is in T because it has to look up identifiers, and get the fixity table.
+-- But there is no type checking happening here.
+tcOper :: --XHasCallStack =>
+          Expr -> [(Ident, Expr)] -> T Expr
+tcOper ae aies = do
+  let
+    doOp (e1:e2:es) o os ies =
+      let e = EApp (EApp o e2) e1
+      in  calc (e:es) os ies
+    doOp _ _ _ _ = impossible
+
+    calc :: [Expr] -> [(Expr, Fixity)] -> [((Expr, Fixity), Expr)] -> Expr
+    calc [et] [] [] = et
+    calc es ((o, _):os) [] = doOp es o os []
+    calc es oos@((oy, (ay, py)):os) iies@((oo@(ox, (ax, px)), e) : ies) =
+--      traceM (show ((unIdent (getIdent (fst o)), ay, py), (unIdent i, ax, px)))
+      if px == py && (ax /= ay || ax == AssocNone) then
+        errorMessage (getSLoc ox) "ambiguous operator expression"
+       else if px < py || ax == AssocLeft && px == py then
+        doOp es oy os iies
+       else
+        calc (e:es) (oo : oos) ies
+    calc es [] ((o, e) : ies) =
+      calc (e:es) [o] ies
+    calc _ _ _ = impossible
+
+    opfix :: FixTable -> (Ident, Expr) -> T ((Expr, Fixity), Expr)
+    opfix fixs (i, e) = do
+      (ei, _) <- tLookupV i
+      let fx = getFixity fixs (getIdent ei)
+      return ((EVar i, fx), e)
+
+  fixs <- gets fixTable
+--  traceM $ unlines $ map show [(unIdent i, fx) | (i, fx) <- M.toList fixs]
+  ites <- mapM (opfix fixs) aies
+  return $ calc [ae] [] ites
+
+unArrow :: --XHasCallStack =>
+           SLoc -> EType -> T (EType, EType)
+unArrow loc t = do
+  case getArrow t of
+    Just ar -> return ar
+    Nothing -> do
+      a <- newUVar
+      r <- newUVar
+      unify loc t (tArrow a r)
+      return (a, r)
+
+getFixity :: FixTable -> Ident -> Fixity
+getFixity fixs i = fromMaybe (AssocLeft, 9) $ M.lookup i fixs
+
+newDictIdent :: SLoc -> T Ident
+newDictIdent loc = newIdent loc "adict"
+
+tcExprLam :: Expected -> [Eqn] -> T Expr
+tcExprLam mt qs = do
+  t <- tGetExpType mt
+  ELam <$> tcEqns False t qs
+
+tcEqns :: Bool -> EType -> [Eqn] -> T [Eqn]
+--tcEqns t eqns | trace ("tcEqns: " ++ showEBind (BFcn dummyIdent eqns) ++ " :: " ++ showEType t) False = undefined
+tcEqns top (EForall iks t) eqns = withExtTyps iks $ tcEqns top t eqns
+tcEqns top t eqns | Just (ctx, t') <- getImplies t = do
+  let loc = getSLoc eqns
+  d <- newDictIdent loc
+  f <- newIdent loc "fcnD"
+  withDict d ctx $ do
+    eqns' <- tcEqns top t' eqns
+    let eqn =
+          case eqns' of
+            [Eqn [] alts] -> Eqn [EVar d] alts
+            _             -> Eqn [EVar d] $ EAlts [([], EVar f)] [BFcn f eqns']
+    return [eqn]
+tcEqns top t eqns = do
+  let loc = getSLoc eqns
+  f <- newIdent loc "fcnS"
+  (eqns', ds) <- solveAndDefault top $ mapM (tcEqn t) eqns
+  case ds of
+    [] -> return eqns'
+    _  -> do
+      let
+        bs = eBinds ds
+        eqn = Eqn [] $ EAlts [([], EVar f)] (bs ++ [BFcn f eqns'])
+      return [eqn]
+
+tcEqn :: EType -> Eqn -> T Eqn
+--tcEqn t _eqn | trace ("tcEqn: " ++ showEType t) False = undefined
+tcEqn t eqn =
+  case eqn of
+    Eqn ps alts -> tcPats t ps $ \ t' ps' -> do
+      alts' <- tcAlts t' alts
+      return (Eqn ps' alts')
+
+-- Only used above
+tcPats :: EType -> [EPat] -> (EType -> [EPat] -> T Eqn) -> T Eqn
+tcPats t [] ta = ta t []
+tcPats t (p:ps) ta = do
+  (tp, tr) <- unArrow (getSLoc p) t
+  -- tCheckPatC dicts used in tcAlt solve
+  tCheckPatC tp p $ \ p' -> tcPats tr ps $ \ t' ps' -> ta t' (p' : ps')
+
+tcAlts :: EType -> EAlts -> T EAlts
+tcAlts t (EAlts alts bs) =
+--  trace ("tcAlts: bs in " ++ showEBinds bs) $
+  tcBinds bs $ \ bs' -> do
+--    traceM ("tcAlts: bs out " ++ showEBinds bbs)
+    alts' <- mapM (tcAlt t) alts
+    return (EAlts alts' bs')
+
+tcAlt :: EType -> EAlt -> T EAlt
+--tcAlt t (_, rhs) | trace ("tcAlt: " ++ showExpr rhs ++ " :: " ++ showEType t) False = undefined
+tcAlt t (ss, rhs) = tcGuards ss $ \ ss' -> do
+  rhs' <- tCheckExprAndSolve t rhs
+  return (ss', rhs')
+
+tcGuards :: [EStmt] -> ([EStmt] -> T EAlt) -> T EAlt
+tcGuards [] ta = ta []
+tcGuards (s:ss) ta = tcGuard s $ \ rs -> tcGuards ss $ \ rss -> ta (rs:rss)
+
+tcGuard :: EStmt -> (EStmt -> T EAlt) -> T EAlt
+tcGuard (SBind p e) ta = do
+  (e', tt) <- tInferExpr e
+  -- tCheckPatC dicts used in solving in tcAlt
+  tCheckPatC tt p $ \ p' -> ta (SBind p' e')
+tcGuard (SThen e) ta = do
+  e' <- tCheckExprAndSolve (tBool (getSLoc e)) e
+  ta (SThen e')
+-- XXX do we have solves
+tcGuard (SLet bs) ta = tcBinds bs $ \ bs' -> ta (SLet bs')
+
+tcArm :: EType -> EType -> ECaseArm -> T ECaseArm
+tcArm t tpat arm =
+  case arm of
+    -- The dicts introduced by tCheckPatC are
+    -- used in the tCheckExprAndSolve in tcAlt.
+    (p, alts) -> tCheckPatC tpat p $ \ pp -> do
+      alts' <- tcAlts t alts
+      return (pp, alts')
+
+tCheckExprAndSolve :: EType -> Expr -> T Expr
+tCheckExprAndSolve t e = do
+  (e', bs) <- solveLocalConstraints $ tCheckExpr t e
+  if null bs then
+    return e'
+   else
+    return $ ELet (eBinds bs) e'
+
+eBinds :: [(Ident, Expr)] -> [EBind]
+eBinds ds = [BFcn i [Eqn [] (EAlts [([], e)] [])] | (i, e) <- ds]
+
+instPatSigma :: --XHasCallStack =>
+                 SLoc -> Sigma -> Expected -> T ()
+instPatSigma loc pt (Infer r) = tSetRefType loc r pt
+instPatSigma loc pt (Check t) = do { _ <- subsCheck loc undefined t pt; return () } -- XXX really?
+
+subsCheck :: --XHasCallStack =>
+              SLoc -> Expr -> Sigma -> Sigma -> T Expr
+-- (subsCheck args off exp) checks that
+-- 'off' is at least as polymorphic as 'args -> exp'
+subsCheck loc exp1 sigma1 sigma2 = do -- Rule DEEP-SKOL
+  (skol_tvs, rho2) <- skolemise sigma2
+  exp1' <- subsCheckRho loc exp1 sigma1 rho2
+  esc_tvs <- getFreeTyVars [sigma1,sigma2]
+  let bad_tvs = filter (\ i -> elem i esc_tvs) skol_tvs
+  when (not (null bad_tvs)) $
+    tcErrorTK loc "Subsumption check failed"
+  return exp1'
+
+tCheckPatC :: forall a . EType -> EPat -> (EPat -> T a) -> T a
+tCheckPatC t p@(EVar v) ta | not (isConIdent v) = do  -- simple special case
+  withExtVals [(v, t)] $ ta p
+tCheckPatC t ap ta = do
+--  traceM $ "tCheckPat: " ++ show ap
+  let vs = patVars ap
+  multCheck vs
+  env <- mapM (\ v -> (v,) <$> newUVar) vs
+  withExtVals env $ do
+    (_sks, ds, pp) <- tCheckPat t ap
+    () <- checkArity 0 pp
+--    traceM ("tCheckPatC " ++ show ds)
+    -- XXX must check for leaking skolems
+    withDicts ds $
+      ta pp
+
+type EPatRet = ([TyVar], [(Ident, EConstraint)], EPat)  -- skolems, dictionaries, pattern
+
+tCheckPat :: EType -> EPat -> T EPatRet
+tCheckPat = tCheck tcPat
+tInferPat :: EPat -> T (Typed EPatRet)
+tInferPat = tInfer tcPat
+
+-- XXX Has some duplication with tcExpr
+tcPat :: Expected -> EPat -> T EPatRet
+tcPat mt ae =
+  let { loc = getSLoc ae } in
+  case ae of
+    EVar i | isDummyIdent i -> do
+               -- _ can be anything, so just ignore it
+               _ <- tGetExpType mt
+               return ([], [], ae)
+
+           | isConIdent i -> do
+               ipt <- tLookupV i
+--               traceM (show ipt)
+               case ipt of
+                  -- Sanity check
+                  (_, EForall _ (EForall _ _)) -> return ()
+                  _ -> undefined
+               (ap, EForall avs apt) <- tInst' ipt
+               (sks, spt) <- shallowSkolemise avs apt
+               (d, p, pt) <-
+                 case getImplies spt of
+                   Nothing -> return ([], ap, apt)
+                   Just (ctx, pt') -> do
+                     di <- newDictIdent loc
+                     return ([(di, ctx)], EApp ap (EVar di), pt')
+                   
+               -- We will only have an expected type for a non-nullary constructor
+               pp <- case mt of
+                       Check ext -> subsCheck loc p ext pt
+                       Infer r   -> do { tSetRefType loc r pt; return p }
+               return (sks, d, pp)
+
+           | otherwise -> do
+               -- All pattern variables are in the environment as
+               -- type references.  Assign the reference the given type.
+               ext <- tGetExpType mt
+               (p, t) <- tLookupV i
+               case t of
+                 EUVar r -> tSetRefType loc r ext
+                 _ -> impossible
+               return ([], [], p)
+
+    EOper e ies -> do e' <- tcOper e ies; tcPat mt e'
+
+    EApp f a -> do
+      ((skf, df, f'), ft) <- tInferPat f
+--      traceM $ "tcPat: EApp f=" ++ showExpr f ++ "; e'=" ++ showExpr f' ++ " :: " ++ showEType ft
+      (at, rt) <- unArrow loc ft
+--      traceM ("tcPat EApp: " ++ showExpr f ++ " :: " ++ showEType ft)
+      (ska, da, a') <- tCheckPat at a
+      instPatSigma loc rt mt
+      return (skf ++ ska, df ++ da, EApp f' a')
+           
+    ETuple es -> do
+      let
+        n = length es
+      (xs, tes) <- fmap unzip (mapM tInferPat es)
+      let
+        (sks, ds, ees) = unzip3 xs
+        ttup = tApps (tupleConstr loc n) tes
+      munify loc mt ttup
+      return (concat sks, concat ds, ETuple ees)
+
+    EListish (LList es) -> do
+      te <- newUVar
+      munify loc mt (tApp (tList loc) te)
+      xs <- mapM (tCheckPat te) es
+      let (sks, ds, es') = unzip3 xs
+      return (concat sks, concat ds, EListish (LList es'))
+
+    ELit loc' l -> do
+      -- XXX wrong
+      ee <- case l of
+              LInteger i -> tcLit mt loc' (LInt (_integerToInt i))
+              _          -> tcLit mt loc' l
+      return ([], [], ee)
+
+    ESign e t -> do
+      t' <- tcType (Check kType) t
+      instPatSigma loc t' mt
+      tCheckPat t' e
+
+    EAt i e -> do
+      (_, ti) <- tLookupV i
+      (sk, d, e') <- tcPat mt e
+      tt <- tGetExpType mt
+      case ti of
+        EUVar r -> tSetRefType loc r tt
+        _ -> impossible
+      return (sk, d, EAt i e')
+
+    _ -> error $ "tcPat: " ++ show (getSLoc ae) ++ " " ++ show ae
+         --impossible
+
+multCheck :: [Ident] -> T ()
+multCheck vs =
+  when (anySame vs) $ do
+    let v = head vs
+    tcError (getSLoc v) $ "Multiply defined: " ++ showIdent v
+
+checkArity :: Int -> EPat -> T ()
+checkArity n (EApp f a) = do
+  checkArity (n+1) f
+  checkArity 0 a
+checkArity n (ECon c) =
+  let a = conArity c
+  in  if n < a then
+        tcError (getSLoc c) "too few arguments"
+      else if n > a then
+        tcError (getSLoc c) "too many arguments"
+      else
+        return ()
+checkArity n (EAt _ p) = checkArity n p
+checkArity n (ESign p _) = checkArity n p
+checkArity n p =
+  case p of
+    ETuple _           -> check0
+    EListish (LList _) -> check0
+    EVar _             -> check0
+    ELit _ _           -> check0
+    _ ->
+         --Xerror (show p)
+         impossible
+  where
+    check0 = if n /= 0 then tcError (getSLoc p) "Bad pattern" else return ()
+
+tcBinds :: forall a . [EBind] -> ([EBind] -> T a) -> T a
+tcBinds xbs ta = do
+  let
+    tmap = M.fromList [ (i, t) | BSign i t <- xbs ]
+    xs = getBindsVars xbs
+  multCheck xs
+  xts <- mapM (tcBindVarT tmap) xs
+  withExtVals xts $ do
+    nbs <- mapM tcBind xbs
+    ta nbs
+
+tcBindVarT :: M.Map EType -> Ident -> T (Ident, EType)
+tcBindVarT tmap x = do
+  case M.lookup x tmap of
+    Nothing -> do
+      t <- newUVar
+      return (x, t)
+    Just t -> do
+      tt <- withTypeTable $ tcTypeT (Check kType) t
+      return (x, tt)
+
+tcBind :: EBind -> T EBind
+tcBind abind =
+  case abind of
+    BFcn i eqns -> do
+      (_, tt) <- tLookupV i
+      teqns <- tcEqns False tt eqns
+      return $ BFcn i teqns
+    BPat p a -> do
+      ((sk, ds, ep), tp) <- tInferPat p  -- pattern variables already bound
+      -- This is just to complicated.
+      when (not (null sk) || not (null ds)) $
+        tcError (getSLoc p) "existentials not allowed in pattern binding"
+      ea <- tCheckExprAndSolve tp a
+      return $ BPat ep ea
+    BSign _ _ -> return abind
+
+-- Desugar [T] and (T,T,...)
+dsType :: EType -> EType
+dsType at =
+  case at of
+    EVar _ -> at
+    EApp f a -> EApp (dsType f) (dsType a)
+    EOper t ies -> EOper (dsType t) [(i, dsType e) | (i, e) <- ies]
+    EListish (LList [t]) -> tApp (tList (getSLoc at)) (dsType t)
+    ETuple ts -> tApps (tupleConstr (getSLoc at) (length ts)) (map dsType ts)
+    ESign t k -> ESign (dsType t) k
+    EForall iks t -> EForall iks (dsType t)
+    _ -> impossible
+
+tConI :: SLoc -> String -> EType
+tConI loc = tCon . mkIdentSLoc loc
+
+tListI :: SLoc -> Ident
+tListI loc = mkIdentSLoc loc $ listPrefix ++ "[]"
+
+tList :: SLoc -> EType
+tList = tCon . tListI
+
+tBool :: SLoc -> EType
+tBool loc = tConI loc $ boolPrefix ++ "Bool"
+
+impossible :: --XHasCallStack =>
+              forall a . a
+impossible = error "impossible"
+
+impossibleShow :: --XHasCallStack =>
+              forall a b . (Show a, HasLoc a) => a -> b
+impossibleShow a = error $ "impossible: " ++ show (getSLoc a) ++ " " ++ show a
+
+showTModule :: forall a . (a -> String) -> TModule a -> String
+showTModule sh amdl =
+  case amdl of
+    TModule mn _ _ _ _ _ _ a -> "Tmodule " ++ showIdent mn ++ "\n" ++ sh a ++ "\n"
+
+{-
+showValueTable :: ValueTable -> String
+showValueTable vt =
+  unlines $ take 5 [showIdent i ++ " : " ++ showExpr t | (i, [Entry _ t]) <- M.toList vt]
+-}
+
+-----------------------------------------------------
+
+getFreeTyVars :: [EType] -> T [TyVar]
+getFreeTyVars tys = do
+  tys' <- mapM derefUVar tys
+  return (freeTyVars tys')
+
+getMetaTyVars :: [EType] -> T [TRef]
+getMetaTyVars tys = do
+  tys' <- mapM derefUVar tys
+  return (metaTvs tys')
+
+getEnvTypes :: T [EType]
+getEnvTypes = gets (map entryType . stElemsLcl . valueTable)
+
+{-
+quantify :: [MetaTv] -> Rho -> T Sigma
+-- Quantify over the specified type variables (all flexible)
+quantify tvs ty = do
+   mapM_ bind (tvs `zip` new_bndrs) -- 'bind' is just a cunning way
+   ty' <- zonkType ty               -- of doing the substitution
+   return (EForall new_bndrs_kind ty')
+  where
+    used_bndrs = tyVarBndrs ty -- Avoid quantified type variables in use
+    new_bndrs = allBinders \\ used_bndrs
+    bind (tv, name) = writeTcRef tv (EVar name)
+    new_bndrs_kind = map (\ i -> IdKind i undefined) new_bndrs
+
+allBinders :: [Ident] -- a,b,..z, a1, b1,... z1, a2, b2,...
+allBinders = [ mkIdent [chr x] | x <- [ord 'a' .. ord 'z'] ] ++
+             [ mkIdent (chr x : show i) | i <- [1 ..], x <- [ord 'a' .. ord 'z']]
+-}
+
+-- Skolemize the given variables
+shallowSkolemise :: [IdKind] -> EType -> T ([TyVar], EType)
+shallowSkolemise tvs ty = do
+  sks <- mapM (newSkolemTyVar . idKindIdent) tvs
+  return (sks, subst (zip (map idKindIdent tvs) (map EVar sks)) ty)
+
+skolemise :: --XHasCallStack =>
+             Sigma -> T ([TyVar], Rho)
+-- Performs deep skolemisation, returning the
+-- skolem constants and the skolemised type.
+skolemise (EForall tvs ty) = do -- Rule PRPOLY
+  (sks1, ty') <- shallowSkolemise tvs ty
+  (sks2, ty'') <- skolemise ty'
+  return (sks1 ++ sks2, ty'')
+skolemise t@(EApp _ _) | Just (arg_ty, res_ty) <- getArrow t = do
+  (sks, res_ty') <- skolemise res_ty
+  return (sks, arg_ty `tArrow` res_ty')
+skolemise (EApp f a) = do
+  (sks1, f') <- skolemise f
+  (sks2, a') <- skolemise a
+  return (sks1 ++ sks2, EApp f' a')
+skolemise ty =
+  return ([], ty)
+
+-- Skolem tyvars are just identifiers that start with a uniq
+newSkolemTyVar :: Ident -> T Ident
+newSkolemTyVar tv = do
+  uniq <- newUniq
+  return (mkIdentSLoc (getSLoc tv) (unIdent tv ++ "#" ++ show uniq))
+
+freeTyVars :: [EType] -> [TyVar]
+-- Get the free TyVars from a type; no duplicates in result
+freeTyVars = foldr (go []) []
+  where
+    go :: [TyVar] -- Ignore occurrences of bound type variables
+       -> EType   -- Type to look at
+       -> [TyVar] -- Accumulates result
+       -> [TyVar]
+    go bound (EVar tv) acc
+      | elem tv bound = acc
+      | elem tv acc = acc
+      | isConIdent tv = acc
+      | otherwise = tv : acc
+    go bound (EForall tvs ty) acc = go (map idKindIdent tvs ++ bound) ty acc
+    go bound (EApp fun arg) acc = go bound fun (go bound arg acc)
+    go _bound (EUVar _) acc = acc
+    go _ _ _ = undefined
+
+metaTvs :: [EType] -> [TRef]
+-- Get the MetaTvs from a type; no duplicates in result
+metaTvs tys = foldr go [] tys
+  where
+    go (EUVar tv) acc
+      | elem tv acc = acc
+      | otherwise = tv : acc
+    go (EVar _) acc = acc
+    go (EForall _ ty) acc = go ty acc
+    go (EApp fun arg) acc = go fun (go arg acc)
+    go _ _ = undefined
+
+{-
+tyVarBndrs :: Rho -> [TyVar]
+-- Get all the binders used in ForAlls in the type, so that
+-- when quantifying an outer for-all we can avoid these inner ones
+tyVarBndrs ty = nub (bndrs ty)
+  where
+    bndrs (EForall tvs body) = map idKindIdent tvs ++ bndrs body
+    bndrs (EApp arg res) = bndrs arg ++ bndrs res
+    bndrs (EVar _) = []
+    bndrs _ = undefined
+
+inferSigma :: Expr -> T (Expr, Sigma)
+inferSigma e = do
+  (e', exp_ty) <- inferRho e
+  env_tys      <- getEnvTypes
+  env_tvs      <- getMetaTyVars env_tys
+  res_tvs      <- getMetaTyVars [exp_ty]
+  let forall_tvs = res_tvs \\ env_tvs
+  (e',) <$> quantify forall_tvs exp_ty
+-}
+
+checkSigma :: --XHasCallStack =>
+              Expr -> Sigma -> T Expr
+checkSigma expr sigma = do
+  (skol_tvs, rho) <- skolemise sigma
+  expr' <- tCheckExpr rho expr
+  if null skol_tvs then
+    -- Fast special case
+    return expr'
+   else do
+    env_tys <- getEnvTypes
+    esc_tvs <- getFreeTyVars (sigma : env_tys)
+    let bad_tvs = filter (\ i -> elem i esc_tvs) skol_tvs
+    when (not (null bad_tvs)) $
+      tcErrorTK (getSLoc expr) $ "not polymorphic enough: " ++ unwords (map showIdent bad_tvs)
+    return expr'
+
+subsCheckRho :: --XHasCallStack =>
+                SLoc -> Expr -> Sigma -> Rho -> T Expr
+--subsCheckRho _ e1 t1 t2 | trace ("subsCheckRho: " ++ {-showExpr e1 ++ " :: " ++ -} showEType t1 ++ " = " ++ showEType t2) False = undefined
+subsCheckRho loc exp1 sigma1@(EForall _ _) rho2 = do -- Rule SPEC
+  (exp1', rho1) <- tInst (exp1, sigma1)
+  subsCheckRho loc exp1' rho1 rho2
+subsCheckRho loc exp1 rho1 rho2 | Just (a2, r2) <- getArrow rho2 = do -- Rule FUN
+  (a1, r1) <- unArrow loc rho1
+  subsCheckFun loc exp1 a1 r1 a2 r2
+subsCheckRho loc exp1 rho1 rho2 | Just (a1, r1) <- getArrow rho1 = do -- Rule FUN
+  (a2,r2) <- unArrow loc rho2
+  subsCheckFun loc exp1 a1 r1 a2 r2
+subsCheckRho loc exp1 tau1 tau2 = do  -- Rule MONO
+  unify loc tau1 tau2 -- Revert to ordinary unification
+  return exp1
+
+subsCheckFun :: --XHasCallStack =>
+                SLoc -> Expr -> Sigma -> Rho -> Sigma -> Rho -> T Expr
+subsCheckFun loc e1 a1 r1 a2 r2 = do
+  _ <- subsCheck loc undefined a2 a1   -- XXX
+  subsCheckRho loc e1 r1 r2
+
+instSigma :: --XHasCallStack =>
+             SLoc -> Expr -> Sigma -> Expected -> T Expr
+instSigma loc e1 t1 (Check t2) = do
+--  traceM ("instSigma: Check " ++ showEType t1 ++ " = " ++ showEType t2)
+  subsCheckRho loc e1 t1 t2
+instSigma loc e1 t1 (Infer r) = do
+  (e1', t1') <- tInst (e1, t1)
+--  traceM ("instSigma: Infer " ++ showEType t1 ++ " ==> " ++ showEType t1')
+  tSetRefType loc r t1'
+  return e1'
+
+-----
+
+-- Given a dictionary of a (constraint type), split it up
+--  * name components of a tupled constraint
+--  * name superclasses of a constraint
+expandDict :: Expr -> EConstraint -> T [InstDictC]
+expandDict edict acn = do
+  cn <- expandSyn acn
+  let
+    (iCls, args) = getApp cn
+  case getTupleConstr iCls of
+    Just _ -> concat <$> mapM (\ (i, a) -> expandDict (mkTupleSel i (length args) `EApp` edict) a) (zip [0..] args)
+    Nothing -> do
+      ct <- gets classTable
+      let (iks, sups, _, _, fds) = fromMaybe impossible $ M.lookup iCls ct
+          vs = map idKindIdent iks
+          sub = zip vs args
+          sups' = map (subst sub) sups
+--      mn <- gets moduleName
+      insts <- concat <$> mapM (\ (i, sup) -> expandDict (EVar (expectQualified $ mkSuperSel iCls i) `EApp` edict) sup) (zip [1 ..] sups')
+      return $ (edict, [], [], cn, fds) : insts
+
+mkSuperSel :: --XHasCallStack =>
+              Ident -> Int -> Ident
+mkSuperSel c i = addIdentSuffix c ("$super" ++ show i)
+
+---------------------------------
+
+type Solved = (Ident, Expr)
+
+-- Solve constraints generated locally in 'ta'.
+-- Keep any unsolved ones for later.
+solveLocalConstraints :: forall a . T a -> T (a, [Solved])
+solveLocalConstraints ta = do
+  cs <- gets constraints           -- old constraints
+  putConstraints []                -- start empty
+  a <- ta                          -- compute, generating constraints
+  ds <- solveConstraints           -- solve those
+  un <- gets constraints           -- get remaining unsolved
+  putConstraints (un ++ cs)        -- put back unsolved and old constraints
+  return (a, ds)
+
+solveAndDefault :: forall a . Bool -> T a -> T (a, [Solved])
+solveAndDefault False ta = solveLocalConstraints ta
+solveAndDefault True  ta = do
+  a <- ta
+  ds <- solveConstraints
+  cs <- gets constraints
+  vs <- getMetaTyVars (map snd cs)    -- These are the type variables that need defaulting
+--  traceM $ "solveAndDefault" ++ show vs
+  -- XXX may have to iterate this with fundeps
+  ds' <- concat <$> mapM defaultOneTyVar vs
+  return (a, ds ++ ds')
+
+constraintHasTyVar :: TRef -> (Ident, EConstraint) -> T Bool
+constraintHasTyVar tv (_, t) = elem tv <$> getMetaTyVars [t]
+
+defaultOneTyVar :: TRef -> T [Solved]
+defaultOneTyVar tv = do
+  old <- get             -- get entire old state
+  -- split constraints into those with the current tyvar and those without
+  (ourcs, othercs) <- partitionM (constraintHasTyVar tv) (constraints old)
+  let tryDefaults [] = return []
+      tryDefaults (ty:tys) = do
+        setUVar tv ty
+        putConstraints ourcs
+        ds <- solveConstraints
+        rcs <- gets constraints
+        if null rcs then do
+          -- Success, the type variable is gone
+          putConstraints othercs   -- put back the other constraints
+          return ds
+         else do
+          -- Not solved, try with the nest type
+          put old            -- restore solver state
+          tryDefaults tys    -- and try with next type
+  tryDefaults (defaults old)
+
+{-
+showInstInfo :: InstInfo -> String
+showInstInfo (InstInfo m ds fds) = "InstInfo " ++ show (M.toList m) ++ " " ++ showListS showInstDict ds ++ show fds
+
+showInstDict :: InstDict -> String
+showInstDict (e, ctx, ts) = showExpr e ++ " :: " ++ show (addConstraints ctx (tApps (mkIdent "CCC") ts))
+
+showInstDef :: InstDef -> String
+showInstDef (cls, InstInfo m ds) = "instDef " ++ show cls ++ ": "
+            ++ show (M.toList m) ++ ", " ++ showListS showInstDict ds
+
+showConstraint :: (Ident, EConstraint) -> String
+showConstraint (i, t) = show i ++ " :: " ++ show t
+
+showMatch :: (Expr, [EConstraint]) -> String
+showMatch (e, ts) = show e ++ " " ++ show ts
+-}
+
+-- Solve as many constraints as possible.
+-- Return bindings for the dictionary witnesses.
+-- Unimplemented:
+--  instances with a context
+solveConstraints :: T [(Ident, Expr)]
+solveConstraints = do
+  cs <- gets constraints
+  if null cs then
+    return []
+   else do
+--    traceM "------------------------------------------\nsolveConstraints"
+    cs' <- mapM (\ (i,t) -> do { t' <- derefUVar t; return (i,t') }) cs
+--    traceM ("constraints:\n" ++ unlines (map showConstraint cs'))
+    it <- gets instTable
+--    traceM ("instances:\n" ++ unlines (map showInstDef (M.toList it)))
+    let solve :: [(Ident, EType)] -> [(Ident, EType)] -> [(Ident, Expr)] -> T ([(Ident, EType)], [(Ident, Expr)])
+        solve [] uns sol = return (uns, sol)
+        solve (cns@(di, ct) : cnss) uns sol = do
+--          traceM ("trying " ++ showEType ct)
+          let loc = getSLoc di
+              (iCls, cts) = getApp ct
+          case getTupleConstr iCls of
+            Just _ -> do
+              goals <- mapM (\ c -> do { d <- newIdent loc "dict"; return (d, c) }) cts
+--              traceM ("split tuple " ++ showListS showConstraint goals)
+              solve (goals ++ cnss) uns ((di, ETuple (map (EVar . fst) goals)) : sol)
+            Nothing | iCls == mkIdent nameTypeEq -> solveTypeEq loc cts cns cnss uns sol
+                    | otherwise ->
+              case M.lookup iCls it of
+                Nothing -> do
+--                  traceM ("class missing " ++ showIdent iCls)
+                  solve cnss (cns : uns) sol   -- no instances, so no chance
+                Just (InstInfo atomMap insts fds) ->
+                  case cts of
+                    [EVar i] -> do
+--                      traceM ("solveSimple " ++ showIdent i ++ " -> " ++ showMaybe showExpr (M.lookup i atomMap))
+                      case M.lookup i atomMap of
+                        Just e  -> solveSimple e cns cnss uns sol
+                        -- Not found, but there might be a generic instance
+                        Nothing -> solveGen loc fds insts cns cnss uns sol
+                    _           -> solveGen loc fds insts cns cnss uns sol
+
+        -- An instance of the form (C T)
+        solveSimple e (di, _) cnss uns sol = solve cnss uns ((di, e) : sol)  -- e is the dictionary expression
+
+        -- XXX pass ts instead of cns
+        solveGen loc _fds insts cns@(di, ct) cnss uns sol = do
+--          traceM ("solveGen " ++ showEType ct)
+          let (_, ts) = getApp ct
+              matches = getBestMatches $ findMatches insts ts
+--          traceM ("matches " ++ showListS showMatch matches)
+          case matches of
+            []          -> solve cnss (cns : uns) sol
+            [(de, ctx)] ->
+              if null ctx then
+                solve cnss uns ((di, de) : sol)
+              else do
+                d <- newIdent loc "dict"
+--                traceM ("constraint " ++ showIdent di ++ " :: " ++ showEType ct ++ "\n" ++
+--                        "   turns into " ++ showIdent d ++ " :: " ++ showEType (tupleConstraints ctx) ++ ", " ++
+--                        showIdent di ++ " = " ++ showExpr (EApp de (EVar d)))
+                solve ((d, tupleConstraints ctx) : cnss) uns ((di, EApp de (EVar d)) : sol)
+            _           -> tcError loc $ "Multiple constraint solutions for: " ++ showEType ct
+
+        solveTypeEq loc [t1, t2] cns@(di,_) cnss uns sol = do
+          eqs <- gets typeEqTable
+          case solveEq eqs t1 t2 of
+            Nothing -> solve cnss (cns : uns) sol
+            Just (de, tts) -> do
+              let mkEq (u1, u2) = do
+                    i <- newIdent loc "dict"
+                    return (i, mkEqType loc u1 u2)
+              ncs <- mapM mkEq tts
+              solve (ncs ++ cnss) uns ((di, de) : sol)
+        solveTypeEq _ _ _ _ _ _ = impossible
+
+    (unsolved, solved) <- solve cs' [] []
+    putConstraints unsolved
+--    traceM ("solved:\n"   ++ unlines [ showIdent i ++ " = "  ++ showExpr  e | (i, e) <- solved ])
+--    traceM ("unsolved:\n" ++ unlines [ showIdent i ++ " :: " ++ showEType t | (i, t) <- unsolved ])
+    return solved
+
+type TySubst = [(TRef, EType)]
+
+-- Given some instances and a constraint, find the matching instances.
+-- For each matching instance return: (subst-size, (dict-expression, new-constraints))
+-- The subst-size is the size of the substitution that made the input instance match.
+-- It is a measure of how exact the match is.
+findMatches :: [InstDict] -> [EType] -> [(Int, (Expr, [EConstraint]))]
+findMatches ds its =
+ let rrr =
+       [ (length s, (de, map (substEUVar s) ctx))
+       | (de, ctx, ts) <- ds, Just s <- [matchTypes [] ts its] ]
+ in --trace ("findMatches: " ++ showListS showInstDict ds ++ "; " ++ showListS showEType its ++ "; " ++ show rrr)
+    rrr
+  where
+
+    -- Length of lists match, because of kind correctness
+    matchTypes :: TySubst -> [EType] -> [EType] -> Maybe TySubst
+    matchTypes r (t:ts) (t':ts') =
+      case matchType r t t' of
+        Nothing -> Nothing
+        Just r' -> matchTypes r' ts ts'
+    matchTypes r _ _ = Just r
+
+    -- Match two types, instantiate variables in the first type.
+    matchType r (EVar i) (EVar i') | i == i' = Just r
+    matchType r (EApp f a) (EApp f' a') = -- XXX should use Maybe monad
+      case matchType r f f' of
+        Nothing -> Nothing
+        Just r' -> matchType r' a a'
+    matchType r (EUVar i) t =
+      -- For a variable, check that any previous match is the same.
+      case lookup i r of
+        Just t' -> if eqEType t t' then Just r else Nothing
+        Nothing -> Just ((i, t) : r)
+    matchType _ _ _ = Nothing
+
+    -- Do substitution for EUVar.
+    -- XXX similar to derefUVar
+    substEUVar [] t = t
+    substEUVar _ t@(EVar _) = t
+    substEUVar s (EApp f a) = EApp (substEUVar s f) (substEUVar s a)
+    substEUVar s t@(EUVar i) = fromMaybe t $ lookup i s
+    substEUVar s (EForall iks t) = EForall iks (substEUVar s t)
+    substEUVar _ _ = impossible
+
+
+-- Get the best matches.  These are the matches with the smallest substitution.
+getBestMatches :: [(Int, (Expr, [EConstraint]))] -> [(Expr, [EConstraint])]
+getBestMatches [] = []
+getBestMatches ms =
+  let b = minimum (map fst ms)         -- minimum substitution size
+  in  [ ec | (s, ec) <- ms, s == b ]   -- pick out the smallest
+
+-- Check that there are no unsolved constraints.
+checkConstraints :: T ()
+checkConstraints = do
+  cs <- gets constraints
+  case cs of
+    [] -> return ()
+    (i, t) : _ -> do
+      t' <- derefUVar t
+      --is <- gets instTable
+      --traceM $ "Cannot satisfy constraint: " ++ unlines (map (\ (i, ii) -> showIdent i ++ ":\n" ++ showInstInfo ii) (M.toList is))
+      tcError (getSLoc i) $ "Cannot satisfy constraint: " ++ showExpr t'
+
+-- Add a type equality constraint.
+addEqConstraint :: SLoc -> EType -> EType -> T ()
+addEqConstraint loc t1 t2 = do
+  d <- newIdent loc "dict"
+  addConstraint d (mkEqType loc t1 t2)
+
+mkEqType :: SLoc -> EType -> EType -> EConstraint
+mkEqType loc t1 t2 = EApp (EApp (EVar (mkIdentSLoc loc nameTypeEq)) t1) t2
+
+-- A quick hack for testing
+solveEq :: TypeEqTable -> EType -> EType -> Maybe (Expr, [(EType, EType)])
+--solveEq eqs t1 t2 | trace ("solveEq: " ++ show (t1,t2) ++ show eqs) False = undefined
+solveEq eqs t1 t2 | t1 `eqEType` t2             = Just (ETuple [], [])
+                  | elemBy eqTyTy (t1, t2) eqs = Just (ETuple [], [])
+                  | otherwise =
+  case (t1, t2) of
+    (EApp f1 a1, EApp f2 a2) -> Just (ETuple [], [(f1, f2), (a1, a2)])
+    _                         -> Nothing
+
+-- Add the equality t1~t2.
+-- The type table is always the symmetric&transitive closure of all equalities.
+-- This isn't very efficient, but it's simple.
+addTypeEq :: EType -> EType -> TypeEqTable -> TypeEqTable
+addTypeEq t1 t2 aeqs | t1 `eqEType` t2 || elemBy eqTyTy (t1, t2) aeqs || elemBy eqTyTy (t2, t1) aeqs = aeqs
+                     | otherwise = (t1, t2) : (t2, t1) :                   -- symmetry
+                                  trans t1 t2 aeqs ++ trans t2 t1 aeqs ++  -- transitivity
+                                  aeqs
+  where trans a1 a2 eqs = [ (a1, b2) | (b1, b2) <- eqs, eqEType a2 b1 ]
+
+eqTyTy :: (EType, EType) -> (EType, EType) -> Bool
+eqTyTy (t1, t2) (u1, u2) = eqEType t1 u1 && eqEType t2 u2
+
+---------------------
+
+data SymTab a = SymTab (M.Map [a]) [(Ident, a)]
+  --Xderiving(Show)
+  
+stLookup :: --forall a . --XShow a =>
+            String -> Ident -> SymTab Entry -> Either String Entry
+stLookup msg i (SymTab genv lenv) =
+  case lookup i lenv of
+    Just e -> Right e
+    Nothing ->
+      case M.lookup i genv of
+        Just [e] -> Right e
+        Just es  -> Left $ "ambiguous " ++ msg ++ ": " ++ showIdent i ++ " " ++ showListS (showIdent . getAppCon) [ e | Entry e _ <- es ]
+        Nothing  -> Left $ "undefined " ++ msg ++ ": " ++ showIdent i
+                           -- ++ "\n" ++ show lenv ++ "\n" ++ show genv
+
+stFromListWith :: forall a . ([a] -> [a] -> [a]) -> [(Ident, [a])] -> SymTab a
+stFromListWith comb ias = SymTab (M.fromListWith comb ias) []
+
+stFromList :: forall a . [(Ident, [a])] -> SymTab a
+stFromList ias = SymTab (M.fromList ias) []
+
+stElemsLcl :: forall a . SymTab a -> [a]
+stElemsLcl (SymTab _genv lenv) = map snd lenv
+
+stInsertLcl :: forall a . Ident -> a -> SymTab a -> SymTab a
+stInsertLcl i a (SymTab genv lenv) = SymTab genv ((i,a) : lenv)
+
+-- XXX Use insertWith to follow Haskell semantics.
+stInsertGlb :: forall a . Ident -> [a] -> SymTab a -> SymTab a
+stInsertGlb i as (SymTab genv lenv) = SymTab (M.insert i as genv) lenv
+
+-----------------------------
+{-
+showSymTab :: SymTab Entry -> String
+showSymTab (SymTab im ies) = showListS showIdent (map fst (M.toList im) ++ map fst ies)
+
+showTModuleExps :: TModule a -> String
+showTModuleExps (TModule mn _fxs tys _syns _clss _insts vals _defs) =
+  showIdent mn ++ ":\n" ++
+    unlines (map (("  " ++) . showValueExport) vals) ++
+    unlines (map (("  " ++) . showTypeExport)  tys)
+
+showValueExport :: ValueExport -> String
+showValueExport (ValueExport i (Entry qi t)) =
+  showIdent i ++ " = " ++ showExpr qi ++ " :: " ++ showEType t
+
+showTypeExport :: TypeExport -> String
+showTypeExport (TypeExport i (Entry qi t) vs) =
+  showIdent i ++ " = " ++ showExpr qi ++ " :: " ++ showEType t ++ " assoc=" ++ showListS showValueExport vs
+
+showIdentClassInfo :: (Ident, ClassInfo) -> String
+showIdentClassInfo (i, (_vks, _ctx, cc, ms)) =
+  showIdent i ++ " :: " ++ showEType cc ++
+    " has " ++ showListS showIdent ms
+-}
diff --git a/src/Text/ParserComb.hs b/src/Text/ParserComb.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/ParserComb.hs
@@ -0,0 +1,261 @@
+-- Copyright 2023 Lennart Augustsson
+-- See LICENSE file for full license.
+{-# OPTIONS_GHC -Wno-type-defaults #-}
+module Text.ParserComb(
+  (>>=), (>>), pure,
+  (<*), (*>), (<*>), (<$), (<$>),
+  (<|>),
+  fail, guard,
+  get, put, modify,
+  Prsr, runPrsr,
+  satisfy, satisfyM, eof,
+  choice,
+  many, emany, optional, eoptional,
+  some, esome,
+  esepBy, sepBy1, esepBy1,
+  esepEndBy, esepEndBy1,
+  (<?>), (<|<),
+  --notFollowedBy,
+  lookAhead,
+  inject, nextToken,
+  LastFail(..),
+  ) where
+--Ximport Prelude()
+import Prelude
+import Control.Alternative
+import Control.Monad --Xhiding(guard)
+
+data LastFail t
+  = LastFail Int [t] [String]
+  --Xderiving (Show)
+
+maxInt :: Int
+maxInt = 1000000000
+
+noFail :: forall t . LastFail t
+noFail = LastFail maxInt [] []
+
+longest :: forall t . LastFail t -> LastFail t -> LastFail t
+longest lf1@(LastFail l1 t1 x1) lf2@(LastFail l2 _ x2) =
+  if l1 < l2 then
+    lf1
+  else if l2 < l1 then
+    lf2
+  else
+    LastFail l1 t1 (x1 ++ x2)
+
+longests :: forall t . [LastFail t] -> LastFail t
+longests xs = foldl1 longest xs
+
+data Res s t a = Many [(a, ([t], s))] (LastFail t)
+  --deriving (Show)
+
+-- | 
+data Prsr s t a = P (([t], s) -> Res s t a)
+--instance Show (Prsr s t a) where show _ = "<<Prsr>>"
+
+runP :: forall s t a . Prsr s t a -> (([t], s) -> Res s t a)
+runP (P p) = p
+
+instance forall s t . Functor (Prsr s t) where
+  fmap f p = P $ \ t ->
+    case runP p t of
+      Many aus lf -> Many [ (f a, u) | (a, u) <- aus ] lf
+
+instance forall s t . Applicative (Prsr s t) where
+  pure a = P $ \ t -> Many [(a, t)] noFail
+  (<*>) = ap
+  (*>) p k = p >>= \ _ -> k
+
+instance forall s t . Monad (Prsr s t) where
+  (>>=) p k = P $ \ t ->
+    case runP p t of
+      Many aus plf ->
+        let { xss = [ runP (k a) u | au <- aus, let { (a, u) = au } ] }
+        in  case unzip [ (rs, lf) | xs <- xss, let { Many rs lf = xs } ] of
+              (rss, lfs) -> Many (concat rss) (longests (plf : lfs))
+  return = pure
+
+instance forall s t . MonadFail (Prsr s t) where
+  fail m = P $ \ (ts, _) -> Many [] (LastFail (length ts) (take 1 ts) [m])
+
+instance forall s t . Alternative (Prsr s t) where
+  empty = P $ \ (ts, _) -> Many [] (LastFail (length ts) (take 1 ts) [])
+
+  (<|>) p q = P $ \ t ->
+    case runP p t of
+      Many a lfa ->
+        case runP q t of
+          Many b lfb -> Many (a ++ b) (longest lfa lfb)
+
+{-
+pure :: forall s t a . a -> Prsr s t a
+pure a = P $ \ t -> Many [(a, t)] noFail
+
+infixl 1 >>=
+(>>=) :: forall s t a b . Prsr s t a -> (a -> Prsr s t b) -> Prsr s t b
+(>>=) p k = P $ \ t ->
+    case runP p t of
+      Many aus plf ->
+        let { xss = [ runP (k a) u | au <- aus, let { (a, u) = au } ] }
+        in  case unzip [ (rs, lf) | xs <- xss, let { Many rs lf = xs } ] of
+              (rss, lfs) -> Many (concat rss) (longests (plf : lfs))
+
+infixl 1 >>
+(>>) :: forall s t a b . Prsr s t a -> Prsr s t b -> Prsr s t b
+(>>) p k = p >>= \ _ -> k
+
+infixl 4 <*>
+(<*>) :: forall s t a b . Prsr s t (a -> b) -> Prsr s t a -> Prsr s t b
+(<*>) m1 m2 = m1 >>= \ x1 -> m2 >>= \ x2 -> pure (x1 x2)
+
+infixl 4 <*
+(<*) :: forall s t a b . Prsr s t a -> Prsr s t b -> Prsr s t a
+(<*) m1 m2 = m1 >>= \ x1 -> m2 >> pure x1
+
+infixl 4 *>
+(*>) :: forall s t a b . Prsr s t a -> Prsr s t b -> Prsr s t b
+(*>) m1 m2 = m1 >> m2 >>= \ x2 -> pure x2
+
+infixl 4 <$>
+(<$>) :: forall s t a b . (a -> b) -> Prsr s t a -> Prsr s t b
+(<$>) f p = P $ \ t ->
+    case runP p t of
+      Many aus lf -> Many [ (f a, u) | (a, u) <- aus ] lf
+
+infixl 4 <$
+(<$) :: forall s t a b . a -> Prsr s t b -> Prsr s t a
+(<$) a p = p >> pure a
+
+guard :: forall s t . Bool -> Prsr s t ()
+guard b = if b then pure () else empty
+
+empty :: forall s t a . Prsr s t a
+empty = P $ \ (ts, _) -> Many [] (LastFail (length ts) (take 1 ts) [])
+
+infixl 3 <|>
+(<|>) :: forall s t a . Prsr s t a -> Prsr s t a -> Prsr s t a
+(<|>) p q = P $ \ t ->
+    case runP p t of
+      Many a lfa ->
+        case runP q t of
+          Many b lfb -> Many (a ++ b) (longest lfa lfb)
+
+fail :: forall s t a . String -> Prsr s t a
+fail m = P $ \ (ts, _) -> Many [] (LastFail (length ts) (take 1 ts) [m])
+-}
+
+get :: forall s t . Prsr s t s
+get = P $ \ t@(_, s) -> Many [(s, t)] noFail
+
+put :: forall s t . s -> Prsr s t ()
+put s = P $ \ (ts, _) -> Many [((), (ts, s))] noFail
+
+modify :: forall s t . (s -> s) -> Prsr s t ()
+modify f = get >>= \ s -> put (f s)
+
+-- Left biased choice
+infixl 3 <|<
+(<|<) :: forall s t a . Prsr s t a -> Prsr s t a -> Prsr s t a
+(<|<) p q = P $ \ t ->
+  case runP p t of
+    Many [] lfa ->
+      case runP q t of
+         Many b lfb -> Many b (longest lfa lfb)
+    r -> r
+
+{-
+many :: forall s t a . Prsr s t a -> Prsr s t [a]
+many p = some p <|> pure []
+
+some :: forall s t a . Prsr s t a -> Prsr s t [a]
+some p = (:) <$> p <*> many p
+-}
+
+optional :: forall s t a . Prsr s t a -> Prsr s t (Maybe a)
+optional p = (Just <$> p) <|> pure Nothing
+
+emany :: forall s t a . Prsr s t a -> Prsr s t [a]
+emany p = esome p <|< pure []
+
+esome :: forall s t a . Prsr s t a -> Prsr s t [a]
+esome p = (:) <$> p <*> emany p
+
+eoptional :: forall s t a . Prsr s t a -> Prsr s t (Maybe a)
+eoptional p = (Just <$> p) <|< pure Nothing
+
+runPrsr :: forall s t a . --X(Show a, Show s) =>
+           s -> Prsr s t a -> [t] -> Either (LastFail t) [(a, s)]
+runPrsr s (P p) f =
+  case p (f, s) of
+    Many [] lf -> Left lf
+    Many xs _  -> Right [(a, snd x) | (a, x) <- xs ]
+
+choice :: forall s t a . [Prsr s t a] -> Prsr s t a
+choice [] = empty
+choice ps = foldr1 (<|>) ps
+
+satisfy :: forall s t . String -> (t -> Bool) -> Prsr s t t
+satisfy msg f = P $ \ (acs, s) ->
+  case acs of
+    c:cs | f c -> Many [(c, (cs, s))] noFail
+    _ -> Many [] (LastFail (length acs) (take 1 acs) [msg])
+
+satisfyM :: forall s t a . String -> (t -> Maybe a) -> Prsr s t a
+satisfyM msg f = P $ \ (acs, s) ->
+  case acs of
+    c:cs | Just a <- f c -> Many [(a, (cs, s))] noFail
+    _ -> Many [] (LastFail (length acs) (take 1 acs) [msg])
+
+eof :: forall s t . Prsr s t ()
+eof = P $ \ t@(cs, _) ->
+ if null cs then
+   Many [((), t)] noFail
+ else
+   Many [] (LastFail (length cs) (take 1 cs) ["eof"])
+
+infixl 9 <?>
+(<?>) :: forall s t a . Prsr s t a -> String -> Prsr s t a
+(<?>) p e = P $ \ t ->
+--  trace ("<?> " ++ show e) $
+  case runP p t of
+    Many rs (LastFail l ts _) ->
+      Many rs (LastFail l ts [e])
+
+{-
+notFollowedBy :: forall s t a . Prsr s t a -> Prsr s t ()
+notFollowedBy p = P $ \ t@(ts,_) ->
+  case runP p t of
+    Many [] _ -> Many [((), t)] noFail
+    _         -> Many [] (LastFail (length ts) (take 1 ts) ["!"])
+-}
+
+lookAhead :: forall s t a . Prsr s t a -> Prsr s t ()
+lookAhead p = P $ \ t ->
+  case runP p t of
+    Many [] (LastFail l ts xs) -> Many [] (LastFail l (take 1 ts) xs)
+    _                          -> Many [((), t)] noFail
+
+nextToken :: forall s t . Prsr s t t
+nextToken = P $ \ t@(cs, _) ->
+  case cs of
+    [] ->  Many [] (LastFail (length cs) [] ["!eof"])
+    c:_ -> Many [(c, t)] noFail
+
+inject :: forall s t . [t] -> Prsr s t ()
+inject s = P $ \ (cs, st) -> Many [((), (s ++ cs, st))] noFail
+
+sepBy1 :: forall s t a sep . Prsr s t a -> Prsr s t sep -> Prsr s t [a]
+sepBy1 p sep = (:) <$> p <*> many (sep *> p)
+
+esepBy1 :: forall s t a sep . Prsr s t a -> Prsr s t sep -> Prsr s t [a]
+esepBy1 p sep = (:) <$> p <*> emany (sep *> p)
+
+esepBy :: forall s t a sep . Prsr s t a -> Prsr s t sep -> Prsr s t [a]
+esepBy p sep = esepBy1 p sep <|< pure []
+
+esepEndBy :: forall s t a sep . Prsr s t a -> Prsr s t sep -> Prsr s t [a]
+esepEndBy p sep = esepEndBy1 p sep <|< pure []
+
+esepEndBy1 :: forall s t a sep . Prsr s t a -> Prsr s t sep -> Prsr s t [a]
+esepEndBy1 p sep = (:) <$> p <*> ((sep *> esepEndBy p sep) <|< pure [])
diff --git a/src/runtime/config-micro-64.h b/src/runtime/config-micro-64.h
new file mode 100644
--- /dev/null
+++ b/src/runtime/config-micro-64.h
@@ -0,0 +1,68 @@
+/*
+ * Various platform specific configuration.
+ */
+
+/*
+ * Include stdio functions.
+ * Without this none of the file I/O in System.IO is available.
+ */
+#define WANT_STDIO 0
+
+/*
+ * Include ops for floating point arithmetic.
+ * Without this +,-,* etc will not be available for the Double type.
+ */
+#define WANT_FLOAT 0
+
+/*
+ * Include <math.h>
+ * Without this, exp,sin, etc are not available.
+ */
+#define WANT_MATH 0
+
+/*
+ * Number of bits in a word.  Only 32 and 64 are supported.
+ */
+#define WORD_SIZE 64
+
+/*
+ * Find First Set
+ * This macro must be defined.
+ * It return the number of the least significant bit that is set.
+ * Numberings starts from 1.  If no bit is set, it should return 0.
+ */
+#define FFS ffsl
+
+/*
+ * This is the character used for comma-separation in printf.
+ * Defaults to "'".
+ */
+/* #define PCOMMA "'" */
+
+
+/*
+ * Get a raw input character.
+ * If undefined, the default always returns -1
+ */
+/* #define GETRAW */
+
+
+/*
+ * Get time since some epoch in milliseconds.
+ */
+/* #define GETTIMEMILLI */
+
+
+/*
+ * The ERR macro should report an error and exit.
+ * If not defined, a generic one will be used.
+ */
+/* #define ERR(s) */
+/* #define ERR1(s,a) */
+
+#define GCRED    0              /* do some reductions during GC */
+#define FASTTAGS 1              /* compute tag by pointer subtraction */
+#define INTTABLE 1              /* use fixed table of small INT nodes */
+#define SANITY   0              /* do some sanity checks */
+#define STACKOVL 0              /* check for stack overflow */
+
diff --git a/src/runtime/config-mingw-64.h b/src/runtime/config-mingw-64.h
new file mode 100644
--- /dev/null
+++ b/src/runtime/config-mingw-64.h
@@ -0,0 +1,53 @@
+/*
+ * Various platform specific configuration.
+ */
+
+/*
+ * Include stdio functions.
+ * Without this none of the file I/O in System.IO is available.
+ */
+#define WANT_STDIO 1
+
+/*
+ * Include ops for floating point arithmetic.
+ * Without this +,-,* etc will not be available for the Double type.
+ */
+#define WANT_FLOAT 1
+
+/*
+ * Include <math.h>
+ * Without this, exp,sin, etc are not available.
+ */
+#define WANT_MATH 1
+
+/*
+ * Number of bits in a word.  Only 32 and 64 are supported.
+ */
+#define WORD_SIZE 64
+
+/*
+ * Find First Set
+ * This macro must be defined.
+ * It return the number of the least significant bit that is set.
+ * Numberings starts from 1.  If no bit is set, it should return 0.
+ */
+#define FFS __builtin_ffsll
+
+/*
+ * This is the character used for comma-separation in printf.
+ * Defaults to "'".
+ */
+/* #define PCOMMA "'" */
+
+/*
+ * The ERR macro should report an error and exit.
+ * If not defined, a generic one will be used.
+ */
+/* #define ERR(s,a) */
+/* #define ERR1(s,a) */
+
+#define GCRED    1              /* do some reductions during GC */
+#define FASTTAGS 1              /* compute tag by pointer subtraction */
+#define INTTABLE 1              /* use fixed table of small INT nodes */
+#define SANITY   1              /* do some sanity checks */
+#define STACKOVL 1              /* check for stack overflow */
diff --git a/src/runtime/config-unix-64.h b/src/runtime/config-unix-64.h
new file mode 100644
--- /dev/null
+++ b/src/runtime/config-unix-64.h
@@ -0,0 +1,140 @@
+/*
+ * Various platform specific configuration.
+ */
+
+/*
+ * Include stdio functions.
+ * Without this none of the file I/O in System.IO is available.
+ */
+#define WANT_STDIO 1
+
+/*
+ * Include ops for floating point arithmetic.
+ * Without this +,-,* etc will not be available for the Double type.
+ */
+#define WANT_FLOAT 1
+
+/*
+ * Include <math.h>
+ * Without this, exp,sin, etc are not available.
+ */
+#define WANT_MATH 1
+
+/*
+ * Number of bits in a word.  Only 32 and 64 are supported.
+ */
+#define WORD_SIZE 64
+
+/*
+ * Find First Set
+ * This macro must be defined.
+ * It return the number of the least significant bit that is set.
+ * Numberings starts from 1.  If no bit is set, it should return 0.
+ */
+#define FFS ffsl
+
+/*
+ * This is the character used for comma-separation in printf.
+ * Defaults to "'".
+ */
+/* #define PCOMMA "'" */
+
+
+#include <termios.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+/*
+ * Set the terminal in raw mode and read a single character.
+ * Return this character, or -1 on any kind of failure.
+ */
+static int
+getraw(void)
+{
+  struct termios old, new;
+  char c;
+  int r;
+  
+  if (tcgetattr(0, &old))
+    return -1;
+  cfmakeraw(&new);
+  if (tcsetattr(0, TCSANOW, &new))
+    return -1;
+  r = read(0, &c, 1);
+  (void)tcsetattr(0, TCSANOW, &old);
+  if (r == 1)
+    return c;
+  else
+    return -1;
+}
+/*
+ * Get a raw input character.
+ * If undefined, the default always returns -1
+ */
+#define GETRAW getraw
+
+/*
+ * Get time since some epoch in milliseconds.
+ */
+#include <sys/time.h>
+uint64_t
+gettimemilli(void)
+{
+  struct timeval tv;
+  (void)gettimeofday(&tv, NULL);
+  return tv.tv_sec * 1000 + tv.tv_usec / 1000;
+}
+#define GETTIMEMILLI gettimemilli
+
+/*
+ * Create a unique file name.
+ * This is a very dodgy implementation.
+ * XXX This functions drags in a lot of functionality.
+ */
+char*
+tmpname(const char* pre, const char* suf)
+{
+  int pid = (int)getpid();
+  char *tmp = getenv("TMPDIR");
+  if (!tmp)
+    tmp = "/tmp";
+  char *s = malloc(strlen(tmp) + 1 + strlen(pre) + 5 + strlen(suf) + 1);
+  /* This might loop forever.  See if I care. :) */
+  for(;;) {
+    strcpy(s, tmp);
+    strcat(s, "/");
+    strcat(s, pre);
+    /* Insert 8 digits of the PID */
+    char *p = s + strlen(s) + 10;
+    *p-- = 0;
+    for(int i = 0; i < 10; i++) {
+      *p-- = pid % 10 + '0';
+      pid /= 10;
+    }
+    strcat(s, suf);
+    /* The file name is ready, do a quick if check that we can create it */
+    int fd = open(s, O_CREAT | O_EXCL, 0600);
+    if (fd >= 0) {
+      close(fd);                /* Close it again */
+      return s;
+    }
+    pid++;                      /* try with a different pid */
+  }
+}
+#define TMPNAME tmpname
+
+/*
+ * The ERR macro should report an error and exit.
+ * If not defined, a generic one will be used.
+ */
+/* #define ERR(s) */
+/* #define ERR1(s,a) */
+
+#define GCRED    1              /* do some reductions during GC */
+#define FASTTAGS 1              /* compute tag by pointer subtraction */
+#define INTTABLE 1              /* use fixed table of small INT nodes */
+#define SANITY   1              /* do some sanity checks */
+#define STACKOVL 1              /* check for stack overflow */
diff --git a/src/runtime/config-windows-64.h b/src/runtime/config-windows-64.h
new file mode 100644
--- /dev/null
+++ b/src/runtime/config-windows-64.h
@@ -0,0 +1,101 @@
+/*
+ * Various platform specific configuration.
+ */
+
+/*
+ * Include stdio functions.
+ * Without this none of the file I/O in System.IO is available.
+ */
+#define WANT_STDIO 1
+
+/*
+ * Include ops for floating point arithmetic.
+ * Without this +,-,* etc will not be available for the Double type.
+ */
+#define WANT_FLOAT 1
+
+/*
+ * Include <math.h>
+ * Without this, exp,sin, etc are not available.
+ */
+#define WANT_MATH 1
+
+/*
+ * Number of bits in a word.  Only 32 and 64 are supported.
+ */
+#define WORD_SIZE 64
+
+/*
+ * Find First Set
+ * This macro must be defined.
+ * It return the number of the least significant bit that is set.
+ * Numberings starts from 1.  If no bit is set, it should return 0.
+ */
+#include <intrin.h>
+//#pragma warning(disable : 4996)
+#pragma intrinsic(_BitScanForward64)
+static inline int
+FFS(int64_t arg)
+{
+  unsigned long r;
+  if (_BitScanForward64(&r, arg))
+    return (int)(r+1);
+  else
+    return 0;
+}
+
+/*
+ * This is the character used for comma-separation in printf.
+ * Defaults to "'".
+ * Windows does not support this.
+ */
+#define PCOMMA ""
+
+/*
+ * Get a raw input character.
+ * If undefined, the default always returns -1
+ */
+/* #define GETRAW getraw */
+
+/*
+ * Get time since some epoch in milliseconds.
+ * If undefined, return 0.
+ */
+#define GETTIMEMILLI gettimemilli
+#define WIN32_LEAN_AND_MEAN
+#include <Windows.h>
+
+uint64_t
+gettimemilli(void)
+{
+    static const uint64_t EPOCH = ((uint64_t) 116444736000000000ULL);
+
+    SYSTEMTIME  system_time;
+    FILETIME    file_time;
+    uint64_t    time, msec;
+
+    GetSystemTime( &system_time );
+    SystemTimeToFileTime( &system_time, &file_time );
+    time =  ((uint64_t)file_time.dwLowDateTime )      ;
+    time += ((uint64_t)file_time.dwHighDateTime) << 32;
+
+    msec = (time - EPOCH) / 10000L;
+    //msec = time + system_time.wMilliseconds;
+    return msec;
+}
+
+/* Make this empty */
+#define NORETURN
+
+/*
+ * The ERR macro should report an error and exit.
+ * If not defined, a generic one will be used.
+ */
+/* #define ERR(s) */
+/* #define ERR1(s,a) */
+
+#define GCRED    1              /* do some reductions during GC */
+#define FASTTAGS 1              /* compute tag by pointer subtraction */
+#define INTTABLE 1              /* use fixed table of small INT nodes */
+#define SANITY   1              /* do some sanity checks */
+#define STACKOVL 1              /* check for stack overflow */
diff --git a/src/runtime/eval.c b/src/runtime/eval.c
new file mode 100644
--- /dev/null
+++ b/src/runtime/eval.c
@@ -0,0 +1,2388 @@
+/* Copyright 2023 Lennart Augustsson
+ * See LICENSE file for full license.
+ */
+#include <inttypes.h>
+
+#include "config-unix-64.h"
+//#include "config-micro-64.h"
+
+#if WANT_STDIO
+#include <stdio.h>
+#include <locale.h>
+#endif  /* WANT_STDIO */
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <setjmp.h>
+#if WANT_MATH
+#include <math.h>
+#endif  /* WANT_MATH */
+
+#define VERSION "v5.1\n"
+
+typedef intptr_t value_t;       /* Make value the same size as pointers, since they are in a union */
+#define PRIvalue PRIdPTR
+typedef uintptr_t uvalue_t;     /* Make unsigned value the same size as pointers, since they are in a union */
+#define PRIuvalue PRIuPTR
+typedef uintptr_t heapoffs_t;   /* Heap offsets */
+#define PRIheap PRIuPTR
+typedef uintptr_t tag_t;        /* Room for tag, low order bit indicates AP/not-AP */
+typedef intptr_t stackptr_t;    /* Index into stack */
+/* These types can be changed for 32 bit platforms. */
+typedef uint64_t counter_t;     /* Statistics counter, can be smaller since overflow doesn't matter */
+#define PRIcounter PRIu64
+typedef uint64_t bits_t;        /* One word of bits */
+
+/* We cast all FFI functions to this type.  It's reasonably portable */
+typedef void (*funptr_t)(void);
+
+#if !defined(PCOMMA)
+#define PCOMMA "'"
+#endif  /* !defined(PCOMMA) */
+
+#if !defined(GETRAW)
+int GETRAW(void) { return -1; }
+#endif  /* !defined(getraw) */
+
+#if !defined(GETTIMEMILLI)
+uint64_t GETTIMEMILLI(void) { return 0; }
+#endif  /* !define(GETTIMEMILLI) */
+
+#if !defined(TMPNAME)
+char* TMPNAME(const char* pre, const char* post) {
+  char *s = malloc(strlen(pre) + 3 + strlen(post) + 1);
+  strcpy(s, pre);
+  strcat(s, "TMP");
+  strcat(s, post);
+  return s;
+}
+#endif
+
+#if !defined(INLINE)
+#define INLINE inline
+#endif  /* !define(INLINE) */
+
+#if !defined(NORETURN)
+#define NORETURN __attribute__ ((noreturn))
+#endif /* !defined(NORETURN) */
+
+/***************************************/
+
+/* Keep permanent nodes for LOW_INT <= i < HIGH_INT */
+#define LOW_INT (-10)
+#define HIGH_INT 256
+
+#define HEAP_CELLS 50000000
+#define STACK_SIZE 100000
+
+#if !defined(ERR)
+#if WANT_STDIO
+#define ERR(s)    do { fprintf(stderr,"ERR: "s"\n");   exit(1); } while(0)
+#define ERR1(s,a) do { fprintf(stderr,"ERR: "s"\n",a); exit(1); } while(0)
+#else  /* WANT_STDIO */
+#define ERR(s) exit(1)
+#define ERR1(s,a) exit(1)
+#endif  /* WANT_STDIO */
+#endif  /* !define(ERR) */
+
+enum node_tag { T_FREE, T_IND, T_AP, T_INT, T_DBL, T_PTR, T_BADDYN, T_S, T_K, T_I, T_B, T_C,
+                T_A, T_Y, T_SS, T_BB, T_CC, T_P, T_R, T_O, T_U, T_Z,
+                T_ADD, T_SUB, T_MUL, T_QUOT, T_REM, T_SUBR, T_UQUOT, T_UREM, T_NEG,
+                T_AND, T_OR, T_XOR, T_INV, T_SHL, T_SHR, T_ASHR,
+                T_EQ, T_NE, T_LT, T_LE, T_GT, T_GE, T_ULT, T_ULE, T_UGT, T_UGE,
+                T_TOPTR, T_TOINT, T_TODBL,
+#if WANT_FLOAT
+                T_FADD, T_FSUB, T_FMUL, T_FDIV, T_FNEG, T_ITOF,
+                T_FEQ, T_FNE, T_FLT, T_FLE, T_FGT, T_FGE, T_FSHOW, T_FREAD,
+#endif
+                T_ERROR, T_NODEFAULT, T_NOMATCH, T_SEQ, T_EQUAL, T_COMPARE, T_RNF,
+                T_IO_BIND, T_IO_THEN, T_IO_RETURN,
+                T_IO_SERIALIZE, T_IO_DESERIALIZE,
+                T_IO_STDIN, T_IO_STDOUT, T_IO_STDERR, T_IO_GETARGS, T_IO_DROPARGS,
+                T_IO_PERFORMIO, T_IO_GETTIMEMILLI, T_IO_PRINT, T_IO_CATCH,
+                T_IO_CCALL, T_DYNSYM,
+                T_NEWCASTRING, T_PEEKCASTRING,
+                T_STR,
+                T_LAST_TAG,
+};
+const char* tag_names[] = {
+  "FREE", "IND", "AP", "INT", "DBL", "PTR", "BADDYN", "S", "K", "I", "B", "C",
+  "A", "Y", "SS", "BB", "CC", "P", "R", "O", "U", "Z",
+  "ADD", "SUB", "MUL", "QUOT", "REM", "SUBR", "UQUOT", "UREM", "NEG",
+  "AND", "OR", "XOR", "INV", "SHL", "SHR", "ASHR",
+  "EQ", "NE", "LT", "LE", "GT", "GE", "ULT", "ULE", "UGT", "UGE",
+  "TOPTR", "TOINT", "TODBL",
+#if WANT_FLOAT
+  "FADD", "FSUB", "FMUL", "FDIV", "FNEG", "ITOF",
+  "FEQ", "FNE", "FLT", "FLE", "FGT", "FGE", "FSHOW", "FREAD",
+#endif
+  "ERROR", "NODEFAULT", "NOMATCH", "SEQ", "EQUAL", "COMPARE", "RNF",
+  "IO_BIND", "IO_THEN", "IO_RETURN",
+  "IO_SERIALIZE", "IO_DESERIALIZE",
+  "IO_STDIN", "IO_STDOUT", "IO_STDERR", "IO_GETARGS", "IO_DROPARGS",
+  "IO_PERFORMIO", "IO_GETTIMEMILLI", "IO_PRINT", "IO_CATCH",
+  "IO_CCALL", "DYNSYM",
+  "NEWCASTRING", "PEEKCASTRING",
+  "STR",
+  "LAST_TAG",
+};
+
+typedef struct node {
+  union {
+    struct node *uufun;
+    tag_t        uutag;             /* LSB=1 indicates that this is a tag, LSB=0 that this is a T_AP node */
+  } ufun;
+  union {
+    struct node *uuarg;
+    value_t      uuvalue;
+    double       uudoublevalue;
+    const char  *uustring;
+    void        *uuptr;
+  } uarg;
+} node;
+typedef struct node* NODEPTR;
+#define NIL 0
+#define HEAPREF(i) &cells[(i)]
+#define GETTAG(p) ((p)->ufun.uutag & 1 ? (int)((p)->ufun.uutag >> 1) : T_AP)
+#define SETTAG(p,t) do { if (t != T_AP) (p)->ufun.uutag = ((t) << 1) + 1; } while(0)
+#define GETVALUE(p) (p)->uarg.uuvalue
+#define GETDBLVALUE(p) (p)->uarg.uudoublevalue
+#define SETVALUE(p,v) (p)->uarg.uuvalue = v
+#define SETDBLVALUE(p,v) (p)->uarg.uudoublevalue = v
+#define FUN(p) (p)->ufun.uufun
+#define ARG(p) (p)->uarg.uuarg
+#define STR(p) (p)->uarg.uustring
+#define PTR(p) (p)->uarg.uuptr
+#define INDIR(p) ARG(p)
+#define NODE_SIZE sizeof(node)
+#define ALLOC_HEAP(n) do { cells = malloc(n * sizeof(node)); memset(cells, 0x55, n * sizeof(node)); } while(0)
+#define LABEL(n) ((heapoffs_t)((n) - cells))
+node *cells;                 /* All cells */
+
+counter_t num_reductions = 0;
+counter_t num_alloc;
+counter_t num_gc = 0;
+uint64_t gc_mark_time = 0;
+uint64_t run_time = 0;
+
+NODEPTR *stack;
+stackptr_t stack_ptr = -1;
+#if STACKOVL
+#define PUSH(x) do { if (stack_ptr >= stack_size-1) ERR("stack overflow"); stack[++stack_ptr] = (x); } while(0)
+#else  /* SANITY */
+#define PUSH(x) do {                                                        stack[++stack_ptr] = (x); } while(0)
+#endif  /* SANITY */
+#define TOP(n) stack[stack_ptr - (n)]
+#define POP(n) stack_ptr -= (n)
+#define GCCHECK(n) gc_check((n))
+
+heapoffs_t heap_size = HEAP_CELLS; /* number of heap cells */
+heapoffs_t heap_start;             /* first location in heap that needs GC */
+stackptr_t stack_size = STACK_SIZE;
+
+counter_t num_marked;
+counter_t max_num_marked = 0;
+counter_t num_free;
+
+#define BITS_PER_WORD (sizeof(bits_t) * 8)
+bits_t *free_map;             /* 1 bit per node, 0=free, 1=used */
+heapoffs_t free_map_nwords;
+heapoffs_t next_scan_index;
+
+NORETURN
+void
+memerr(void)
+{
+  ERR("Out of memory");
+  exit(1);
+}
+
+/***************** BFILE *******************/
+
+/* BFILE will have different implementations, they all have these methods */
+typedef struct BFILE {
+  int (*getb)(struct BFILE*);
+  void (*ungetb)(int c, struct BFILE*);
+  void (*closeb)(struct BFILE*);
+} BFILE;
+
+/*** BFILE from static buffer ***/
+struct BFILE_buffer {
+  BFILE    mets;
+  size_t   b_size;
+  size_t   b_pos;
+  uint8_t  *b_buffer;
+};
+
+int
+getb_buf(BFILE *bp)
+{
+  struct BFILE_buffer *p = (struct BFILE_buffer *)bp;
+  if (p->b_pos >= p->b_size)
+    return -1;
+  return p->b_buffer[p->b_pos++];
+}
+
+void
+ungetb_buf(int c, BFILE *bp)
+{
+  struct BFILE_buffer *p = (struct BFILE_buffer *)bp;
+  if (p->b_pos == 0)
+    ERR("ungetb");
+  p->b_buffer[--p->b_pos] = (uint8_t)c;
+}
+
+void
+closeb_buf(BFILE *bp)
+{
+  (void)bp;                     /* shut up warning */
+}
+
+#if WANT_STDIO
+/*** BFILE via FILE ***/
+struct BFILE_file {
+  BFILE    mets;
+  FILE    *file;
+};
+
+int
+getb_file(BFILE *bp)
+{
+  struct BFILE_file *p = (struct BFILE_file *)bp;
+  return fgetc(p->file);
+}
+
+void
+ungetb_file(int c, BFILE *bp)
+{
+  struct BFILE_file *p = (struct BFILE_file *)bp;
+  ungetc(c, p->file);
+}
+
+void
+closeb_file(BFILE *bp)
+{
+  struct BFILE_file *p = (struct BFILE_file *)bp;
+  free(p);
+}
+
+BFILE *
+openb_FILE(FILE *f)
+{
+  struct BFILE_file *p = malloc(sizeof (struct BFILE_file));
+  if (!p)
+    memerr();
+  p->mets.getb   = getb_file;
+  p->mets.ungetb = ungetb_file;
+  p->mets.closeb = closeb_file;
+  p->file = f;
+  return (BFILE*)p;
+}
+#endif
+
+/*** BFILE via simple LZW decompression ***/
+
+#define DICTSIZE 4096
+#define ASCIISIZE 96            /* ' ' - '~', '\n' */
+
+struct BFILE_lzw {
+  BFILE    mets;
+  BFILE    *bfile;              /* underlying BFILE */
+  int      unget;               /* storage for a single ungetb */
+  char     *table[DICTSIZE];    /* dictionary */
+  int      table_size;          /* next dictionary slot */
+  char     *ptr;                /* pointer into output string */
+  int      old;                 /* previous code word */
+  int      ch;                  /* previous first character */
+  char     buf[DICTSIZE+1];     /* buffer holding output string */
+  int      rdstate;             /* state of 3 bytes to 2 codewords transducer */
+  int      rdres;               /* saved transducer bits */
+};
+
+/* Get a code word.  It's 12 bits, so 2 codewords are spread over 3 bytes.
+ * XXX This has 4096 hardcoded.
+*/
+int
+getcode_lzw(struct BFILE_lzw *p)
+{
+  int r;
+
+  if (p->rdstate == 0) {
+    r = p->bfile->getb(p->bfile);
+    if (r < 0)
+      return -1;
+    r |= p->bfile->getb(p->bfile) << 8;
+    p->rdres = r >> 12;         /* save 4 bits */
+    p->rdstate = 1;
+    return r & 0xfff;
+  } else {
+    r = p->rdres;
+    r |= p->bfile->getb(p->bfile) << 4;
+    p->rdstate = 0;
+    return r;
+  }
+}
+
+char *
+str_lzw(const char *s, int c)
+{
+  int l = strlen(s);
+  char *p = malloc(l + 1 + 1);
+  if (!p)
+    memerr();
+  strcpy(p, s);
+  p[l] = c;
+  p[l+1] = '\0';
+  return p;
+}
+
+int
+getb_lzw(BFILE *bp)
+{
+  struct BFILE_lzw *p = (struct BFILE_lzw*)bp;
+  char *s;
+  int c, n;
+
+  /* Do we have an ungetb character? */
+  if (p->unget) {
+    c = p->unget;
+    p->unget = 0;
+    return c;
+  }
+  /* Are we in the middle of emitting a string? */
+  if (p->ptr) {
+    c = *p->ptr++;
+    if (c) {
+      //printf("c='%c'\n", c);
+      return c;
+    }
+    p->ptr = 0;
+  }
+  n = getcode_lzw(p);
+  if (n < 0)
+    return -1;
+  if (n >= DICTSIZE)
+    ERR("getcode_lzw 1");
+  s = p->table[n];
+  if (!s) {
+    char *os = p->table[p->old];
+    strcpy(p->buf, os);
+    int l = strlen(os);
+    p->buf[l++] = p->ch;
+    p->buf[l] = '\0';
+  } else {
+    strcpy(p->buf, s);
+  }
+  p->ptr = p->buf;
+  p->ch = p->buf[0];
+  if (p->table_size < DICTSIZE) {
+    p->table[p->table_size++] = str_lzw(p->table[p->old], p->ch);
+  }
+  p->old = n;
+  return *p->ptr++;
+}
+
+void
+ungetb_lzw(int c, BFILE *bp)
+{
+  struct BFILE_lzw *p = (struct BFILE_lzw*)bp;
+  if (p->unget)
+    ERR("ungetb_lzw");
+  p->unget = c;
+}
+
+void
+closeb_lzw(BFILE *bp)
+{
+  struct BFILE_lzw *p = (struct BFILE_lzw*)bp;
+
+  for (int i = 0; i < DICTSIZE; i++) {
+    if (p->table[i])
+      free(p->table[i]);
+  }
+  p->bfile->closeb(p->bfile);
+  free(p);
+}
+
+BFILE *
+add_lzw_decompressor(BFILE *file)
+{
+  struct BFILE_lzw *p = calloc(1, sizeof(struct BFILE_lzw));
+  int i;
+  
+  if (!p)
+    memerr();
+  p->mets.getb = getb_lzw;
+  p->mets.ungetb = ungetb_lzw;
+  p->mets.closeb = closeb_lzw;
+  p->bfile = file;
+
+  /* initialize dictionary with printable ASCII */
+  for(i = 0; i < ASCIISIZE-1; i++) {
+    p->table[i] = str_lzw("", i + ' ');
+  }
+  p->table[i++] = str_lzw("", '\n');
+  p->table_size = i;
+
+  /* set up decompressore state */
+  p->old = getcode_lzw(p);
+  strcpy(p->buf, p->table[p->old]);
+  p->ch = p->buf[0];
+  p->ptr = p->buf;
+  
+  return (BFILE *)p;
+}
+
+/*****************************************************************************/
+
+struct handler {
+  jmp_buf         hdl_buf;      /* env storage */
+  struct handler *hdl_old;      /* old handler */
+  stackptr_t      hdl_stack;    /* old stack pointer */
+  NODEPTR         hdl_exn;      /* used temporarily to pass the exception value */
+} *cur_handler = 0;
+
+/* Set FREE bit to 0 */
+static INLINE void mark_used(NODEPTR n)
+{
+  heapoffs_t i = LABEL(n);
+  if (i < heap_start)
+    return;
+#if SANITY
+  if (i >= free_map_nwords * BITS_PER_WORD) ERR("mark_used");
+#endif
+  free_map[i / BITS_PER_WORD] &= ~(1ULL << (i % BITS_PER_WORD));
+}
+
+/* Test if FREE bit is 0 */
+static INLINE int is_marked_used(NODEPTR n)
+{
+  heapoffs_t i = LABEL(n);
+  if (i < heap_start)
+    return 1;
+#if SANITY
+  if (i >= free_map_nwords * BITS_PER_WORD) ERR("is_marked_used");;
+#endif
+  return (free_map[i / BITS_PER_WORD] & (1ULL << (i % BITS_PER_WORD))) == 0;
+}
+
+static INLINE void mark_all_free(void)
+{
+  memset(free_map, ~0, free_map_nwords * sizeof(bits_t));
+  next_scan_index = heap_start;
+}
+
+int glob_argc;
+char **glob_argv;
+
+int verbose = 0;
+
+static INLINE NODEPTR
+alloc_node(enum node_tag t)
+{
+#if SANITY
+  if (num_free <= 0)
+    ERR("alloc_node");
+#endif
+
+  heapoffs_t i = next_scan_index / BITS_PER_WORD;
+  int k;                        /* will contain bit pos + 1 */
+  for(;;) {
+    heapoffs_t word = free_map[i];
+    k = FFS(word);
+    if (k)
+      break;
+    i++;
+#if SANITY
+    if (i >= free_map_nwords)
+      ERR("alloc_node free_map");
+#endif
+  }
+  heapoffs_t pos = i * BITS_PER_WORD + k - 1; /* first free node */
+  NODEPTR n = HEAPREF(pos);
+  mark_used(n);
+  next_scan_index = pos;
+
+  SETTAG(n, t);
+  num_alloc++;
+  num_free--;
+  return n;
+}
+
+static INLINE NODEPTR
+new_ap(NODEPTR f, NODEPTR a)
+{
+  NODEPTR n = alloc_node(T_AP);
+  FUN(n) = f;
+  ARG(n) = a;
+  return n;
+}
+
+/* Needed during reduction */
+NODEPTR intTable[HIGH_INT - LOW_INT];
+NODEPTR combFalse, combTrue, combUnit, combCons;
+NODEPTR combCC, combZ, combIOBIND;
+NODEPTR combLT, combEQ, combGT;
+
+/* One node of each kind for primitives, these are never GCd. */
+/* We use linear search in this, because almost all lookups
+ * are among the combinators.
+ */
+struct {
+  char *name;
+  enum node_tag tag;
+  NODEPTR node;
+} primops[] = {
+  /* combinators */
+  /* sorted by frequency in a typical program */
+  { "B", T_B },
+  { "O", T_O },
+  { "K", T_K },
+  { "C'", T_CC },
+  { "C", T_C },
+  { "A", T_A },
+  { "S'", T_SS },
+  { "P", T_P },
+  { "R", T_R },
+  { "I", T_I },
+  { "S", T_S },
+  { "U", T_U },
+  { "Y", T_Y },
+  { "B'", T_BB },
+  { "Z", T_Z },
+  /* primops */
+  { "+", T_ADD },
+  { "-", T_SUB },
+  { "*", T_MUL },
+  { "quot", T_QUOT },
+  { "rem", T_REM },
+  { "uquot", T_UQUOT },
+  { "urem", T_UREM },
+  { "subtract", T_SUBR },
+  { "neg", T_NEG },
+  { "and", T_AND },
+  { "or", T_OR },
+  { "xor", T_XOR },
+  { "inv", T_INV },
+  { "shl", T_SHL },
+  { "shr", T_SHR },
+  { "ashr", T_ASHR },
+#if WANT_FLOAT
+  { "fadd" , T_FADD},
+  { "fsub" , T_FSUB},
+  { "fmul" , T_FMUL},
+  { "fdiv", T_FDIV},
+  { "fneg", T_FNEG},
+  { "itof", T_ITOF},
+  { "feq", T_FEQ},
+  { "fne", T_FNE},
+  { "flt", T_FLT},
+  { "fle", T_FLE},
+  { "fgt", T_FGT},
+  { "fge", T_FGE},
+  { "fshow", T_FSHOW},
+  { "fread", T_FREAD},
+#endif  /* WANT_FLOAT */
+  { "==", T_EQ },
+  { "/=", T_NE },
+  { "<", T_LT },
+  { "u<", T_ULT },
+  { "u<=", T_ULE },
+  { "u>", T_UGT },
+  { "u>=", T_UGE },
+  { "<=", T_LE },
+  { ">", T_GT },
+  { ">=", T_GE },
+  { "seq", T_SEQ },
+  { "error", T_ERROR },
+  { "noDefault", T_NODEFAULT },
+  { "noMatch", T_NOMATCH },
+  { "equal", T_EQUAL },
+  { "compare", T_COMPARE },
+  { "rnf", T_RNF },
+  /* IO primops */
+  { "IO.>>=", T_IO_BIND },
+  { "IO.>>", T_IO_THEN },
+  { "IO.return", T_IO_RETURN },
+  { "IO.serialize", T_IO_SERIALIZE },
+  { "IO.print", T_IO_PRINT },
+  { "IO.deserialize", T_IO_DESERIALIZE },
+  { "IO.stdin", T_IO_STDIN },
+  { "IO.stdout", T_IO_STDOUT },
+  { "IO.stderr", T_IO_STDERR },
+  { "IO.getArgs", T_IO_GETARGS },
+  { "IO.dropArgs", T_IO_DROPARGS },
+  { "IO.getTimeMilli", T_IO_GETTIMEMILLI },
+  { "IO.performIO", T_IO_PERFORMIO },
+  { "IO.catch", T_IO_CATCH },
+  { "dynsym", T_DYNSYM },
+  { "newCAString", T_NEWCASTRING },
+  { "peekCAString", T_PEEKCASTRING },
+  { "toPtr", T_TOPTR },
+  { "toInt", T_TOINT },
+  { "toDbl", T_TODBL },
+};
+
+void
+init_nodes(void)
+{
+  ALLOC_HEAP(heap_size);
+  free_map_nwords = (heap_size + BITS_PER_WORD - 1) / BITS_PER_WORD; /* bytes needed for free map */
+  free_map = malloc(free_map_nwords * sizeof(bits_t));
+  if (!free_map)
+    memerr();
+
+  /* Set up permanent nodes */
+  heap_start = 0;
+#if !FASTTAGS
+  for (int j = 0; j < sizeof primops / sizeof primops[0];j++) {
+    NODEPTR n = HEAPREF(heap_start++);
+    primops[j].node = n;
+    //MARK(n) = MARKED;
+    SETTAG(n, primops[j].tag);
+    switch (primops[j].tag) {
+    case T_K: combFalse = n; break;
+    case T_A: combTrue = n; break;
+    case T_I: combUnit = n; break;
+    case T_O: combCons = n; break;
+    case T_CC: combCC = n; break;
+    case T_Z: combZ = n; break;
+    case T_IO_BIND: combIOBIND = n; break;
+#if WANT_STDIO
+    case T_IO_STDIN:  SETTAG(n, T_PTR); PTR(n) = stdin;  break;
+    case T_IO_STDOUT: SETTAG(n, T_PTR); PTR(n) = stdout; break;
+    case T_IO_STDERR: SETTAG(n, T_PTR); PTR(n) = stderr; break;
+#endif  /* WANT_STDIO */
+    default:
+      break;
+    }
+  }
+#else
+  for(enum node_tag t = T_FREE; t < T_LAST_TAG; t++) {
+    NODEPTR n = HEAPREF(heap_start++);
+    SETTAG(n, t);
+    switch (t) {
+    case T_K: combFalse = n; break;
+    case T_A: combTrue = n; break;
+    case T_I: combUnit = n; break;
+    case T_O: combCons = n; break;
+    case T_CC: combCC = n; break;
+    case T_Z: combZ = n; break;
+    case T_IO_BIND: combIOBIND = n; break;
+#if WANT_STDIO
+    case T_IO_STDIN:  SETTAG(n, T_PTR); PTR(n) = stdin;  break;
+    case T_IO_STDOUT: SETTAG(n, T_PTR); PTR(n) = stdout; break;
+    case T_IO_STDERR: SETTAG(n, T_PTR); PTR(n) = stderr; break;
+#endif
+    default:
+      break;
+    }
+    for (int j = 0; j < sizeof primops / sizeof primops[0];j++) {
+      if (primops[j].tag == t) {
+        primops[j].node = n;
+      }
+    }
+  }
+#endif
+
+  /* The representation of the constructors of
+   *  data Ordering = LT | EQ | GT
+   * do not have single constructors.
+   * But we can make compound one, since they are irreducible.
+   */
+#define NEWAP(c, f, a) do { NODEPTR n = HEAPREF(heap_start++); SETTAG(n, T_AP); FUN(n) = (f); ARG(n) = (a); (c) = n;} while(0)
+  NEWAP(combLT, combZ,     combFalse);  /* Z B */
+  NEWAP(combEQ, combFalse, combFalse);  /* K K */
+  NEWAP(combGT, combFalse, combTrue);   /* K A */
+#undef NEWAP
+
+#if INTTABLE
+  /* Allocate permanent Int nodes */
+  for (int i = LOW_INT; i < HIGH_INT; i++) {
+    NODEPTR n = HEAPREF(heap_start++);
+    intTable[i - LOW_INT] = n;
+    SETTAG(n, T_INT);
+    SETVALUE(n, i);
+  }
+#endif
+
+  /* Round up heap_start to the next bitword boundary to avoid the permanent nodes. */
+  heap_start = (heap_start + BITS_PER_WORD - 1) / BITS_PER_WORD * BITS_PER_WORD;
+
+  mark_all_free();
+
+  num_free = heap_size - heap_start;
+}
+
+#if GCRED
+int red_a, red_k, red_i, red_int;
+#endif
+
+//counter_t mark_depth;
+
+/* Mark all used nodes reachable from *np */
+void
+mark(NODEPTR *np)
+{
+  NODEPTR n;
+#if GCRED
+  value_t i;
+#endif
+
+  //  mark_depth++;
+  //  if (mark_depth % 10000 == 0)
+  //    printf("mark depth %"PRIcounter"\n", mark_depth);
+  top:
+  n = *np;
+  if (GETTAG(n) == T_IND) {
+#if SANITY
+    int loop = 0;
+    /* Skip indirections, and redirect start pointer */
+    while (GETTAG(n) == T_IND) {
+      //      printf("*"); fflush(stdout);
+      n = INDIR(n);
+      if (loop++ > 10000000) {
+        //printf("%p %p %p\n", n, INDIR(n), INDIR(INDIR(n)));
+        ERR("IND loop");
+      }
+    }
+    //    if (loop)
+    //      printf("\n");
+#else  /* SANITY */
+    while (GETTAG(n) == T_IND) {
+      n = INDIR(n);
+    }
+#endif  /* SANITY */
+    *np = n;
+  }
+  if (is_marked_used(n)) {
+    //    mark_depth--;
+    return;
+  }
+  num_marked++;
+  mark_used(n);
+#if GCRED
+  /* This is really only fruitful just after parsing.  It can be removed. */
+  if (GETTAG(n) == T_AP && GETTAG(FUN(n)) == T_AP && GETTAG(FUN(FUN(n))) == T_A) {
+    /* Do the A x y --> y reduction */
+    NODEPTR y = ARG(n);
+    SETTAG(n, T_IND);
+    INDIR(n) = y;
+    red_a++;
+    goto top;
+  }
+#if 0
+  /* This never seems to happen */
+  if (GETTAG(n) == T_AP && GETTAG(FUN(n)) == T_AP && GETTAG(FUN(FUN(n))) == T_K) {
+    /* Do the K x y --> x reduction */
+    NODEPTR x = ARG(FUN(n));
+    SETTAG(n, T_IND);
+    INDIR(n) = x;
+    red_k++;
+    goto top;
+  }
+#endif
+  if (GETTAG(n) == T_AP && GETTAG(FUN(n)) == T_I) {
+    /* Do the I x --> x reduction */
+    NODEPTR x = ARG(n);
+    SETTAG(n, T_IND);
+    INDIR(n) = x;
+    red_i++;
+    goto top;
+  }
+#if INTTABLE
+  if (GETTAG(n) == T_INT && LOW_INT <= (i = GETVALUE(n)) && i < HIGH_INT) {
+    SETTAG(n, T_IND);
+    INDIR(n) = intTable[i - LOW_INT];
+    red_int++;
+    goto top;
+  }
+#endif  /* INTTABLE */
+#endif  /* GCRED */
+  if (GETTAG(n) == T_AP) {
+#if 1
+    mark(&FUN(n));
+    //mark(&ARG(n));
+    np = &ARG(n);
+    goto top;                   /* Avoid tail recursion */
+#else
+    mark(&ARG(n));
+    np = &FUN(n);
+    goto top;                   /* Avoid tail recursion */
+#endif
+  }
+}
+
+/* Perform a garbage collection:
+   - First mark from all roots; roots are on the stack.
+*/
+void
+gc(void)
+{
+  num_gc++;
+  num_marked = 0;
+#if WANT_STDIO
+  if (verbose > 1)
+    fprintf(stderr, "gc mark\n");
+#endif
+  gc_mark_time -= GETTIMEMILLI();
+  mark_all_free();
+  //  mark_depth = 0;
+  for (stackptr_t i = 0; i <= stack_ptr; i++)
+    mark(&stack[i]);
+  gc_mark_time += GETTIMEMILLI();
+
+  if (num_marked > max_num_marked)
+    max_num_marked = num_marked;
+  num_free = heap_size - heap_start - num_marked;
+  if (num_free < heap_size / 50)
+    ERR("heap exhausted");
+#if WANT_STDIO
+  if (verbose > 1)
+    fprintf(stderr, "gc done, %"PRIcounter" free\n", num_free);
+#endif  /* !WANT_STDIO */
+}
+
+/* Check that there are k nodes available, if not then GC. */
+static INLINE void
+gc_check(size_t k)
+{
+  if (k < num_free)
+    return;
+#if WANT_STDIO
+  if (verbose > 1)
+    fprintf(stderr, "gc_check: %d\n", (int)k);
+#endif
+  gc();
+}
+
+/*
+ * Table of FFI callable functions.
+ * (For a more flexible solution use dlopen()/dlsym()/dlclose())
+ * The table contains the information needed to do the actual call.
+ *   V    void
+ *   I    value_t
+ *   i    int
+ *   D    double
+ *   P    void*
+ * The types are
+ *   V    void    name(void)
+ *   i    int     name(void)
+ *   I    value_t name(voi)
+ *   IV   void    name(value_t)
+ *   II   value_t name(value_t)
+ *   IIV  void    name(value_t, value_t)
+ *   III  value_t name(value_t, value_t)
+ *   DD   double  name(double)
+ *   Pi   int     name(void*)
+ *   PI   value_t name(void*)
+ *   PP   void*   name(void*)
+ *   iPi  int     name(int, void*)
+ *   PPI  value_t name(void*, void*)
+ *   PPP  void*   name(void*, void*)
+ * more can easily be added.
+ */
+struct {
+  const char *ffi_name;
+  const funptr_t ffi_fun;
+  enum { FFI_V, FFI_I, FFI_IV, FFI_II, FFI_IIV, FFI_III, FFI_DD, FFI_PI,
+    FFI_i, FFI_Pi, FFI_iPi,
+    FFI_PPI, FFI_PP, FFI_PPP, FFI_IPI, FFI_PV, FFI_IP
+  } ffi_how;
+} ffi_table[] = {
+  { "llabs",    (funptr_t)llabs,   FFI_II },
+#if WANT_MATH
+  { "log",      (funptr_t)log,     FFI_DD },
+  { "exp",      (funptr_t)exp,     FFI_DD },
+  { "sqrt",     (funptr_t)sqrt,    FFI_DD },
+  { "sin",      (funptr_t)sin,     FFI_DD },
+  { "cos",      (funptr_t)cos,     FFI_DD },
+  { "tan",      (funptr_t)tan,     FFI_DD },
+  { "asin",     (funptr_t)asin,    FFI_DD },
+  { "acos",     (funptr_t)acos,    FFI_DD },
+  { "atan",     (funptr_t)atan,    FFI_DD },
+#endif  /* WANT_MATH */
+  { "getenv",   (funptr_t)getenv,  FFI_PP },
+
+  { "getRaw",   (funptr_t)GETRAW,  FFI_i },
+#if WANT_STDIO
+  { "fgetc",    (funptr_t)fgetc,   FFI_Pi },
+  { "fputc",    (funptr_t)fputc,   FFI_iPi },
+  //  { "cprint",   (funptr_t)cprint,  FFI_PAV },
+  //  { "serialize",(funptr_t)serialize,  FFI_PAV },
+  //  { "deserialize",(funptr_t)deserialize,  FFI_PA },
+  { "fclose",   (funptr_t)fclose,  FFI_Pi },
+  { "fflush",   (funptr_t)fflush,  FFI_Pi },
+  { "fopen",    (funptr_t)fopen,   FFI_PPP },
+  { "tmpname",  (funptr_t)TMPNAME, FFI_PPP },
+  { "unlink",   (funptr_t)unlink,  FFI_Pi },
+  { "system",   (funptr_t)system,  FFI_Pi },
+#endif  /* WANT_STDIO */
+  //  { "getArgs",   (funptr_t)getArgs,  FFI_A },
+  { "getTimeMilli",(funptr_t)GETTIMEMILLI,  FFI_I },
+  { "free",     (funptr_t)free,    FFI_PV },
+  { "malloc",   (funptr_t)malloc,  FFI_IP }, /* The I is really a size_t */
+};
+
+/* Look up an FFI function by name */
+value_t
+lookupFFIname(const char *name)
+{
+  for(int i = 0; i < sizeof(ffi_table) / sizeof(ffi_table[0]); i++)
+    if (strcmp(ffi_table[i].ffi_name, name) == 0)
+      return (value_t)i;
+  return -1;
+}
+
+NODEPTR
+ffiNode(const char *buf)
+{
+  NODEPTR r;
+  value_t i = lookupFFIname(buf);
+  if (i < 0) {
+    /* lookup failed, generate a node that will dynamically generate an error */
+    r = alloc_node(T_BADDYN);
+    char *fun = malloc(strlen(buf) + 1);
+    strcpy(fun, buf);
+    STR(r) = fun;
+  } else {
+    r = alloc_node(T_IO_CCALL);
+    SETVALUE(r, i);
+  }
+  return r;
+}
+
+/* If the next input character is c, then consume it, else leave it alone. */
+int
+gobble(BFILE *f, int c)
+{
+  int d = f->getb(f);
+  if (c == d) {
+    return 1;
+  } else {
+    f->ungetb(d, f);
+    return 0;
+  }
+}
+
+/* Get a non-terminating character.  ' ' and ')' terminate a token. */
+int
+getNT(BFILE *f)
+{
+  int c;
+  
+  c = f->getb(f);
+  if (c == ' ' || c == ')') {
+    f->ungetb(c, f);
+    return 0;
+  } else {
+    return c;
+  }
+}
+
+value_t
+parse_int(BFILE *f)
+{
+  value_t i = 0;
+  value_t neg = 1;
+  int c = f->getb(f);
+  if (c == '-') {
+    neg = -1;
+    c = f->getb(f);
+  }
+  for(;;) {
+    i = i * 10 + c - '0';
+    c = f->getb(f);
+    if (c < '0' || c > '9') {
+      f->ungetb(c, f);
+      break;
+    }
+  }
+  return neg * i;
+}
+
+double
+parse_double(BFILE *f)
+{
+  // apparently longest float, when rendered, takes up 24 characters. We add one more for a potential
+  // minus sign, and another one for the final null terminator.
+  // https://stackoverflow.com/questions/1701055/what-is-the-maximum-length-in-chars-needed-to-represent-any-double-value
+  char buf[26];
+  for(int j = 0; (buf[j] = getNT(f)); j++)
+    ;
+
+  return strtod(buf, NULL);;
+}
+
+NODEPTR
+mkStrNode(const char *str)
+{
+  NODEPTR n = alloc_node(T_STR);
+  STR(n) = str;
+  return n;
+}
+
+NODEPTR mkInt(value_t i);
+NODEPTR mkDbl(double d);
+NODEPTR mkPtr(void* p);
+
+/* Table of labelled nodes for sharing during parsing. */
+struct shared_entry {
+  heapoffs_t label;
+  NODEPTR node;                 /* NIL indicates unused */
+} *shared_table;
+heapoffs_t shared_table_size;
+
+/* Look for the label in the table.
+ * If it's found, return the node.
+ * If not found, return the first empty entry.
+*/
+NODEPTR *
+find_label(heapoffs_t label)
+{
+  int hash = (int)(label % shared_table_size);
+  for(int i = hash; ; i++) {
+    if (shared_table[i].node == NIL) {
+      /* The slot is empty, so claim and return it */
+      shared_table[i].label = label;
+      return &shared_table[i].node;
+    } else if (shared_table[i].label == label) {
+      /* Found the label, so return it. */
+      return &shared_table[i].node;
+    }
+    /* Not empty and not found, try next. */
+  }
+}
+
+NODEPTR
+parse(BFILE *f)
+{
+  NODEPTR r;
+  NODEPTR *nodep;
+  heapoffs_t l;
+  value_t i;
+  double d;
+  int c;
+  char buf[80];                 /* store names of primitives. */
+
+  c = f->getb(f);
+  if (c < 0) ERR("parse EOF");
+  switch (c) {
+  case '(' :
+    /* application: (f a) */
+    r = alloc_node(T_AP);
+    FUN(r) = parse(f);
+    if (!gobble(f, ' ')) ERR("parse ' '");
+    ARG(r) = parse(f);
+    if (!gobble(f, ')')) ERR("parse ')'");
+    return r;
+  case '&':
+    d = parse_double(f);
+    r = mkDbl(d);
+    return r;
+  case '#':
+    i = parse_int(f);
+    r = mkInt(i);
+    return r;
+#if 0
+  case '-':
+    c = f->getb(f);
+    neg = -1;
+    if ('0' <= c && c <= '9') {
+      goto number;
+    } else {
+      ERR("got -");
+    }
+  case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':
+    /* integer [0-9]+*/
+    neg = 1;
+  number:
+    f->ungetb(c, f);
+    i = neg * parse_int(f);
+    r = mkInt(i);
+    return r;
+#endif
+  case '_' :
+    /* Reference to a shared value: _label */
+    l = parse_int(f);  /* The label */
+    nodep = find_label(l);
+    if (*nodep == NIL) {
+      /* Not yet defined, so make it an indirection */
+      *nodep = alloc_node(T_IND);
+      INDIR(*nodep) = NIL;
+    }
+    return *nodep;
+  case ':' :
+    /* Define a shared expression: :label e */
+    l = parse_int(f);  /* The label */
+    if (!gobble(f, ' ')) ERR("parse ' '");
+    nodep = find_label(l);
+    if (*nodep == NIL) {
+      /* not referenced yet, so create a node */
+      *nodep = alloc_node(T_IND);
+      INDIR(*nodep) = NIL;
+    } else {
+      /* Sanity check */
+      if (INDIR(*nodep) != NIL) ERR("shared != NIL");
+    }
+    r = parse(f);
+    INDIR(*nodep) = r;
+    return r;
+  case '"' :
+    /* Everything up to the next " is a string.
+     * Special characters are encoded as \NNN&,
+     * where NNN is the decimal value of the character */
+    /* XXX assume there are no NULs in the string, and all fit in a char */
+    /* XXX allocation is a hack */
+    {
+      char *buffer = malloc(10000);
+      char *p = buffer;
+      for(;;) {
+        c = f->getb(f);
+        if (c == '"')
+          break;
+        if (c == '\\') {
+          *p++ = (char)parse_int(f);
+          if (!gobble(f, '&'))
+            ERR("parse string");
+        } else {
+          *p++ = c;
+        }
+      }
+      *p++ = 0;
+      r = mkStrNode(realloc(buffer, p - buffer));
+      return r;
+    }
+  case '^':
+    /* An FFI name */
+    for (int j = 0; (buf[j] = getNT(f)); j++)
+      ;
+    r = ffiNode(buf);
+    return r;
+  default:
+    buf[0] = c;
+    /* A primitive, keep getting char's until end */
+    for (int j = 1; (buf[j] = getNT(f)); j++)
+      ;
+    /* Look up the primop and use the preallocated node. */
+    for (int j = 0; j < sizeof primops / sizeof primops[0]; j++) {
+      if (strcmp(primops[j].name, buf) == 0) {
+        return primops[j].node;
+      }
+    }
+    ERR1("no primop %s", buf);
+  }
+}
+
+void
+checkversion(BFILE *f)
+{
+  char *p = VERSION;
+  int c;
+
+  while ((c = *p++)) {
+    if (c != f->getb(f))
+      ERR("version mismatch");
+  }
+  gobble(f, '\r');                 /* allow extra CR */
+}
+
+/* Parse a file */
+NODEPTR
+parse_top(BFILE *f)
+{
+  checkversion(f);
+  heapoffs_t numLabels = parse_int(f);
+  if (!gobble(f, '\n'))
+    ERR("size parse");
+  gobble(f, '\r');                 /* allow extra CR */
+  shared_table_size = 3 * numLabels; /* sparsely populated hashtable */
+  shared_table = malloc(shared_table_size * sizeof(struct shared_entry));
+  if (!shared_table)
+    memerr();
+  for(heapoffs_t i = 0; i < shared_table_size; i++)
+    shared_table[i].node = NIL;
+  NODEPTR n = parse(f);
+  free(shared_table);
+  return n;
+}
+
+#if WANT_STDIO
+NODEPTR
+parse_FILE(FILE *f)
+{
+  BFILE *p = openb_FILE(f);
+  /* And parse it */
+  NODEPTR n = parse_top(p);
+  p->closeb(p);
+  return n;
+}
+
+NODEPTR
+parse_file(const char *fn, size_t *psize)
+{
+  FILE *f = fopen(fn, "r");
+  if (!f)
+    ERR1("file not found %s", fn);
+
+  /* And parse it */
+  NODEPTR n = parse_FILE(f);
+  *psize = ftell(f);
+  return n;
+}
+#endif  /* WANT_STDIO */
+
+counter_t num_shared;
+
+/* Two bits per node: marked, shared
+ * 0, 0   -- not visited
+ * 1, 0   -- visited once
+ * 1, 1   -- visited more than once
+ * 0, 1   -- printed
+ */
+bits_t *marked_bits;
+bits_t *shared_bits;
+static INLINE void set_bit(bits_t *bits, NODEPTR n)
+{
+  heapoffs_t i = LABEL(n);
+  bits[i / BITS_PER_WORD] |= (1ULL << (i % BITS_PER_WORD));
+}
+#if WANT_STDIO
+static INLINE void clear_bit(bits_t *bits, NODEPTR n)
+{
+  heapoffs_t i = LABEL(n);
+  bits[i / BITS_PER_WORD] &= ~(1ULL << (i % BITS_PER_WORD));
+}
+#endif
+static INLINE int test_bit(bits_t *bits, NODEPTR n)
+{
+  heapoffs_t i = LABEL(n);
+  return (bits[i / BITS_PER_WORD] & (1ULL << (i % BITS_PER_WORD))) != 0;
+}
+
+#if WANT_STDIO
+void printrec(FILE *f, NODEPTR n);
+
+/* Mark all reachable nodes, when a marked node is reached, mark it as shared. */
+void
+find_sharing(NODEPTR n)
+{
+ top:
+  while (GETTAG(n) == T_IND)
+    n = INDIR(n);
+  //printf("find_sharing %p %llu ", n, LABEL(n));
+  if (GETTAG(n) == T_AP) {
+    if (test_bit(shared_bits, n)) {
+      /* Alread marked as shared */
+      //printf("shared\n");
+      ;
+    } else if (test_bit(marked_bits, n)) {
+      /* Already marked, so now mark as shared */
+      //printf("marked\n");
+      set_bit(shared_bits, n);
+      num_shared++;
+    } else {
+      /* Mark as visited, and recurse */
+      //printf("unmarked\n");
+      set_bit(marked_bits, n);
+      find_sharing(FUN(n));
+      n = ARG(n);
+      goto top;
+    }
+  } else {
+    /* Not an application, so do nothing */
+    //printf("not T_AP\n");
+    ;
+  }
+}
+
+/* Recursively print an expression.
+   This assumes that the shared nodes has been marked as such.
+*/
+void
+printrec(FILE *f, NODEPTR n)
+{
+  if (test_bit(shared_bits, n)) {
+    /* The node is shared */
+    if (test_bit(marked_bits, n)) {
+      /* Not yet printed, so emit a label */
+      fprintf(f, ":%"PRIheap" ", LABEL(n));
+      clear_bit(marked_bits, n);  /* mark as printed */
+    } else {
+      /* This node has already been printed, so just use a reference. */
+      fprintf(f, "_%"PRIheap, LABEL(n));
+      return;
+    }
+  }
+
+  switch (GETTAG(n)) {
+  case T_IND: /*putc('*', f);*/ printrec(f, INDIR(n)); break;
+  case T_AP:
+    fputc('(', f);
+    printrec(f, FUN(n));
+    fputc(' ', f);
+    printrec(f, ARG(n));
+    fputc(')', f);
+    break;
+  case T_INT: fprintf(f, "#%"PRIvalue, GETVALUE(n)); break;
+  case T_DBL: fprintf(f, "&%.16g", GETDBLVALUE(n)); break;
+  case T_PTR:
+    if (PTR(n) == stdin)
+      fprintf(f, "IO.stdin");
+    else if (PTR(n) == stdout)
+      fprintf(f, "IO.stdout");
+    else if (PTR(n) == stderr)
+      fprintf(f, "IO.stderr");
+    else
+      ERR("Cannot serialize pointers");
+    break;
+  case T_STR:
+    {
+      const char *p = STR(n);
+      int c;
+      fputc('"', f);
+      while ((c = *p++)) {
+        if (c == '"' || c == '\\' || c < ' ' || c > '~') {
+          fprintf(f, "\\%d&", c);
+        } else {
+          fputc(c, f);
+        }
+      }
+      fputc('"', f);
+      break;
+    }
+  case T_BADDYN: fprintf(f, "^%s", STR(n)); break;
+  case T_S: fprintf(f, "S"); break;
+  case T_K: fprintf(f, "K"); break;
+  case T_I: fprintf(f, "I"); break;
+  case T_C: fprintf(f, "C"); break;
+  case T_B: fprintf(f, "B"); break;
+  case T_A: fprintf(f, "A"); break;
+  case T_U: fprintf(f, "U"); break;
+  case T_Y: fprintf(f, "Y"); break;
+  case T_P: fprintf(f, "P"); break;
+  case T_R: fprintf(f, "R"); break;
+  case T_O: fprintf(f, "O"); break;
+  case T_SS: fprintf(f, "S'"); break;
+  case T_BB: fprintf(f, "B'"); break;
+  case T_Z: fprintf(f, "Z"); break;
+  case T_CC: fprintf(f, "C'"); break;
+  case T_ADD: fprintf(f, "+"); break;
+  case T_SUB: fprintf(f, "-"); break;
+  case T_MUL: fprintf(f, "*"); break;
+  case T_QUOT: fprintf(f, "quot"); break;
+  case T_REM: fprintf(f, "rem"); break;
+  case T_UQUOT: fprintf(f, "uquot"); break;
+  case T_UREM: fprintf(f, "urem"); break;
+  case T_SUBR: fprintf(f, "subtract"); break;
+  case T_NEG: fprintf(f, "neg"); break;
+  case T_AND: fprintf(f, "and"); break;
+  case T_OR: fprintf(f, "or"); break;
+  case T_XOR: fprintf(f, "xor"); break;
+  case T_INV: fprintf(f, "inv"); break;
+  case T_SHL: fprintf(f, "shl"); break;
+  case T_SHR: fprintf(f, "shr"); break;
+  case T_ASHR: fprintf(f, "ashr"); break;
+#if WANT_FLOAT
+  case T_FADD: fprintf(f, "fadd"); break;
+  case T_FSUB: fprintf(f, "fsub"); break;
+  case T_FMUL: fprintf(f, "fmul"); break;
+  case T_FDIV: fprintf(f, "fdiv"); break;
+  case T_FNEG: fprintf(f, "fneg"); break;
+  case T_ITOF: fprintf(f, "itof"); break;
+  case T_FEQ: fprintf(f, "feq"); break;
+  case T_FNE: fprintf(f, "fne"); break;
+  case T_FLT: fprintf(f, "flt"); break;
+  case T_FLE: fprintf(f, "fle"); break;
+  case T_FGT: fprintf(f, "fgt"); break;
+  case T_FGE: fprintf(f, "fge"); break;
+  case T_FSHOW: fprintf(f, "fshow"); break;
+  case T_FREAD: fprintf(f, "fread"); break;
+#endif
+  case T_EQ: fprintf(f, "=="); break;
+  case T_NE: fprintf(f, "/="); break;
+  case T_LT: fprintf(f, "<"); break;
+  case T_LE: fprintf(f, "<="); break;
+  case T_GT: fprintf(f, ">"); break;
+  case T_GE: fprintf(f, ">="); break;
+  case T_ULT: fprintf(f, "u<"); break;
+  case T_ULE: fprintf(f, "u<="); break;
+  case T_UGT: fprintf(f, "u>"); break;
+  case T_UGE: fprintf(f, "u>="); break;
+  case T_ERROR: fprintf(f, "error"); break;
+  case T_NODEFAULT: fprintf(f, "noDefault"); break;
+  case T_NOMATCH: fprintf(f, "noMatch"); break;
+  case T_EQUAL: fprintf(f, "equal"); break;
+  case T_COMPARE: fprintf(f, "compare"); break;
+  case T_RNF: fprintf(f, "rnf"); break;
+  case T_SEQ: fprintf(f, "seq"); break;
+  case T_IO_BIND: fprintf(f, "IO.>>="); break;
+  case T_IO_THEN: fprintf(f, "IO.>>"); break;
+  case T_IO_RETURN: fprintf(f, "IO.return"); break;
+  case T_IO_SERIALIZE: fprintf(f, "IO.serialize"); break;
+  case T_IO_PRINT: fprintf(f, "IO.print"); break;
+  case T_IO_DESERIALIZE: fprintf(f, "IO.deserialize"); break;
+  case T_IO_GETARGS: fprintf(f, "IO.getArgs"); break;
+  case T_IO_DROPARGS: fprintf(f, "IO.dropArgs"); break;
+  case T_IO_GETTIMEMILLI: fprintf(f, "IO.getTimeMilli"); break;
+  case T_IO_PERFORMIO: fprintf(f, "IO.performIO"); break;
+  case T_IO_CCALL: fprintf(f, "^%s", ffi_table[GETVALUE(n)].ffi_name); break;
+  case T_IO_CATCH: fprintf(f, "IO.catch"); break;
+  case T_DYNSYM: fprintf(f, "dynsym"); break;
+  case T_NEWCASTRING: fprintf(f, "newCAString"); break;
+  case T_PEEKCASTRING: fprintf(f, "peekCAString"); break;
+  case T_TOINT: fprintf(f, "toInt"); break;
+  case T_TOPTR: fprintf(f, "toPtr"); break;
+  case T_TODBL: fprintf(f, "toDbl"); break;
+  default: ERR("print tag");
+  }
+}
+
+/* Serialize a graph to file. */
+void
+print(FILE *f, NODEPTR n, int header)
+{
+  num_shared = 0;
+  marked_bits = calloc(free_map_nwords, sizeof(bits_t));
+  if (!marked_bits)
+    memerr();
+  shared_bits = calloc(free_map_nwords, sizeof(bits_t));
+  if (!shared_bits)
+    memerr();
+  find_sharing(n);
+  if (header)
+    fprintf(f, "%s%"PRIcounter"\n", VERSION, num_shared);
+  printrec(f, n);
+  free(marked_bits);
+  free(shared_bits);
+}
+
+/* Show a graph. */
+void
+pp(FILE *f, NODEPTR n)
+{
+  print(f, n, 0);
+  fprintf(f, "\n");
+}
+#endif  /* WANT_STDIO */
+
+NODEPTR
+mkInt(value_t i)
+{
+#if INTTABLE
+  if (LOW_INT <= i && i < HIGH_INT) {
+    return intTable[i - LOW_INT];
+  }
+#endif
+
+  NODEPTR n;
+  n = alloc_node(T_INT);
+  SETVALUE(n, i);
+  return n;
+}
+
+NODEPTR
+mkDbl(double d)
+{
+  NODEPTR n;
+  n = alloc_node(T_DBL);
+  SETDBLVALUE(n, d);
+  return n;
+}
+
+NODEPTR
+mkPtr(void* p)
+{
+  NODEPTR n;
+  n = alloc_node(T_PTR);
+  PTR(n) = p;
+  return n;
+}
+
+static INLINE NODEPTR
+mkNil(void)
+{
+  return combFalse;
+}
+
+static INLINE NODEPTR
+mkCons(NODEPTR x, NODEPTR xs)
+{
+  return new_ap(new_ap(combCons, x), xs);
+}
+
+size_t
+strNodes(size_t len)
+{
+  /* Each character will need a CHAR node and a CONS node, a CONS uses 2 T_AP nodes */
+  len *= (1 + 2);
+  /* And each string will need a NIL */
+  len += 1;
+  return len;
+}
+
+/* Turn a C string into a combinator string */
+NODEPTR
+mkString(const char *str, size_t len)
+{
+  NODEPTR n, nc;
+
+  n = mkNil();
+  for(size_t i = len; i > 0; i--) {
+    nc = mkInt(str[i-1]);
+    n = mkCons(nc, n);
+  }
+  return n;
+}
+
+NODEPTR
+mkStringC(const char *str)
+{
+  return mkString(str, strlen(str));
+}
+
+void eval(NODEPTR n);
+
+/* Evaluate and skip indirections. */
+static INLINE NODEPTR
+evali(NODEPTR n)
+{
+  /* Need to push and pop in case GC happens */
+  PUSH(n);
+  eval(n);
+  n = TOP(0);
+  POP(1);
+  while (GETTAG(n) == T_IND)
+    n = INDIR(n);
+  return n;
+}
+
+/* Follow indirections */
+static INLINE NODEPTR
+indir(NODEPTR n)
+{
+  while (GETTAG(n) == T_IND)
+    n = INDIR(n);
+  return n;
+}
+
+/* Evaluate to an INT */
+static INLINE value_t
+evalint(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_INT) {
+    ERR1("evalint, bad tag %d", GETTAG(n));
+  }
+#endif
+  return GETVALUE(n);
+}
+
+/* Evaluate to a Double */
+static INLINE double
+evaldbl(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_DBL) {
+    ERR1("evaldbl, bad tag %d", GETTAG(n));
+  }
+#endif
+  return GETDBLVALUE(n);
+}
+
+/* Evaluate to a T_PTR */
+void *
+evalptr(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_PTR) {
+    ERR1("evalptr, bad tag %d", GETTAG(n));
+  }
+#endif
+  return PTR(n);
+}
+
+/* Evaluate a string, returns a newly allocated buffer. */
+/* XXX this is cheating, should use continuations */
+char *
+evalstring(NODEPTR n)
+{
+  size_t sz = 10000;
+  char *p, *name = malloc(sz);
+  value_t c;
+  NODEPTR x;
+
+  if (!name)
+    memerr();
+  for (p = name;;) {
+    if (p >= name + sz)
+      ERR("evalstring too long");
+    n = evali(n);
+    if (GETTAG(n) == T_K)            /* Nil */
+      break;
+    else if (GETTAG(n) == T_AP && GETTAG(x = indir(FUN(n))) == T_AP && GETTAG(indir(FUN(x))) == T_O) { /* Cons */
+      c = evalint(ARG(x));
+      if (c < 0 || c > 127)
+	ERR("invalid char");    /* Only allow ASCII */
+      *p++ = (char)c;
+      n = ARG(n);
+    } else {
+      ERR("evalstring not Nil/Cons");
+    }
+  }
+  *p = 0;
+  return name;
+}
+
+/* Compares anything, but really only works well on strings.
+ * if p < q  return -1
+ * if p > q  return 1
+ * if p == q return 0
+ */
+int
+compare(NODEPTR p, NODEPTR q)
+{
+  int r;
+  value_t x, y;
+  void *f, *g;
+  
+ top:
+  PUSH(q);                      /* save for GC */
+  p = evali(p);
+  q = evali(TOP(0));
+  POP(1);
+  enum node_tag ptag = GETTAG(p);
+  enum node_tag qtag = GETTAG(q);
+  if (ptag != qtag) {
+    /* Hack to make Nil < Cons */
+    if (ptag == T_K && qtag == T_AP)
+      return -1;
+    if (ptag == T_AP && qtag == T_K)
+      return 1;
+    return ptag < qtag ? -1 : 1;
+  }
+  switch (ptag) {
+  case T_AP:
+    PUSH(ARG(p));
+    PUSH(ARG(q));
+    r = compare(FUN(p), FUN(q));
+    if (r != 0) {
+      POP(2);
+      return r;
+    }
+    q = TOP(0);
+    p = TOP(1);
+    POP(2);
+    goto top;
+  case T_INT:
+  case T_IO_CCALL:
+    x = GETVALUE(p);
+    y = GETVALUE(q);
+    return x < y ? -1 : x > y ? 1 : 0;
+  case T_PTR:
+    f = PTR(p);
+    g = PTR(q);
+    return f < g ? -1 : f > g ? 1 : 0;
+  default:
+    return 0;
+  }
+}
+
+bits_t *rnf_bits;
+
+void
+rnf_rec(NODEPTR n)
+{
+ top:
+  if (test_bit(rnf_bits, n))
+    return;
+  set_bit(rnf_bits, n);
+  n = evali(n);
+  if (GETTAG(n) == T_AP) {
+    PUSH(ARG(n));               /* protect from GC */
+    rnf_rec(FUN(n));
+    n = TOP(0);
+    POP(1);
+    goto top;
+  }
+}
+
+/* This is a yucky hack */
+int doing_rnf = 0;
+
+void
+rnf(value_t noerr, NODEPTR n)
+{
+  /* Mark visited nodes to avoid getting stuck in loops. */
+  rnf_bits = calloc(free_map_nwords, sizeof(bits_t));
+  if (!rnf_bits)
+    memerr();
+  if (doing_rnf)
+    ERR("recursive rnf()");
+  doing_rnf = (int)noerr;
+  rnf_rec(n);
+  doing_rnf = 0;
+  free(rnf_bits);
+}
+
+NODEPTR execio(NODEPTR n);
+
+/* Evaluate a node, returns when the node is in WHNF. */
+void
+eval(NODEPTR n)
+{
+  stackptr_t stk = stack_ptr;
+  NODEPTR x, y, z, w;
+  value_t xi, yi, r;
+#if WANT_FLOAT
+  double xd, yd, rd;
+#endif  /* WANT_FLOAT */
+  char *msg;
+  heapoffs_t l;
+
+/* Reset stack pointer and return. */
+#define RET do { stack_ptr = stk; return; } while(0)
+/* Check that there are at least n arguments, return if not. */
+#define CHECK(n) do { if (stack_ptr - stk < (n)) RET; } while(0)
+
+#define SETIND(n, x) do { SETTAG((n), T_IND); INDIR((n)) = (x); } while(0)
+#define GOIND(x) do { SETIND(n, (x)); goto ind; } while(0)
+#define GOAP(f,a) do { FUN((n)) = (f); ARG((n)) = (a); goto ap; } while(0)
+/* CHKARGN checks that there are at least N arguments.
+ * It also
+ *  - sets n to the "top" node
+ *  - set x, y, ... to the arguments
+ *  - pops N stack elements
+ * NOTE: No GC is allowed after these, since the stack has been popped.
+ */
+#define CHKARG0 do { } while(0)
+#define CHKARG1 do { CHECK(1); POP(1); n = TOP(-1); x = ARG(n); } while(0)
+#define CHKARG2 do { CHECK(2); POP(2); n = TOP(-1); y = ARG(n); x = ARG(TOP(-2)); } while(0)
+#define CHKARG3 do { CHECK(3); POP(3); n = TOP(-1); z = ARG(n); y = ARG(TOP(-2)); x = ARG(TOP(-3)); } while(0)
+#define CHKARG4 do { CHECK(4); POP(4); n = TOP(-1); w = ARG(n); z = ARG(TOP(-2)); y = ARG(TOP(-3)); x = ARG(TOP(-4)); } while(0)
+
+/* Alloc a possible GC action, e, between setting x and popping */
+#define CHKARGEV1(e)  do { CHECK(1); x = ARG(TOP(0)); e; POP(1); n = TOP(-1); } while(0)
+
+#define SETINT(n,r)    do { SETTAG((n), T_INT); SETVALUE((n), (r)); } while(0)
+#define SETDBL(n,d)    do { SETTAG((n), T_DBL); SETDBLVALUE((n), (d)); } while(0)
+#define OPINT1(e)      do { CHECK(1); xi = evalint(ARG(TOP(0)));                            e; POP(1); n = TOP(-1); } while(0);
+#define OPINT2(e)      do { CHECK(2); xi = evalint(ARG(TOP(0))); yi = evalint(ARG(TOP(1))); e; POP(2); n = TOP(-1); } while(0);
+#define OPDBL1(e)      do { CHECK(1); xd = evaldbl(ARG(TOP(0)));                            e; POP(1); n = TOP(-1); } while(0);
+#define OPDBL2(e)      do { CHECK(2); xd = evaldbl(ARG(TOP(0))); yd = evaldbl(ARG(TOP(1))); e; POP(2); n = TOP(-1); } while(0);
+#define ARITHUN(op)    do { OPINT1(r = op xi); SETINT(n, r); RET; } while(0)
+#define ARITHBIN(op)   do { OPINT2(r = xi op yi); SETINT(n, r); RET; } while(0)
+#define ARITHBINU(op)  do { OPINT2(r = (value_t)((uvalue_t)xi op (uvalue_t)yi)); SETINT(n, r); RET; } while(0)
+#define FARITHUN(op)   do { OPDBL1(rd = op xd); SETDBL(n, rd); RET; } while(0)
+#define FARITHBIN(op)  do { OPDBL2(rd = xd op yd); SETDBL(n, rd); RET; } while(0)
+#define CMP(op)        do { OPINT2(r = xi op yi); GOIND(r ? combTrue : combFalse); } while(0)
+#define CMPF(op)       do { OPDBL2(r = xd op yd); GOIND(r ? combTrue : combFalse); } while(0)
+#define CMPU(op)       do { OPINT2(r = (uvalue_t)xi op (uvalue_t)yi); GOIND(r ? combTrue : combFalse); } while(0)
+
+  for(;;) {
+    num_reductions++;
+#if FASTTAGS
+    l = LABEL(n);
+    enum node_tag tag = l < T_IO_BIND ? l : GETTAG(n);
+#else   /* FASTTAGS */
+    enum node_tag tag = GETTAG(n);
+#endif  /* FASTTAGS */
+    switch (tag) {
+    ind:
+      num_reductions++;
+    case T_IND:  n = INDIR(n); break;
+
+    ap:
+      num_reductions++;
+    case T_AP:   PUSH(n); n = FUN(n); break;
+
+    case T_STR:  GCCHECK(strNodes(strlen(STR(n)))); GOIND(mkStringC(STR(n)));
+    case T_INT:  RET;
+    case T_DBL:  RET;
+    case T_PTR:  RET;
+    case T_BADDYN: ERR1("FFI unknown %s", STR(n));
+
+    case T_S:    GCCHECK(2); CHKARG3; GOAP(new_ap(x, z), new_ap(y, z));                     /* S x y z = x z (y z) */
+    case T_SS:   GCCHECK(3); CHKARG4; GOAP(new_ap(x, new_ap(y, w)), new_ap(z, w));          /* S' x y z w = x (y w) (z w) */
+    case T_K:                CHKARG2; GOIND(x);                                             /* K x y = *x */
+    case T_A:                CHKARG2; GOIND(y);                                             /* A x y = *y */
+    case T_U:                CHKARG2; GOAP(y, x);                                           /* U x y = y x */
+    case T_I:                CHKARG1; GOIND(x);                                             /* I x = *x */
+    case T_Y:                CHKARG1; GOAP(x, n);                                           /* n@(Y x) = x n */
+    case T_B:    GCCHECK(1); CHKARG3; GOAP(x, new_ap(y, z));                                /* B x y z = x (y z) */
+    case T_BB:   GCCHECK(2); CHKARG4; GOAP(new_ap(x, y), new_ap(z, w));                     /* B' x y z w = x y (z w) */
+    case T_Z:                CHKARG3; GOAP(x, y);                                           /* Z x y z = x y */
+    case T_C:    GCCHECK(1); CHKARG3; GOAP(new_ap(x, z), y);                                /* C x y z = x z y */
+    case T_CC:   GCCHECK(2); CHKARG4; GOAP(new_ap(x, new_ap(y, w)), z);                     /* C' x y z w = x (y w) z */
+    case T_P:    GCCHECK(1); CHKARG3; GOAP(new_ap(z, x), y);                                /* P x y z = z x y */
+    case T_R:    GCCHECK(1); CHKARG3; GOAP(new_ap(y, z), x);                                /* R x y z = y z x */
+    case T_O:    GCCHECK(1); CHKARG4; GOAP(new_ap(w, x), y);                                /* O x y z w = w x y */
+
+    case T_ADD:  ARITHBIN(+);
+    case T_SUB:  ARITHBIN(-);
+    case T_MUL:  ARITHBIN(*);
+    case T_QUOT: ARITHBIN(/);
+    case T_REM:  ARITHBIN(%);
+    case T_SUBR: OPINT2(r = yi - xi); SETINT(n, r); RET;
+    case T_UQUOT: ARITHBINU(/);
+    case T_UREM:  ARITHBINU(%);
+    case T_NEG:  ARITHUN(-);
+    case T_AND:  ARITHBIN(&);
+    case T_OR:   ARITHBIN(|);
+    case T_XOR:  ARITHBIN(^);
+    case T_INV:  ARITHUN(~);
+    case T_SHL:  ARITHBIN(<<);
+    case T_SHR:  ARITHBINU(>>);
+    case T_ASHR: ARITHBIN(>>);
+
+#if WANT_FLOAT
+    case T_FADD: FARITHBIN(+);
+    case T_FSUB: FARITHBIN(-);
+    case T_FMUL: FARITHBIN(*);
+    case T_FDIV: FARITHBIN(/);
+    case T_FNEG: FARITHUN(-);
+    case T_ITOF: OPINT1(rd = (double)xi); SETDBL(n, rd); RET;
+    case T_FEQ: CMPF(==);
+    case T_FNE: CMPF(!=);
+    case T_FLT: CMPF(<);
+    case T_FLE: CMPF(<=);
+    case T_FGT: CMPF(>);
+    case T_FGE: CMPF(>=);
+    case T_FREAD:
+      CHECK(1);
+      msg = evalstring(ARG(TOP(0)));
+      xd = strtod(msg, NULL);
+      free(msg);
+
+      POP(1);
+      n = TOP(-1);
+      
+      GOIND(mkDbl(xd));
+
+    case T_FSHOW:
+      // check that the double exists
+      CHECK(1);
+      // evaluate it
+      xd = evaldbl(ARG(TOP(0)));
+      // turn it into a string
+      char str[30];
+      /* Using 16 decimals will lose some precision.
+       * 17 would keep the precision, but it frequently looks very ugly.
+       */
+      (void)snprintf(str, 25, "%.16g", xd);
+      if (!strchr(str, '.') && !strchr(str, 'e') && !strchr(str, 'E')) {
+        /* There is no decimal point and no exponent, so add a decimal point */
+        strcat(str, ".0");
+      }
+
+      // turn it into a mhs string
+      GCCHECK(strNodes(strlen(str)));
+      NODEPTR s = mkStringC(str);
+
+      // remove the double from the stack
+      POP(1);
+      n = TOP(-1);
+      // update n to be s
+      GOIND(s);
+#endif  /* WANT_FLOAT */
+
+    /* Retag a word sized value, keeping the value bits */
+#define CONV(t) do { CHECK(1); x = evali(ARG(TOP(0))); GCCHECK(1); y = alloc_node(t); SETVALUE(y, GETVALUE(x)); POP(1); n = TOP(-1); GOIND(y); } while(0)
+    case T_TODBL: CONV(T_DBL);
+    case T_TOINT: CONV(T_INT);
+    case T_TOPTR: CONV(T_PTR);
+#undef CONV
+
+    case T_EQ:   CMP(==);
+    case T_NE:   CMP(!=);
+    case T_LT:   CMP(<);
+    case T_LE:   CMP(<=);
+    case T_GT:   CMP(>);
+    case T_GE:   CMP(>=);
+    case T_ULT:  CMPU(<);
+    case T_ULE:  CMPU(<=);
+    case T_UGT:  CMPU(>);
+    case T_UGE:  CMPU(>=);
+
+    case T_NOMATCH:
+      if (doing_rnf) RET;
+      {
+      CHECK(3);
+      msg = evalstring(ARG(TOP(0)));
+      xi = evalint(ARG(TOP(1)));
+      yi = evalint(ARG(TOP(2)));
+      int sz = strlen(msg) + 100;
+      char *res = malloc(sz);
+#if WANT_STDIO
+      snprintf(res, sz, "no match at %s, line %"PRIvalue", col %"PRIvalue, msg, xi, yi);
+#else  /* WANT_STDIO */
+      strcpy(res, "no match");
+#endif  /* WANT_STDIO */
+      POP(2);
+      GCCHECK(strNodes(strlen(res)));
+      ARG(TOP(0)) = mkStringC(res);
+      free(res);
+      free(msg);
+      goto err;                 /* XXX not right message if the error is caught */
+      }
+    case T_NODEFAULT:
+      if (doing_rnf) RET;
+      {
+      CHECK(1);
+      msg = evalstring(ARG(TOP(0)));
+      int sz = strlen(msg) + 100;
+      char *res = malloc(sz);
+
+#if WANT_STDIO
+      snprintf(res, sz, "no default for %s", msg);
+#else  /* WANT_STDIO */
+      strcpy(res, "no default");
+#endif  /* WANT_STDIO */
+      GCCHECK(strNodes(strlen(res)));
+      ARG(TOP(0)) = mkStringC(res);
+      free(res);
+      free(msg);
+      goto err;                 /* XXX not right message if the error is caught */
+      }
+    case T_ERROR:
+      if (doing_rnf) RET;
+    err:
+      if (cur_handler) {
+        /* Pass the string to the handler */
+        CHKARG1;
+        cur_handler->hdl_exn = x;
+        longjmp(cur_handler->hdl_buf, 1);
+      } else {
+        /* No handler, so just die. */
+        CHKARGEV1(msg = evalstring(x));
+#if WANT_STDIO
+        fprintf(stderr, "mhs: %s\n", msg);
+        exit(1);
+#else  /* WANT_STDIO */
+        ERR1("error: %s", msg);
+#endif  /* WANT_STDIO */
+      }
+    case T_SEQ:  CHECK(2); eval(ARG(TOP(0))); POP(2); n = TOP(-1); y = ARG(n); GOIND(y); /* seq x y = eval(x); y */
+
+    case T_EQUAL:
+      CHECK(2); r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(r==0 ? combTrue : combFalse);
+    case T_COMPARE:
+      CHECK(2); r = compare(ARG(TOP(0)), ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(r < 0 ? combLT : r > 0 ? combGT : combEQ);
+
+    case T_RNF:
+      if (doing_rnf) RET;
+      CHECK(2);
+      xi = evalint(ARG(TOP(0)));
+      rnf(xi, ARG(TOP(1))); POP(2); n = TOP(-1); GOIND(combUnit);
+
+    case T_IO_PERFORMIO:
+      if (doing_rnf) RET;
+      CHKARGEV1(x = execio(x)); GOIND(x);
+
+    case T_IO_BIND:
+    case T_IO_THEN:
+    case T_IO_RETURN:
+    case T_IO_SERIALIZE:
+    case T_IO_PRINT:
+    case T_IO_DESERIALIZE:
+    case T_IO_GETARGS:
+    case T_IO_DROPARGS:
+    case T_IO_GETTIMEMILLI:
+    case T_IO_CCALL:
+    case T_IO_CATCH:
+    case T_NEWCASTRING:
+    case T_PEEKCASTRING:
+      RET;
+
+    case T_DYNSYM:
+      /* A dynamic FFI lookup */
+      CHECK(1);
+      msg = evalstring(ARG(TOP(0)));
+      GCCHECK(1);
+      x = ffiNode(msg);
+      free(msg);
+      POP(1);
+      n = TOP(-1);
+      GOIND(x);
+
+#if 0
+    case T_ISINT:
+      CHECK(1);
+      x = evali(ARG(TOP(0)));
+      n = TOP(0);
+      POP(1);
+      GOIND(GETTAG(x) == T_INT ? combTrue : combFalse);
+
+    case T_ISIO:
+      CHECK(1);
+      x = evali(ARG(TOP(0)));
+      n = TOP(0);
+      POP(1);
+      l = GETTAG(x);
+      GOIND(T_IO_BIND <= l && l <= T_IO_FLUSH ? combTrue : combFalse);
+#endif
+    default:
+      ERR1("eval tag %d", GETTAG(n));
+    }
+  }
+}
+
+/* This is the interpreter for the IO monad operations. */
+/* It takes a monadic expression and returns the unwrapped expression (unevaluated). */
+NODEPTR
+execio(NODEPTR n)
+{
+  stackptr_t stk = stack_ptr;
+  NODEPTR f, x;
+  int c;
+  char *name;
+#if WANT_STDIO
+  void *ptr;
+  int hdr;
+#endif  /* WANT_STDIO */
+
+/* IO operations need all arguments, anything else should not happen. */
+#define CHECKIO(n) do { if (stack_ptr - stk != (n+1)) {ERR("CHECKIO");}; } while(0)
+#define RETIO(p) do { stack_ptr = stk; return (p); } while(0)
+#define GCCHECKSAVE(p, n) do { PUSH(p); GCCHECK(n); (p) = TOP(0); POP(1); } while(0)
+
+ top:
+  n = evali(n);
+  PUSH(n);
+  for(;;) {
+    num_reductions++;
+    switch (GETTAG(n)) {
+    case T_IND:
+      n = INDIR(n);
+      TOP(0) = n;
+      break;
+    case T_AP:
+      n = FUN(n);
+      PUSH(n);
+      break;
+    case T_IO_BIND:
+      CHECKIO(2);
+      {
+        /* Use associativity to avoid deep execio recursion. */
+        /* (m >>= g) >>= h      ===  m >>= (\ x -> g x >>= h) */
+        /* BIND ((BIND m) g) h  ===  BIND m (\ x -> BIND (g x) h) == (BIND m) (((C' BIND) g) h)*/
+        NODEPTR bm;
+        NODEPTR bmg = evali(ARG(TOP(1)));
+        GCCHECKSAVE(bmg, 4);
+        if (GETTAG(bmg) == T_AP && GETTAG(bm = indir(FUN(bmg))) == T_AP && GETTAG(indir(FUN(bm))) == T_IO_BIND) {
+          NODEPTR g = ARG(bmg);
+          NODEPTR h = ARG(TOP(2));
+          n = new_ap(bm, new_ap(new_ap(new_ap(combCC, combIOBIND), g), h));
+          POP(3);
+          goto top;
+        }
+      }
+
+      x = execio(ARG(TOP(1)));  /* first argument, unwrapped */
+
+      /* Do a GC check, make sure we keep the x live */
+      GCCHECKSAVE(x, 1);
+
+      f = ARG(TOP(2));          /* second argument, the continuation */
+      n = new_ap(f, x);
+      POP(3);
+      goto top;
+    case T_IO_THEN:
+      CHECKIO(2);
+      (void)execio(ARG(TOP(1))); /* first argument, unwrapped, ignored */
+      n = ARG(TOP(2));          /* second argument, the continuation */
+      POP(3);
+      goto top;
+    case T_IO_RETURN:
+      CHECKIO(1);
+      n = ARG(TOP(1));
+      RETIO(n);
+#if WANT_STDIO
+    case T_IO_PRINT:
+      hdr = 0;
+      goto ser;
+    case T_IO_SERIALIZE:
+      hdr = 1;
+    ser:
+      CHECKIO(2);
+      ptr = evalptr(ARG(TOP(1)));
+      x = evali(ARG(TOP(2)));
+      //x = ARG(TOP(1));
+      print(ptr, x, hdr);
+      fprintf(ptr, "\n");
+      RETIO(combUnit);
+    case T_IO_DESERIALIZE:
+      CHECKIO(1);
+      ptr = evalptr(ARG(TOP(1)));
+      gc();                     /* parser runs without GC */
+      n = parse_FILE(ptr);
+      RETIO(n);
+#endif
+    case T_IO_GETARGS:
+      CHECKIO(0);
+      {
+      /* compute total number of characters */
+        size_t size = 0;
+        for(int i = 0; i < glob_argc; i++) {
+          size += strNodes(strlen(glob_argv[i]));
+        }
+        /* The returned list will need a CONS for each string, and a NIL */
+        size += glob_argc * 2 + 1;
+        GCCHECK(size);
+        /*
+        printf("total size %d:", size);
+        for(int i = 0; i < glob_argc; i++)
+          printf(" %s", glob_argv[i]);
+        printf("\n");
+        */
+        n = mkNil();
+        for(int i = glob_argc-1; i >= 0; i--) {
+          n = mkCons(mkString(glob_argv[i], strlen(glob_argv[i])), n);
+        }
+      }
+      RETIO(n);
+    case T_IO_DROPARGS:
+      CHECKIO(1);
+      c = (int)evalint(ARG(TOP(1)));
+      if (c > glob_argc)
+        c = glob_argc;
+      glob_argc -= c;
+      glob_argv += c;
+      RETIO(combUnit);
+    case T_IO_CCALL:
+      {
+        int a = (int)GETVALUE(n);
+        funptr_t f = ffi_table[a].ffi_fun;
+        value_t ri, xi, yi;
+        double rd, xd;
+        void *xp, *yp, *rp;
+#define INTARG(n) evalint(ARG(TOP(n)))
+#define PTRARG(n) evalptr(ARG(TOP(n)))
+#define DBLARG(n) evaldbl(ARG(TOP(n)))
+#define FFIV(n) CHECKIO(n)
+#define FFI(n)  CHECKIO(n); GCCHECK(1)
+        /* This isn't great, but this is MicroHs, so it's good enough. */
+        switch (ffi_table[a].ffi_how) {
+        case FFI_V:   FFIV(0);                                      (*                               f)();                     RETIO(combUnit);
+        case FFI_I:   FFI (0);                                 ri = (*(value_t (*)(void            ))f)();      n = mkInt(ri); RETIO(n);
+        case FFI_i:   FFI (0);                                 ri = (*(int     (*)(void            ))f)();      n = mkInt(ri); RETIO(n);
+        case FFI_IV:  FFIV(1); xi = INTARG(1);                      (*(void    (*)(value_t         ))f)(xi);                   RETIO(combUnit);
+        case FFI_II:  FFI (1); xi = INTARG(1);                 ri = (*(value_t (*)(value_t         ))f)(xi);    n = mkInt(ri); RETIO(n);
+        case FFI_IIV: FFIV(2); xi = INTARG(1); yi = INTARG(2);      (*(void    (*)(value_t, value_t))f)(xi,yi);                RETIO(combUnit);
+        case FFI_III: FFI (2); xi = INTARG(1); yi = INTARG(2); ri = (*(value_t (*)(value_t, value_t))f)(xi,yi); n = mkInt(ri); RETIO(n);
+        case FFI_DD:  FFI (1); xd = DBLARG(1);                 rd = (*(double  (*)(double          ))f)(xd);    n = mkDbl(rd); RETIO(n);
+        case FFI_PI:  FFI (1); xp = PTRARG(1);                 ri = (*(value_t (*)(void*           ))f)(xp);    n = mkInt(ri); RETIO(n);
+        case FFI_Pi:  FFI (1); xp = PTRARG(1);                 ri = (*(int     (*)(void*           ))f)(xp);    n = mkInt(ri); RETIO(n);
+        case FFI_IP:  FFI (1); xi = INTARG(1);                 rp = (*(void*   (*)(value_t         ))f)(xi);    n = mkPtr(rp); RETIO(n);
+        case FFI_PP:  FFI (1); xp = PTRARG(1);                 rp = (*(void*   (*)(void*           ))f)(xp);    n = mkPtr(rp); RETIO(n);
+        case FFI_PV:  FFI (1); xp = PTRARG(1);                      (*(void    (*)(void*           ))f)(xp);                   RETIO(combUnit);
+        case FFI_PPI: FFI (2); xp = PTRARG(1);yp = PTRARG(2);  ri = (*(value_t (*)(void*, void*    ))f)(xp,yp); n = mkInt(ri); RETIO(n);
+        case FFI_PPP: FFI (2); xp = PTRARG(1);yp = PTRARG(2);  rp = (*(void*   (*)(void*, void*    ))f)(xp,yp); n = mkPtr(rp); RETIO(n);
+        case FFI_IPI: FFI (2); xi = INTARG(1);yp = PTRARG(2);  ri = (*(value_t (*)(value_t, void*  ))f)(xi,yp); n = mkInt(ri); RETIO(n);
+        case FFI_iPi: FFI (2); xi = INTARG(1);yp = PTRARG(2);  ri = (*(int     (*)(int,   void*    ))f)(xi,yp); n = mkInt(ri); RETIO(n);
+        default: ERR("T_IO_CCALL");
+        }
+      }
+
+    case T_IO_CATCH:
+      {
+        struct handler *h = malloc(sizeof *h);
+        if (!h)
+          memerr();
+        CHECKIO(2);
+        h->hdl_old = cur_handler;
+        h->hdl_stack = stack_ptr;
+        cur_handler = h;
+        if (setjmp(h->hdl_buf)) {
+          /* An exception occurred: */
+          stack_ptr = h->hdl_stack;
+          x = h->hdl_exn;       /* exception value */
+          GCCHECKSAVE(x, 1);
+          f = ARG(TOP(2));      /* second argument, handler */
+          n = new_ap(f, x);
+          cur_handler = h->hdl_old;
+          free(h);
+          POP(3);
+          goto top;
+        } else {
+          /* Normal execution: */
+          n = execio(ARG(TOP(1))); /* execute first argument */
+          cur_handler = h->hdl_old; /* restore old handler */
+          free(h);
+          RETIO(n);             /* return result */
+        }
+      }
+
+    case T_NEWCASTRING:
+      CHECKIO(1);
+      name = evalstring(ARG(TOP(1)));
+      GCCHECK(1);
+      n = alloc_node(T_PTR);
+      PTR(n) = name;
+      RETIO(n);
+
+    case T_PEEKCASTRING:
+      CHECKIO(1);
+      name = evalptr(ARG(TOP(1)));
+      GCCHECK(strNodes(strlen(name)));
+      RETIO(mkStringC(name));
+
+    default:
+      ERR1("execio tag %d", GETTAG(n));
+    }
+  }
+}
+
+heapoffs_t
+memsize(const char *p)
+{
+  heapoffs_t n = atoi(p);
+  while (isdigit(*p))
+    p++;
+  switch (*p) {
+  case 'k': case 'K': n *= 1000; break;
+  case 'm': case 'M': n *= 1000000; break;
+  case 'g': case 'G': n *= 1000000000; break;
+  default: break;
+  }
+  return n;
+}
+
+extern uint8_t *combexpr;
+extern int combexprlen;
+
+int
+main(int argc, char **argv)
+{
+  char *inname = 0;
+  char **av;
+  NODEPTR prog;
+  int inrts;
+#if WANT_STDIO
+  char *outname = 0;
+  size_t file_size;
+#endif
+  
+#if 0
+  /* MINGW doesn't do buffering right */
+  setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
+  setvbuf(stderr, NULL, _IONBF, BUFSIZ);
+#endif
+
+  argc--, argv++;
+  glob_argv = argv;
+  for (av = argv, inrts = 0; argc--; argv++) {
+    char *p = *argv;
+    if (inrts) {
+      if (strcmp(p, "-RTS") == 0) {
+        inrts = 0;
+      } else {
+        if (strcmp(p, "-v") == 0)
+          verbose++;
+        else if (strncmp(p, "-H", 2) == 0)
+          heap_size = memsize(&p[2]);
+        else if (strncmp(p, "-K", 2) == 0)
+          stack_size = memsize(&p[2]);
+        else if (strncmp(p, "-r", 2) == 0)
+          inname = &p[2];
+#if WANT_STDIO
+        else if (strncmp(p, "-o", 2) == 0)
+          outname = &p[2];
+#endif  /* WANT_STDIO */
+        else
+          ERR("Usage: eval [+RTS [-v] [-Hheap-size] [-Kstack-size] [-rFILE] [-oFILE] -RTS] arg ...");
+      }
+    } else {
+      if (strcmp(p, "+RTS") == 0) {
+        inrts = 1;
+      } else {
+        *av++ = p;
+      }
+    }
+  }
+  glob_argc = av - glob_argv;
+
+  if (inname == 0)
+    inname = "out.comb";
+
+  init_nodes();
+  stack = malloc(sizeof(NODEPTR) * stack_size);
+  if (!stack)
+    memerr();
+
+  if (combexpr) {
+    int c;
+    struct BFILE_buffer ibf = { { getb_buf, ungetb_buf, closeb_buf }, combexprlen, 0, combexpr };
+    BFILE *bf = (BFILE*)&ibf;
+    c = bf->getb(bf);
+    /* Compressed combinators start with a 'Z', otherwise 'v' (for version) */
+    if (c == 'Z') {
+      /* add compressor transducer */
+      bf = add_lzw_decompressor(bf);
+    } else {
+      /* put it back, we need it */
+      bf->ungetb(c, bf);
+    }
+    prog = parse_top(bf);
+    bf->closeb(bf);
+  } else {
+#if WANT_STDIO
+    prog = parse_file(inname, &file_size);
+#else
+    ERR("no stdio");
+#endif
+  }
+
+  PUSH(prog); gc(); prog = TOP(0); POP(1);
+#if WANT_STDIO
+  heapoffs_t start_size = num_marked;
+  if (outname) {
+    /* Save GCed file (smaller), and exit. */
+    FILE *out = fopen(outname, "w");
+    if (!out)
+      ERR1("cannot open output file %s", outname);
+    print(out, prog, 1);
+    fclose(out);
+    exit(0);
+  }
+  if (verbose > 2) {
+    //pp(stdout, prog);
+    print(stdout, prog, 1);
+  }
+#endif
+  run_time -= GETTIMEMILLI();
+  NODEPTR res = execio(prog);
+  res = evali(res);
+  run_time += GETTIMEMILLI();
+#if WANT_STDIO
+  if (0) {
+    FILE *out = fopen("prog.comb", "w");
+    print(out, prog, 1);
+    fclose(out);
+  }
+  if (verbose) {
+    if (verbose > 1) {
+      printf("\nmain returns ");
+      pp(stdout, res);
+      printf("node size=%"PRIheap", heap size bytes=%"PRIheap"\n", (heapoffs_t)NODE_SIZE, heap_size * NODE_SIZE);
+    }
+    setlocale(LC_NUMERIC, "");  /* Make %' work on platforms that support it */
+    printf("%"PCOMMA"15"PRIheap" combinator file size\n", (heapoffs_t)file_size);
+    printf("%"PCOMMA"15"PRIheap" cells at start\n", start_size);
+    printf("%"PCOMMA"15"PRIheap" cells heap size (%"PCOMMA""PRIheap" bytes)\n", heap_size, heap_size * NODE_SIZE);
+    printf("%"PCOMMA"15"PRIcounter" cells allocated (%"PCOMMA".1f Mbyte/s)\n", num_alloc, num_alloc * NODE_SIZE / ((double)run_time / 1000) / 1000000);
+    printf("%"PCOMMA"15"PRIcounter" GCs\n", num_gc);
+    printf("%"PCOMMA"15"PRIcounter" max cells used\n", max_num_marked);
+    printf("%"PCOMMA"15"PRIcounter" reductions (%"PCOMMA".1f Mred/s)\n", num_reductions, num_reductions / ((double)run_time / 1000) / 1000000);
+    printf("%15.2fs total expired time\n", (double)run_time / 1000);
+    printf("%15.2fs total gc time\n", (double)gc_mark_time / 1000);
+#if GCRED && 0
+    printf(" GC reductions A=%d, K=%d, I=%d, int=%d\n", red_a, red_k, red_i, red_int);
+#endif
+  }
+#endif  /* WANT_STDIO */
+  exit(0);
+}
diff --git a/tests/Arith.hs b/tests/Arith.hs
new file mode 100644
--- /dev/null
+++ b/tests/Arith.hs
@@ -0,0 +1,8 @@
+module Arith(module Arith) where
+import Prelude
+
+main :: IO ()
+main = do
+  putStrLn $ show [ op x y | x <- [0 - 5,0 - 2,0 - 1,0,1,2,5]::[Int], y <- [0 - 5,0 - 2,0 - 1,0,1,2,5::Int], op <- [(+),( - ),(*)] ]
+  putStrLn $ show [ op x y | x <- [0 - 5,0 - 2,0 - 1,0,1,2,5]::[Int], y <- [0 - 5,0 - 2,0 - 1,1,2,5::Int], op <- [quot, rem] ]
+  putStrLn $ show [ op x y | x <- [0 - 5,0 - 2,0 - 1,0,1,2,5]::[Int], y <- [0 - 5,0 - 2,0 - 1,0,1,2,5::Int], op <- [(==),(/=),(<),(<=),(>),(>=)] ]
diff --git a/tests/Arith.ref b/tests/Arith.ref
new file mode 100644
--- /dev/null
+++ b/tests/Arith.ref
@@ -0,0 +1,3 @@
+[-10,0,25,-7,-3,10,-6,-4,5,-5,-5,0,-4,-6,-5,-3,-7,-10,0,-10,-25,-7,3,10,-4,0,4,-3,-1,2,-2,-2,0,-1,-3,-2,0,-4,-4,3,-7,-10,-6,4,5,-3,1,2,-2,0,1,-1,-1,0,0,-2,-1,1,-3,-2,4,-6,-5,-5,5,0,-2,2,0,-1,1,0,0,0,0,1,-1,0,2,-2,0,5,-5,0,-4,6,-5,-1,3,-2,0,2,-1,1,1,0,2,0,1,3,-1,2,6,-4,5,-3,7,-10,0,4,-4,1,3,-2,2,2,0,3,1,2,4,0,4,7,-3,10,0,10,-25,3,7,-10,4,6,-5,5,5,0,6,4,5,7,3,10,10,0,25]
+[1,0,2,-1,5,0,-5,0,-2,-1,-1,0,0,-2,1,0,2,0,-2,0,-1,0,0,-2,0,-1,0,-1,1,0,-1,0,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,-1,0,1,0,0,1,0,1,0,2,-1,0,-2,0,2,0,1,0,0,2,-1,0,-2,1,-5,0,5,0,2,1,1,0]
+[True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True]
diff --git a/tests/Case.hs b/tests/Case.hs
new file mode 100644
--- /dev/null
+++ b/tests/Case.hs
@@ -0,0 +1,70 @@
+module Case(module Case) where
+import Prelude
+
+main :: IO ()
+main = do
+  putStrLn $ show $ f1 False
+  putStrLn $ show  $ f2 False
+  putStrLn $ show  $ f2 True
+--  putStrLn $ showInt  $ f3 False
+  putStrLn $ show $ map f4 [R,G,B]
+  putStrLn $ show $ f5 [(3::Int,4::Int)]
+  --putStrLn $ showInt $ f6 [(3,4)]
+  putStrLn $ show $ [ i | Just i <- [Just (1::Int), Nothing, Just 2] ]
+  (x,y) <- return (2::Int,3::Int)
+  putStrLn $ show $ x + y
+
+f1 :: Bool -> Bool
+f1 b =
+  case b of
+    c -> c
+
+f2 :: Bool -> Int
+f2 b =
+  case b of
+    True -> 1
+    _    -> 0
+
+f3 :: Bool -> Int
+f3 b =
+  case b of
+    True -> 1
+
+data RGB = R | G | B
+
+instance Show RGB where
+  show = showRGB
+
+showRGB :: RGB -> String
+showRGB c =
+  case c of
+    R -> "R"
+    G -> "G"
+    B -> "B"
+
+nextRGB :: RGB -> RGB
+nextRGB c =
+  case c of
+    R -> G
+    G -> B
+    B -> R
+
+f4 :: RGB -> RGB
+f4 c =
+  case nextRGB c of
+    R -> R
+    k -> nextRGB k
+
+f5 :: [(Int, Int)] -> Int
+f5 arg =
+  case arg of
+    [] -> 0
+    (x,y) : _ -> x+y
+
+{-
+f6 :: [(Int, Int)] -> Int
+f6 arg =
+  case arg of
+    [] -> 0
+    (x,y) : ((u,v) : _) -> x+y
+-}
diff --git a/tests/Case.ref b/tests/Case.ref
new file mode 100644
--- /dev/null
+++ b/tests/Case.ref
@@ -0,0 +1,7 @@
+False
+0
+1
+[B,R,R]
+7
+[1,2]
+5
diff --git a/tests/Catch.hs b/tests/Catch.hs
new file mode 100644
--- /dev/null
+++ b/tests/Catch.hs
@@ -0,0 +1,22 @@
+module Catch(main) where
+import Prelude
+import Control.Exception
+
+f :: [Int] -> Int
+f (_:_) = 99
+
+class C a where
+  m :: a -> Int
+
+instance C ()
+
+main :: IO ()
+main = do
+  x <- catch (return ("o" ++ "k")) (\ _ -> return "what?")
+  putStrLn $ show x
+  y <- catch (do { error "bang!"; return "yyy" }) (\ (Exn s) -> return s)
+  putStrLn $ show y
+  z <- catch (do { print (f []); return "zzz" })  (\ (Exn s) -> return s)
+  putStrLn $ show z
+  w <- catch (do { print (m ()); return "www" })  (\ (Exn s) -> return s)
+  putStrLn $ show w
diff --git a/tests/Catch.ref b/tests/Catch.ref
new file mode 100644
--- /dev/null
+++ b/tests/Catch.ref
@@ -0,0 +1,4 @@
+"ok"
+"bang!"
+"no match at ./Catch.hs, line 6, col 1"
+"no default for C.m"
diff --git a/tests/Class.hs b/tests/Class.hs
new file mode 100644
--- /dev/null
+++ b/tests/Class.hs
@@ -0,0 +1,45 @@
+module Class(main) where
+import Primitives
+import Prelude
+
+class Eqq a where
+  (===) :: a -> a -> Bool
+  (/==) :: a -> a -> Bool
+  x /== y = not (x === y)
+
+instance Eqq Int where
+  (===) = primIntEQ
+
+instance Eqq Char where
+  (===) = primCharEQ
+
+instance forall a . Eqq a => Eqq [a] where
+  []     === []      =  True
+  (x:xs) === (y:ys)  =  x === y && xs === ys
+  _      === _       =  False
+
+class (Eqq a) => Ordd a where
+  (<==) :: a -> a -> Bool
+
+instance Ordd Int where
+  (<==) = (<=)
+
+instance forall a b . (Eqq a, Eqq b) => Eqq (a, b) where
+  (a, b) === (a', b')  =  a === a' && b === b'
+
+f :: forall a . Eqq a => a -> Bool
+f x = x === x
+
+g :: forall a . Ordd a => a -> Bool
+g x = x /== x
+
+h :: forall a b . (Eqq a, Eqq b) => a -> b -> Bool
+h a b = a === a && b === b
+
+main :: IO ()
+main = do
+  putStrLn $ show $ f (5::Int)
+  putStrLn $ show $ g (5::Int)
+  putStrLn $ show $ h (5::Int) 'a'
+  putStrLn $ show $ f [88::Int]
+  putStrLn $ show $ f (1::Int, 'a')
diff --git a/tests/Class.ref b/tests/Class.ref
new file mode 100644
--- /dev/null
+++ b/tests/Class.ref
@@ -0,0 +1,5 @@
+True
+False
+True
+True
+True
diff --git a/tests/Default.hs b/tests/Default.hs
new file mode 100644
--- /dev/null
+++ b/tests/Default.hs
@@ -0,0 +1,9 @@
+module Default(main) where
+import Prelude
+default (Int, Double)
+
+main :: IO ()
+main = do
+  print 1
+  print 1.2
+  print []   -- defaults to Int, a little weird
diff --git a/tests/Default.ref b/tests/Default.ref
new file mode 100644
--- /dev/null
+++ b/tests/Default.ref
@@ -0,0 +1,3 @@
+1
+1.2
+[]
diff --git a/tests/Enum.hs b/tests/Enum.hs
new file mode 100644
--- /dev/null
+++ b/tests/Enum.hs
@@ -0,0 +1,12 @@
+module Enum(main) where
+import Prelude
+
+main :: IO ()
+main = do
+  putStrLn $ show [1::Int .. 5]
+  putStrLn $ show [1::Int .. 1]
+  putStrLn $ show [1::Int .. 0]
+  putStrLn $ show [1,3::Int .. 10]
+  putStrLn $ show [1::Int, -1 .. -5]
+  putStrLn $ show $ take 5 [1::Int ..]
+  putStrLn $ show $ take 5 [1,3::Int ..]
diff --git a/tests/Enum.ref b/tests/Enum.ref
new file mode 100644
--- /dev/null
+++ b/tests/Enum.ref
@@ -0,0 +1,7 @@
+[1,2,3,4,5]
+[1]
+[]
+[1,3,5,7,9]
+[1,-1,-3,-5]
+[1,2,3,4,5]
+[1,3,5,7,9]
diff --git a/tests/Eq.hs b/tests/Eq.hs
new file mode 100644
--- /dev/null
+++ b/tests/Eq.hs
@@ -0,0 +1,20 @@
+module Eq(main) where
+import Prelude
+import Data.Double()
+
+main :: IO ()
+main = do
+  putStrLn $ show [1==(1::Int), 'a'=='a', 1.1==(1.1::Double),
+                   True==True, False==False,
+                   (Nothing::Maybe Int)==Nothing, Just (1::Int) == Just 1,
+                   [1,2,3] == [1,2,3::Int],
+                   (1,2) == (1::Int,2::Int),
+                   (Left 1 :: Either Int Char) == Left 1, (Right 'a' :: Either Int Char) == Right 'a'
+                  ]
+  putStrLn $ show [1==(2::Int), 'a'=='b', 1.1==(1.2::Double),
+                   True==False, False==True,
+                   Nothing==Just (1::Int), Just (1::Int) == Nothing,
+                   [1,2,3] == [1,2,4::Int],
+                   (1,2) == (1::Int,4::Int),
+                   Left (1::Int) == Right 'a', Right 'a' == Left (1::Int)
+                  ]
diff --git a/tests/Eq.ref b/tests/Eq.ref
new file mode 100644
--- /dev/null
+++ b/tests/Eq.ref
@@ -0,0 +1,2 @@
+[True,True,True,True,True,True,True,True,True,True,True]
+[False,False,False,False,False,False,False,False,False,False,False]
diff --git a/tests/Exists.hs b/tests/Exists.hs
new file mode 100644
--- /dev/null
+++ b/tests/Exists.hs
@@ -0,0 +1,42 @@
+module Exists(main) where
+import Prelude
+
+data E = forall a . Show a => C a
+
+es :: [E]
+es = [C True, C 'a', wrap (C (1::Int))]
+
+instance Show E where
+  show (C a) = show a
+
+wrap :: E -> E
+wrap (C a) = C [a]
+
+eio :: IO E
+eio = return (C True)
+
+someE :: E
+someE = C (Just 'a')
+
+foo :: E -> String
+foo x | C a <- x = show a
+
+bar :: E -> String
+bar x =
+  case x of
+    C a -> show a
+
+data T a = Show a => T a
+
+sh :: forall a . T a -> String
+sh (T a) = show a
+
+main :: IO ()
+main = do
+  print es
+  C x <- eio
+  print x
+  putStrLn (foo someE)
+  putStrLn (bar someE)
+  putStrLn (sh (T True))
+  putStrLn (sh (T 'x'))
diff --git a/tests/Exists.ref b/tests/Exists.ref
new file mode 100644
--- /dev/null
+++ b/tests/Exists.ref
@@ -0,0 +1,6 @@
+[True,'a',[1]]
+True
+Just 'a'
+Just 'a'
+True
+'x'
diff --git a/tests/ExistsBug.hs b/tests/ExistsBug.hs
new file mode 100644
--- /dev/null
+++ b/tests/ExistsBug.hs
@@ -0,0 +1,18 @@
+module Exists(main) where
+import Prelude
+
+data E = forall a . Show a => C a
+
+es :: [E]
+es = [C True, C 'a']
+
+instance Show E where
+  show (C a) = show a
+
+xx :: Int
+xx =
+  let f (C a) = a
+  in  length $ map f [C 'a', C True]
+
+main :: IO ()
+main = print es
diff --git a/tests/FArith.hs b/tests/FArith.hs
new file mode 100644
--- /dev/null
+++ b/tests/FArith.hs
@@ -0,0 +1,24 @@
+module FArith(module FArith) where
+
+import Prelude
+import Text.String
+
+list1 :: [Double]
+list1 = [-100.343241, -53.3248973, 0.0, 1.0, 1.23453523, 3243534.34534, 999.999]
+
+list2 :: [Double]
+list2 = [-100.343241, -53.3248973, 0.0, 1.0, 1.23453523, 3243534.34534, 999.999, 1.2e33]
+
+divide :: Double -> Double -> Double
+divide x y = if y == 0.0 then 0.0 else x / y
+
+main :: IO ()
+main = do
+  putStrLn $ show [ op x y | x <- list1, y <- list2, op <- [(+), (-), (*), divide] ]
+  putStrLn $ show [ op x y | x <- list1, y <- list2, op <- [(==), (/=), (<), (<=), (>), (>=)] ]
+  putStrLn $ show [ x / y | x <- [2.234983, 1.232, 23.0::Double], y <- [1.0, 5.0, 10.0, 100.0]]
+  putStrLn $ show [ x / y | x <- [-2.234983, -1.232, -23.0::Double], y <- [1.0, -5.0, 10.0, -100.0]]
+  let str = readDouble "1.576"
+  putStrLn $ show str
+  putStrLn $ show $ 1.0 + readDouble "2.5"
+  putStrLn $ show $ map readDouble ["1.5e42", "1.2e-90"]
diff --git a/tests/FArith.ref b/tests/FArith.ref
new file mode 100644
--- /dev/null
+++ b/tests/FArith.ref
@@ -0,0 +1,7 @@
+[-200.686482,0.0,10068.76601438408,1.0,-153.6681383,-47.0183437,5350.79302107415,1.881733413108702,-100.343241,-100.343241,-0.0,0.0,-99.34324100000001,-101.343241,-100.343241,-100.343241,-99.10870577,-101.57777623,-123.8772661068804,-81.28017618419848,3243434.002099,-3243634.688581,-325466748.5062289,-3.093638923360364e-05,899.655759,-1100.342241,-100343.140656759,-0.1003433413433413,1.2e+33,-1.2e+33,-1.204118892e+35,-8.36193675e-32,-153.6681383,47.0183437,5350.79302107415,0.53142490484237,-106.6497946,0.0,2843.544672055548,1.0,-53.3248973,-53.3248973,-0.0,0.0,-52.3248973,-54.3248973,-53.3248973,-53.3248973,-52.09036207,-54.55943253,-65.83146435298188,-43.19430989425875,3243481.0204427,-3243587.6702373,-172961135.8542782,-1.644036770463433e-05,946.6741027,-1053.3238973,-53324.8439751027,-0.05332495062495063,1.2e+33,-1.2e+33,-6.398987676000001e+34,-4.443741441666667e-32,-100.343241,100.343241,-0.0,-0.0,-53.3248973,53.3248973,-0.0,-0.0,0.0,0.0,0.0,0.0,1.0,-1.0,0.0,0.0,1.23453523,-1.23453523,0.0,0.0,3243534.34534,-3243534.34534,0.0,0.0,999.999,-999.999,0.0,0.0,1.2e+33,-1.2e+33,0.0,0.0,-99.34324100000001,101.343241,-100.343241,-0.009965793311380085,-52.3248973,54.3248973,-53.3248973,-0.01875296626215912,1.0,1.0,0.0,0.0,2.0,0.0,1.0,1.0,2.23453523,-0.2345352300000001,1.23453523,0.8100214361642801,3243535.34534,-3243533.34534,3243534.34534,3.083056609024981e-07,1000.999,-998.999,999.999,0.001000001000001,1.2e+33,-1.2e+33,1.2e+33,8.333333333333333e-34,-99.10870577,101.57777623,-123.8772661068804,-0.01230312293779708,-52.09036207,54.55943253,-65.83146435298188,-0.02315119751763685,1.23453523,1.23453523,0.0,0.0,2.23453523,0.2345352300000001,1.23453523,1.23453523,2.46907046,0.0,1.524077234111153,1.0,3243535.57987523,-3243533.11080477,4004257.419037217,3.806141999925675e-07,1001.23353523,-998.76446477,1234.53399546477,0.001234536464536465,1.2e+33,-1.2e+33,1.481442276e+33,1.028779358333333e-33,3243434.002099,3243634.688581,-325466748.5062289,-32324.39288402096,3243481.0204427,3243587.6702373,-172961135.8542782,-60825.89014831539,3243534.34534,3243534.34534,0.0,0.0,3243535.34534,3243533.34534,3243534.34534,3243534.34534,3243535.57987523,3243533.11080477,4004257.419037217,2627332.348660475,6487068.69068,0.0,10520515049400.18,1.0,3244534.34434,3242534.34634,3243531101.805655,3243.537588877589,1.2e+33,-1.2e+33,3.892241214408e+39,2.702945287783333e-27,899.655759,1100.342241,-100343.140656759,-9.965783345586773,946.6741027,1053.3238973,-53324.8439751027,-18.75294750919286,999.999,999.999,0.0,0.0,1000.999,998.999,999.999,999.999,1001.23353523,998.76446477,1234.53399546477,810.020626142844,3244534.34434,-3242534.34634,3243531101.805655,0.0003083053525968371,1999.998,0.0,999998.000001,1.0,1.2e+33,-1.2e+33,1.1999988e+36,8.333325e-31]
+[True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,True,True,False,False,False,True,True,True,False,False,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,True,False,False,True,False,True,False,True,False,False,True,True,False,True,True,True,False,False,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,False,False,True,True,False,True,True,True,False,False,True,False,False,True,False,True,False,True,True,True,False,False]
+[2.234983,0.4469966,0.2234983,0.02234983,1.232,0.2464,0.1232,0.01232,23.0,4.6,2.3,0.23]
+[-2.234983,0.4469966,-0.2234983,0.02234983,-1.232,0.2464,-0.1232,0.01232,-23.0,4.6,-2.3,0.23]
+1.576
+3.5
+[1.5e+42,1.2e-90]
diff --git a/tests/Fac.hs b/tests/Fac.hs
new file mode 100644
--- /dev/null
+++ b/tests/Fac.hs
@@ -0,0 +1,23 @@
+-- Simple test
+module Fac(module Fac) where
+import Prelude
+
+fac :: Int -> Int  -- ignored
+fac n =
+  case n == 0 of
+    False -> n * fac (n - 1)
+    True  -> 1
+
+nfib :: Int -> Int   -- ignored
+nfib n =
+  case n < 2 of
+    False -> nfib (n - 1) + nfib (n - 2) + 1
+    True  -> 1
+
+res :: (Int, Int)
+res = (fac 10, nfib 30)
+
+main :: IO ()
+main = do
+  print $ fac 6
+  print $ fst res + snd res
diff --git a/tests/Fac.ref b/tests/Fac.ref
new file mode 100644
--- /dev/null
+++ b/tests/Fac.ref
@@ -0,0 +1,2 @@
+720
+6321337
diff --git a/tests/Floating.hs b/tests/Floating.hs
new file mode 100644
--- /dev/null
+++ b/tests/Floating.hs
@@ -0,0 +1,8 @@
+module Floating(main) where
+import Prelude
+
+main :: IO ()
+main = do
+  print $ log (1000::Double)
+  print $ cos (pi::Double)
+  print $ sqrt (4::Double)
diff --git a/tests/Floating.ref b/tests/Floating.ref
new file mode 100644
--- /dev/null
+++ b/tests/Floating.ref
@@ -0,0 +1,3 @@
+6.907755278982137
+-1.0
+2.0
diff --git a/tests/Foreign.hs b/tests/Foreign.hs
new file mode 100644
--- /dev/null
+++ b/tests/Foreign.hs
@@ -0,0 +1,11 @@
+module Foreign(main) where
+import Prelude
+
+foreign import ccall "llabs" abs :: Int -> IO Int
+
+main :: IO ()
+main = do
+  x1 <- abs (3 - 8)
+  putStrLn $ show x1
+  x2 <- abs (10 - 8)
+  putStrLn $ show x2
diff --git a/tests/Foreign.ref b/tests/Foreign.ref
new file mode 100644
--- /dev/null
+++ b/tests/Foreign.ref
@@ -0,0 +1,2 @@
+5
+2
diff --git a/tests/FunDep.hs b/tests/FunDep.hs
new file mode 100644
--- /dev/null
+++ b/tests/FunDep.hs
@@ -0,0 +1,11 @@
+module FunDep(main) where
+
+class C a b | a -> b where
+  f :: a -> b
+
+--instance C Char Int where
+--  f = chr
+
+class Plus a b c | a b -> c, b c -> a, c a -> b where
+  plus :: a -> b -> c
+
diff --git a/tests/Guard.hs b/tests/Guard.hs
new file mode 100644
--- /dev/null
+++ b/tests/Guard.hs
@@ -0,0 +1,15 @@
+module Guard(main) where
+import Prelude
+
+f :: [Int] -> Int
+f [x] | x < 0 = 0 - x
+      | x < 10 = x+1
+      | otherwise = 99
+f [x,y] = x+y
+f xs | l < 4 = 0
+     | otherwise = l
+   where { l = length xs }
+
+main :: IO ()
+main = do
+  putStrLn $ show [f [0 - 7], f [5], f [20], f [2,3], f [1,2,3], f[1,2,3,4]]
diff --git a/tests/Guard.ref b/tests/Guard.ref
new file mode 100644
--- /dev/null
+++ b/tests/Guard.ref
@@ -0,0 +1,1 @@
+[7,6,99,5,0,4]
diff --git a/tests/Hello.hs b/tests/Hello.hs
new file mode 100644
--- /dev/null
+++ b/tests/Hello.hs
@@ -0,0 +1,5 @@
+module Hello(main) where
+import Prelude
+
+main :: IO ()
+main = putStrLn "hello, world\n"
diff --git a/tests/Hello.ref b/tests/Hello.ref
new file mode 100644
--- /dev/null
+++ b/tests/Hello.ref
@@ -0,0 +1,2 @@
+hello, world
+
diff --git a/tests/IOTest.hs b/tests/IOTest.hs
new file mode 100644
--- /dev/null
+++ b/tests/IOTest.hs
@@ -0,0 +1,48 @@
+module IOTest(module IOTest) where
+import Prelude
+import System.IO as IO
+import System.Environment
+import Debug.Trace
+
+f :: Int -> Int
+f x = x*2+1
+
+foo :: IO ()
+foo = do
+  putStrLn "foo 1"
+  putStrLn "foo 2"
+
+main :: IO ()
+main = do
+  tstart <- getTimeMilli
+  putChar 'a'
+  putChar 'b'
+  c <- getChar
+  putStrLn [c,c,c]
+  let { p = putStrLn "hello" }
+  p
+  p
+  p
+  cprint ((+) :: Int->Int->Int)
+  hout <- openFile "test.tmp" WriteMode
+  hPutChar hout 'a'
+  hPutChar hout 'z'
+  hClose hout
+  hin <- openFile "test.tmp" ReadMode
+  c1 <- hGetChar hin
+  c2 <- hGetChar hin
+  putStrLn $ show (c1, c2)
+  writeFile "test2.tmp" "more\n"
+  s <- readFile "test2.tmp"
+  putStrLn (show s)
+  writeSerialized "f.tmp" f
+  g <- readSerialized "f.tmp"
+  putStrLn $ show $ (g (5::Int) :: Int)
+  foo
+  putStrLn $ show $ trace "tracing" (5::Int)
+  as <- getArgs
+  putStrLn $ show as
+  putStrLn $ show $ seq ((1::Int) + (2::Int)) (5::Int)
+  putStrLn $ show $ seq ((1::Int) + trace "seq" (2::Int)) (5::Int)
+  tend <- getTimeMilli
+  putStrLn $ show (tend - tstart) ++ "ms execution time"
diff --git a/tests/IOTest.ref b/tests/IOTest.ref
new file mode 100644
--- /dev/null
+++ b/tests/IOTest.ref
@@ -0,0 +1,17 @@
+abqqq
+hello
+hello
+hello
++
+('a','z')
+"more\n"
+11
+foo 1
+foo 2
+tracing
+5
+["a","bb","ccc"]
+5
+seq
+5
+1ms execution time
diff --git a/tests/Infix.hs b/tests/Infix.hs
new file mode 100644
--- /dev/null
+++ b/tests/Infix.hs
@@ -0,0 +1,19 @@
+module Infix(main) where
+import Prelude
+
+infix 1 ===
+infixl 2 +++
+infixr 3 &&&
+
+(===) :: Int -> Int -> Bool
+x === y = x == y+1
+
+(+++) :: Int -> Int -> Int
+a +++ b = a + b + 1
+
+(&&&) :: Int -> Int -> Int
+a &&& b = a * (b + 1)
+
+main :: IO ()
+main = do
+  putStrLn $ show $ 2 +++ 3 &&& 4 === 17
diff --git a/tests/Infix.ref b/tests/Infix.ref
new file mode 100644
--- /dev/null
+++ b/tests/Infix.ref
@@ -0,0 +1,1 @@
+True
diff --git a/tests/Kind.hs b/tests/Kind.hs
new file mode 100644
--- /dev/null
+++ b/tests/Kind.hs
@@ -0,0 +1,6 @@
+module Kind(main) where
+
+data TypeRep k (a::k) = T
+
+class C k (a :: k) where
+  typeRep :: TypeRep k a
diff --git a/tests/ListTest.hs b/tests/ListTest.hs
new file mode 100644
--- /dev/null
+++ b/tests/ListTest.hs
@@ -0,0 +1,9 @@
+module ListTest(module ListTest) where
+import Prelude
+
+main :: IO ()
+main = do
+  putStrLn $ show $ sum [1,2,3::Int]
+  putStrLn $ show $ product [1,2,3,4::Int]
+  putStrLn $ show $ and [True]
+  putStrLn $ show $ and [True, False]
diff --git a/tests/ListTest.ref b/tests/ListTest.ref
new file mode 100644
--- /dev/null
+++ b/tests/ListTest.ref
@@ -0,0 +1,4 @@
+6
+24
+True
+False
diff --git a/tests/LitMatch.hs b/tests/LitMatch.hs
new file mode 100644
--- /dev/null
+++ b/tests/LitMatch.hs
@@ -0,0 +1,31 @@
+module LitMatch(main) where
+import Prelude
+
+f :: Int -> Int
+f 0 = 10
+f 1 = 20
+f n = 0
+
+g :: Int -> Int -> Int
+g 1 0 = 10
+g 2 0 = 20
+g 2 1 = 21
+g 1 1 = 11
+g _ _ = 99
+
+h :: Char -> Int
+h 'a' = 1
+h 'b' = 2
+h _ = 3
+
+s :: String -> Int
+s "apa" = 1
+s "foo" = 2
+s _ = 3
+
+main :: IO ()
+main = do
+  putStrLn $ show [f 0, f 1, f 10]
+  putStrLn $ show [g 1 0, g 1 1, g 2 0, g 2 1, g 2 2]
+  putStrLn $ show [h 'a', h 'b', h 'c']
+  putStrLn $ show [s "aaa", s "apa", s "foo"]
diff --git a/tests/LitMatch.ref b/tests/LitMatch.ref
new file mode 100644
--- /dev/null
+++ b/tests/LitMatch.ref
@@ -0,0 +1,4 @@
+[10,20,0]
+[10,11,20,21,99]
+[1,2,3]
+[3,1,2]
diff --git a/tests/LocalPoly.hs b/tests/LocalPoly.hs
new file mode 100644
--- /dev/null
+++ b/tests/LocalPoly.hs
@@ -0,0 +1,12 @@
+module LocalPoly(main) where
+import Prelude
+
+main :: IO ()
+main = do
+  putStrLn $ show $ f 1 "a"
+
+f :: forall b . Int -> b -> ((Int, b), (b, b))
+f x b = (i x, i b)
+  where
+    i :: forall a . a -> (a, b)
+    i a = (a, b)
diff --git a/tests/LocalPoly.ref b/tests/LocalPoly.ref
new file mode 100644
--- /dev/null
+++ b/tests/LocalPoly.ref
@@ -0,0 +1,1 @@
+((1,"a"),("a","a"))
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,45 @@
+MHS=../bin/gmhs -i../lib
+EVAL=../bin/mhseval
+.PHONY: test time clean errtest alltest
+
+alltest:	test errtest
+
+test:
+	$(MHS) Hello      && $(EVAL) > Hello.out      && diff Hello.ref Hello.out
+	$(MHS) IOTest && (echo q | $(EVAL) a bb ccc | sed 's/^.ms/1ms/' > IOTest.out) && diff IOTest.ref IOTest.out
+	$(MHS) StringTest && $(EVAL) > StringTest.out && diff StringTest.ref StringTest.out
+	$(MHS) ListTest   && $(EVAL) > ListTest.out   && diff ListTest.ref ListTest.out
+	$(MHS) Fac        && $(EVAL) > Fac.out        && diff Fac.ref Fac.out
+	$(MHS) Misc       && $(EVAL) > Misc.out       && diff Misc.ref Misc.out
+	$(MHS) Case       && $(EVAL) > Case.out       && diff Case.ref Case.out
+	$(MHS) Arith      && $(EVAL) > Arith.out      && diff Arith.ref Arith.out
+	$(MHS) Guard      && $(EVAL) > Guard.out      && diff Guard.ref Guard.out
+	$(MHS) Newtype    && $(EVAL) > Newtype.out    && diff Newtype.ref Newtype.out
+	$(MHS) LitMatch   && $(EVAL) > LitMatch.out   && diff LitMatch.ref LitMatch.out
+	$(MHS) Word       && $(EVAL) > Word.out       && diff Word.ref Word.out
+	$(MHS) Enum       && $(EVAL) > Enum.out       && diff Enum.ref Enum.out
+	$(MHS) Foreign    && $(EVAL) > Foreign.out    && diff Foreign.ref Foreign.out
+	$(MHS) MutRec     && $(EVAL) > MutRec.out     && diff MutRec.ref MutRec.out
+	$(MHS) LocalPoly  && $(EVAL) > LocalPoly.out  && diff LocalPoly.ref LocalPoly.out
+	$(MHS) Rank2      && $(EVAL) > Rank2.out      && diff Rank2.ref Rank2.out
+	$(MHS) Catch      && $(EVAL) > Catch.out      && diff Catch.ref Catch.out
+	$(MHS) FArith     && $(EVAL) > FArith.out     && diff FArith.ref FArith.out
+	$(MHS) Infix      && $(EVAL) > Infix.out      && diff Infix.ref Infix.out
+	$(MHS) Class      && $(EVAL) > Class.out      && diff Class.ref Class.out
+	$(MHS) Eq         && $(EVAL) > Eq.out         && diff Eq.ref Eq.out
+	$(MHS) Floating   && $(EVAL) > Floating.out   && diff Floating.ref Floating.out
+	$(MHS) Default    && $(EVAL) > Default.out    && diff Default.ref Default.out
+	$(MHS) Multi      && $(EVAL) > Multi.out      && diff Multi.ref Multi.out
+	$(MHS) Exists     && $(EVAL) > Exists.out     && diff Exists.ref Exists.out
+	$(MHS) TypeEq     && $(EVAL) > TypeEq.out     && diff TypeEq.ref TypeEq.out
+	$(MHS) Sieve      && $(EVAL) > Sieve.out      && diff Sieve.ref Sieve.out
+
+errtest:
+	sh errtester.sh < errmsg.test
+
+time:
+	@echo Expect about 10s runtime
+	$(MHS) Nfib && time -p $(EVAL)
+
+clean:
+	rm -f *.out *.tmp
diff --git a/tests/Misc.hs b/tests/Misc.hs
new file mode 100644
--- /dev/null
+++ b/tests/Misc.hs
@@ -0,0 +1,11 @@
+module Misc(module Misc) where
+import Prelude
+
+first :: forall a b . (a, b) -> a
+first ab =
+  let { (a, b) = ab }
+  in  a
+
+main :: IO ()
+main = do
+  print $ first (10::Int,20::Int)
diff --git a/tests/Misc.ref b/tests/Misc.ref
new file mode 100644
--- /dev/null
+++ b/tests/Misc.ref
@@ -0,0 +1,1 @@
+10
diff --git a/tests/Multi.hs b/tests/Multi.hs
new file mode 100644
--- /dev/null
+++ b/tests/Multi.hs
@@ -0,0 +1,20 @@
+module Multi(main) where
+import Prelude
+
+class C a b where
+  conv :: a -> b
+
+instance C Int Bool where
+  conv x = x /= 0
+
+instance C Int Char where
+  conv = chr
+
+instance C Char Int where
+  conv = ord
+
+main :: IO ()
+main = do
+  print (conv (100::Int) :: Bool)
+  print (conv (100::Int) :: Char)
+  print (conv 'a' :: Int)
diff --git a/tests/Multi.ref b/tests/Multi.ref
new file mode 100644
--- /dev/null
+++ b/tests/Multi.ref
@@ -0,0 +1,3 @@
+True
+'d'
+97
diff --git a/tests/MutRec.hs b/tests/MutRec.hs
new file mode 100644
--- /dev/null
+++ b/tests/MutRec.hs
@@ -0,0 +1,8 @@
+module MutRec(main) where
+import Prelude
+
+main :: IO ()
+main = do
+  let even i = if i == 0 then True  else odd  (i - 1)
+      odd  i = if i == 0 then False else even (i - 1)
+  putStrLn $ show $ map even [1::Int .. 5] ++ map odd [1 .. 5]
diff --git a/tests/MutRec.ref b/tests/MutRec.ref
new file mode 100644
--- /dev/null
+++ b/tests/MutRec.ref
@@ -0,0 +1,1 @@
+[False,True,False,True,False,True,False,True,False,True]
diff --git a/tests/Newtype.hs b/tests/Newtype.hs
new file mode 100644
--- /dev/null
+++ b/tests/Newtype.hs
@@ -0,0 +1,19 @@
+module Newtype(main) where
+import Prelude
+
+newtype N = N Int
+newtype M a = M a
+
+f :: N -> Int
+f (N x) = x
+
+g :: M (Int, Int) -> M Int
+g (M (x, y)) = M x
+
+showM :: forall a . (a -> String) -> M a -> String
+showM sh (M x) = "(M " ++ sh x ++ ")"
+
+main :: IO ()
+main = do
+  putStrLn $ show [f (N 1), f (N 2)]
+  putStrLn $ showM show (g (M (3,4)))
diff --git a/tests/Newtype.ref b/tests/Newtype.ref
new file mode 100644
--- /dev/null
+++ b/tests/Newtype.ref
@@ -0,0 +1,2 @@
+[1,2]
+(M 3)
diff --git a/tests/Nfib.hs b/tests/Nfib.hs
new file mode 100644
--- /dev/null
+++ b/tests/Nfib.hs
@@ -0,0 +1,17 @@
+module Nfib(main) where
+import Prelude
+
+nfib :: Int -> Int
+nfib n =
+  case n < 2 of
+    False -> nfib (n - 1) + nfib (n - 2) + 1
+    True  -> 1
+
+main :: IO ()
+main = print (nfib 44)
+
+-- Typical nfib/s is 10M
+-- mhs
+-- 126491971 / 15.68 = 8.07M
+-- ghc
+-- 126491971 / 0.236 = 535M
diff --git a/tests/Rank2.hs b/tests/Rank2.hs
new file mode 100644
--- /dev/null
+++ b/tests/Rank2.hs
@@ -0,0 +1,20 @@
+module Rank2(main) where
+import Prelude
+
+f :: (forall a . a -> a) -> (Int, Bool)
+f i = (i (1::Int), i True)
+
+g :: (forall a . a -> Int -> a) -> (Int, Bool)
+g c = (c (1::Int) (1::Int), c True (1::Int))
+
+data Id = Id (forall a . a -> a)
+
+iD :: Id
+iD = Id (\ x -> x)
+
+main :: IO ()
+main = do
+  putStrLn $ show $ f id
+  putStrLn $ show $ g const
+  case iD of
+    Id i -> putStrLn $ show (i (1::Int), i True)
diff --git a/tests/Rank2.ref b/tests/Rank2.ref
new file mode 100644
--- /dev/null
+++ b/tests/Rank2.ref
@@ -0,0 +1,3 @@
+(1,True)
+(1,True)
+(1,True)
diff --git a/tests/Readline.hs b/tests/Readline.hs
new file mode 100644
--- /dev/null
+++ b/tests/Readline.hs
@@ -0,0 +1,16 @@
+module Readline(main) where
+import Prelude
+import System.Console.SimpleReadline
+
+main :: IO ()
+main = do
+  putStrLn "Type 'quit' to quit."
+  loop
+
+loop :: IO ()
+loop = do
+  s <- getInputLineHist "hist.txt" "% "
+  case s of
+    Just "quit" -> putStrLn "Bye"
+    _ -> do putStrLn $ showMaybe showString s; loop
+    
diff --git a/tests/Sieve.hs b/tests/Sieve.hs
new file mode 100644
--- /dev/null
+++ b/tests/Sieve.hs
@@ -0,0 +1,17 @@
+module Sieve(main) where
+import Prelude
+
+primes :: [Integer]
+primes =
+  sieve (from 2)
+  where
+    from n = n : from (n + 1)
+    sieve (p : x) = p : sieve (filter x)
+                    where
+                      filter (n : x) =
+                        if n `rem` p == 0 then filter x
+                        else n : filter x
+
+main :: IO ()
+main =
+  print $ take 100 primes
diff --git a/tests/Sieve.ref b/tests/Sieve.ref
new file mode 100644
--- /dev/null
+++ b/tests/Sieve.ref
@@ -0,0 +1,1 @@
+[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541]
diff --git a/tests/StringTest.hs b/tests/StringTest.hs
new file mode 100644
--- /dev/null
+++ b/tests/StringTest.hs
@@ -0,0 +1,22 @@
+module StringTest(module StringTest) where
+import Prelude
+
+main :: IO ()
+main = do
+  putStrLn $ if (==) "abc" "abc" then "yes" else "no"
+  putStrLn $ if (==) "abc" "adc" then "yes" else "no"
+  putStrLn $ show (1234::Int)
+  putStrLn $ show (0::Int)
+  putStrLn $ show (negate (567::Int))
+  putStrLn $ show 'x'
+  putStrLn $ show '\n'
+  putStrLn $ show False
+--  putStrLn $ showUnit ()
+  putStrLn $ show [1,20,3::Int]
+  putStrLn $ show [1::Int]
+  putStrLn $ show ([] :: [Int])
+  putStrLn $ show (123::Int, 'a')
+  putStrLn $ show (Nothing :: Maybe Int)
+  putStrLn $ show (Just 890 :: Maybe Int)
+  putStrLn $ show (Left   678 :: Either Int Bool)
+  putStrLn $ show (Right True :: Either Int Bool)
diff --git a/tests/StringTest.ref b/tests/StringTest.ref
new file mode 100644
--- /dev/null
+++ b/tests/StringTest.ref
@@ -0,0 +1,16 @@
+yes
+no
+1234
+0
+-567
+'x'
+'\n'
+False
+[1,20,3]
+[1]
+[]
+(123,'a')
+Nothing
+Just 890
+Left 678
+Right True
diff --git a/tests/TypeEq.hs b/tests/TypeEq.hs
new file mode 100644
--- /dev/null
+++ b/tests/TypeEq.hs
@@ -0,0 +1,25 @@
+module TypeEq(main) where
+import Prelude
+
+foo :: forall a . (a ~ Bool) => a -> a
+foo = not
+
+data Exp a
+  = (a ~ Int)  => Int Int
+  | (a ~ Int)  => Add (Exp Int) (Exp Int)
+  | (a ~ Bool) => Equ (Exp Int) (Exp Int)
+  |               Iff (Exp Bool) (Exp a) (Exp a)
+
+eval :: forall a . Exp a -> a
+eval (Int i) = i
+eval (Add e1 e2) = eval e1 + eval e2
+eval (Equ e1 e2) = eval e1 == eval e2
+eval (Iff c e1 e2) = if eval c then eval e1 else eval e2
+
+e1 :: Exp Int
+e1 = Iff (Add (Int 1) (Int 2) `Equ` Int 3) (Int 1) (Int 999)
+
+main :: IO ()
+main = do
+  print (foo True)
+  print (eval e1)
diff --git a/tests/TypeEq.ref b/tests/TypeEq.ref
new file mode 100644
--- /dev/null
+++ b/tests/TypeEq.ref
@@ -0,0 +1,2 @@
+False
+1
diff --git a/tests/Word.hs b/tests/Word.hs
new file mode 100644
--- /dev/null
+++ b/tests/Word.hs
@@ -0,0 +1,13 @@
+module Word(main) where
+import Prelude
+import Data.Word
+
+main :: IO ()
+main = do
+  putStrLn $ show (4294967295::Int)
+  putStrLn $ show (1000::Word)
+  putStrLn $ show twoTo32M1
+  putStrLn $ show $ (*) twoTo32M1 twoTo32M1
+
+twoTo32M1 :: Word
+twoTo32M1 = 4294967295::Word
diff --git a/tests/Word.ref b/tests/Word.ref
new file mode 100644
--- /dev/null
+++ b/tests/Word.ref
@@ -0,0 +1,4 @@
+4294967295
+1000
+4294967295
+18446744065119617025
