diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -41,7 +41,7 @@
 MHSINC=$(MHSINCNP) -ipaths 
 MAINMODULE=MicroHs.Main
 #
-.PHONY:	clean bootstrap install ghcgen newmhs newmhsz cachelib timecompile exampletest cachetest runtest runtestmhs everytest everytestmhs nfibtest info
+.PHONY:	clean bootstrap install ghcgen newmhs newmhsz cachelib timecompile exampletest cachetest runtest runtestmhs everytest everytestmhs nfibtest info install minstall installmsg
 
 all:	bin/mhs bin/cpphs bin/mcabal
 
@@ -168,9 +168,12 @@
 
 # Run test examples with sanitized mhs-compiled compiler
 runtestsan: bin/mhsevalsane sanitizemhs
-	cd tests; make MHS="../bin/mhssane +RTS -H4M -RTS -CR" cache
+	cd tests; make MHS="../bin/mhssane +RTS -H4M -RTS -CW" cache
 	cd tests; make MHS="../bin/mhssane +RTS -H4M -RTS -CR" EVAL="../bin/mhsevalsane +RTS -H1M -RTS" info test errtest
 
+runtestgsan: bin/mhsevalsane bin/gmhs
+	cd tests; make EVAL="../bin/mhsevalsane +RTS -H1M -RTS" info test errtest
+
 # Run test examples going via JavaScript
 runtestemscripten: bin/mhseval bin/mhs bin/cpphs
 	cd tests; make MHS=../bin/mhs cache; MHSDIR=.. make MHS="../bin/mhs -CR -temscripten -oout.js" EVAL="node out.js" info test errtest
@@ -199,12 +202,16 @@
 	@git rev-parse HEAD
 	time mhs +RTS -v -RTS -z -imhs -isrc -ipaths $(MAINMODULE)
 
-#
 timegmhscompile:
 	@date
 	@git rev-parse HEAD
-	time bin/gmhs -s -imhs -isrc -ipaths $(MAINMODULE)
+	time bin/gmhs -imhs -isrc -ipaths $(MAINMODULE)
 
+timeghccompile:
+	@date
+	@git rev-parse HEAD
+	time $(GHC) -fforce-recomp $(GHCFLAGS) -O0 $(MAINMODULE) -o bin/gmhs
+
 #
 cachelib:
 	@-rm -f .mhscache
@@ -231,9 +238,9 @@
 	@echo "*** Set environment variable MHSDIR to $(PREFIX)/lib/mhs"
 	@echo "***"
 
-everytest:	newmhs runtest exampletest cachetest bootcombtest nfibtest info
+everytest:	newmhs bin/cpphs runtest exampletest cachetest bootcombtest nfibtest info
 
-everytestmhs:	bin/mhs bin/mhseval exampletest cachetest bootstrap runtestmhs nfibtest info
+everytestmhs:	bin/mhs bin/cpphs bin/mhseval exampletest cachetest bootstrap runtestmhs nfibtest info
 
 bootcombtest:	bin/gmhs bin/mhseval
 	bin/gmhs $(MHSINC) -ogmhs.comb $(MAINMODULE)
@@ -245,10 +252,15 @@
 	bin/mhs Example && bin/mhseval
 	bin/mhs Example -oEx && ./Ex && rm Ex
 
+examplejs: bin/mhs Example.hs
+	bin/mhs -temscripten Example -oEx.js
+	node Ex.js
+	rm Ex.js
+
 info:	bin/mhs
 	bin/mhs -r -itests Info
 
-cachetest:	bin/mhs bin/mhseval Example.hs
+cachetest:	bin/mhs bin/cpphs bin/mhseval Example.hs
 	rm -f .mhscache
 	bin/mhs -CW AllOfLib
 	bin/mhs -CR Example && bin/mhseval
@@ -260,8 +272,8 @@
 
 ######
 
-VERSION=0.12.6.1
-HVERSION=0,12,6,1
+VERSION=0.13.0.0
+HVERSION=0,13,0,0
 MCABAL=$(HOME)/.mcabal
 MCABALMHS=$(MCABAL)/mhs-$(VERSION)
 MDATA=$(MCABALMHS)/packages/mhs-$(VERSION)/data
@@ -305,11 +317,25 @@
 	rm -f generated/mcabal.c
 	make generated/mcabal.c
 
-minstall:	install
-install:	bin/cpphs bin/mcabal $(MCABALBIN)/mhs
+install:	installmsg minstall
+
+installmsg:
+	@echo '***************************************************'
+	@echo "* Installing MicroHs $(VERSION)"
+	@echo "*  Binaries (in $(MCABALBIN)):"
+	@echo '*    mhs     - MicroHs compiler'
+	@echo '*    cpphs   - C preprocessor'
+	@echo '*    mcabal  - cabal for MicroHs'
+	@echo '*  Libraries:'
+	@echo '*    base (bytestring, directory, filepath, text)'
+	@echo '***************************************************'
+	@echo ''
+
+minstall:	bin/cpphs bin/mcabal $(MCABALBIN)/mhs
 	cp bin/cpphs bin/mcabal $(MCABALBIN)
 	cd lib; PATH=$(MCABALBIN):"$$PATH" mcabal $(MCABALGMP) install
-	PATH=$(MCABALBIN):"$$PATH" mcabal install
+# We don't really need to rebuild mhs
+#	PATH=$(MCABALBIN):"$$PATH" mcabal install
 	@echo $$PATH | tr ':' '\012' | grep -q $(MCABALBIN) || echo '***' Add $(MCABALBIN) to the PATH
 
 #####
diff --git a/MicroHs.cabal b/MicroHs.cabal
--- a/MicroHs.cabal
+++ b/MicroHs.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                MicroHs
-version:             0.12.6.1
+version:             0.13.0.0
                      -- *** When changing the version number, also
                      -- *** run 'sh updateversion.sh'
                      -- *** Yeah, it stinks.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -49,6 +49,7 @@
    * AllowAmbiguousTypes
    * BangPatterns
    * BinaryLiterals
+   * BlockArguments
    * ConstraintKinds
    * DefaultSignatures
    * DeriveAnyClass
@@ -95,6 +96,7 @@
    * PolymorphicComponents
    * RankNTypes
    * RecordWildCards
+   * RequiredTypeArguments
    * QualifiedDo
    * ScopedTypeVariables
    * StandaloneDeriving
diff --git a/generated/cpphs.c b/generated/cpphs.c
--- a/generated/cpphs.c
+++ b/generated/cpphs.c
@@ -1,2164 +1,2204 @@
 static unsigned char data[] = {
-122,76,90,49,117,168,0,0,31,118,55,46,50,10,57,51,57,10,65,32,
-95,48,32,95,50,52,32,64,95,50,53,32,95,51,53,32,64,95,51,55,
-32,1,64,64,224,22,4,1,52,48,224,22,13,0,50,224,22,0,1,49,
-49,160,23,7,51,54,50,32,64,67,39,32,224,17,0,5,64,66,32,95,
-49,50,160,11,7,83,32,83,32,95,51,54,54,64,4,0,56,96,45,31,
-57,32,95,51,55,49,32,73,32,64,64,102,114,111,109,85,84,70,56,32,
-34,45,45,99,112,112,34,32,64,64,64,64,64,24,3,95,51,56,54,64,
-12,64,73,224,103,0,1,56,56,64,79,3,39,32,83,39,224,194,0,10,
-64,64,67,39,66,32,66,32,95,51,57,64,17,0,50,96,58,224,108,26,
-6,118,101,114,115,105,111,110,128,112,96,188,192,80,0,66,64,228,7,53,
-32,64,67,32,95,50,51,64,67,64,5,7,79,32,35,51,50,32,64,75,
-64,94,1,52,50,96,153,9,64,95,52,51,50,32,95,52,51,51,96,13,
-224,150,61,2,104,101,108,161,4,224,147,12,0,66,128,147,224,49,1,6,
-85,115,97,103,101,58,32,96,50,224,176,4,224,34,1,21,32,91,102,105,
-108,101,32,46,46,46,93,32,91,32,45,68,115,121,109,32,92,124,128,8,
-3,61,118,97,108,96,12,12,73,112,97,116,104,32,93,42,32,32,91,45,
-79,64,47,2,93,94,42,64,84,224,75,6,15,94,41,94,41,91,45,45,
-110,111,109,97,99,114,111,93,32,96,11,3,108,105,110,101,96,10,64,8,
-5,112,114,97,103,109,97,96,14,224,10,2,3,116,101,120,116,224,81,20,
-4,115,116,114,105,112,96,42,96,9,3,45,101,111,108,96,13,5,104,97,
-115,104,101,115,128,93,4,97,121,111,117,116,96,10,3,117,110,108,105,192,
-79,224,74,6,0,32,98,71,3,32,115,116,100,64,7,8,45,111,112,116,
-105,111,110,115,32,96,54,7,105,110,99,108,117,100,101,61,64,223,4,110,
-97,109,101,93,161,105,225,203,8,7,66,32,67,32,67,39,32,83,98,213,
-128,8,160,9,160,12,96,13,224,29,0,0,39,97,161,0,66,64,11,224,
-8,5,0,39,65,177,0,66,226,20,2,0,66,98,35,226,19,2,1,52,
-51,64,23,128,71,224,38,3,193,240,128,10,225,243,6,6,110,107,110,111,
-119,110,32,128,219,129,251,64,178,0,39,193,255,0,52,67,210,226,43,9,
-10,44,32,102,111,114,32,118,97,108,105,100,160,59,4,115,32,116,114,121,
-226,60,5,226,55,2,130,141,129,101,225,36,4,3,54,32,35,49,225,57,
-0,96,121,96,235,224,232,2,64,139,224,229,1,100,26,4,56,50,32,95,
-55,67,191,4,95,57,57,32,64,96,64,228,88,0,64,234,224,120,1,18,
-65,116,32,109,111,115,116,32,111,110,101,32,111,117,116,112,117,116,32,98,
-193,20,40,45,79,41,32,99,97,110,32,98,101,32,115,112,101,99,105,102,
-105,101,100,96,156,224,152,2,64,111,128,0,131,144,0,67,161,67,0,83,
-64,31,68,182,129,108,0,66,161,153,1,51,57,196,178,4,64,95,57,49,
-48,98,159,6,56,53,32,95,50,48,57,96,72,129,231,128,26,2,95,51,
-51,160,246,2,95,57,49,96,191,1,57,49,97,196,1,57,49,66,54,2,
-95,57,49,160,71,128,103,128,0,1,58,57,65,85,3,10,65,32,89,66,
-23,1,32,66,96,142,130,93,98,29,64,5,226,64,0,3,66,32,95,53,
-128,68,64,185,128,188,224,9,11,160,65,66,102,10,66,32,95,56,54,54,
-32,64,95,54,57,64,56,160,6,1,64,66,96,111,1,80,32,68,176,192,
-119,161,16,64,251,128,65,2,32,61,61,65,137,128,212,64,125,0,85,160,
-25,2,95,49,50,131,8,96,236,224,82,42,129,133,224,82,68,195,153,224,
-82,22,2,95,57,50,129,185,160,72,160,2,224,60,0,98,11,129,124,128,
-20,224,21,0,64,1,194,27,64,92,1,52,52,64,4,4,55,32,64,35,
-52,67,78,160,0,224,85,3,64,162,224,85,4,65,155,224,81,4,0,67,
-160,121,224,19,4,224,99,12,0,55,160,181,198,57,0,39,64,2,100,71,
-226,176,3,164,80,64,103,0,80,96,26,225,4,4,224,97,1,98,239,1,
-57,51,66,23,0,53,161,57,224,87,9,192,140,128,11,2,67,39,32,64,
-82,225,86,6,224,52,2,96,237,224,51,3,160,26,96,53,67,225,64,54,
-129,207,2,95,49,54,65,140,129,120,96,48,162,236,1,32,64,225,87,4,
-131,39,193,38,225,126,16,128,38,98,30,96,101,192,17,128,130,224,175,5,
-96,40,192,129,160,135,160,6,0,58,99,152,3,10,65,32,83,96,145,96,
-153,65,37,67,245,0,83,128,131,194,121,225,255,11,0,83,64,233,128,251,
-226,66,0,224,37,3,71,216,196,48,130,13,224,32,6,0,56,96,70,225,
-254,14,96,194,69,178,68,120,0,66,64,150,6,49,32,64,95,56,54,56,
-160,33,229,30,1,2,47,92,92,229,145,1,64,46,1,95,57,72,154,96,
-62,98,148,164,188,65,170,1,95,57,102,209,97,169,64,190,0,85,99,106,
-0,64,64,235,133,14,2,95,51,54,67,254,4,79,32,35,52,57,136,222,
-5,64,64,64,85,32,65,64,8,3,95,52,53,48,99,102,224,166,0,1,
-64,35,96,45,128,0,65,50,2,95,51,55,192,160,232,211,17,199,118,128,
-181,165,69,224,234,4,105,220,3,55,55,32,35,101,129,96,0,64,68,5,
-67,32,95,55,54,55,169,51,69,87,65,64,0,58,98,214,5,10,65,32,
-79,32,80,230,52,2,232,148,0,104,99,1,57,49,64,49,224,33,9,72,
-161,160,32,65,34,224,32,7,232,192,1,128,36,0,50,64,142,224,36,7,
-224,32,4,129,60,224,32,5,72,236,160,30,66,118,224,30,7,104,224,160,
-31,65,156,224,31,12,73,0,160,35,65,219,224,35,7,137,22,160,32,65,
-21,224,201,8,105,44,160,32,74,174,224,32,7,105,66,160,31,65,217,225,
-43,9,2,119,97,114,107,30,2,95,57,50,65,76,162,27,128,0,0,58,
-97,139,1,10,65,98,85,133,155,1,85,32,64,21,0,52,224,21,2,65,
-27,128,21,0,51,96,21,64,19,1,52,32,65,217,0,58,98,177,224,40,
-0,64,225,128,40,0,49,160,40,1,95,49,130,142,1,95,49,96,123,0,
-58,99,164,99,185,224,1,8,4,39,32,95,57,49,139,26,2,51,55,50,
-98,135,0,54,64,18,66,146,130,6,224,26,14,133,112,224,27,12,97,247,
-203,177,192,19,98,249,224,18,5,99,118,64,129,1,49,53,139,213,224,27,
-6,224,17,5,198,193,224,112,11,102,187,224,19,6,100,46,224,18,5,108,
-120,224,18,5,101,10,224,84,13,96,252,0,58,103,16,161,126,0,48,161,
-126,64,26,128,18,0,57,192,17,133,26,3,80,32,35,56,192,17,131,102,
-3,80,32,35,55,192,17,129,243,2,80,32,35,193,198,64,183,128,17,0,
-53,192,17,225,235,0,0,54,192,17,129,234,3,80,32,35,51,192,17,193,
-230,73,173,128,17,129,222,64,162,160,17,65,158,128,17,192,179,65,203,78,
-187,1,54,54,136,41,198,93,165,138,2,67,32,60,69,71,161,145,224,25,
-9,136,230,224,26,13,97,153,135,191,230,173,0,160,26,168,167,0,85,69,
-59,69,70,232,144,1,134,89,66,167,1,64,85,194,168,129,224,0,85,64,
-61,103,176,224,49,5,106,37,128,49,128,37,133,90,132,222,128,0,224,132,
-13,98,103,224,87,17,98,106,224,87,20,224,59,17,65,21,224,59,10,2,
-57,49,54,67,134,206,173,224,160,1,225,67,15,96,64,224,189,13,99,76,
-225,66,12,107,111,225,66,15,224,44,6,64,36,224,43,11,224,116,13,163,
-247,224,70,9,102,73,224,114,30,144,229,224,114,10,225,3,14,194,70,224,
-25,9,136,64,224,168,11,176,228,224,124,9,64,24,224,168,31,64,94,225,
-27,33,226,210,16,226,209,20,224,43,6,226,203,2,225,27,6,192,115,227,
-98,5,225,0,16,226,219,1,224,97,6,226,213,2,224,141,24,226,197,2,
-224,141,5,224,44,11,226,117,15,101,90,82,227,101,63,68,113,133,19,76,
-165,209,206,77,106,64,74,172,157,96,20,128,216,206,82,96,8,205,205,1,
-49,53,162,252,99,85,201,126,224,16,3,105,105,224,122,0,96,117,0,54,
-160,117,224,1,9,172,95,160,66,224,29,18,224,26,17,224,23,14,224,20,
-11,224,17,8,224,14,5,224,11,2,192,8,108,147,128,0,0,58,103,148,
-101,193,5,75,32,95,51,51,57,232,93,2,31,92,34,47,118,97,114,47,
-102,111,108,100,101,114,115,47,122,50,47,56,52,112,116,102,51,98,120,55,
-104,53,52,48,112,23,107,110,99,121,48,121,50,120,112,99,48,48,48,48,
-103,110,47,84,47,109,104,115,105,110,64,13,15,48,48,57,57,57,53,46,
-104,115,92,34,44,56,48,58,49,138,84,134,32,134,140,65,100,0,75,139,
-239,69,113,136,79,106,116,0,90,203,26,0,58,111,184,96,43,0,90,224,
-43,0,134,148,240,29,3,103,217,208,31,193,170,129,243,143,125,224,29,1,
-172,138,2,57,48,50,225,229,1,66,112,98,231,241,218,2,3,95,57,48,
-51,79,172,0,55,80,175,136,101,76,131,0,48,162,131,0,80,233,133,4,
-3,115,116,100,105,169,130,96,182,108,129,2,95,54,57,99,76,0,58,112,
-147,103,16,81,104,73,143,0,58,96,38,96,196,65,143,2,95,57,48,78,
-0,1,57,48,66,205,131,115,1,95,54,108,132,64,193,245,86,1,2,54,
-56,54,242,93,3,14,84,70,45,56,47,47,82,79,85,78,68,84,82,73,
-80,129,96,236,209,0,242,164,1,86,14,96,189,0,52,168,217,1,95,54,
-108,197,0,58,96,205,1,10,65,65,134,0,50,96,148,131,70,161,50,1,
-57,48,100,173,1,54,55,72,163,96,49,0,58,96,167,226,242,0,2,95,
-57,48,96,95,97,104,110,121,0,95,96,15,128,127,160,199,193,115,192,15,
-128,215,134,226,239,49,3,0,95,96,155,0,95,143,192,0,58,96,123,97,
-246,98,48,64,103,65,64,64,192,97,141,0,58,97,157,74,103,96,85,225,
-225,6,3,95,56,54,57,104,118,2,95,57,48,141,156,65,61,0,56,86,
-252,64,57,130,81,228,10,3,226,63,4,97,42,0,56,118,193,227,72,0,
-247,36,1,192,223,239,230,0,161,194,1,56,54,82,120,100,143,1,95,56,
-83,56,96,39,135,199,96,223,137,246,1,56,53,138,138,197,90,234,147,1,
-1,56,56,65,103,0,56,119,76,84,84,150,32,82,226,1,55,52,202,144,
-5,66,32,95,55,50,50,64,214,98,145,203,86,1,56,52,66,62,96,58,
-128,70,2,64,95,56,110,5,2,95,56,52,229,51,0,0,58,97,11,65,
-222,1,32,80,67,33,77,183,0,75,87,46,66,157,99,7,0,58,96,86,
-162,149,69,66,160,133,64,142,1,54,32,128,139,1,56,56,96,218,65,112,
-0,54,70,24,64,249,66,230,133,171,1,56,57,102,11,1,56,57,143,246,
-6,95,56,57,56,32,64,58,97,14,96,120,147,90,227,108,0,0,79,67,
-130,0,95,143,243,131,137,161,206,162,249,239,187,10,177,35,224,39,25,163,
-178,130,154,64,40,99,246,65,33,208,133,198,21,128,16,224,136,0,3,64,
-64,82,32,129,199,224,103,0,0,83,160,103,178,36,228,86,0,240,28,8,
-207,21,224,90,27,224,35,27,70,254,0,55,97,65,204,6,128,37,226,62,
-1,98,65,98,101,241,192,20,97,151,128,115,65,12,192,181,138,47,228,82,
-1,10,98,101,103,105,110,123,99,111,100,101,125,132,77,160,158,161,216,242,
-51,4,64,99,224,133,1,164,117,225,17,8,224,120,9,240,136,25,2,101,
-110,100,224,131,3,224,133,7,226,94,0,197,226,129,65,2,95,56,57,129,
-215,128,0,164,132,226,33,17,100,13,192,153,224,184,9,112,194,160,30,128,
-96,210,140,2,95,52,53,66,250,96,81,68,196,69,88,4,52,50,32,95,
-51,72,15,224,147,0,0,56,84,229,6,95,53,49,54,32,95,54,91,138,
-81,165,163,140,2,95,56,57,142,49,192,200,224,100,2,96,57,64,205,115,
-62,178,46,224,241,1,246,143,0,128,114,1,52,53,129,137,193,30,106,138,
-160,44,225,52,14,0,58,96,8,69,244,0,50,133,245,96,53,3,10,65,
-32,90,160,1,85,180,96,38,208,55,0,90,64,149,224,4,1,96,6,168,
-64,0,58,96,229,224,37,11,0,90,66,210,160,34,133,169,2,75,32,75,
-70,66,96,142,201,171,193,152,201,164,226,188,7,69,198,100,89,64,30,0,
-82,160,47,212,92,71,233,248,222,0,128,59,129,244,99,164,166,114,224,2,
-0,128,20,224,21,14,163,230,224,2,0,224,43,0,224,15,2,134,8,162,
-72,64,3,230,30,2,129,19,224,16,2,246,78,0,130,13,224,154,11,234,
-133,0,192,83,228,89,2,96,96,0,80,101,150,67,26,128,24,1,95,51,
-70,98,180,183,128,5,3,95,56,57,48,244,113,3,6,112,114,111,103,114,
-97,109,99,55,224,21,1,5,99,111,109,109,101,110,114,67,128,75,165,21,
-71,176,229,12,3,165,38,163,167,101,214,192,49,224,228,3,160,225,245,208,
-3,103,205,72,199,0,56,84,36,84,126,224,59,0,224,47,0,160,251,161,
-14,161,11,224,255,4,133,209,224,249,4,96,253,224,176,41,224,177,53,192,
-60,225,196,46,162,89,128,157,96,30,67,44,227,61,0,225,198,26,225,176,
-3,225,220,13,181,119,225,203,103,68,48,103,169,128,213,198,178,161,29,227,
-152,1,224,68,19,0,58,96,140,104,14,161,51,96,60,160,5,230,151,2,
-236,134,3,1,92,34,160,246,230,115,0,128,46,97,114,128,196,253,67,6,
-4,76,105,110,101,32,160,52,193,35,221,118,2,49,51,53,69,174,135,110,
-224,59,10,191,166,136,50,96,50,224,34,8,0,32,86,129,5,32,98,101,
-102,111,114,160,102,253,151,10,64,35,0,46,253,150,2,192,170,97,123,224,
-10,8,224,99,8,1,73,110,157,78,192,63,225,234,2,96,105,224,249,14,
-2,32,97,116,128,157,224,253,136,96,0,225,173,161,0,58,99,150,98,169,
-64,1,0,80,72,166,66,252,195,0,167,163,103,203,224,15,2,103,179,132,
-50,224,193,10,231,216,4,224,14,0,112,80,107,91,173,93,75,112,2,55,
-32,95,126,205,115,224,99,106,78,216,64,25,0,54,90,232,2,95,56,55,
-217,132,131,19,74,221,103,61,172,21,0,56,105,21,0,56,108,251,109,117,
-204,14,68,17,0,53,235,199,3,236,72,31,96,173,0,80,64,61,127,101,
-233,190,3,216,117,0,58,109,57,239,221,1,175,182,96,24,136,120,0,85,
-128,22,224,24,3,0,54,224,24,1,64,2,97,28,0,58,96,179,128,22,
-0,51,168,155,160,49,64,27,200,119,64,1,0,89,193,129,64,1,134,63,
-237,178,3,140,105,157,95,249,28,0,133,36,197,183,232,32,7,160,21,96,
-18,192,88,140,182,224,35,7,224,41,3,224,43,1,96,136,235,100,3,226,
-103,1,7,95,95,70,73,76,69,95,95,227,23,2,224,79,54,2,76,73,
-78,224,79,20,166,13,224,79,32,2,68,65,84,224,79,68,2,84,73,77,
-224,79,5,96,45,192,77,254,173,0,105,247,98,192,236,209,1,92,88,0,
-53,203,36,143,103,0,55,230,142,1,128,151,224,2,7,192,30,225,79,3,
-224,106,2,224,181,7,224,49,2,224,151,15,224,85,0,224,14,3,206,199,
-196,17,224,30,0,229,210,0,224,173,6,224,118,2,234,45,6,224,18,2,
-128,56,64,200,240,96,0,64,3,224,24,3,229,253,0,231,253,1,99,184,
-149,32,192,5,152,40,225,34,1,0,79,128,149,64,48,72,142,192,189,3,
-95,55,52,52,64,168,2,50,48,49,172,249,238,197,0,104,96,252,76,2,
-224,173,3,224,175,1,224,22,65,225,172,13,160,25,97,15,97,80,205,182,
-225,95,7,224,89,5,118,78,160,0,226,190,3,128,85,192,35,96,85,224,
-59,4,226,219,12,226,246,0,129,65,161,45,76,156,1,64,95,113,234,83,
-11,0,57,65,76,0,54,142,53,192,62,224,115,1,161,202,224,115,0,128,
-88,242,116,3,96,15,1,55,56,242,103,0,230,3,7,229,244,8,224,101,
-0,226,46,6,226,52,3,224,233,2,226,54,1,234,53,5,226,58,16,227,
-94,4,98,62,224,56,1,109,254,129,43,1,95,55,128,145,226,41,6,226,
-252,7,119,56,246,92,76,5,49,53,50,58,50,50,196,94,225,88,6,2,
-95,54,53,224,9,0,230,18,2,2,95,56,55,79,26,1,55,52,234,102,
-5,7,37,72,58,37,77,58,37,83,202,110,2,95,56,55,225,50,0,226,
-111,13,224,104,47,6,100,32,37,98,32,37,89,224,104,31,65,190,96,18,
-64,113,232,77,1,2,95,56,55,161,171,224,38,14,2,49,52,51,64,43,
-96,36,2,95,56,56,226,58,0,224,101,8,227,126,2,97,219,96,219,64,
-30,244,32,3,232,105,0,160,2,96,19,226,37,3,231,70,7,160,2,224,
-39,12,226,160,0,224,120,9,224,124,15,224,181,8,224,141,3,131,201,234,
-60,0,224,194,17,224,97,36,172,242,76,194,104,124,137,215,160,231,128,10,
-224,75,0,64,142,2,95,50,52,129,126,204,249,2,95,49,55,93,165,64,
-9,2,51,52,49,208,176,2,95,56,56,64,8,244,48,2,103,63,1,56,
-56,138,60,193,48,1,95,56,95,111,129,26,1,95,55,86,38,144,14,64,
-0,0,58,105,223,105,3,246,254,4,1,95,52,68,39,128,253,246,181,1,
-243,37,0,105,5,96,61,145,135,202,219,5,75,32,95,55,54,51,227,158,
-2,75,14,6,98,114,101,97,107,115,44,76,81,227,173,63,3,50,53,58,
-54,130,243,224,113,105,107,63,0,75,154,30,1,75,50,96,7,0,58,97,
-136,202,101,64,14,139,242,106,189,65,140,0,58,99,98,88,124,227,233,0,
-1,56,55,124,91,225,93,1,97,255,0,55,148,65,0,50,73,1,97,129,
-2,35,49,48,151,166,64,67,139,19,2,73,32,58,96,40,64,78,2,56,
-55,53,64,13,0,54,96,13,3,94,71,69,84,73,38,3,77,73,76,76,
-96,36,138,250,112,43,225,32,1,16,100,101,102,97,117,108,116,84,105,109,
-101,76,111,99,97,108,101,64,214,0,58,100,92,147,208,229,229,0,228,36,
-3,66,226,91,226,98,227,0,58,68,143,161,247,98,196,131,66,172,7,195,
-28,219,135,227,182,4,224,30,1,128,16,91,62,84,246,160,40,227,88,1,
-120,21,234,10,1,2,79,32,35,89,178,96,126,224,45,2,224,120,6,224,
-100,1,224,9,8,0,39,235,224,5,171,239,64,16,228,74,0,231,217,6,
-164,95,240,88,3,244,85,13,224,182,3,241,240,2,228,172,10,232,21,12,
-161,8,158,188,140,182,160,61,172,83,224,8,2,234,101,4,224,69,2,225,
-42,7,0,49,236,164,2,224,157,5,132,122,246,168,1,224,50,0,0,52,
-224,50,5,224,185,2,187,100,167,179,64,244,248,102,0,229,9,3,157,108,
-225,253,1,160,10,1,95,54,85,222,128,0,160,96,224,186,3,226,37,2,
-225,50,9,160,2,224,29,1,165,151,230,61,6,224,220,0,97,164,224,17,
-3,242,160,3,96,246,161,241,97,221,161,252,178,110,1,95,56,124,225,128,
-0,225,115,3,224,2,0,225,124,31,230,10,2,192,45,224,73,13,224,67,
-1,225,141,8,225,192,4,192,175,100,26,147,96,161,42,244,58,1,243,46,
-1,2,49,57,49,243,47,5,224,54,3,224,53,16,243,100,7,224,52,3,
-127,210,193,163,155,164,130,0,160,6,134,79,224,37,2,64,16,64,97,160,
-66,226,4,2,89,253,80,40,0,73,166,133,226,214,1,227,11,15,226,177,
-3,248,175,2,128,113,64,5,1,58,56,75,206,230,195,42,96,15,0,58,
-103,116,69,38,93,20,102,194,128,212,0,67,74,174,196,238,133,207,132,43,
-149,112,96,2,235,122,3,238,112,3,133,20,161,245,94,52,158,64,64,207,
-2,95,56,54,130,109,212,245,235,84,1,128,233,2,83,32,85,66,7,241,
-21,8,98,204,160,4,229,162,1,64,180,178,34,251,9,15,8,35,105,110,
-99,108,117,100,101,32,202,39,210,182,224,48,15,1,92,34,242,192,2,243,
-6,8,0,35,115,6,0,49,192,77,224,138,1,0,54,66,62,224,69,14,
-64,239,131,93,255,4,3,0,83,64,125,4,57,32,95,56,54,123,200,0,
-51,66,89,64,111,126,35,0,54,251,225,23,2,92,92,47,160,95,161,83,
-1,64,58,127,178,242,252,2,162,117,161,172,146,217,95,22,0,53,130,24,
-76,120,1,51,54,102,57,160,42,0,58,64,118,135,52,5,56,48,32,75,
-32,85,228,69,0,227,169,1,129,21,224,11,0,1,95,56,128,65,128,127,
-135,151,192,44,192,46,224,61,17,192,8,219,10,64,75,242,197,0,128,144,
-242,192,0,0,52,168,108,66,57,200,108,168,94,64,255,128,18,0,50,104,
-130,64,18,227,20,2,165,68,128,9,132,130,135,48,229,112,2,225,40,1,
-196,160,194,238,160,164,1,95,56,92,178,243,248,3,99,194,3,95,52,52,
-48,247,196,0,225,105,2,98,254,67,204,1,95,56,88,171,227,119,0,0,
-55,72,187,190,147,64,13,128,135,1,95,56,78,48,0,58,99,41,201,57,
-147,199,193,24,181,69,0,39,66,231,156,227,0,54,170,218,98,131,116,109,
-1,53,49,72,80,67,71,162,147,64,5,0,79,149,41,229,78,0,1,95,
-56,75,3,0,58,96,195,105,67,1,53,55,82,32,230,214,0,0,58,96,
-31,248,91,3,231,241,2,68,223,129,31,134,133,131,241,1,95,56,96,205,
-97,25,253,141,3,128,13,229,145,2,96,35,2,55,57,48,233,222,0,135,
-238,1,95,56,93,246,0,58,96,46,226,62,2,136,162,225,162,1,225,171,
-4,230,63,4,232,189,1,225,118,0,64,184,228,130,0,102,61,201,170,1,
-95,51,69,48,2,95,52,51,96,179,3,39,32,95,48,234,130,1,0,52,
-74,122,126,106,227,248,8,31,85,110,109,97,116,99,104,101,100,32,35,105,
-102,58,32,112,111,115,105,116,105,111,110,115,32,111,102,32,111,112,101,110,
-12,32,99,111,110,116,101,120,116,32,97,114,101,58,163,251,64,81,129,136,
-67,211,106,79,1,52,51,206,109,228,10,0,232,78,1,133,242,98,193,224,
-225,6,211,209,0,85,229,204,1,232,133,3,224,42,5,242,43,25,231,141,
-4,238,112,0,224,40,1,161,55,200,79,224,25,3,241,240,0,224,69,9,
-224,72,0,224,184,7,96,75,224,146,13,163,160,167,187,66,104,100,245,184,
-18,192,0,226,4,10,160,53,224,31,20,226,42,0,130,181,224,171,2,163,
-231,224,36,6,224,71,16,160,43,224,146,2,224,41,15,224,50,1,224,191,
-26,224,45,2,224,93,5,192,175,224,31,4,224,2,12,224,52,4,224,191,
-23,224,56,17,99,30,224,42,2,224,5,6,225,61,7,224,60,6,225,211,
-8,224,1,5,246,213,14,4,100,101,102,105,110,109,127,224,0,7,224,177,
-6,224,140,3,224,14,9,224,140,61,4,117,110,100,101,102,224,139,26,225,
-79,6,225,45,7,224,139,60,1,105,102,224,140,132,224,139,14,227,75,3,
-224,139,12,192,11,227,165,0,128,0,224,131,19,224,178,7,224,43,19,224,
-175,16,224,172,10,225,55,6,226,65,6,224,198,4,224,129,57,2,101,108,
-115,226,213,11,224,131,102,225,7,12,225,179,6,224,131,86,1,110,100,225,
-140,121,5,112,114,97,103,109,97,224,133,10,199,81,0,66,119,194,192,13,
-96,98,250,185,4,141,143,224,22,3,192,134,103,28,224,11,10,239,150,9,
-128,125,192,16,250,187,8,128,233,230,255,6,232,4,4,65,8,238,9,2,
-84,202,184,98,106,127,224,212,0,160,0,231,152,3,249,157,5,225,108,6,
-227,156,4,224,159,1,224,1,1,225,135,11,224,39,11,64,1,227,144,15,
-141,127,225,130,8,230,86,6,228,48,12,224,100,9,224,144,10,224,36,9,
-64,1,224,141,14,6,119,97,114,110,105,110,103,224,141,7,226,117,4,226,
-132,6,224,113,54,4,101,114,114,111,114,224,111,10,224,2,9,224,247,0,
-224,87,6,224,149,0,224,68,2,224,128,11,128,34,224,132,12,78,181,224,
-131,6,224,61,7,207,193,78,22,112,105,0,51,75,149,224,0,1,227,46,
-1,192,171,128,115,192,9,227,41,1,224,8,4,64,189,204,46,138,82,1,
-95,49,108,109,1,52,52,77,15,0,52,83,121,64,46,113,229,80,227,151,
-240,128,20,75,64,0,52,109,78,157,115,1,95,52,172,96,224,27,3,142,
-60,224,211,6,225,181,6,225,202,2,227,218,1,224,38,8,224,19,10,224,
-16,7,224,13,0,108,223,238,69,1,209,22,107,243,77,173,2,95,53,49,
-79,130,108,76,160,0,227,171,3,226,0,34,235,132,9,64,1,235,79,14,
-0,83,64,71,225,97,0,225,197,0,0,66,236,246,5,192,0,225,211,12,
-253,0,1,128,251,237,32,0,193,166,64,76,77,196,0,50,113,209,0,54,
-65,177,193,144,237,63,0,128,15,237,66,5,0,87,131,123,20,58,32,117,
-110,107,110,111,119,110,32,100,105,114,101,99,116,105,118,101,32,35,130,156,
-98,2,146,14,224,61,8,4,94,42,105,110,32,96,38,237,73,7,224,203,
-7,165,209,97,234,128,150,226,39,4,226,11,9,129,201,1,95,54,98,139,
-225,165,6,226,243,255,128,2,226,243,4,128,31,160,45,226,245,11,116,199,
-1,95,51,80,213,160,0,225,92,3,96,206,89,157,96,97,225,247,44,230,
-208,2,160,226,130,159,65,117,128,5,194,158,128,166,231,70,26,96,31,226,
-62,3,163,8,227,5,1,96,13,226,233,4,226,180,46,224,146,31,64,0,
-231,178,7,161,204,232,131,16,245,158,6,226,13,1,226,186,0,129,220,224,
-131,1,96,50,1,54,57,145,21,3,66,32,95,55,90,229,2,95,52,52,
-191,84,225,72,0,224,98,0,0,85,161,87,192,86,228,58,3,119,87,224,
-193,1,128,145,64,5,147,6,245,86,16,225,42,2,255,119,3,224,67,1,
-210,218,179,57,224,80,2,115,89,163,195,224,0,0,224,222,1,160,9,161,
-98,0,50,96,213,224,160,3,130,205,194,80,128,16,229,46,0,224,70,15,
-129,169,99,149,66,252,226,233,1,242,87,44,107,48,93,182,226,48,10,241,
-246,11,224,149,21,3,95,55,55,56,127,43,192,237,224,49,35,128,16,160,
-201,230,26,7,226,69,4,226,101,3,194,9,1,95,56,88,93,226,59,1,
-193,93,193,195,83,167,224,119,2,160,34,101,40,130,135,224,41,15,64,21,
-66,118,84,106,93,143,224,59,43,96,180,103,12,224,70,6,192,55,99,23,
-161,33,128,13,194,27,116,80,160,54,129,49,226,72,10,192,55,229,32,0,
-64,0,227,35,2,224,28,8,224,15,5,224,64,3,64,26,224,33,5,69,
-129,117,244,160,161,102,234,149,249,129,102,213,251,128,230,246,0,8,122,139,
-0,50,64,19,65,20,64,19,166,119,96,0,224,206,8,76,187,131,3,2,
-95,51,56,117,204,249,154,10,134,229,70,145,96,115,226,68,7,251,5,0,
-195,38,192,17,224,94,5,99,58,247,72,0,224,119,27,224,61,17,193,43,
-162,19,128,223,202,223,96,20,229,5,2,162,52,192,15,162,58,224,14,1,
-137,104,192,53,96,32,134,177,192,101,97,85,135,223,1,56,53,232,251,1,
-1,56,53,128,246,70,28,92,208,162,141,224,200,10,192,49,231,246,5,0,
-56,251,232,0,224,139,1,165,180,224,171,2,224,170,0,226,63,1,160,9,
-96,8,167,175,119,154,226,232,3,252,240,0,3,95,49,55,52,160,9,2,
-51,52,49,97,184,160,32,0,57,69,101,1,52,52,253,156,0,110,151,2,
-64,35,49,230,148,0,225,127,1,222,254,195,241,221,9,1,95,52,168,45,
-237,79,10,76,171,1,95,51,102,110,160,78,226,207,0,231,126,12,232,247,
-6,225,0,5,192,83,230,220,14,164,234,232,188,0,226,224,1,230,47,1,
-225,98,2,225,234,1,64,124,203,126,235,178,4,139,169,224,49,4,225,129,
-0,224,77,5,160,31,247,2,4,224,30,6,224,114,1,247,3,41,224,156,
-5,229,166,7,224,2,1,247,202,10,226,76,0,224,90,10,138,193,224,90,
-0,239,165,9,224,32,3,224,206,8,204,132,0,56,224,209,1,110,143,244,
-227,13,224,43,26,96,39,224,30,17,244,161,9,227,236,2,237,93,7,224,
-166,2,224,195,1,224,189,5,224,105,15,243,85,6,225,21,6,224,78,42,
-244,40,4,224,173,5,224,77,1,224,74,1,0,67,224,74,17,243,107,5,
-128,46,99,44,0,95,69,143,128,19,226,50,1,96,151,96,13,232,232,6,
-224,57,3,124,0,128,34,66,61,192,122,92,8,156,9,230,213,2,128,101,
-64,34,251,236,0,128,34,201,19,233,35,115,192,207,113,30,225,93,0,96,
-103,101,182,224,217,11,224,251,24,161,87,196,73,96,14,165,61,160,220,228,
-193,5,239,85,6,233,64,27,97,51,74,236,237,65,3,194,9,224,10,2,
-232,37,4,194,55,226,243,1,232,202,0,224,240,19,230,195,1,137,26,224,
-223,7,224,122,1,161,77,235,248,4,225,254,0,198,86,192,85,231,234,12,
-231,209,16,228,138,5,99,175,239,213,4,226,176,2,97,151,231,99,37,224,
-192,1,231,70,18,230,57,9,231,68,85,231,34,0,231,35,10,231,32,5,
-231,31,5,161,16,135,22,224,245,29,224,228,19,231,30,5,231,23,3,96,
-13,2,51,51,57,227,142,2,31,92,34,47,118,97,114,47,102,111,108,100,
-101,114,115,47,122,50,47,56,52,112,116,102,51,98,120,55,104,53,52,48,
-112,23,107,110,99,121,48,121,50,120,112,99,48,48,48,48,103,110,47,84,
-47,109,104,115,105,110,64,13,15,48,48,57,57,57,53,46,104,115,92,34,
-44,54,56,58,53,132,179,0,58,96,122,127,251,0,85,131,33,87,34,132,
-172,196,183,65,42,66,145,226,101,3,194,103,0,58,97,152,4,10,65,32,
-80,32,131,251,99,191,111,255,231,79,2,97,117,65,70,130,149,201,97,160,
-15,1,35,57,164,123,96,12,96,43,233,131,0,0,58,96,8,96,159,239,
-88,4,2,95,52,52,66,16,64,176,228,124,0,1,64,64,171,129,0,58,
-98,157,5,10,65,32,85,32,90,224,1,2,0,75,225,88,0,0,58,106,
-46,96,85,98,206,65,196,0,55,64,227,65,192,160,253,194,9,128,184,98,
-243,1,52,54,64,108,68,23,139,174,1,95,56,64,221,1,95,56,105,123,
-3,67,39,32,79,65,51,0,80,65,206,145,90,240,146,8,0,35,157,121,
-0,32,199,85,96,174,0,79,128,243,162,55,96,6,97,133,132,79,128,157,
-0,75,172,71,98,111,96,164,226,27,10,5,92,34,44,48,58,48,225,215,
-0,0,49,96,225,2,95,56,52,224,37,3,3,112,114,101,68,96,131,0,
-100,64,39,0,58,96,169,1,10,65,102,223,114,74,65,4,1,95,54,65,
-226,97,223,96,4,138,84,0,58,64,72,129,84,1,75,50,65,75,129,78,
-0,58,96,253,128,22,0,51,96,22,98,30,0,58,97,26,161,97,64,1,
-194,31,64,0,227,23,1,168,25,227,126,6,129,128,224,25,15,232,255,2,
-224,29,13,233,32,3,224,33,16,224,36,3,224,37,20,224,40,4,224,41,
-23,224,44,5,224,45,26,224,48,6,224,49,29,224,52,7,230,243,3,224,
-38,4,232,214,6,237,128,0,224,0,1,193,138,224,55,5,224,103,14,224,
-40,19,224,43,6,224,83,30,224,75,16,224,41,50,192,232,199,133,165,110,
-244,158,6,224,5,9,235,168,0,225,21,3,192,1,0,89,224,96,1,224,
-28,9,224,32,6,224,172,14,230,102,1,224,42,2,224,74,11,172,52,192,
-155,233,12,1,192,5,224,105,2,192,67,230,163,5,192,250,64,25,245,161,
-1,160,13,224,2,4,224,242,16,165,197,5,67,32,60,32,64,35,237,14,
-3,224,67,9,128,218,192,34,224,70,5,160,203,128,70,230,228,0,224,37,
-7,148,208,224,22,4,75,188,192,19,224,103,3,237,255,6,224,13,5,97,
-94,230,121,9,64,0,65,32,0,85,81,195,100,209,102,105,81,156,224,27,
-0,129,66,64,74,65,98,98,10,69,201,89,105,234,212,2,225,39,9,224,
-186,0,224,25,4,0,82,224,187,0,227,133,7,128,24,224,41,1,225,236,
-1,224,184,5,250,190,2,224,44,2,225,176,0,224,64,4,96,185,238,193,
-5,104,237,128,0,224,221,9,96,5,150,40,230,161,5,1,32,32,236,201,
-0,224,252,11,224,134,1,128,13,234,223,1,97,89,170,111,71,166,160,11,
-224,0,4,224,178,1,128,1,238,221,9,226,70,17,128,28,162,70,235,146,
-1,224,37,4,225,8,1,3,67,32,61,61,224,39,17,193,177,225,155,8,
-229,27,0,224,81,1,251,237,0,224,100,4,64,44,96,42,160,173,160,26,
-96,17,90,88,172,183,225,4,1,192,106,240,37,8,192,36,64,61,75,220,
-2,95,54,57,161,109,226,124,12,224,78,0,224,1,17,226,143,1,224,43,
-21,194,161,224,37,9,225,151,10,225,49,0,224,1,1,226,183,15,235,96,
-1,224,47,6,253,55,13,226,189,13,241,127,3,196,217,227,159,9,233,168,
-2,162,129,67,51,161,48,225,55,8,192,105,238,23,13,226,134,6,253,227,
-14,227,172,16,253,218,3,224,50,6,229,99,4,226,240,9,197,205,224,51,
-3,225,111,35,254,230,3,230,4,5,96,2,195,79,228,226,19,1,51,32,
-240,207,2,228,2,2,226,21,9,228,102,19,224,125,8,227,78,0,224,123,
-19,0,49,224,123,15,160,57,163,112,232,203,10,224,41,1,128,91,224,248,
-6,0,66,192,40,224,38,0,231,127,0,224,73,16,224,70,27,160,108,224,
-65,11,224,62,4,224,53,2,161,192,64,12,193,10,226,175,2,228,42,10,
-225,46,7,128,5,224,77,11,160,209,64,21,0,85,142,73,113,133,1,56,
-50,99,64,0,67,76,145,246,233,2,224,89,60,97,241,224,89,5,211,243,
-224,89,15,225,24,2,194,68,96,4,224,67,2,228,238,16,226,2,3,130,
-204,225,127,0,64,14,161,78,65,106,129,110,192,44,200,254,69,15,0,82,
-236,123,0,77,71,226,216,2,236,128,8,192,53,160,252,129,170,241,229,4,
-224,38,0,143,188,168,74,164,245,160,94,239,181,78,5,50,49,53,58,49,
-51,227,158,13,192,1,234,134,3,224,31,11,224,35,7,225,96,6,224,2,
-2,234,174,12,224,83,14,228,156,1,225,52,0,234,177,20,161,99,227,109,
-6,64,43,234,181,67,232,131,3,227,246,10,224,74,35,235,0,255,225,39,
-10,235,0,255,235,0,17,226,46,48,229,9,2,224,37,5,226,46,2,224,
-86,6,234,193,8,96,78,225,116,8,231,205,13,224,181,3,224,43,2,182,
-118,225,115,26,255,209,5,161,39,192,8,64,48,151,50,93,163,83,64,246,
-182,11,225,143,5,1,45,123,232,17,4,233,62,53,194,95,87,124,0,35,
-234,166,1,224,36,2,224,58,10,232,247,14,224,233,7,96,42,225,40,32,
-0,49,135,159,96,0,226,157,34,1,125,45,226,157,20,225,246,2,198,163,
-226,124,9,128,21,224,160,4,227,126,13,224,225,11,227,126,33,224,225,3,
-192,59,226,11,23,250,193,7,224,254,18,224,84,0,195,72,224,88,3,160,
-147,117,46,121,210,117,172,233,103,6,224,67,1,192,1,229,131,62,135,55,
-229,131,13,224,47,2,228,58,6,123,71,224,161,5,226,24,9,229,148,17,
-224,0,1,224,188,1,160,140,96,62,239,107,21,224,52,6,230,251,6,239,
-70,2,163,128,231,164,2,224,76,1,228,210,29,236,173,2,224,37,5,225,
-125,10,226,197,2,231,116,10,128,24,224,102,8,226,200,8,120,92,224,90,
-9,194,200,225,19,7,224,198,1,224,45,1,225,16,2,224,89,2,224,90,
-12,201,53,129,34,153,221,224,50,2,224,44,3,227,16,10,64,99,2,95,
-56,51,152,61,226,13,0,249,36,2,224,63,22,98,120,192,63,224,54,2,
-224,65,8,225,80,10,160,246,224,241,5,64,144,224,194,11,160,129,227,125,
-28,96,142,226,219,24,192,14,160,26,224,47,5,228,237,21,64,1,241,212,
-213,241,214,9,224,46,18,241,217,5,224,40,6,228,8,10,225,57,0,224,
-1,1,227,75,15,241,220,144,224,229,9,224,226,10,224,152,4,230,244,75,
-224,62,2,226,224,9,229,188,1,0,57,240,243,3,0,45,230,212,3,224,
-101,6,64,1,224,202,47,233,203,13,224,203,72,1,56,32,105,73,233,177,
-16,161,200,232,221,7,224,5,6,224,229,14,225,11,7,225,182,16,243,126,
-255,224,122,4,196,248,224,123,19,243,126,21,240,27,7,225,59,6,232,63,
-1,225,117,7,224,179,0,102,208,227,251,3,241,220,18,224,95,60,105,71,
-224,95,30,226,25,1,128,95,225,191,10,244,69,9,169,2,224,80,23,224,
-77,30,224,73,25,224,70,27,160,108,224,65,11,224,62,4,224,53,2,129,
-65,234,137,11,244,147,190,224,89,81,244,237,77,226,0,13,128,164,97,219,
-226,19,0,224,41,6,160,188,224,247,1,224,1,3,161,241,227,34,15,224,
-74,6,233,41,6,98,20,192,88,224,85,6,236,226,7,235,101,12,128,82,
-239,20,11,192,5,232,26,7,224,155,5,225,102,42,3,66,32,79,32,128,
-70,97,112,160,12,225,187,0,233,129,13,226,41,9,229,33,0,1,51,48,
-160,78,224,73,6,224,50,18,64,94,229,84,1,1,39,39,197,84,224,50,
-22,224,170,7,224,148,23,64,190,64,51,0,52,224,222,3,192,58,194,21,
-193,191,128,76,165,83,128,87,98,24,132,14,192,44,205,215,247,51,194,4,
-57,52,58,49,49,230,214,1,234,70,5,224,214,3,192,1,247,28,1,224,
-25,7,192,1,230,150,3,224,37,15,224,35,4,224,30,10,97,19,247,135,
-4,224,36,9,192,1,247,174,5,230,211,7,224,2,0,228,13,3,230,217,
-3,224,200,18,193,176,168,217,224,5,8,224,68,3,160,73,227,117,2,163,
-123,228,67,13,224,116,4,224,34,6,224,157,4,224,154,13,164,183,240,51,
-8,64,0,231,128,3,231,57,10,232,55,5,224,95,27,242,19,4,192,95,
-237,213,4,128,5,224,106,20,224,97,20,232,245,3,224,38,8,164,188,3,
-67,32,61,61,224,42,20,247,106,15,241,38,3,234,227,9,229,211,8,237,
-12,33,247,128,69,1,39,32,244,179,22,240,130,6,96,12,162,112,194,170,
-243,208,5,65,169,243,210,7,225,240,13,239,61,3,226,59,2,164,146,128,
-1,225,52,10,225,104,7,240,57,1,224,102,9,229,22,0,224,28,11,0,
-90,224,79,14,192,107,166,210,224,31,6,167,1,230,224,2,231,113,14,228,
-21,11,225,247,8,193,68,199,142,162,43,193,89,160,32,128,73,244,148,2,
-225,172,0,129,122,229,185,3,197,186,224,103,5,245,51,1,226,137,64,243,
-194,22,224,64,4,225,41,10,240,181,2,228,192,0,207,136,224,222,19,233,
-32,6,128,191,224,126,1,224,13,4,129,69,224,117,12,64,113,225,78,2,
-251,120,3,235,112,1,128,0,224,201,1,64,1,245,18,255,245,18,221,226,
-154,0,131,135,229,44,9,96,207,244,133,8,224,0,1,192,166,160,170,164,
-58,167,162,227,139,13,224,52,5,194,212,224,22,9,193,234,248,14,6,224,
-37,5,226,174,10,64,1,228,251,0,224,73,1,160,2,225,39,0,160,25,
-64,220,226,195,6,128,21,192,176,230,31,9,225,19,14,227,228,3,225,67,
-4,224,0,4,224,167,5,224,1,9,245,115,8,236,115,3,225,90,4,224,
-166,0,225,99,12,194,90,225,145,5,224,42,11,224,123,1,252,138,34,227,
-68,7,96,42,229,230,0,224,105,6,227,204,21,231,254,25,224,130,23,229,
-94,7,9,51,54,57,32,95,51,55,49,32,73,244,37,4,242,106,3,224,
-50,3,0,56,148,78,224,54,5,236,222,6,226,207,2,231,192,1,198,194,
-231,199,14,224,193,3,243,224,13,65,114,231,246,11,234,13,8,231,170,10,
-225,219,5,225,32,10,231,171,19,230,86,5,194,242,231,168,6,224,163,1,
-160,16,192,58,128,148,129,213,247,37,7,128,56,99,24,0,79,134,213,225,
-73,1,231,186,2,225,6,6,240,106,3,193,109,200,134,225,91,10,224,54,
-0,129,23,224,69,3,224,92,6,231,221,103,227,248,3,64,62,225,8,13,
-192,57,233,108,4,224,229,17,227,64,18,232,0,16,227,132,50,245,47,2,
-224,130,5,225,7,9,241,59,2,225,7,29,241,24,5,224,51,30,240,109,
-8,226,136,5,224,158,3,224,178,0,98,25,192,188,229,167,0,224,16,0,
-1,56,51,134,82,229,92,1,1,95,56,152,125,96,30,251,60,0,64,0,
-229,209,17,225,26,5,64,11,225,116,6,227,220,0,227,123,1,224,151,1,
-128,16,176,187,128,5,103,231,224,89,1,96,37,226,148,2,224,173,1,194,
-48,230,162,16,192,93,245,16,27,227,151,0,224,117,1,128,1,251,213,1,
-224,80,0,224,224,6,227,180,1,128,209,230,170,5,162,92,224,67,1,224,
-61,7,224,64,2,224,61,22,163,42,224,59,11,224,55,4,224,52,2,225,
-15,4,128,158,246,110,16,224,243,1,228,237,2,228,234,4,225,78,14,245,
-171,10,224,76,71,192,223,96,51,226,140,9,160,217,128,204,224,60,6,128,
-0,226,124,1,226,133,4,224,169,6,165,42,105,116,140,61,128,98,237,112,
-12,128,50,230,187,1,224,98,8,228,195,12,243,169,7,224,155,13,236,108,
-2,224,106,1,128,44,243,199,101,5,49,55,49,58,49,50,250,159,4,108,
-27,229,48,1,2,51,54,56,129,110,196,99,196,57,72,66,64,44,165,45,
-224,39,8,68,130,1,50,54,224,47,1,2,64,95,49,97,252,0,83,65,
-200,1,53,56,64,24,1,49,50,98,27,2,51,54,54,165,109,232,202,2,
-1,95,96,160,149,224,47,3,0,52,224,47,17,0,39,224,48,0,224,33,
-15,7,40,41,44,91,93,59,123,125,128,38,224,37,15,2,32,94,41,224,
-32,21,22,58,33,35,36,37,38,42,43,46,47,60,61,62,63,64,92,92,
-92,94,92,124,45,126,192,52,193,15,230,172,2,82,132,224,20,4,67,146,
-142,172,128,11,230,212,0,7,58,56,52,54,32,64,10,65,162,192,130,82,
-98,176,162,209,130,193,67,11,0,54,64,48,130,58,3,80,32,95,51,229,
-236,0,194,98,224,30,1,225,206,9,234,62,15,3,108,105,110,101,226,11,
-0,224,74,53,5,112,114,97,103,109,97,224,76,0,232,8,0,128,214,224,
-71,33,2,100,101,102,224,148,1,132,40,193,76,224,55,20,4,117,110,100,
-101,102,128,54,193,28,64,192,2,95,50,48,112,46,0,54,129,52,227,82,
-75,3,56,56,58,53,96,120,0,90,64,169,0,56,65,230,107,124,192,0,
-195,240,160,138,128,213,160,2,3,95,51,55,57,64,51,0,53,64,216,142,
-205,161,252,97,239,225,236,0,224,183,76,0,57,160,183,233,87,3,225,250,
-1,199,164,160,13,164,196,225,139,18,3,79,32,35,52,234,18,4,237,211,
-0,130,187,224,244,0,119,136,162,93,199,0,75,164,97,36,1,51,54,144,
-98,65,47,1,51,56,224,246,2,16,105,110,99,111,109,112,108,101,116,101,
-32,109,97,99,114,111,32,98,41,7,105,116,105,111,110,58,94,42,128,200,
-224,54,10,2,32,32,35,130,82,0,32,163,176,0,39,160,34,68,175,64,
-7,224,182,3,3,95,56,51,54,96,16,233,158,7,224,202,0,129,38,232,
-157,4,160,201,226,223,20,224,83,9,235,39,8,227,117,34,64,77,0,49,
-224,77,2,226,78,1,161,104,64,68,232,12,5,227,221,10,228,90,0,161,
-20,0,56,74,148,229,188,0,243,33,0,1,95,57,105,94,96,16,160,96,
-237,25,0,102,18,192,76,194,203,110,174,162,203,128,207,160,25,65,102,128,
-25,1,95,56,64,191,224,31,1,6,55,50,50,32,95,55,52,202,208,231,
-171,4,65,167,0,54,170,190,64,8,7,52,53,53,32,95,52,52,50,64,
-9,96,31,234,217,5,128,147,64,40,0,57,64,136,0,54,64,87,0,52,
-229,143,5,197,125,1,95,54,139,30,128,116,131,158,97,7,226,28,1,226,
-71,1,0,35,228,224,2,224,56,2,224,55,4,0,55,224,55,11,229,99,
-0,224,53,2,64,163,96,167,64,253,67,14,129,7,0,80,224,243,0,227,
-145,13,130,22,237,248,2,226,27,13,68,77,233,185,7,195,205,195,199,224,
-79,1,136,153,234,77,1,2,95,49,53,134,195,135,13,96,98,224,33,1,
-130,82,73,177,240,215,1,234,199,3,160,203,224,170,28,225,36,2,0,35,
-230,56,1,195,93,128,111,228,150,22,241,202,7,224,101,31,192,62,176,28,
-229,145,1,140,124,225,12,8,160,251,64,12,226,123,5,224,12,3,128,0,
-164,36,224,53,0,163,204,225,80,8,225,79,8,163,170,224,23,8,237,160,
-4,0,89,96,181,227,28,1,229,151,2,224,138,6,0,58,109,252,6,10,
-65,32,75,50,32,58,96,69,64,11,2,32,75,32,64,25,0,51,160,13,
-0,65,96,13,0,50,96,13,4,95,56,51,51,32,99,237,224,4,1,0,
-58,99,168,64,28,4,51,56,48,32,75,75,82,10,32,67,32,80,32,75,
-32,95,55,54,51,226,230,2,15,114,101,112,108,97,99,101,109,101,110,116,
-44,32,97,116,32,230,164,63,3,50,53,58,54,129,181,224,114,106,75,139,
-224,116,105,0,90,140,28,97,142,96,132,0,52,224,132,106,65,249,0,48,
-225,249,14,100,232,65,143,101,41,64,9,200,247,96,12,96,189,96,17,162,
-209,64,18,140,239,224,26,1,226,212,0,0,58,102,48,2,10,65,32,64,
-246,0,90,68,50,192,4,150,54,0,58,96,100,1,10,65,224,29,7,224,
-34,5,0,55,160,34,70,43,101,101,1,95,54,75,88,0,58,71,207,226,
-190,27,69,164,5,98,114,101,97,107,115,226,189,95,224,113,88,1,64,90,
-225,148,0,97,43,193,143,65,36,88,75,225,132,0,0,58,106,126,161,62,
-184,103,224,10,30,232,75,1,0,32,82,83,225,209,0,132,108,192,44,224,
-7,11,224,70,2,224,59,2,0,58,96,163,225,236,6,224,60,5,128,41,
-0,58,96,217,98,53,0,90,120,95,0,58,114,253,96,57,2,80,32,35,
-64,245,0,85,97,254,130,195,4,80,32,35,51,32,71,113,0,58,119,77,
-192,38,64,255,96,38,95,7,101,15,142,193,0,58,112,182,226,147,1,128,
-96,64,25,224,213,10,64,144,0,58,114,131,160,28,1,80,32,153,219,0,
-80,96,72,129,10,3,80,32,35,53,192,128,128,225,0,80,119,161,128,17,
-128,202,3,80,32,35,54,192,17,128,203,112,141,233,181,1,111,168,70,149,
-72,108,0,49,70,232,6,55,52,55,32,95,55,53,68,165,0,53,137,153,
-64,128,169,246,129,41,143,132,2,58,56,50,129,9,128,74,79,98,224,65,
-14,73,141,70,44,169,236,0,67,72,223,0,49,230,181,0,1,95,55,168,
-195,96,86,2,58,56,49,193,77,200,198,237,245,4,156,117,96,8,151,248,
-2,95,56,49,170,64,232,136,4,199,225,247,33,8,128,207,96,8,1,95,
-54,69,6,232,139,0,224,60,4,245,36,2,162,145,64,189,96,224,7,64,
-95,49,57,49,32,95,57,231,92,3,128,48,1,95,56,144,158,224,20,0,
-135,252,224,33,2,165,134,192,38,64,238,196,138,226,2,1,194,189,0,58,
-96,39,194,186,98,85,64,235,228,149,0,72,144,0,50,72,61,101,60,233,
-51,0,225,108,7,232,197,1,225,108,1,96,37,81,88,225,238,9,64,101,
-194,121,129,218,117,233,74,249,1,55,56,99,222,201,33,115,151,96,138,237,
-97,16,31,67,97,110,110,111,116,32,101,120,112,97,110,100,32,35,105,102,
-32,100,105,114,101,99,116,105,118,101,32,105,110,32,102,1,105,108,237,68,
-3,205,70,2,95,49,51,75,144,151,54,224,81,6,4,58,94,42,32,32,
-250,163,2,224,140,1,5,66,32,95,48,32,95,67,29,162,53,2,95,51,
-57,64,16,67,185,3,95,51,54,53,225,49,3,168,210,96,52,2,52,50,
-52,64,4,128,54,224,193,8,31,87,97,114,110,105,110,103,58,32,116,114,
-97,105,108,105,110,103,32,99,104,97,114,97,99,116,101,114,115,32,97,102,
-116,1,101,114,64,214,238,43,17,142,88,97,0,3,115,105,111,110,224,245,
-47,224,240,1,130,68,97,145,1,95,56,82,253,225,144,43,4,112,97,114,
-115,101,225,143,76,227,71,3,225,143,17,147,144,109,188,225,152,11,1,95,
-56,146,211,225,159,90,224,255,56,225,153,3,2,95,49,50,192,241,64,0,
-1,58,56,84,109,72,43,224,224,0,96,8,0,56,174,53,236,85,15,1,
-47,47,128,83,174,152,129,19,0,58,97,19,64,76,5,49,49,32,95,55,
-48,67,189,2,56,49,49,99,158,224,17,1,1,52,56,78,158,78,140,65,
-124,128,19,5,55,49,51,32,95,55,241,240,5,2,124,92,124,160,99,0,
-55,64,219,0,55,117,149,96,40,162,83,229,248,1,160,70,99,68,0,51,
-181,71,128,143,171,228,224,143,3,0,48,224,143,45,1,38,38,224,141,16,
-143,213,224,141,17,212,245,64,40,64,141,1,52,55,68,209,96,113,224,10,
-13,224,135,9,78,224,0,51,206,224,224,188,2,224,140,2,96,217,96,218,
-224,129,0,129,209,224,49,5,1,56,48,143,232,224,17,3,66,53,128,188,
-224,38,5,128,21,224,212,5,170,126,224,83,9,245,255,1,1,53,55,64,
-20,2,51,52,49,159,143,130,115,128,41,0,49,72,116,224,17,5,0,52,
-188,122,2,95,55,52,64,247,224,208,3,96,188,0,58,96,216,225,55,28,
-225,77,31,225,213,1,1,62,61,161,213,224,144,2,5,53,57,32,95,53,
-56,161,56,225,138,12,1,54,50,225,138,1,224,55,1,1,56,50,224,55,
-1,224,117,21,0,60,224,117,9,1,55,53,224,60,21,64,117,244,103,0,
-224,55,2,72,32,224,116,29,0,61,224,234,10,225,173,0,224,61,24,0,
-33,224,61,9,105,34,192,61,0,58,98,69,225,165,6,226,33,3,0,54,
-137,128,224,29,1,226,132,7,72,33,226,132,38,224,18,4,130,63,128,50,
-0,58,96,6,224,141,6,225,84,12,80,20,225,84,8,1,57,56,65,84,
-160,86,224,54,13,242,109,0,225,78,3,73,116,192,55,0,58,96,209,225,
-16,16,2,55,56,57,225,16,23,73,6,225,16,8,170,174,225,16,35,64,
-13,0,58,96,6,227,68,17,224,228,13,226,230,11,0,53,225,27,25,0,
-55,224,54,10,0,55,71,88,1,56,48,166,120,228,225,14,224,56,11,1,
-50,50,72,69,160,56,0,58,97,21,101,209,0,50,68,39,1,57,49,96,
-90,0,50,192,33,2,95,55,57,69,145,128,11,2,50,50,55,224,11,2,
-0,56,224,11,0,1,56,48,68,93,2,50,51,54,192,17,108,125,64,9,
-106,81,0,83,102,234,237,134,0,0,80,136,170,227,9,1,12,73,110,116,
-101,103,101,114,58,32,100,105,118,105,105,48,3,98,121,32,48,167,98,237,
-194,1,107,253,64,64,82,184,5,80,32,95,50,49,54,64,4,71,83,146,
-197,224,17,9,128,64,237,104,5,135,228,245,25,1,247,48,3,65,0,128,
-55,128,37,104,213,1,95,55,118,186,2,95,56,48,101,123,128,42,98,29,
-192,36,171,243,160,12,0,83,139,136,2,56,48,49,75,192,0,65,128,134,
-233,34,2,109,121,64,5,160,88,182,169,152,186,136,124,0,85,83,95,128,
-0,80,230,0,48,199,157,192,0,0,58,97,113,1,10,65,160,194,64,58,
-1,95,50,151,49,0,55,109,80,64,49,252,14,3,64,9,0,89,161,61,
-224,19,0,237,85,0,64,63,255,30,4,245,222,5,192,219,173,22,235,125,
-3,128,238,128,69,78,82,109,232,66,95,0,52,99,127,160,220,206,74,120,
-74,73,216,192,28,96,241,68,27,0,49,109,89,0,67,67,8,192,12,1,
-95,50,78,21,64,0,2,95,53,52,134,227,151,161,129,219,0,58,97,95,
-140,177,224,211,1,206,150,173,205,206,19,224,7,2,71,83,0,53,78,0,
-2,95,53,56,106,111,129,196,0,80,97,142,103,226,128,6,193,150,96,26,
-77,58,64,21,64,59,0,54,66,235,1,53,56,183,131,64,32,160,49,96,
-28,200,185,96,58,0,39,160,46,96,26,168,56,249,165,1,143,133,0,83,
-250,200,0,238,182,5,242,231,1,64,69,0,56,67,150,1,53,55,174,126,
-193,122,161,125,225,229,0,96,17,64,87,161,193,97,122,1,55,57,110,41,
-192,95,160,163,128,220,160,12,0,67,224,37,0,64,253,97,107,153,146,224,
-197,16,64,39,64,48,192,243,225,16,3,227,134,2,101,143,98,209,64,137,
-0,50,86,4,98,13,239,75,0,121,93,112,231,104,216,1,67,39,66,133,
-1,95,55,64,21,162,139,224,77,3,224,13,5,0,58,99,144,112,241,228,
-80,6,15,108,97,115,116,58,32,101,109,112,116,121,32,108,105,115,116,100,
-74,129,44,2,85,32,64,81,235,128,98,67,73,96,8,68,255,224,89,1,
-0,79,113,249,64,127,0,58,97,13,227,72,0,132,232,1,75,32,64,23,
-134,138,99,223,0,58,97,255,175,162,68,24,219,230,227,56,1,113,68,98,
-43,1,53,53,64,187,2,95,53,54,97,47,160,14,0,58,100,9,2,10,
-65,32,87,151,133,33,222,123,248,185,1,192,93,96,70,158,4,131,186,228,
-148,0,243,93,11,64,133,234,72,1,0,49,112,250,2,95,49,55,64,11,
-65,129,234,84,2,254,240,0,133,105,0,67,131,153,129,166,96,48,224,47,
-1,194,229,64,0,64,60,0,58,101,54,161,39,130,187,1,95,50,84,14,
-129,29,132,171,224,27,7,129,71,204,79,0,50,127,90,103,7,169,126,1,
-95,51,71,46,0,58,102,146,97,106,3,75,51,32,75,68,0,0,58,70,
-250,160,81,0,95,71,112,103,216,195,225,153,217,131,67,184,210,251,179,1,
-0,35,132,73,100,8,65,58,161,169,161,85,178,45,224,47,3,0,49,82,
-240,196,198,224,79,10,0,49,172,171,0,85,82,85,0,54,231,200,1,128,
-16,0,55,224,16,2,160,18,231,236,3,135,170,84,16,163,195,1,82,32,
-225,143,2,84,145,131,4,0,58,104,219,115,201,64,221,1,95,55,67,108,
-64,135,0,55,92,204,129,145,193,194,115,25,1,95,55,84,159,0,58,64,
-109,224,54,22,192,137,84,169,224,54,1,130,220,224,54,17,129,68,1,95,
-53,122,108,224,53,0,0,54,227,4,0,97,76,250,94,2,226,150,0,226,
-154,0,225,112,0,196,242,128,253,224,47,1,195,67,64,2,101,32,228,210,
-1,128,2,211,237,224,91,4,193,254,224,22,0,164,193,128,98,230,23,0,
-0,64,102,200,224,57,0,133,231,224,117,0,230,248,4,224,162,0,67,13,
-98,7,137,178,96,61,64,27,1,95,50,83,58,67,178,254,6,1,160,171,
-1,79,32,115,212,97,196,225,64,5,198,255,0,58,97,92,97,53,103,158,
-234,191,9,224,13,1,233,226,2,0,55,71,234,233,209,0,130,36,234,214,
-4,2,55,49,57,66,89,64,111,0,55,96,39,0,56,194,198,70,174,238,
-17,0,96,168,3,95,55,49,56,160,44,64,68,1,51,56,64,58,108,60,
-133,186,192,209,96,59,224,98,0,75,112,64,65,224,81,48,0,58,116,89,
-136,195,224,187,5,99,16,167,40,196,248,103,183,244,213,2,229,236,1,6,
-100,101,102,105,110,101,100,170,46,160,53,225,70,5,193,231,224,100,3,239,
-26,6,0,55,92,245,193,48,225,59,4,71,28,1,56,49,163,239,241,190,
-16,1,44,41,210,18,235,185,5,0,52,233,84,1,96,135,162,135,225,71,
-2,147,218,0,52,69,96,0,55,78,240,204,108,132,17,245,135,6,0,90,
-69,36,0,54,75,104,0,55,109,150,236,158,4,96,0,227,68,2,225,8,
-10,224,18,10,225,24,7,228,147,1,66,180,164,242,234,27,0,224,45,12,
-65,75,224,65,12,66,26,82,193,224,166,8,224,88,9,224,184,7,168,208,
-69,143,255,254,31,226,9,5,230,10,0,130,185,0,67,139,38,129,85,229,
-203,0,139,173,87,8,104,173,97,137,66,9,165,70,224,182,0,65,202,0,
-56,237,75,9,225,166,0,224,5,3,139,144,0,75,128,45,93,250,224,69,
-13,1,64,75,82,202,224,26,3,232,244,1,93,171,224,26,14,71,165,243,
-213,4,251,241,63,4,51,56,58,49,50,161,59,0,75,234,171,0,128,210,
-227,86,1,133,61,224,10,0,225,58,0,168,100,120,150,224,240,15,225,55,
-7,171,0,160,81,165,213,64,13,161,175,225,75,7,64,24,251,207,1,224,
-111,38,67,59,64,1,67,124,197,72,98,159,92,1,1,95,55,142,64,229,
-82,6,224,113,6,238,136,0,96,169,224,69,1,197,3,65,52,162,8,3,
-32,95,55,55,67,93,211,140,224,89,10,225,201,81,1,52,53,225,201,1,
-0,58,101,165,251,91,2,231,114,2,0,80,135,214,64,255,227,121,2,230,
-255,6,70,249,136,227,234,213,4,192,21,167,95,96,69,64,229,172,161,0,
-58,68,202,232,13,1,213,54,2,95,51,54,93,23,69,79,128,28,128,24,
-152,25,67,217,0,54,87,60,0,67,67,231,0,54,197,113,225,32,1,2,
-39,96,95,128,213,0,58,102,206,74,54,2,55,48,48,136,104,0,55,83,
-58,96,197,108,185,97,233,64,21,1,50,32,224,64,2,25,69,120,112,101,
-99,116,101,100,32,101,110,100,32,111,102,32,105,110,112,117,116,32,40,69,
-79,70,229,189,0,0,58,103,91,251,156,15,0,55,75,62,106,139,226,18,
-3,248,96,8,0,35,95,149,0,32,128,82,133,238,248,82,2,0,51,64,
-226,98,122,64,20,81,164,210,20,128,31,2,49,52,51,64,36,174,251,128,
-146,137,143,0,80,160,225,194,99,170,174,104,53,234,150,5,1,64,35,75,
-96,192,188,0,80,66,141,70,206,193,229,193,167,160,26,0,53,99,56,171,
-146,64,0,140,133,162,45,162,15,229,139,1,78,98,224,92,1,224,10,0,
-235,111,13,75,223,129,6,203,114,227,221,0,235,76,10,169,22,64,26,65,
-211,64,153,128,172,224,26,0,224,108,1,66,189,208,89,144,25,224,223,0,
-192,173,235,215,19,128,79,169,249,99,6,162,186,237,112,5,224,224,2,224,
-179,13,129,104,128,115,98,10,224,144,2,66,53,225,95,11,224,44,19,224,
-199,3,128,0,1,58,55,86,17,5,10,65,32,65,32,58,96,76,3,10,
-65,32,75,64,10,211,95,209,216,128,172,130,29,224,244,12,0,51,96,86,
-224,199,13,124,60,90,125,132,175,160,7,193,75,135,42,230,11,1,224,61,
-1,190,100,131,118,1,95,55,131,231,1,58,55,80,170,141,161,103,201,200,
-196,0,55,144,123,133,68,133,217,96,56,0,58,96,56,224,205,1,114,77,
-232,169,36,171,231,233,89,3,126,240,154,156,234,160,2,68,22,233,236,0,
-233,173,20,161,161,230,67,3,224,128,16,224,43,7,236,203,4,230,203,0,
-134,57,96,45,67,178,232,125,5,97,8,223,208,167,10,225,125,3,231,13,
-6,144,198,172,137,230,162,9,64,244,124,125,134,218,224,208,0,245,10,3,
-224,7,7,197,204,129,197,230,202,14,128,0,230,187,78,2,51,55,55,230,
-187,3,66,46,240,57,4,131,153,225,73,5,225,82,6,180,0,212,6,188,
-187,195,111,92,58,100,54,66,187,0,54,155,166,114,132,1,95,55,113,145,
-144,218,108,195,66,49,107,99,242,163,0,224,69,0,224,60,14,128,42,162,
-12,255,142,16,5,109,97,99,114,111,32,128,227,193,238,166,32,129,206,224,
-51,10,1,32,101,198,186,128,55,160,136,96,53,64,144,230,88,1,224,145,
-6,192,91,224,74,2,23,97,114,103,117,109,101,110,116,115,44,32,98,117,
-116,32,119,97,115,32,103,105,118,101,110,128,90,224,77,5,160,208,161,243,
-179,132,165,10,64,2,1,95,55,127,218,96,178,247,20,4,233,219,2,201,
-203,181,168,160,223,0,54,88,99,235,200,4,66,212,160,98,66,116,1,54,
-55,228,92,1,108,48,132,206,2,55,52,52,71,217,123,42,166,235,165,203,
-244,178,4,65,249,64,98,81,116,224,101,8,128,42,224,100,9,65,53,96,
-11,67,60,65,223,193,69,165,169,133,64,64,125,65,119,69,211,228,48,0,
-0,58,99,36,72,146,2,53,54,57,67,165,0,58,96,64,177,69,71,104,
-0,75,64,83,0,51,225,136,2,4,101,120,112,97,110,88,238,4,44,32,
-97,116,32,233,253,64,2,53,58,54,130,35,224,112,104,108,236,224,114,103,
-69,130,224,229,104,65,243,0,58,98,43,228,157,4,224,9,1,98,226,0,
-55,74,236,160,20,0,95,142,79,70,97,1,95,55,146,40,181,110,83,228,
-181,206,64,83,137,234,231,212,0,246,10,1,128,71,142,208,132,242,224,53,
-2,0,54,226,106,21,227,242,2,226,106,93,224,112,87,226,106,10,224,114,
-89,226,106,8,224,114,89,0,32,111,137,0,58,100,134,225,224,19,6,114,
-101,112,108,97,99,101,64,140,225,226,95,224,114,89,225,228,10,224,116,91,
-151,116,81,130,224,123,103,0,58,105,171,143,24,0,52,74,247,123,157,2,
-95,55,54,121,7,91,131,5,10,65,32,73,32,58,96,16,70,107,1,52,
-56,109,193,75,171,1,95,55,104,111,1,95,51,93,96,160,56,0,51,106,
-245,192,11,84,52,96,11,0,58,96,6,121,117,3,51,54,32,75,175,161,
-0,49,232,36,3,6,110,111,32,102,105,101,108,200,110,96,29,104,1,117,
-54,128,105,0,49,107,69,96,11,0,58,96,6,96,145,0,57,66,156,1,
-51,53,72,65,0,50,251,147,3,17,67,111,110,116,114,111,108,46,69,120,
-99,101,112,116,105,111,110,46,95,246,3,114,110,97,108,64,98,224,39,1,
-10,82,101,99,83,101,108,69,114,114,111,114,96,123,97,140,0,58,96,226,
-227,0,2,0,73,140,55,64,28,99,33,1,75,51,65,33,73,61,175,186,
-120,185,146,29,91,214,69,40,64,8,0,55,88,177,1,95,51,88,224,229,
-129,1,233,133,1,72,92,105,252,157,235,236,224,3,197,181,96,37,150,65,
-65,161,0,53,65,3,0,53,172,30,0,58,107,200,124,76,5,52,56,32,
-95,50,53,65,44,96,28,1,95,50,224,40,1,1,95,51,81,57,1,95,
-51,140,67,1,53,52,129,194,154,247,160,106,1,53,53,224,20,9,1,50,
-57,65,216,160,77,0,57,65,216,96,11,0,58,96,6,151,70,109,214,138,
-246,203,44,128,2,128,184,142,19,78,18,0,53,86,225,136,245,242,15,1,
-152,204,88,143,64,7,73,90,218,127,128,60,236,15,0,5,50,56,52,32,
-95,50,124,24,234,194,4,76,31,160,50,65,37,1,53,51,128,22,90,187,
-125,39,160,0,224,113,90,0,54,224,113,5,224,42,6,224,15,7,0,58,
-65,111,97,66,170,182,217,216,224,153,12,207,89,3,95,50,56,51,224,148,
-0,64,163,141,30,130,124,224,13,1,224,149,16,128,80,0,58,66,0,98,
-50,2,56,32,58,96,42,199,253,171,226,0,55,84,208,135,241,81,144,139,
-104,177,73,161,36,64,5,235,103,0,64,152,0,50,74,239,186,141,128,30,
-64,22,253,205,0,136,157,0,53,160,14,253,219,8,131,27,0,64,192,194,
-224,40,0,0,35,242,147,0,154,190,2,95,55,53,132,77,0,53,132,141,
-111,88,100,137,77,100,0,58,96,29,1,10,65,81,186,0,49,64,218,132,
-32,96,245,0,58,96,39,114,209,0,58,96,223,96,24,126,43,65,106,232,
-255,5,107,171,128,230,194,219,104,252,0,54,121,48,233,107,0,67,147,4,
-64,95,49,57,49,192,228,97,216,64,21,224,117,2,251,107,4,105,92,175,
-164,144,109,169,92,108,164,111,65,210,20,0,58,100,24,224,165,2,129,167,
-226,47,1,160,5,112,174,0,64,77,8,1,75,52,130,47,1,95,55,147,
-238,68,47,149,47,149,43,96,35,158,206,192,35,160,139,0,58,80,157,129,
-79,224,93,7,0,55,92,105,160,93,98,71,224,93,0,129,24,117,153,149,
-152,224,95,10,239,54,1,124,253,227,134,0,170,78,147,217,123,186,97,111,
-245,211,7,209,97,99,26,0,52,66,204,224,231,12,240,54,1,179,177,224,
-137,11,188,8,229,245,1,31,87,104,101,110,32,108,111,111,107,105,110,103,
-32,102,111,114,32,97,32,110,111,110,45,101,109,112,116,121,32,115,101,113,
-24,117,101,110,99,101,32,119,105,116,104,32,115,101,112,97,114,97,116,111,
-114,115,58,94,42,94,149,184,0,58,97,92,135,56,215,150,241,212,0,0,
-48,205,163,64,210,242,28,3,224,41,8,0,49,192,41,241,245,4,0,58,
-114,68,128,92,241,252,2,124,200,133,105,130,58,230,48,6,98,150,251,170,
-2,239,214,11,239,213,10,176,9,239,179,6,2,103,111,116,160,35,224,157,
-6,0,58,64,187,64,156,119,10,0,89,161,221,68,33,224,140,2,239,1,
-10,0,64,172,90,241,196,75,4,49,48,57,58,55,128,173,175,243,98,89,
-0,52,68,233,224,14,1,244,151,3,68,88,224,25,13,66,46,0,83,64,
-213,64,25,252,8,2,128,30,68,59,96,57,244,246,20,1,49,50,98,138,
-224,33,18,135,98,224,66,19,153,2,99,42,245,58,8,88,49,64,234,70,
-20,88,135,165,229,208,52,96,164,192,12,96,43,230,75,0,6,95,52,52,
-57,32,95,53,68,78,129,45,224,66,27,128,139,224,67,53,96,240,224,66,
-6,1,55,50,165,249,224,134,30,97,85,224,67,15,196,6,228,111,0,101,
-43,129,196,228,211,1,249,233,5,255,91,16,7,59,40,41,91,93,123,125,
-96,195,1,230,6,0,104,216,228,200,0,71,19,224,102,6,250,89,3,0,
-50,225,183,6,2,64,35,57,135,34,229,60,1,128,6,157,253,128,97,154,
-66,165,5,227,191,8,13,66,97,100,32,99,104,97,114,97,99,116,101,114,
-58,131,161,211,62,167,44,167,127,226,160,1,162,203,128,116,64,192,128,31,
-233,163,3,226,99,10,102,222,192,33,135,253,161,91,160,46,160,71,224,202,
-0,65,90,126,196,115,59,230,72,3,230,222,0,85,234,100,109,132,154,129,
-226,96,50,230,252,1,233,144,1,200,186,129,232,192,91,211,75,224,48,8,
-224,46,14,129,14,226,95,6,224,62,10,96,54,252,23,30,1,95,39,229,
-26,0,230,165,0,224,98,26,64,79,64,101,96,11,102,240,96,47,3,64,
-67,32,79,230,49,2,226,159,26,22,33,64,35,36,37,38,42,43,46,47,
-60,61,62,63,92,92,92,94,92,124,58,45,126,160,148,129,229,193,226,169,
-164,97,223,224,207,15,1,101,69,224,58,12,202,246,128,18,229,17,15,132,
-6,224,110,4,226,17,8,192,130,225,138,11,226,25,11,230,180,6,0,43,
-230,173,2,226,36,6,226,28,7,224,180,30,214,170,224,180,82,0,45,224,
-180,34,224,128,65,0,79,138,254,194,78,224,124,30,196,117,224,197,8,3,
-109,105,115,115,73,33,7,43,47,45,47,100,105,103,105,168,20,224,39,8,
-14,97,102,116,101,114,32,101,32,105,110,32,102,108,111,97,224,38,15,6,
-108,105,116,101,114,97,108,164,184,64,155,254,128,7,214,235,224,204,8,224,
-68,1,2,46,46,46,227,126,1,96,229,195,72,64,0,94,74,194,198,0,
-85,101,65,64,218,170,234,225,165,9,255,151,3,0,105,184,145,224,35,6,
-2,115,116,114,65,2,160,187,128,34,96,118,198,20,97,164,129,131,138,198,
-232,78,6,193,202,245,178,10,64,186,221,36,230,161,0,97,176,106,188,97,
-148,80,222,233,54,77,3,49,56,58,52,210,133,228,144,3,121,45,126,23,
-248,131,0,64,0,248,127,4,97,89,64,48,96,39,230,129,2,124,252,81,
-6,128,60,249,206,0,0,67,102,233,0,52,81,168,105,152,96,0,129,156,
-234,45,8,225,160,13,160,169,1,58,55,66,32,114,77,253,25,2,221,110,
-1,95,55,72,173,194,70,224,72,2,202,249,0,97,225,201,0,71,72,163,
-164,225,182,7,64,181,235,75,2,224,70,1,3,98,105,110,100,128,51,235,
-154,4,0,52,98,105,224,17,3,64,58,93,240,224,143,15,224,132,3,4,
-32,104,97,115,32,115,1,3,110,97,108,32,198,92,65,144,224,150,41,236,
-74,5,97,45,206,225,130,122,0,83,158,156,160,96,99,60,77,229,96,15,
-237,232,8,0,58,64,200,174,208,116,19,64,57,236,153,8,106,31,128,93,
-236,240,2,165,94,224,192,3,91,31,107,61,224,213,9,224,181,2,224,225,
-12,225,191,14,0,44,108,169,0,39,231,144,0,224,152,14,134,3,224,138,
-4,155,247,224,27,13,235,157,5,224,27,4,0,49,99,147,224,28,15,156,
-25,224,28,15,163,232,224,28,13,229,242,0,224,28,11,224,144,18,97,83,
-224,27,14,196,90,224,27,12,133,111,224,83,13,192,55,101,70,0,83,198,
-46,224,157,15,236,170,0,224,28,10,141,10,64,22,3,83,32,95,54,144,
-41,238,165,3,229,146,8,18,117,110,114,101,99,111,103,110,105,115,101,100,
-32,101,115,99,97,112,101,239,144,1,1,105,110,225,253,4,3,58,32,92,
-92,97,249,233,66,2,207,35,224,137,7,157,88,224,27,14,97,124,224,27,
-14,98,40,224,27,14,97,151,224,27,14,97,95,224,27,13,93,186,224,27,
-16,214,33,224,27,11,97,235,224,27,14,224,195,18,149,122,224,27,13,0,
-56,224,83,18,0,56,102,136,224,27,14,228,67,0,228,164,5,81,168,86,
-232,230,177,75,5,51,48,56,58,49,52,163,235,83,76,227,234,5,224,138,
-8,66,198,229,198,24,196,120,0,35,130,199,235,117,16,4,39,92,92,86,
-84,228,104,0,224,125,26,65,60,224,125,33,152,25,224,125,19,1,85,83,
-228,230,3,1,55,48,78,254,224,4,15,224,155,22,112,21,230,224,34,224,
-67,12,110,167,225,93,33,160,186,224,154,61,224,86,1,211,223,226,11,60,
-224,67,22,67,70,224,154,33,99,88,224,242,28,226,41,37,167,174,224,174,
-25,225,228,59,224,242,38,224,243,32,100,62,224,156,54,101,182,224,156,34,
-236,242,0,227,189,27,124,114,227,189,33,128,248,227,189,18,4,83,79,72,
-39,32,96,7,128,6,1,84,88,128,7,0,73,128,6,1,89,78,128,7,
-5,85,66,39,32,111,114,96,10,0,80,240,102,1,228,109,73,151,44,224,
-175,18,0,82,228,109,9,225,210,90,102,197,224,198,33,183,242,225,32,27,
-103,255,224,157,55,224,67,28,226,112,1,228,243,0,225,102,17,2,78,85,
-76,193,240,2,78,65,75,225,241,35,104,68,228,53,34,225,241,24,1,76,
-70,230,221,35,231,91,37,142,6,224,124,18,0,72,231,90,82,0,50,224,
-125,24,0,71,226,236,40,225,125,39,165,24,224,219,73,105,218,224,219,19,
-1,70,70,194,96,0,70,224,229,1,232,65,20,225,250,60,224,67,22,230,
-87,37,221,96,225,149,24,230,242,58,226,217,38,208,202,231,74,62,224,155,
-22,68,81,224,155,33,168,40,224,243,63,229,96,22,231,141,38,193,211,225,
-56,25,119,11,224,88,33,192,245,227,107,63,224,246,22,224,157,38,218,175,
-227,177,15,2,111,110,101,82,241,3,39,92,92,69,168,34,2,69,79,84,
-128,7,1,78,81,128,7,1,84,66,128,7,0,77,195,216,2,69,83,67,
-227,217,14,224,188,23,234,34,59,225,247,37,0,49,225,1,1,224,88,60,
-224,224,59,224,156,1,234,34,35,225,249,28,229,90,37,122,29,224,174,34,
-129,74,224,85,23,0,53,230,171,38,134,82,224,86,25,228,140,37,220,160,
-224,86,24,238,87,37,146,96,96,20,231,3,17,1,68,69,233,101,0,2,
-68,76,69,224,10,0,6,67,91,49,46,46,52,93,227,59,9,228,55,23,
-238,250,38,164,234,234,164,94,237,178,38,247,139,0,225,62,17,1,67,82,
-193,50,2,67,65,78,225,45,40,228,100,106,196,98,233,111,73,233,110,24,
-0,66,226,106,1,0,66,233,111,2,228,78,62,225,38,23,236,160,37,196,
-237,224,206,18,1,65,67,236,148,2,153,241,4,53,32,64,95,53,80,92,
-6,95,55,51,48,32,95,51,189,77,224,29,10,0,49,224,29,2,218,47,
-224,31,0,86,49,1,95,48,160,138,154,54,0,50,64,209,213,201,2,95,
-55,51,92,23,192,63,224,251,8,86,81,159,176,0,48,64,54,2,95,49,
-53,66,138,0,53,64,76,0,35,123,237,88,218,92,94,128,18,0,57,96,
-71,246,124,22,249,149,4,4,99,116,114,108,45,182,129,8,109,97,108,102,
-111,114,109,101,100,86,114,1,92,94,97,17,246,116,3,125,103,224,203,2,
-96,225,64,224,5,49,57,49,32,95,57,98,99,0,51,81,184,96,5,128,
-159,193,84,225,143,1,187,45,224,17,3,128,40,224,17,2,151,239,228,94,
-4,180,57,224,35,2,224,34,8,188,81,224,17,2,174,14,224,17,2,224,
-88,8,162,235,227,86,8,224,234,2,158,98,68,5,225,90,6,253,104,7,
-217,190,225,97,4,162,88,0,58,123,64,1,10,65,118,75,0,83,66,210,
-0,55,76,214,224,61,1,6,100,101,99,105,109,97,108,129,117,65,84,0,
-55,123,112,158,212,97,196,0,50,126,50,96,229,3,95,51,52,49,94,56,
-128,188,152,185,1,95,55,78,3,0,58,66,81,186,190,1,55,48,66,53,
-154,179,156,245,155,161,67,0,0,58,98,137,224,143,18,2,111,99,116,224,
-141,37,161,73,1,53,52,98,8,192,140,0,49,224,100,20,2,104,101,120,
-224,240,36,131,204,1,95,55,105,95,224,99,0,0,48,96,99,227,43,4,
-6,95,49,53,51,32,35,52,64,147,99,54,0,51,71,116,152,229,224,38,
-9,123,39,224,38,0,186,253,64,174,224,39,6,102,185,224,39,0,152,224,
-3,95,51,54,48,226,3,2,8,100,105,103,105,116,84,111,73,110,189,201,
-227,30,12,224,16,0,163,40,64,86,193,204,224,49,28,96,176,224,49,21,
-96,39,96,255,1,64,58,97,39,65,133,0,39,127,143,191,208,157,20,158,
-81,64,0,128,27,64,5,228,133,1,100,178,0,49,73,216,103,66,1,95,
-55,207,227,64,38,128,42,227,38,1,153,69,1,39,66,65,197,1,66,39,
-96,5,2,32,95,53,122,63,224,117,0,96,11,125,148,96,7,2,83,32,
-95,252,136,3,0,67,68,84,128,74,226,9,16,160,124,1,95,50,115,138,
-67,144,99,150,0,50,64,245,2,66,32,80,197,77,224,62,18,160,67,222,
-175,229,33,9,1,94,42,227,202,0,108,169,6,114,32,109,111,114,101,32,
-165,16,254,229,7,0,32,97,243,0,115,227,231,0,66,225,66,142,98,59,
-0,56,97,138,1,54,32,65,26,128,14,226,83,1,229,184,0,226,128,0,
-229,202,2,194,133,224,45,10,194,134,224,45,2,130,139,64,124,159,8,171,
-141,225,185,0,97,184,224,145,1,0,54,88,81,5,67,32,95,51,54,54,
-167,85,231,16,3,1,96,95,199,12,230,142,3,78,114,230,89,22,0,69,
-254,191,0,10,110,32,105,100,101,110,116,105,102,105,101,190,190,1,92,34,
-225,62,4,1,79,32,101,246,220,206,1,58,55,86,184,128,184,103,46,3,
-49,32,95,49,102,64,0,58,96,120,96,25,1,50,48,100,71,64,1,0,
-80,64,35,66,230,130,122,197,143,1,55,48,132,23,99,25,162,217,0,58,
-97,0,128,64,0,49,229,21,0,98,55,2,95,55,48,137,24,1,32,89,
-100,159,0,83,72,26,0,75,65,119,96,4,162,39,192,50,99,103,98,108,
-0,89,69,85,162,198,64,4,224,55,1,198,42,128,62,96,10,194,117,0,
-89,66,238,2,39,32,80,225,69,24,18,102,97,105,108,101,100,32,116,111,
-32,112,97,114,115,101,32,97,110,121,79,44,22,116,104,101,32,112,111,115,
-115,105,98,108,101,32,99,104,111,105,99,101,115,58,94,42,97,85,99,165,
-1,55,32,121,141,64,11,3,50,50,32,85,99,137,129,108,224,98,8,192,
-55,224,53,1,97,237,0,54,159,19,196,11,1,32,66,128,91,227,235,0,
-129,6,224,19,2,0,83,96,14,228,80,0,128,2,128,20,224,55,2,225,
-32,4,224,26,3,0,90,161,37,192,38,128,76,96,11,0,39,102,184,192,
-91,1,95,49,97,202,0,80,160,64,194,53,226,34,1,198,242,0,89,132,
-117,74,136,136,126,132,210,193,1,64,52,0,58,65,29,128,45,128,115,0,
-80,70,67,86,198,5,10,65,32,85,32,58,66,102,166,78,0,39,64,2,
-64,59,72,125,132,80,0,75,96,85,1,95,55,155,146,132,181,97,125,99,
-29,0,85,64,31,0,65,224,33,3,66,101,225,123,5,3,73,110,32,97,
-255,236,0,225,136,12,1,83,39,65,121,101,75,99,185,0,56,194,110,69,
-108,224,135,12,161,31,64,137,0,52,94,155,160,137,170,98,188,62,0,58,
-68,14,168,25,64,18,64,44,70,49,224,80,11,0,58,96,117,128,43,3,
-54,32,95,52,97,59,226,255,0,133,123,193,83,67,210,1,52,49,250,31,
-2,0,55,103,166,0,58,64,210,129,72,0,85,193,142,2,90,32,90,69,
-118,1,52,53,67,201,235,211,2,198,203,131,31,234,115,0,0,90,130,195,
-96,220,160,85,96,0,0,58,96,11,97,174,0,75,96,228,0,58,97,127,
-96,16,0,73,65,205,64,196,67,241,203,121,97,21,132,22,101,9,2,95,
-52,53,192,230,233,44,0,235,121,6,64,237,3,83,32,64,82,227,171,3,
-225,196,1,0,80,67,153,9,46,115,97,116,105,115,102,121,58,32,131,178,
-236,122,7,96,95,130,107,99,58,100,180,0,50,161,11,224,75,1,6,82,
-97,110,32,111,117,116,67,227,10,105,110,112,117,116,32,40,69,79,70,41,
-197,45,137,183,64,73,130,161,3,95,52,55,56,64,21,0,55,69,198,224,
-153,10,0,110,164,54,162,86,74,180,2,95,52,56,76,149,133,20,1,52,
-56,102,24,64,11,0,58,96,6,163,9,228,227,1,0,83,202,51,67,200,
-227,191,9,99,182,99,185,98,94,0,58,96,98,64,152,1,54,51,108,251,
-130,33,138,122,229,10,0,0,58,96,165,64,37,97,28,130,61,224,35,1,
-96,226,129,235,232,121,0,224,14,6,232,106,7,1,95,49,193,6,2,64,
-95,50,97,231,128,10,96,48,64,10,0,58,96,6,64,114,192,18,224,230,
-5,229,202,9,0,67,162,125,65,54,96,181,229,191,4,2,95,52,57,224,
-127,0,1,95,51,97,69,192,103,130,140,1,95,51,225,72,3,136,152,142,
-14,172,223,96,50,71,187,0,58,96,6,128,50,67,230,224,122,0,134,60,
-107,168,128,130,160,80,139,81,224,74,7,132,251,64,6,2,10,65,32,67,
-90,0,85,128,16,194,210,0,90,128,242,65,171,69,57,0,58,96,82,161,
-238,64,20,224,28,6,130,95,2,73,32,58,96,192,97,209,2,32,95,54,
-73,158,2,58,54,57,170,64,1,32,80,66,24,0,80,78,222,100,40,224,
-12,0,139,164,192,45,129,235,66,66,233,245,0,230,37,5,96,197,129,120,
-132,237,138,13,166,60,0,83,160,58,0,64,96,18,224,5,4,230,113,6,
-160,60,230,145,2,230,127,14,129,195,224,19,2,64,62,0,66,143,83,243,
-150,2,202,124,192,42,134,2,227,8,3,132,165,224,215,2,224,40,3,0,
-64,224,76,3,174,196,128,57,224,110,12,100,250,224,206,1,162,244,134,81,
-0,50,67,86,64,46,100,252,64,5,96,157,198,215,2,64,64,79,68,249,
-167,9,224,64,56,224,199,0,224,73,44,135,103,66,9,128,30,4,79,32,
-35,52,54,224,91,3,203,255,225,1,15,128,114,3,82,32,95,51,78,47,
-224,153,5,98,37,0,39,96,2,99,41,98,112,128,39,224,119,24,225,239,
-1,64,1,0,89,192,23,226,135,1,226,68,5,224,48,4,72,125,224,66,
-6,200,127,224,63,9,70,105,244,100,0,161,241,192,182,2,95,51,57,64,
-29,200,253,224,78,1,3,95,52,50,52,64,4,224,24,9,232,49,5,23,
-87,97,114,110,105,110,103,58,32,67,97,110,39,116,32,102,105,110,100,32,
-102,105,108,101,203,83,224,60,3,236,212,0,224,19,2,224,78,6,19,92,
-34,32,105,110,32,100,105,114,101,99,116,111,114,105,101,115,94,42,94,134,
-110,225,168,1,64,2,192,72,160,68,0,54,146,164,224,13,0,0,54,237,
-48,4,224,65,0,225,144,20,224,139,8,17,94,42,32,32,65,115,107,101,
-100,32,102,111,114,32,98,121,58,32,134,183,2,49,51,53,72,117,183,77,
-160,58,69,255,97,100,164,117,64,74,243,213,15,6,109,105,115,115,105,110,
-103,97,39,160,84,244,1,6,224,148,2,206,247,161,203,70,116,142,238,0,
-54,80,146,193,20,67,11,77,51,0,55,65,176,224,39,6,0,57,106,32,
-224,163,3,234,172,0,160,63,65,51,70,64,73,20,225,89,1,225,102,0,
-1,95,54,111,188,168,237,131,23,160,19,128,0,112,140,100,98,1,52,51,
-64,66,137,241,64,200,64,39,0,54,101,118,134,239,0,85,102,11,0,90,
-64,111,148,86,0,58,96,31,229,208,0,78,14,0,54,235,34,0,74,173,
-105,226,1,53,53,96,31,96,222,238,26,15,2,92,92,47,161,230,204,43,
-0,58,96,100,2,10,65,32,108,222,97,249,129,75,228,48,0,97,206,64,
-105,0,58,96,50,1,10,65,224,122,0,224,210,1,229,53,7,135,251,100,
-110,161,3,225,24,12,0,58,96,7,96,81,0,58,65,92,166,116,225,152,
-1,3,67,32,95,54,93,89,2,95,54,54,71,147,65,180,0,54,170,186,
-192,35,2,95,54,56,226,201,3,15,85,84,70,45,56,47,47,82,79,85,
-78,68,84,82,73,80,128,238,133,238,227,228,1,0,95,78,147,2,95,54,
-57,146,1,1,54,55,64,141,0,58,98,4,204,133,132,83,2,95,54,56,
-168,119,224,150,4,2,95,54,56,97,255,230,69,1,64,34,115,31,97,9,
-152,76,1,55,57,145,209,0,35,228,234,1,162,133,103,31,224,42,2,65,
-174,64,254,5,35,50,48,57,53,49,104,23,3,35,53,53,50,65,245,193,
-142,224,124,2,0,52,177,31,226,173,4,225,111,0,150,182,130,113,0,67,
-68,157,75,51,0,52,77,30,243,182,3,20,71,101,116,67,111,110,116,101,
-110,116,115,58,32,115,117,114,114,111,103,97,116,138,115,129,102,193,42,129,
-28,225,60,3,65,147,82,19,1,95,54,96,105,224,131,0,227,143,0,0,
-58,97,87,4,10,65,32,75,51,70,7,0,58,96,39,9,10,65,32,94,
-103,101,116,98,32,58,97,59,105,59,3,57,57,32,79,81,238,80,77,1,
-95,52,72,180,138,145,97,116,180,116,129,37,0,51,64,112,225,228,22,243,
-200,6,20,117,110,107,110,111,119,110,32,116,101,120,116,32,101,110,99,111,
-100,105,110,103,235,225,2,98,59,0,51,108,232,66,65,130,122,67,228,1,
-56,48,64,4,132,166,100,239,97,63,0,55,192,20,64,46,169,252,1,52,
-56,67,10,2,54,56,49,97,12,66,247,0,73,68,27,71,109,0,85,64,
-23,130,85,64,53,140,234,0,50,110,90,0,58,96,24,106,215,2,51,54,
-32,77,188,97,94,0,49,143,232,0,85,96,35,1,95,51,247,83,0,0,
-52,96,142,64,92,3,95,49,52,50,192,11,0,58,96,6,96,132,5,57,
-32,75,32,95,51,67,253,1,51,50,225,0,3,65,223,19,114,111,108,46,
-69,120,99,101,112,116,105,111,110,46,73,110,116,101,114,110,150,20,224,39,
-1,3,83,111,109,101,224,35,0,97,32,193,133,195,14,129,23,123,178,203,
-103,0,83,64,242,0,55,108,155,100,163,0,58,65,54,224,230,0,109,210,
-96,30,9,10,65,32,99,97,116,99,104,32,58,96,63,147,86,227,75,4,
-3,64,95,54,53,152,134,70,18,0,54,83,19,0,54,91,72,224,160,1,
-6,111,112,101,110,70,105,108,173,17,226,242,1,0,58,100,26,100,61,67,
-98,78,56,96,57,171,33,71,159,158,37,167,202,146,121,1,95,52,83,84,
-136,127,64,167,64,3,200,142,96,52,97,191,244,94,3,241,123,7,166,141,
-96,128,130,9,228,179,8,64,209,164,179,69,44,194,110,0,49,127,58,227,
-76,3,131,94,224,33,2,84,124,128,90,216,109,228,86,2,0,54,108,89,
-0,51,65,113,247,5,1,143,193,224,32,3,0,52,109,33,224,19,6,104,
-165,1,95,54,116,104,1,95,54,103,3,224,119,1,120,80,96,138,96,114,
-1,95,52,76,76,3,95,54,55,49,97,83,130,105,5,94,102,108,117,115,
-104,67,192,64,22,213,32,229,18,1,1,54,50,208,243,229,103,1,65,69,
-132,244,224,5,0,78,157,64,4,64,114,64,3,224,131,4,224,13,6,228,
-137,6,134,115,1,95,52,69,32,1,95,54,117,69,228,142,3,101,74,64,
-175,228,125,0,0,65,64,190,64,22,96,213,0,66,78,246,109,49,96,51,
-138,185,0,58,96,60,128,245,1,54,54,85,157,0,48,96,52,130,89,8,
-65,46,119,114,105,116,101,32,58,96,26,65,4,4,99,108,111,115,101,65,
-4,64,126,231,172,0,1,95,54,103,125,2,54,51,32,64,62,160,87,129,
-192,7,116,111,70,117,110,80,116,114,64,50,129,95,80,244,0,90,68,254,
-167,3,65,56,103,220,68,13,66,128,118,76,67,115,96,233,224,9,1,96,
-29,110,185,138,140,161,224,152,36,101,1,0,50,96,133,65,240,0,58,96,
-6,129,6,0,58,98,137,129,177,225,180,4,67,123,117,75,75,26,229,21,
-2,171,156,230,247,8,68,6,0,53,231,119,0,0,53,100,148,0,54,89,
-75,234,87,1,67,92,113,166,131,70,198,190,79,148,0,54,121,191,1,95,
-54,205,164,0,58,99,38,165,231,0,80,134,8,0,95,106,50,160,5,102,
-18,0,58,96,47,228,135,0,231,9,4,0,54,146,5,103,124,226,41,4,
-97,141,119,89,135,118,224,55,6,90,112,224,177,1,228,80,0,162,164,0,
-95,204,155,0,58,96,177,79,83,4,79,46,112,101,114,93,91,4,73,79,
-32,94,38,162,3,64,31,0,54,96,31,6,102,112,102,105,110,32,58,64,
-118,128,14,2,110,101,119,64,14,130,1,8,94,97,100,100,95,70,73,76,
-69,64,18,130,2,96,18,3,117,116,102,56,64,18,207,212,1,95,52,67,
-243,64,166,64,89,187,119,229,45,7,137,89,126,132,160,213,158,144,129,65,
-235,31,3,3,79,32,35,49,79,227,101,205,224,26,10,0,57,199,178,224,
-27,8,74,135,224,26,11,229,3,1,1,119,43,234,70,0,142,1,228,166,
-4,98,144,1,95,54,100,236,225,96,3,194,19,226,105,8,0,58,98,134,
-103,18,1,49,52,99,66,0,58,96,61,163,21,192,233,106,100,102,134,1,
-95,52,115,226,192,6,130,247,96,118,0,58,96,6,100,174,70,55,1,32,
-58,96,160,97,95,246,84,0,166,209,138,221,246,115,10,166,47,77,250,171,
-1,224,47,2,130,24,77,21,104,195,1,54,51,204,0,171,35,71,15,99,
-228,132,105,236,151,0,67,240,97,42,199,66,66,105,0,52,66,219,170,31,
-0,67,123,74,156,3,160,18,2,58,54,52,232,60,0,118,15,182,156,64,
-24,168,67,2,53,49,55,64,4,0,56,64,255,99,143,0,53,83,76,160,
-11,1,54,50,160,80,3,95,54,51,48,160,90,65,152,0,49,192,33,0,
-58,96,6,182,38,70,54,1,95,53,83,19,0,58,64,34,128,22,92,1,
-66,97,0,66,99,94,0,53,117,95,0,54,77,220,2,53,57,56,78,30,
-75,51,169,249,67,130,0,53,65,208,0,80,64,165,166,236,155,196,96,246,
-115,170,67,168,236,100,1,98,216,96,84,64,184,123,22,224,23,7,160,76,
-135,23,227,176,0,128,27,205,69,192,24,192,52,1,95,54,101,67,96,21,
-83,83,129,131,102,140,2,32,61,61,75,103,97,29,85,125,0,54,68,106,
-226,216,1,2,98,105,110,182,6,224,61,1,175,80,235,229,0,234,146,2,
-65,0,0,51,225,0,0,96,102,234,179,5,79,64,227,131,0,0,53,224,
-172,0,1,80,32,160,12,225,30,0,224,213,1,241,150,4,65,138,211,204,
-85,158,96,33,119,248,0,56,70,205,192,195,200,52,64,204,224,43,2,0,
-50,64,121,9,95,52,57,57,32,95,56,32,95,52,70,195,128,38,131,34,
-77,117,78,139,98,96,103,43,75,15,130,13,0,53,85,239,1,95,54,69,
-147,0,58,65,239,160,22,98,3,0,50,116,49,66,162,225,116,0,64,18,
-0,54,161,192,100,177,2,51,57,52,64,23,131,61,196,24,157,193,1,95,
-53,134,190,0,58,96,93,195,227,185,50,0,83,180,40,78,86,2,67,32,
-60,88,149,64,43,224,25,12,104,0,149,127,207,251,160,25,96,232,97,189,
-155,70,225,248,0,98,105,194,153,233,109,0,160,43,96,131,226,41,6,64,
-99,160,48,128,36,192,202,96,194,96,0,224,129,12,166,152,224,85,14,101,
-13,224,85,9,98,50,224,144,22,65,14,224,58,21,224,145,1,225,45,4,
-100,82,224,171,12,96,202,224,112,16,99,43,224,171,45,101,156,224,171,21,
-224,59,16,106,167,224,59,9,144,209,160,0,165,248,98,86,0,58,96,6,
-226,77,0,112,155,71,23,98,142,66,149,229,139,0,96,107,66,185,70,116,
-193,207,136,172,160,159,0,50,67,84,128,17,2,64,75,51,64,116,232,203,
-2,102,24,108,230,224,23,0,224,24,0,224,93,0,118,239,224,99,6,224,
-86,4,233,24,0,224,142,13,1,51,49,224,47,7,224,24,2,0,53,76,
-229,160,21,161,1,133,204,64,6,208,192,165,72,67,243,129,85,65,15,105,
-229,0,56,100,21,224,187,0,128,131,67,13,128,17,96,104,224,91,0,96,
-86,198,12,0,85,227,30,13,164,215,192,31,107,74,0,50,77,1,224,24,
-0,229,181,7,147,150,96,91,132,221,0,80,170,250,173,123,2,95,53,52,
-68,192,79,151,90,18,0,53,138,30,81,179,128,19,233,171,0,172,96,96,
-14,159,153,96,66,224,63,2,4,95,51,52,49,32,188,158,64,247,202,220,
-224,10,1,0,58,96,172,230,237,4,230,79,14,131,53,248,77,1,255,95,
-0,108,247,115,51,227,224,2,160,27,97,22,160,49,141,4,230,32,7,0,
-53,241,60,1,224,119,13,160,229,231,21,2,225,84,10,79,110,160,0,109,
-60,0,58,71,253,99,16,69,203,2,95,54,50,116,99,64,80,64,19,229,
-200,5,133,187,0,58,96,35,96,49,72,46,0,53,116,167,128,10,116,116,
-160,10,64,152,160,10,97,106,64,10,0,54,109,147,128,10,93,219,1,95,
-54,171,82,96,135,177,47,0,53,112,203,74,120,1,95,54,66,25,0,58,
-96,36,137,246,224,142,0,1,52,53,161,173,230,91,4,128,58,114,203,128,
-243,64,20,236,167,3,224,43,9,64,214,224,43,9,161,146,224,25,1,224,
-18,1,0,54,85,218,105,53,165,219,0,58,96,165,251,112,6,72,7,123,
-112,96,38,224,188,6,129,54,0,57,64,193,100,251,96,11,131,194,67,114,
-224,40,5,224,55,11,113,77,160,10,163,59,224,39,3,1,56,55,194,202,
-224,196,7,207,89,130,90,191,148,128,77,84,135,227,54,0,224,68,6,224,
-66,2,237,177,0,0,58,97,59,224,217,7,64,145,64,67,224,199,5,225,
-173,4,224,74,12,235,216,0,224,74,5,70,1,224,74,6,0,49,104,0,
-224,18,1,128,94,224,233,8,225,171,2,1,95,54,145,224,96,105,66,87,
-225,171,2,0,80,66,95,64,30,171,251,100,170,0,85,96,20,222,86,224,
-146,2,0,56,110,64,113,76,1,95,54,95,243,225,73,6,183,137,232,239,
-5,1,48,48,224,53,4,144,157,247,119,12,1,95,39,234,84,3,224,205,
-10,136,102,170,31,0,58,99,66,192,183,138,38,64,20,131,70,81,249,2,
-95,49,53,119,21,125,182,224,185,6,1,95,51,64,61,64,47,210,65,1,
-95,51,75,212,114,47,232,160,5,224,18,6,65,179,247,211,0,168,52,114,
-74,231,211,4,231,152,2,233,66,2,224,10,2,253,253,0,128,66,64,20,
-224,29,1,224,75,4,233,6,2,233,141,4,224,151,6,65,40,101,0,234,
-20,5,224,50,1,224,60,2,224,39,6,67,133,224,39,12,65,31,131,220,
-225,79,3,127,221,225,79,2,139,4,106,234,0,58,97,92,224,47,7,64,
-186,1,95,54,65,19,0,58,96,38,211,22,71,203,0,95,84,203,0,49,
-80,34,0,35,114,171,1,67,32,224,17,1,1,64,35,120,123,0,58,96,
-58,225,164,17,96,249,233,140,14,224,244,3,233,56,14,224,34,2,0,58,
-96,171,160,190,66,220,80,137,1,35,49,85,65,64,199,103,104,0,54,141,
-251,64,244,224,199,14,110,193,224,199,5,0,49,101,45,0,58,96,59,224,
-200,2,226,51,5,224,146,11,0,58,96,117,224,251,22,224,18,5,65,245,
-224,18,6,66,66,226,83,26,224,10,13,226,44,31,0,58,98,24,228,51,
-5,1,54,48,79,69,99,196,161,82,99,249,138,219,0,79,246,47,2,1,
-46,46,67,251,224,17,3,1,58,58,128,17,2,79,32,35,83,164,71,251,
-96,12,90,2,224,12,0,0,49,71,27,128,13,224,57,1,1,60,45,224,
-75,7,1,45,62,224,75,1,224,48,0,96,62,189,183,224,44,3,0,61,
-96,44,200,107,128,0,229,184,5,0,54,141,177,224,20,5,79,234,129,5,
-132,81,100,150,65,103,100,150,64,49,161,197,228,250,11,22,33,64,35,36,
-37,38,63,43,46,47,60,61,62,63,92,92,92,94,92,124,58,45,126,64,
-136,0,58,97,62,142,88,229,140,2,100,97,137,103,0,82,79,39,195,4,
-224,37,3,133,125,229,78,9,229,67,2,71,129,224,91,8,170,95,144,138,
-239,213,2,118,146,235,147,1,66,20,105,220,192,31,224,161,10,128,24,70,
-106,98,127,230,185,4,224,151,17,239,234,1,161,236,96,170,231,36,10,0,
-56,73,95,65,74,224,72,4,74,160,65,141,2,67,32,79,224,62,0,105,
-134,193,150,64,36,65,150,96,37,225,150,18,8,44,59,40,41,91,93,123,
-125,96,97,136,96,105,231,166,10,122,133,0,75,126,27,225,1,3,0,89,
-96,238,72,181,0,64,234,72,1,224,58,6,126,7,231,225,5,65,54,65,
-104,231,89,2,0,35,112,186,108,50,0,52,85,46,161,238,234,158,7,224,
-91,15,193,23,152,45,225,91,4,224,18,1,0,53,96,46,161,148,146,14,
-132,66,129,220,204,72,249,74,0,0,50,67,217,167,247,187,134,225,131,9,
-0,53,80,90,195,73,130,54,96,6,0,95,113,193,225,236,0,0,95,138,
-83,0,58,107,53,193,163,132,103,64,20,228,85,8,129,117,66,164,225,58,
-5,64,194,0,85,96,179,150,231,162,86,97,150,1,53,51,81,106,122,21,
-108,41,128,200,224,201,8,137,145,226,200,5,224,109,0,121,25,227,243,5,
-226,175,0,64,168,227,248,2,66,251,128,189,175,111,225,225,10,233,61,7,
-161,54,224,95,1,0,67,123,237,206,131,224,146,4,235,25,5,226,51,11,
-166,133,224,20,6,128,243,224,20,5,0,49,160,108,224,21,6,136,213,224,
-21,8,102,75,224,21,8,70,229,224,21,9,224,109,11,96,230,226,224,8,
-128,85,225,17,4,129,115,194,235,225,21,0,193,163,224,17,3,175,138,224,
-17,1,162,204,224,17,2,104,158,224,35,5,224,34,8,129,204,224,17,3,
-132,194,224,17,3,224,88,8,134,252,224,16,2,98,203,225,163,9,77,111,
-107,190,224,95,8,229,21,5,108,122,219,211,128,18,226,190,5,168,89,1,
-53,56,96,45,1,50,49,79,36,111,245,7,51,49,53,32,95,50,56,54,
-64,27,169,191,227,147,9,0,56,78,88,80,90,182,232,224,171,12,100,62,
-132,213,226,102,23,117,134,224,20,8,128,167,224,20,6,226,35,11,124,96,
-224,20,8,226,55,11,110,32,224,20,7,125,168,224,20,8,65,234,224,20,
-8,226,118,11,93,203,224,20,9,224,209,11,94,195,224,20,9,224,209,11,
-106,44,224,20,8,224,209,11,112,139,224,20,7,0,56,224,209,11,0,56,
-224,209,11,97,255,224,20,8,224,209,11,0,56,224,209,11,0,56,224,209,
-11,111,0,224,20,8,224,209,11,98,97,224,20,8,224,209,11,107,195,224,
-20,8,224,209,11,228,26,12,98,166,224,20,8,228,47,11,110,126,228,47,
-10,227,249,8,156,217,224,17,3,82,219,224,17,6,227,215,8,146,101,224,
-17,4,144,46,224,17,3,143,1,224,17,3,228,155,8,166,246,224,17,3,
-228,84,8,80,91,224,17,6,228,138,9,228,192,9,224,179,8,135,88,224,
-17,4,224,179,8,111,86,224,17,5,224,179,8,229,26,10,229,97,26,229,
-62,9,224,178,8,229,61,15,224,16,1,224,175,8,224,174,8,224,173,8,
-225,96,9,224,153,8,224,16,7,128,169,103,210,2,48,32,79,179,133,0,
-48,160,29,3,95,53,57,49,236,32,2,2,83,79,72,112,168,224,79,7,
-224,47,17,224,46,8,128,178,0,79,224,98,16,2,78,85,76,224,51,7,
-96,161,224,49,17,2,83,84,88,224,49,7,96,245,224,49,17,0,69,224,
-49,9,97,56,224,49,18,1,79,84,224,49,7,96,200,224,49,18,1,78,
-81,224,49,7,97,190,224,49,17,2,65,67,75,224,49,7,98,1,224,49,
-17,1,66,69,225,43,8,98,68,224,49,18,0,83,224,48,7,98,134,224,
-48,17,0,72,224,247,8,98,200,224,48,17,1,76,70,225,242,8,225,191,
-22,0,86,224,98,8,131,79,224,49,17,0,70,224,99,9,225,241,22,1,
-67,82,224,49,8,225,241,22,1,83,73,224,49,8,225,191,22,2,68,76,
-69,224,50,8,225,192,22,2,68,67,49,224,50,8,225,193,22,2,68,67,
-50,224,50,8,225,195,22,2,68,67,51,224,50,8,225,197,22,2,68,67,
-52,224,50,7,133,134,224,50,17,1,78,65,226,190,8,133,203,225,99,18,
-1,89,78,224,50,8,227,186,24,0,66,224,50,8,225,201,22,1,67,65,
-224,101,9,227,188,23,0,77,224,49,8,225,252,22,1,83,85,224,151,9,
-225,252,22,2,69,83,67,224,50,8,225,252,22,0,70,227,190,8,135,172,
-224,49,17,0,71,224,49,9,225,250,22,0,82,224,49,8,136,52,224,49,
-17,0,85,224,49,9,225,248,23,0,80,224,49,8,225,247,22,0,68,228,
-234,9,0,49,129,45,242,174,5,224,0,17,238,95,11,245,236,0,111,64,
-242,13,13,1,83,39,253,46,1,123,196,190,109,224,75,0,144,36,125,212,
-0,85,210,143,224,19,0,187,247,112,67,233,177,2,201,172,143,162,242,61,
-14,82,59,64,0,80,170,0,58,65,14,64,161,0,80,160,98,147,0,125,
-81,0,90,160,4,112,95,0,53,113,117,71,203,192,217,146,60,79,116,109,
-110,76,56,0,95,149,221,3,49,49,52,49,101,107,3,95,51,54,48,225,
-108,3,30,97,116,97,46,67,104,97,114,46,99,104,114,58,32,105,110,118,
-97,108,105,100,32,99,111,100,101,112,111,105,110,116,97,137,77,117,0,49,
-79,231,74,250,79,231,3,50,56,55,32,96,19,150,98,96,9,224,98,1,
-0,58,109,153,214,55,237,243,2,249,195,13,253,225,26,0,58,110,46,124,
-56,90,193,85,42,3,95,53,54,51,64,5,76,242,2,95,53,54,96,5,
-76,233,75,47,107,51,0,56,66,94,142,62,0,53,108,48,1,95,53,108,
-34,224,13,1,67,231,0,73,96,214,0,54,160,214,1,49,54,64,4,0,
-55,125,139,181,142,0,58,96,39,224,29,0,2,51,52,48,224,29,6,188,
-183,224,59,1,1,95,49,78,46,0,58,96,102,64,25,0,54,78,199,77,
-69,1,95,53,77,54,1,95,53,77,39,1,95,53,77,24,1,95,53,77,
-9,1,95,53,76,250,1,95,55,110,211,96,176,0,55,97,16,64,10,0,
-58,96,6,83,189,158,48,224,5,2,160,78,145,57,162,224,128,6,0,58,
-96,80,224,52,27,224,59,2,0,58,96,139,224,52,20,224,98,2,160,59,
-0,58,96,198,224,52,27,224,112,2,0,58,97,1,116,145,0,66,98,221,
-191,189,87,126,0,64,96,19,211,136,191,209,2,95,53,53,140,245,84,23,
-117,138,99,155,67,4,67,134,66,225,64,20,160,38,98,47,64,123,97,124,
-65,84,78,236,1,95,53,78,221,0,58,97,136,223,224,0,51,111,47,128,
-31,0,58,96,31,192,148,243,198,2,228,10,0,116,23,98,239,99,220,0,
-53,112,20,192,13,1,51,50,85,89,111,1,128,127,130,22,84,24,226,26,
-2,96,25,218,107,96,84,99,208,0,66,66,242,226,64,7,196,23,160,4,
-1,83,32,68,27,224,48,32,193,90,132,59,246,216,5,224,208,1,1,67,
-39,69,28,244,181,4,224,238,3,64,97,65,31,112,233,97,96,97,78,125,
-177,64,0,0,75,99,193,160,60,160,108,128,111,164,235,160,114,215,97,64,
-88,192,25,160,121,224,115,22,224,113,5,224,111,3,224,49,17,113,25,224,
-0,4,0,58,100,37,193,245,1,53,54,87,80,0,53,96,37,160,16,3,
-57,32,95,50,86,126,3,95,50,56,53,68,59,0,50,82,194,132,219,5,
-53,55,48,32,95,50,79,159,205,62,64,114,68,19,224,155,5,0,58,96,
-119,129,242,2,52,32,75,66,146,0,58,64,59,128,118,0,89,193,111,98,
-177,225,174,1,230,78,3,192,21,162,217,224,29,0,160,165,248,54,2,0,
-58,64,177,128,88,69,43,229,208,4,16,102,111,108,100,108,49,58,32,101,
-109,112,116,121,32,108,105,115,197,194,0,53,82,133,0,58,64,252,224,146,
-4,0,83,226,1,4,96,91,131,58,118,97,199,3,65,200,240,135,0,98,
-229,97,13,248,123,1,192,189,119,80,163,157,133,255,64,182,1,95,50,138,
-82,228,31,0,97,59,69,237,162,74,130,32,5,95,57,56,32,95,49,147,
-178,66,109,224,13,1,96,151,0,54,228,105,8,227,137,3,133,154,64,83,
-128,231,165,181,1,54,54,102,14,68,91,0,80,187,198,214,108,64,15,64,
-9,200,28,2,95,51,50,69,170,96,77,0,58,96,6,96,110,98,33,134,
-113,0,50,96,89,195,192,0,73,195,49,135,157,227,125,4,128,113,230,51,
-2,96,153,228,7,1,128,209,165,218,131,28,64,59,163,69,250,139,2,68,
-255,193,157,97,92,229,44,3,226,255,0,192,86,194,215,184,216,129,39,131,
-146,128,15,133,35,130,246,0,53,71,196,128,155,99,219,130,223,121,45,162,
-149,161,25,224,46,1,224,102,0,160,44,228,59,3,224,184,11,224,134,15,
-229,172,0,224,137,8,192,90,224,134,27,224,181,2,225,11,3,224,73,0,
-161,11,65,217,1,51,57,227,35,2,6,92,34,47,118,97,114,47,67,42,
-31,101,114,115,47,122,50,47,56,52,112,116,102,51,98,120,55,104,53,52,
-48,112,107,110,99,121,48,121,50,120,112,99,48,12,48,48,48,103,110,47,
-84,47,109,104,115,105,110,64,13,14,48,48,57,57,57,53,46,104,115,92,
-34,44,53,52,58,141,212,0,58,98,32,104,159,104,160,68,19,0,58,96,
-154,163,72,97,187,129,19,254,105,0,99,34,96,23,202,46,67,88,164,101,
-226,19,0,64,41,228,54,4,133,4,128,5,227,253,8,19,105,109,112,111,
-115,115,105,98,108,101,58,32,120,115,32,62,61,32,121,115,96,161,2,75,
-50,32,225,4,78,3,57,48,58,54,132,98,0,64,97,221,130,159,128,226,
-226,164,0,228,12,3,2,85,32,65,129,219,228,11,0,1,53,57,251,66,
-0,229,5,0,200,68,90,192,229,100,0,197,18,224,80,12,99,22,224,80,
-8,97,254,96,69,65,166,64,24,166,7,98,154,0,80,64,172,2,95,49,
-57,91,28,101,227,107,34,132,150,196,180,196,156,224,37,1,64,106,224,14,
-3,228,183,1,1,95,50,180,176,0,58,96,114,164,63,65,227,0,85,231,
-176,22,166,198,96,172,68,178,229,107,8,64,82,133,153,64,140,0,51,68,
-133,167,86,66,84,227,101,3,129,116,200,172,1,52,51,108,132,134,62,160,
-120,202,162,1,53,54,196,128,96,53,76,112,0,53,94,140,75,158,137,85,
-195,130,105,103,96,179,193,127,169,166,131,213,163,243,69,18,157,109,107,126,
-1,52,48,97,118,96,17,201,156,0,58,96,7,3,10,65,32,75,65,181,
-0,58,96,84,64,13,2,50,32,58,96,114,96,25,0,75,96,25,133,29,
-2,95,53,53,75,201,131,82,67,209,227,82,2,164,102,129,200,230,163,9,
-162,55,230,165,8,226,145,15,97,89,64,110,162,60,231,146,1,68,105,102,
-42,232,252,0,226,233,46,224,91,0,226,233,9,224,95,4,226,233,32,224,
-80,1,130,60,134,218,0,58,96,24,226,233,6,130,215,226,214,0,101,48,
-231,113,2,224,11,3,0,58,96,71,1,10,65,77,224,0,58,96,147,143,
-49,2,53,52,54,65,104,64,76,109,162,64,40,232,46,2,72,84,96,87,
-232,87,0,224,200,1,72,22,98,45,1,95,51,125,181,0,64,66,183,161,
-72,198,56,162,208,225,75,0,160,7,0,83,96,167,225,73,1,104,26,128,
-240,101,243,0,53,97,127,0,80,193,31,225,15,0,224,8,0,143,13,0,
-52,225,215,0,1,51,52,174,186,64,191,0,54,192,220,240,14,7,195,247,
-238,193,0,160,127,233,206,1,162,128,238,209,4,233,201,3,200,31,169,74,
-195,59,97,231,0,52,73,187,73,199,220,163,224,69,16,129,80,240,57,12,
-160,27,112,62,64,92,163,150,2,66,32,95,73,94,234,50,2,93,14,131,
-41,241,118,0,253,113,6,205,15,164,48,240,246,5,0,58,111,187,144,91,
-225,175,0,235,241,1,167,235,163,125,225,111,4,65,144,129,111,128,73,224,
-62,48,129,241,224,62,48,161,48,194,97,129,141,226,121,2,224,60,21,165,
-154,2,52,54,50,231,65,2,15,118,97,108,68,105,103,58,32,66,97,100,
-32,98,97,115,101,135,5,0,83,98,226,64,49,64,9,99,186,67,139,126,
-206,0,49,69,112,0,35,98,254,190,224,96,17,87,56,97,29,68,192,224,
-49,11,190,106,224,49,3,126,20,72,216,70,177,67,5,66,178,203,67,156,
-78,198,179,134,163,95,56,128,5,128,78,250,185,0,224,61,39,131,189,224,
-61,12,224,48,13,238,47,0,66,246,224,231,0,2,95,53,52,71,48,224,
-192,9,224,68,23,225,36,15,165,235,225,36,3,133,12,224,99,41,132,38,
-0,58,67,164,164,219,224,109,27,102,224,0,58,96,214,179,133,130,7,224,
-127,39,0,58,97,37,70,250,227,240,6,254,32,8,128,131,224,20,5,77,
-38,224,20,8,147,152,224,21,7,255,155,12,0,49,102,30,254,118,7,127,
-9,254,118,9,253,104,10,224,17,8,128,212,224,16,19,132,25,224,16,7,
-1,58,53,79,133,207,181,229,156,7,227,189,5,181,184,230,64,1,134,92,
-128,11,134,97,144,137,166,109,224,35,5,236,184,3,231,206,2,240,105,6,
-0,39,68,19,224,21,2,224,66,0,100,75,227,58,2,189,120,230,194,0,
-235,241,0,70,216,64,66,137,34,241,207,2,96,4,66,23,0,48,197,114,
-0,89,160,93,102,252,97,135,70,42,134,179,97,15,192,41,198,10,146,182,
-226,89,3,192,134,225,87,1,128,119,66,136,1,52,57,110,247,0,49,64,
-9,179,51,224,23,1,161,109,128,25,1,95,52,80,49,64,0,70,146,0,
-50,224,48,1,96,139,0,58,94,66,200,27,113,65,226,51,1,3,64,58,
-53,51,203,110,230,186,8,129,144,0,82,215,68,230,108,3,0,58,96,72,
-226,254,6,195,56,225,32,0,230,188,5,234,229,1,224,49,0,0,51,98,
-136,1,58,53,64,24,119,76,93,98,117,238,64,25,64,94,1,52,55,82,
-8,0,48,118,70,64,133,183,80,0,52,86,220,192,86,0,56,77,206,96,
-11,0,58,96,6,132,13,72,255,1,53,51,139,129,1,95,51,87,21,1,
-95,52,82,18,151,190,0,51,243,251,1,178,7,64,42,139,184,104,57,236,
-120,0,0,53,89,161,233,212,1,96,17,99,211,151,222,0,49,233,219,2,
-107,44,89,58,195,16,0,52,99,253,68,154,96,182,64,29,227,46,2,97,
-200,96,29,0,52,86,76,0,52,152,36,0,58,96,42,161,174,3,50,52,
-32,35,111,41,232,228,1,147,72,91,0,192,138,224,40,0,152,59,97,14,
-0,48,162,49,0,58,96,190,225,223,3,118,228,123,12,105,35,146,10,75,
-154,236,51,2,2,32,95,52,140,72,96,90,65,106,64,79,1,95,53,156,
-65,128,86,129,255,0,85,65,62,110,232,0,58,64,40,97,179,1,53,48,
-97,179,118,69,64,104,128,125,97,11,0,90,108,164,158,30,0,58,96,196,
-228,59,5,128,156,179,246,242,66,0,228,230,4,96,253,171,0,92,56,224,
-113,1,66,31,0,58,96,27,98,57,7,57,57,32,95,56,32,95,52,101,
-108,0,58,96,29,224,43,1,66,224,0,58,96,105,173,172,0,52,71,50,
-1,95,53,78,26,67,53,1,58,53,69,98,128,224,0,50,97,252,0,58,
-96,27,192,203,96,44,0,48,114,197,75,176,235,197,0,164,108,128,8,75,
-93,1,58,53,73,212,225,242,0,0,54,67,180,121,9,209,165,70,90,1,
-58,53,69,146,243,56,4,66,134,2,66,32,80,98,90,64,77,68,192,137,
-72,212,109,233,20,4,1,95,51,68,2,1,95,51,85,38,2,51,55,49,
-118,136,204,113,128,36,234,103,2,224,239,0,226,85,7,64,208,196,183,97,
-138,129,43,97,143,163,183,207,0,97,195,3,95,53,49,51,233,108,2,19,
-80,114,101,108,117,100,101,46,114,101,97,100,58,32,110,111,32,112,97,114,
-201,114,150,76,3,95,53,49,52,174,187,224,57,18,8,97,109,98,105,103,
-117,111,117,115,224,64,3,65,36,130,47,66,68,64,13,129,252,101,153,128,
-16,129,249,109,14,64,158,228,158,10,229,178,1,150,246,166,35,226,243,6,
-235,198,11,155,253,229,167,7,0,58,97,28,226,110,0,0,52,143,178,64,
-49,224,19,2,97,224,64,125,227,8,2,0,95,111,42,79,123,194,99,136,
-205,65,129,96,183,163,115,228,70,2,64,166,251,173,5,141,158,2,95,52,
-57,225,153,0,2,95,52,57,69,111,96,11,0,58,96,6,64,76,96,30,
-0,49,97,218,163,133,196,37,130,19,2,95,49,51,224,64,0,0,49,99,
-187,101,88,0,50,98,7,96,10,1,53,48,224,86,3,229,99,0,249,226,
-0,102,167,98,160,224,18,7,1,66,39,180,29,161,47,0,48,219,139,64,
-79,0,48,160,147,101,97,224,135,0,134,108,197,247,192,135,128,10,96,251,
-133,176,64,6,225,42,0,0,51,225,42,0,142,21,64,12,225,30,5,96,
-85,161,30,132,175,64,6,64,64,0,51,229,172,3,173,150,100,243,139,61,
-0,95,97,41,64,203,0,58,96,6,224,50,4,64,109,195,158,0,67,96,
-58,224,49,0,133,240,64,6,5,10,65,32,73,32,58,96,44,192,10,239,
-173,0,5,52,57,54,32,64,58,99,141,160,16,82,53,231,199,5,0,58,
-96,36,160,235,0,52,125,65,103,154,224,5,0,101,35,206,231,96,67,109,
-38,64,44,0,54,224,69,0,162,217,98,143,224,27,9,165,39,248,81,1,
-230,148,4,68,64,232,136,3,120,112,132,241,1,95,52,95,10,161,115,65,
-255,175,120,132,186,164,169,120,182,227,108,1,137,169,64,26,80,140,224,21,
-1,69,48,103,87,228,173,1,193,17,128,0,224,24,1,129,214,200,255,65,
-214,128,11,0,58,96,6,129,74,167,245,73,105,0,58,64,34,163,107,128,
-14,231,238,0,226,172,1,99,148,64,87,64,25,0,80,166,58,161,52,107,
-91,0,52,73,224,64,34,195,244,72,157,97,144,128,43,247,72,7,234,183,
-1,224,19,2,128,115,214,53,224,32,2,224,9,10,65,59,150,129,225,213,
-0,232,47,7,133,231,101,239,66,214,97,116,192,17,131,137,1,95,52,90,
-46,129,242,224,55,7,224,177,7,129,163,226,90,0,162,84,64,41,192,83,
-224,84,5,224,82,5,224,81,11,224,91,4,224,82,9,224,181,1,224,56,
-17,226,225,5,224,57,18,225,108,9,224,9,2,101,243,160,63,193,246,160,
-230,224,236,16,96,98,227,54,2,194,242,139,111,224,113,1,160,218,97,155,
-98,173,185,26,64,125,2,95,52,55,70,6,0,56,102,92,162,66,96,0,
-224,96,0,113,176,64,122,200,243,224,147,25,226,150,5,224,96,2,131,154,
-177,117,225,1,0,161,4,224,13,22,99,150,130,112,97,96,224,237,0,99,
-245,128,13,224,253,1,227,241,0,96,244,173,239,154,11,125,168,225,15,9,
-224,244,4,64,97,224,96,22,130,105,224,95,2,162,122,128,94,228,23,3,
-194,3,226,190,6,225,67,29,225,216,24,160,105,225,206,21,226,190,21,192,
-9,195,208,226,240,25,224,49,11,224,176,2,228,6,9,225,89,8,229,234,
-0,128,181,224,43,3,224,45,6,225,52,0,224,137,18,96,135,226,27,5,
-193,59,224,138,21,250,211,78,5,49,52,49,58,49,48,250,213,0,64,0,
-142,22,128,133,142,22,128,11,0,58,96,6,113,239,144,91,132,182,64,35,
-137,88,238,32,4,181,212,0,58,64,64,230,49,0,64,200,0,58,96,46,
-192,70,66,82,70,169,0,52,192,55,96,71,76,35,64,21,72,67,128,21,
-198,178,2,95,52,56,103,233,0,56,135,233,96,85,108,87,96,23,128,17,
-74,61,96,53,102,92,1,56,48,135,57,229,112,0,200,108,163,0,248,114,
-2,64,158,206,163,96,106,71,172,98,162,3,95,52,56,51,192,11,0,58,
-96,6,198,245,162,223,128,202,119,207,130,243,0,66,115,48,100,71,64,80,
-99,111,0,50,96,22,0,50,79,35,248,201,1,96,239,85,134,64,42,130,
-116,224,42,14,247,204,2,130,57,128,122,135,254,236,213,5,164,182,128,152,
-159,79,96,80,2,52,56,50,224,80,2,162,150,128,195,224,43,5,224,196,
-0,118,43,96,138,106,250,224,205,23,224,206,40,207,11,227,44,4,242,187,
-0,210,199,136,237,224,232,2,229,154,1,224,184,2,64,5,162,83,224,236,
-9,128,72,224,240,3,224,56,13,224,249,104,224,152,5,119,175,132,177,233,
-233,1,235,28,1,96,243,101,60,166,12,224,174,1,79,198,160,98,224,138,
-39,101,199,167,2,224,7,2,224,132,108,224,95,10,224,94,67,96,80,128,
-181,224,222,110,64,16,1,54,48,229,203,2,31,115,116,105,109,101,115,58,
-32,112,111,115,105,116,105,118,101,32,109,117,108,116,105,112,108,105,101,114,
-32,101,120,112,101,3,99,116,101,100,101,161,0,58,68,133,229,129,4,226,
-166,23,128,137,224,195,1,1,95,50,82,200,224,186,16,192,46,224,177,4,
-224,45,30,147,118,99,115,108,55,108,218,172,197,0,83,157,34,174,210,140,
-183,194,100,96,52,243,207,1,177,241,0,58,69,183,165,207,82,144,96,44,
-242,31,0,128,38,64,80,224,11,0,224,59,2,64,81,95,21,240,19,0,
-64,200,1,58,52,70,171,174,28,64,205,1,95,52,69,159,0,58,77,191,
-128,22,222,228,175,114,0,58,96,31,69,230,1,32,58,96,48,175,111,0,
-52,92,58,76,5,75,185,173,239,111,114,173,69,79,114,108,204,143,114,192,
-10,206,115,64,87,129,196,1,95,51,164,137,128,5,134,74,213,48,102,169,
-70,109,239,73,1,96,120,233,111,7,224,28,7,238,129,11,140,98,224,65,
-9,175,168,96,24,112,100,129,179,158,205,143,127,128,49,0,58,96,6,224,
-178,0,138,143,153,81,0,66,227,15,2,192,75,66,9,199,70,133,96,128,
-46,96,33,1,49,53,224,34,7,0,58,96,125,128,93,1,95,50,104,59,
-96,121,136,115,64,6,110,71,0,58,96,67,114,184,128,1,120,162,1,64,
-58,96,199,210,193,224,4,3,158,44,128,205,0,58,97,4,1,10,65,194,
-14,0,58,97,37,96,76,224,55,6,224,85,0,206,255,224,85,6,224,34,
-3,232,6,1,235,43,2,237,99,2,64,240,254,222,0,97,114,131,140,131,
-188,160,14,0,85,164,101,160,38,230,238,3,168,244,0,67,129,146,98,115,
-128,64,112,216,130,76,64,17,97,59,1,54,48,65,34,207,117,0,58,85,
-35,64,10,196,187,128,145,193,227,0,90,179,170,140,33,199,83,96,31,96,
-42,64,22,96,10,160,141,251,34,5,87,246,130,71,133,49,225,26,1,96,
-214,64,85,2,95,52,53,237,161,0,224,38,10,224,123,2,64,195,193,227,
-229,24,6,15,105,110,105,116,58,32,101,109,112,116,121,32,108,105,115,116,
-101,4,68,77,225,84,0,224,122,4,193,48,224,123,1,0,58,96,9,97,
-198,231,233,0,2,115,101,113,192,221,128,19,224,16,2,228,75,11,64,68,
-234,176,0,86,22,0,56,161,6,246,38,5,224,181,1,3,35,108,105,110,
-181,109,64,24,101,45,0,56,224,213,2,8,123,45,35,32,76,73,78,69,
-32,96,35,65,49,106,136,66,31,93,22,81,113,65,187,1,95,52,125,107,
-224,88,2,3,32,35,45,125,128,87,2,58,52,53,196,204,225,12,2,67,
-20,180,220,234,207,1,64,86,64,72,195,109,2,95,52,53,68,149,149,164,
-128,15,67,145,96,15,0,58,96,41,96,86,242,126,0,225,104,1,207,155,
-98,71,242,66,0,0,58,64,63,225,29,0,0,49,64,151,2,95,52,53,
-68,53,97,228,1,51,32,224,192,3,9,94,41,94,42,94,43,94,44,94,
-45,166,207,64,118,224,111,7,158,202,230,43,1,64,85,110,169,248,189,3,
-96,60,130,250,102,159,64,26,1,52,53,153,186,85,253,1,95,50,66,84,
-0,58,96,137,67,30,1,54,54,130,132,130,230,233,237,0,2,67,32,60,
-93,201,111,56,224,26,12,123,179,224,26,14,97,158,224,26,13,98,219,227,
-122,0,224,26,4,160,221,0,85,65,146,64,226,68,44,1,61,61,192,25,
-160,254,99,224,195,32,224,44,12,161,17,224,44,8,224,117,14,97,52,224,
-72,12,156,77,224,117,30,134,236,224,117,10,225,7,14,98,58,224,145,13,
-176,172,224,100,10,135,70,224,145,30,109,157,225,7,33,98,180,224,72,12,
-103,166,224,117,31,66,21,225,7,13,226,97,14,194,16,225,35,10,105,56,
-224,173,13,187,194,224,128,10,98,233,224,173,31,111,201,225,35,32,79,124,
-224,72,13,96,25,224,117,31,96,242,226,43,16,96,118,225,34,5,195,78,
-224,145,10,226,189,16,96,25,224,145,32,226,189,16,224,45,12,226,134,15,
-225,200,15,96,164,225,253,13,97,199,224,26,13,98,144,224,245,13,165,119,
-224,154,10,226,244,15,224,44,12,226,216,15,224,117,14,100,240,224,72,12,
-226,244,15,224,44,12,226,160,15,225,7,14,98,115,224,144,13,99,31,224,
-99,12,226,215,15,224,44,11,226,186,15,224,116,13,96,29,224,70,11,226,
-212,15,224,43,11,226,155,15,225,3,15,194,10,224,25,9,198,159,224,168,
-9,99,52,224,124,11,226,235,15,224,43,11,226,233,16,224,114,12,226,150,
-16,226,149,35,226,148,16,228,28,14,225,0,16,226,174,16,226,173,36,228,
-24,35,229,77,16,111,10,0,50,105,77,142,64,64,6,174,113,64,46,1,
-95,54,74,46,141,80,0,53,138,242,239,33,2,0,85,233,108,0,128,5,
-64,0,64,119,192,239,114,23,128,136,0,64,233,150,1,128,17,96,32,251,
-246,5,173,149,244,206,1,0,58,96,131,105,168,64,182,234,49,0,3,95,
-52,52,55,96,224,138,134,96,61,0,35,79,222,192,53,205,94,233,162,1,
-235,165,5,86,131,1,114,49,235,167,8,65,60,129,197,64,140,160,14,141,
-147,224,10,3,64,121,192,105,202,211,105,209,2,49,32,95,135,220,1,52,
-52,216,90,125,205,136,83,236,255,0,1,52,54,193,99,78,56,72,160,0,
-58,96,48,207,252,206,45,86,21,192,103,252,195,0,224,29,0,224,31,2,
-64,32,0,51,192,83,93,219,0,52,98,29,110,152,2,58,52,52,207,8,
-1,54,51,74,151,0,48,97,48,124,240,64,38,206,48,0,85,96,16,129,
-226,6,95,49,51,54,32,75,32,130,68,0,66,121,232,175,182,0,51,136,
-21,161,13,98,29,0,49,236,40,3,4,32,32,97,116,32,76,76,0,32,
-215,159,192,66,128,63,1,49,51,76,127,134,38,129,31,224,66,9,2,99,
-111,108,192,61,130,76,224,57,8,66,75,0,55,65,218,224,61,9,13,94,
-42,32,32,32,32,117,115,101,100,32,98,121,32,160,71,128,60,1,52,51,
-101,177,192,0,2,95,49,52,76,85,96,20,2,95,49,52,81,38,96,11,
-0,58,96,6,141,219,98,114,226,104,1,162,168,165,197,0,52,119,139,64,
-47,130,110,64,47,65,87,1,75,50,204,17,2,58,52,51,130,31,111,249,
-2,58,52,51,129,248,0,80,77,125,1,75,32,249,30,78,3,55,57,58,
-49,205,114,0,51,130,85,95,145,163,245,64,8,192,155,130,83,3,75,32,
-58,52,83,20,120,121,0,50,81,13,83,149,1,58,52,67,79,152,141,127,
-17,64,61,2,95,52,51,96,249,1,51,50,76,186,64,38,89,227,68,61,
-192,11,66,124,96,11,0,58,96,6,194,75,131,130,225,168,4,10,69,120,
-105,116,83,117,99,99,101,115,115,128,173,161,235,0,52,115,237,6,32,95,
-49,56,50,32,95,83,18,231,78,1,225,237,9,64,68,5,70,97,105,108,
-117,114,174,189,224,36,1,0,79,132,17,148,207,3,95,49,51,56,162,61,
-168,217,226,0,2,165,28,98,0,145,192,64,6,115,69,102,214,193,245,67,
-28,178,63,160,16,128,73,0,58,96,178,97,42,0,57,65,104,0,51,78,
-157,1,51,50,228,111,3,6,83,121,115,116,101,109,46,64,174,64,167,224,
-192,5,2,67,111,100,128,189,96,171,0,58,97,105,180,54,0,83,66,120,
-209,108,68,107,0,58,65,161,64,29,224,66,1,6,49,46,50,48,46,57,
-34,96,27,130,95,1,95,52,97,159,110,76,76,153,177,82,3,39,32,95,
-48,228,139,0,0,52,64,87,78,238,76,23,129,97,0,58,64,54,128,121,
-2,95,51,57,228,203,1,64,33,0,58,96,47,110,185,101,32,134,238,132,
-245,78,199,179,90,2,95,51,57,64,78,5,50,48,57,53,49,48,64,61,
-4,35,53,53,50,57,103,240,99,69,1,52,48,112,37,0,48,101,170,70,
-157,1,95,52,75,233,1,95,52,108,28,224,211,1,17,104,80,117,116,67,
-104,97,114,58,32,115,117,114,114,111,103,97,116,161,223,1,95,51,74,227,
-0,58,96,147,98,216,105,226,0,73,96,18,245,144,1,64,105,132,168,250,
-239,1,224,9,5,99,203,0,52,76,28,2,95,50,48,64,187,65,123,1,
-95,51,194,198,130,193,64,154,224,81,0,64,1,149,193,164,252,192,14,224,
-11,2,192,8,209,132,64,95,97,143,3,49,55,32,58,96,145,96,13,67,
-99,75,216,0,58,64,23,227,99,3,0,48,114,9,139,197,131,99,139,255,
-131,99,192,11,67,99,96,11,0,58,96,6,227,99,1,115,38,128,1,102,
-167,104,125,246,189,1,224,5,0,97,182,161,148,64,11,64,174,144,199,73,
-254,128,19,96,31,131,54,0,52,139,142,227,121,5,0,58,229,162,1,230,
-25,2,224,36,15,193,27,229,206,0,67,90,130,57,0,51,85,11,65,125,
-224,72,28,128,162,192,185,209,108,224,171,3,98,222,224,94,10,230,106,12,
-0,40,196,122,224,122,7,0,79,131,221,185,13,224,118,1,228,53,0,205,
-106,68,53,96,11,0,58,96,6,231,60,1,67,68,64,78,0,85,254,52,
-1,236,54,1,224,18,6,96,180,224,19,7,64,212,242,188,0,160,19,97,
-159,236,107,6,66,231,0,85,244,129,4,5,116,101,114,114,117,112,217,129,
-224,28,4,14,114,101,115,111,117,114,99,101,32,118,97,110,105,115,104,192,
-34,224,35,4,89,218,1,111,117,201,17,224,110,7,64,235,224,45,3,20,
-117,110,115,117,112,112,111,114,116,101,100,32,111,112,101,114,97,116,105,111,
-110,224,120,9,12,104,97,114,100,119,97,114,101,32,102,97,117,108,192,91,
-224,243,8,67,119,224,243,7,147,151,224,132,5,150,132,224,243,3,14,97,
-112,112,114,111,112,114,105,97,116,101,32,116,121,112,164,46,224,35,5,12,
-118,97,108,105,100,32,97,114,103,117,109,101,110,192,131,224,34,3,3,102,
-97,105,108,225,18,0,224,115,7,151,255,224,44,1,4,112,114,111,116,111,
-72,171,4,101,114,114,111,114,224,111,9,0,115,101,243,224,29,3,224,240,
-9,225,247,10,225,246,10,225,245,10,225,244,7,21,117,110,115,97,116,105,
-115,102,105,101,100,32,99,111,110,115,116,114,97,105,110,116,167,89,224,40,
-4,0,115,91,161,224,147,2,224,210,4,13,101,114,109,105,115,115,105,111,
-110,32,100,101,110,105,225,10,15,226,2,7,6,105,108,108,101,103,97,108,
-225,254,19,9,101,110,100,32,111,102,32,102,105,108,161,153,224,247,8,225,
-230,10,225,229,7,226,188,0,5,101,120,104,97,117,115,226,224,21,3,98,
-117,115,121,225,201,14,224,86,6,10,100,111,101,115,32,110,111,116,32,101,
-120,236,8,0,224,31,3,6,97,108,114,101,97,100,121,128,30,161,82,128,
-0,196,11,174,69,100,11,64,11,0,58,96,6,196,11,2,95,51,49,96,
-37,64,206,74,73,0,55,64,136,1,95,52,71,31,236,31,3,247,116,8,
-5,72,97,110,100,108,101,150,118,1,95,49,134,2,204,227,192,109,140,80,
-64,6,228,121,4,228,233,8,1,48,120,128,183,103,131,0,55,134,108,105,
-208,137,91,1,95,52,169,21,192,209,174,137,96,99,141,253,64,6,7,10,
-65,32,116,111,73,110,116,70,204,201,221,110,60,71,66,1,95,50,64,198,
-1,95,50,72,113,1,95,50,106,72,139,39,1,50,50,101,152,128,11,0,
-51,96,94,160,11,102,201,160,35,106,115,64,12,128,85,0,54,102,143,0,
-57,103,16,64,169,120,99,76,201,128,42,1,64,58,96,115,64,43,1,54,
-53,70,184,110,6,69,235,1,95,49,72,139,1,95,49,91,132,1,95,49,
-91,166,1,95,49,78,192,1,95,55,64,109,96,74,1,95,55,64,156,96,
-10,0,58,96,6,169,235,3,95,52,48,53,254,105,18,255,36,1,174,159,
-158,68,148,4,64,166,103,210,87,201,184,90,4,67,32,95,54,52,234,196,
-4,102,20,64,146,3,57,56,32,95,96,220,0,49,73,104,96,9,72,217,
-0,35,125,34,170,240,224,46,11,96,36,78,222,104,95,64,113,137,220,175,
-108,200,128,253,152,0,137,247,199,125,187,171,96,202,94,41,253,6,0,224,
-241,38,128,12,186,158,75,36,131,95,67,98,224,96,1,77,58,224,96,46,
-128,254,111,129,128,192,169,185,192,13,176,53,138,137,224,222,4,96,20,233,
-237,4,106,164,64,27,128,33,224,152,5,67,136,159,210,224,162,45,240,86,
-6,30,78,117,109,101,114,105,99,46,115,104,111,119,73,110,116,65,116,66,
-97,115,101,58,32,110,101,103,97,116,105,118,101,230,122,7,147,57,224,2,
-2,137,148,192,206,64,5,234,95,2,160,168,161,219,77,33,139,202,224,46,
-31,0,50,153,198,128,48,224,227,22,224,237,3,224,225,27,232,4,3,2,
-98,97,115,197,227,128,139,0,89,161,185,226,163,3,194,153,92,157,0,57,
-201,91,161,180,225,235,1,224,49,2,194,94,160,83,192,11,226,106,8,224,
-70,4,145,167,128,49,74,251,160,124,193,40,128,60,97,70,224,249,1,97,
-88,156,39,224,10,2,224,55,2,253,149,0,65,53,73,14,139,65,128,65,
-99,165,224,92,2,97,116,224,92,1,99,180,170,38,4,51,57,56,32,58,
-102,5,238,58,27,3,73,79,46,69,199,181,224,28,1,6,73,79,69,120,
-99,101,112,231,115,0,174,65,76,71,7,10,65,32,94,112,117,116,98,64,
-99,210,0,3,57,57,32,79,64,6,2,32,64,79,68,236,0,48,170,224,
-0,58,109,150,80,10,0,50,64,2,64,15,204,249,0,83,225,128,0,76,
-81,129,73,243,14,2,242,245,5,0,51,160,252,241,242,0,238,114,4,129,
-147,3,95,51,57,52,65,22,96,17,75,158,70,170,0,57,118,44,226,106,
-6,3,66,97,100,32,135,2,1,32,109,207,33,96,37,0,57,180,189,0,
-58,64,207,133,187,100,135,255,208,2,126,80,192,151,175,178,0,51,110,135,
-110,134,98,114,243,153,2,128,76,173,158,3,57,55,32,58,96,32,79,101,
-2,112,50,112,64,13,0,54,166,106,0,54,130,179,96,98,224,5,0,70,
-59,104,92,64,1,210,4,177,101,224,6,12,224,42,2,117,99,145,153,224,
-42,29,160,28,224,49,10,224,42,15,224,49,10,224,42,22,224,49,3,182,
-30,129,162,0,58,96,6,98,24,0,82,100,83,2,51,56,57,144,157,0,
-58,65,214,129,139,0,95,84,171,69,31,0,58,98,15,5,10,65,32,97,
-110,100,65,68,130,133,196,17,227,70,2,0,80,164,206,176,232,130,41,173,
-219,131,195,0,66,129,207,0,64,85,254,129,172,207,236,0,85,224,135,8,
-130,186,68,14,117,31,0,58,96,27,104,84,162,16,0,95,85,43,226,185,
-4,224,180,2,132,17,226,209,0,0,56,100,155,2,58,51,56,243,226,0,
-226,164,5,3,104,101,97,100,246,70,8,0,75,64,251,64,57,97,15,106,
-125,0,89,128,205,165,12,164,193,96,226,96,252,165,164,230,180,2,164,239,
-132,233,192,5,151,138,2,95,51,55,131,103,230,55,0,228,151,5,98,252,
-117,230,96,40,1,95,51,70,214,229,79,3,128,6,224,38,0,224,87,6,
-160,47,192,159,148,249,3,67,39,32,79,96,33,0,53,164,51,128,30,96,
-185,3,95,50,48,49,175,104,64,33,0,54,68,93,0,35,86,207,96,40,
-64,4,163,250,133,76,132,22,128,85,64,54,1,57,32,228,208,2,1,45,
-79,131,231,128,71,207,127,228,106,0,178,180,224,52,7,9,45,115,116,114,
-105,112,45,101,111,108,164,37,224,188,131,229,43,4,224,192,20,237,25,0,
-225,169,255,225,169,104,193,171,181,242,96,54,3,95,51,55,49,87,176,224,
-198,4,4,104,97,115,104,101,238,11,1,227,137,255,227,137,255,225,169,255,
-227,137,51,64,18,131,120,224,9,12,234,103,3,65,166,236,39,5,64,14,
-227,203,0,215,6,72,100,86,19,0,49,89,73,96,176,128,0,224,39,0,
-119,9,225,246,4,160,62,236,71,2,142,223,236,102,5,160,17,192,71,138,
-15,192,17,121,49,64,14,238,178,2,192,90,108,148,97,20,0,54,160,150,
-224,89,0,168,255,225,67,0,250,133,0,139,43,128,22,96,0,75,178,225,
-13,2,64,173,160,146,108,133,224,94,8,171,4,224,65,2,225,58,1,64,
-116,179,44,96,181,129,48,97,234,229,12,16,0,111,195,45,138,21,151,227,
-96,93,224,179,4,128,10,174,149,96,0,229,53,0,225,173,2,160,124,96,
-17,225,192,36,225,179,6,160,7,123,194,193,135,224,68,11,0,49,220,14,
-227,45,2,224,182,4,192,12,96,184,4,95,51,55,55,32,116,170,224,196,
-6,238,208,0,250,34,6,123,194,2,51,55,56,160,110,225,67,15,3,97,
-110,115,105,230,76,0,224,174,0,224,81,2,224,75,34,4,116,114,97,100,
-105,78,17,0,97,195,217,160,220,162,11,224,64,24,1,115,116,213,247,96,
-0,109,61,96,56,64,45,0,56,100,244,189,51,140,33,224,34,20,140,111,
-128,131,226,98,49,180,189,162,98,228,225,2,224,80,47,4,105,110,99,108,
-117,238,84,1,226,185,8,100,174,229,45,3,160,48,0,61,225,25,2,131,
-250,196,15,226,169,0,64,135,224,130,27,0,80,232,61,6,225,234,6,163,
-7,102,112,133,57,224,83,1,224,70,3,0,67,96,70,224,30,17,128,31,
-128,228,225,47,49,0,65,225,128,11,225,0,54,3,45,104,101,108,231,105,
-0,224,76,56,2,118,101,114,88,184,224,79,63,224,78,7,64,62,143,239,
-228,163,4,128,87,177,17,227,99,0,228,164,12,198,0,248,248,2,65,220,
-225,181,1,135,108,231,74,3,195,80,106,59,99,80,224,18,0,78,199,160,
-18,96,123,98,182,225,15,18,224,33,44,225,160,5,227,228,5,87,229,227,
-228,7,224,66,10,4,110,111,108,105,110,227,103,0,128,0,3,95,51,56,
-49,64,249,240,251,0,224,243,2,224,254,3,64,41,225,158,13,2,68,85,
-73,96,82,3,58,51,56,54,178,219,7,56,48,32,75,32,85,32,90,167,
-129,97,143,64,162,0,56,165,223,64,43,211,121,160,43,178,50,128,46,224,
-41,1,0,58,97,93,224,40,5,129,227,224,35,0,0,58,97,147,224,34,
-3,89,118,224,119,2,65,39,224,121,0,64,46,240,252,1,128,37,224,119,
-0,72,114,0,58,96,43,112,181,0,58,64,80,128,10,0,73,80,70,70,
-118,96,56,176,65,66,67,0,85,65,102,133,122,192,18,1,66,39,96,21,
-225,136,1,232,64,0,232,108,2,170,187,97,177,242,247,1,88,158,153,0,
-162,149,120,27,184,181,145,17,82,40,85,99,0,64,65,93,103,3,98,229,
-216,186,155,82,64,0,128,178,144,249,0,85,84,75,84,248,0,58,105,218,
-192,17,65,217,0,58,98,233,209,165,122,95,107,64,128,17,0,51,96,68,
-129,95,243,78,5,0,58,107,115,84,168,64,133,0,48,98,20,0,58,66,
-29,193,59,89,244,225,59,1,74,105,179,182,2,95,51,54,102,241,114,203,
-99,109,0,58,96,6,10,10,65,32,115,101,113,117,97,108,32,58,96,33,
-161,163,2,95,51,54,191,223,0,52,96,72,128,191,187,88,97,9,1,95,
-50,66,77,0,58,96,39,98,7,1,54,51,165,169,192,170,64,38,242,239,
-2,129,137,65,237,129,145,0,58,64,49,96,58,242,151,43,0,54,97,113,
-2,58,51,54,129,15,242,151,8,3,116,97,105,108,242,151,8,0,65,96,
-150,211,57,2,95,52,55,86,112,132,121,0,53,128,178,129,62,2,73,32,
-58,96,16,118,151,0,56,96,92,1,53,54,65,61,0,53,74,65,2,95,
-51,50,68,178,160,56,92,150,224,11,0,65,29,96,11,0,58,96,6,96,
-220,253,0,0,160,61,231,88,5,126,137,1,58,32,96,158,156,111,128,38,
-0,58,96,6,247,24,20,6,67,111,110,116,114,111,108,247,22,11,96,18,
-2,67,97,108,137,0,100,75,0,58,96,194,123,152,163,24,214,208,64,7,
-230,41,1,134,54,0,95,99,39,130,9,0,53,172,195,203,49,97,249,2,
-95,51,53,163,65,140,140,0,58,64,160,130,122,119,65,96,30,96,109,0,
-85,225,154,7,9,109,100,53,67,111,109,98,105,110,101,161,160,133,28,64,
-97,66,29,0,90,100,194,2,95,50,54,167,252,0,48,92,222,119,47,0,
-89,117,42,64,205,102,106,66,84,236,41,1,194,88,235,214,2,160,190,66,
-41,198,155,2,95,51,53,127,103,64,225,188,82,1,64,95,87,69,2,95,
-51,52,186,123,160,205,130,155,8,94,109,100,53,65,114,114,97,121,66,17,
-196,194,226,176,1,0,57,76,86,64,155,1,95,51,140,92,100,68,247,242,
-1,247,134,4,3,95,51,52,57,224,46,5,169,112,192,46,1,95,49,89,
-12,226,232,6,132,176,96,146,130,184,98,156,130,167,128,211,172,30,228,184,
-10,205,162,224,106,0,225,53,3,192,25,232,26,5,253,178,3,0,95,92,
-15,189,118,251,242,1,237,159,6,238,28,5,248,116,2,64,52,101,163,224,
-45,2,96,96,172,130,229,60,7,250,108,2,248,154,4,224,43,10,165,140,
-224,38,1,160,16,0,58,65,97,226,132,0,0,90,150,255,64,21,195,139,
-99,184,71,94,225,253,0,129,247,0,35,96,238,87,39,0,58,97,153,1,
-10,65,126,214,0,58,96,28,128,57,66,242,68,159,1,95,49,94,224,1,
-95,51,68,151,0,95,127,229,96,80,191,229,192,11,95,229,224,11,0,68,
-0,128,11,65,70,64,98,131,42,2,114,101,109,64,98,167,107,191,242,96,
-148,97,126,255,240,0,96,53,64,54,130,147,97,40,128,131,190,139,0,58,
-96,39,183,108,226,12,1,69,207,97,180,233,112,1,1,32,95,70,102,165,
-79,98,104,64,180,1,51,57,227,158,2,31,92,34,47,118,97,114,47,102,
-111,108,100,101,114,115,47,122,50,47,56,52,112,116,102,51,98,120,55,104,
-53,52,48,112,23,107,110,99,121,48,121,50,120,112,99,48,48,48,48,103,
-110,47,84,47,109,104,115,105,110,64,13,15,48,48,57,57,57,53,46,104,
-115,92,34,44,51,57,58,49,168,246,103,64,1,51,52,165,197,67,90,1,
-95,54,226,79,2,96,30,1,50,49,101,29,100,108,65,53,1,49,54,160,
-19,193,236,113,121,139,179,255,218,1,160,199,0,83,65,20,73,9,160,83,
-168,17,96,69,128,13,0,79,64,252,0,79,235,185,2,68,98,64,29,224,
-21,3,2,95,50,49,98,8,1,50,50,64,70,0,58,97,119,3,10,65,
-32,65,65,165,220,16,134,53,0,51,134,8,81,210,0,58,65,62,195,152,
-64,16,230,53,2,1,50,49,103,115,68,114,166,53,192,56,66,78,192,11,
-66,31,96,11,0,58,96,6,164,99,1,51,53,64,234,189,85,1,51,51,
-130,223,0,51,130,143,121,246,132,222,94,182,132,222,0,80,128,47,64,203,
-160,47,224,15,8,64,65,229,166,0,104,102,64,23,100,73,177,181,171,143,
-105,93,69,37,0,51,157,191,160,68,65,22,224,21,2,160,154,137,82,1,
-51,51,133,104,2,95,50,48,101,79,95,87,64,96,167,228,1,53,53,65,
-30,200,189,0,58,96,45,193,52,232,180,4,64,90,168,180,252,215,7,224,
-14,5,192,170,241,213,0,200,222,96,188,0,58,96,6,200,253,2,50,57,
-56,64,93,192,50,69,182,99,99,65,236,160,26,147,211,224,26,3,0,58,
-96,91,202,124,130,125,64,77,130,115,220,246,201,161,1,75,50,234,127,2,
-234,151,15,197,134,234,155,27,224,8,1,64,214,96,142,129,253,229,213,3,
-192,9,128,44,252,229,4,0,58,96,54,105,155,3,50,51,32,58,66,127,
-64,13,0,80,64,10,201,121,1,51,54,171,184,2,95,51,49,232,150,3,
-11,110,111,32,109,97,116,99,104,32,97,116,32,131,196,96,32,128,149,68,
-219,130,211,136,176,96,11,0,58,96,6,232,176,29,223,178,5,46,73,110,
-116,101,114,177,167,224,39,1,2,80,97,116,64,22,0,77,64,128,2,70,
-97,105,232,196,4,67,81,129,2,0,83,100,4,146,179,65,93,129,67,98,
-231,160,10,72,56,0,52,88,196,0,49,129,125,131,244,67,162,96,5,77,
-105,0,54,227,251,0,104,199,130,128,130,142,161,28,83,64,238,207,3,67,
-236,66,229,116,80,1,56,32,128,15,99,20,106,33,132,177,224,24,1,161,
-56,224,220,1,4,39,92,92,39,39,165,23,161,75,96,158,224,82,3,97,
-246,136,237,224,17,3,132,240,231,170,3,224,151,1,0,64,160,35,168,82,
-224,139,0,142,148,106,130,224,133,3,3,92,92,92,34,238,147,2,0,58,
-96,131,64,244,65,24,0,58,97,234,105,188,241,133,4,89,199,0,49,74,
-150,249,214,2,67,235,0,67,183,16,160,136,94,231,129,18,64,39,97,111,
-162,168,190,246,244,166,2,73,181,96,176,161,144,64,59,129,144,160,200,96,
-62,193,205,1,51,49,137,19,0,49,112,83,255,193,3,0,90,64,28,105,
-192,64,61,224,231,3,0,38,239,222,1,131,181,104,173,247,236,0,201,10,
-136,195,118,58,225,89,7,224,60,1,149,8,160,223,128,77,160,223,96,224,
-64,56,128,79,96,177,65,32,225,163,6,96,191,100,49,128,180,64,194,226,
-92,3,77,221,208,78,244,93,1,224,210,16,80,45,0,80,103,71,224,30,
-1,2,78,85,76,96,30,96,25,0,49,224,25,3,2,83,79,72,224,25,
-1,0,50,224,25,4,1,84,88,224,25,1,0,51,224,25,3,0,69,224,
-25,3,0,52,224,25,4,1,79,84,224,25,1,0,53,224,25,4,1,78,
-81,224,25,1,0,54,224,25,3,2,65,67,75,224,25,1,0,55,112,246,
-1,57,55,161,240,96,19,145,10,0,57,69,77,224,19,0,0,57,96,19,
-0,49,65,221,224,20,1,1,49,48,160,21,0,48,224,21,4,0,49,160,
-21,224,64,4,1,49,50,128,21,0,48,194,91,128,21,0,51,160,43,0,
-52,224,108,4,128,43,226,134,0,128,42,224,248,4,0,83,153,176,128,25,
-224,248,4,0,83,145,147,128,25,224,248,4,2,68,76,69,224,26,2,0,
-55,224,26,4,0,67,137,37,128,26,0,56,224,26,5,0,50,224,26,2,
-250,53,4,2,68,67,51,225,203,2,226,0,4,2,68,67,52,224,26,2,
-226,1,4,1,78,65,225,127,2,69,174,224,187,2,1,89,78,224,26,2,
-226,3,6,0,66,224,26,2,225,11,4,1,67,65,224,53,3,226,5,5,
-0,77,224,25,2,225,12,4,1,83,85,224,79,3,225,12,4,1,69,83,
-149,173,128,26,225,12,4,1,70,83,224,25,2,225,11,4,0,71,224,25,
-2,72,74,224,25,1,0,82,224,25,3,225,9,4,0,85,224,25,2,107,
-76,225,63,2,0,69,131,64,198,23,224,0,21,110,253,140,184,0,58,101,
-112,69,54,229,30,0,77,142,0,49,79,119,0,35,109,10,173,160,96,17,
-1,64,35,175,231,66,41,103,164,0,48,76,112,66,81,240,54,6,196,244,
-108,124,103,112,96,17,0,58,96,6,133,165,68,70,237,182,0,209,45,0,
-51,66,248,0,95,84,172,109,58,96,19,250,141,2,96,30,64,69,136,11,
-64,67,230,88,2,1,56,50,206,4,192,64,99,115,229,151,8,96,69,108,
-145,205,90,192,40,235,89,3,224,10,1,96,50,0,49,133,32,205,213,96,
-250,129,33,102,75,0,50,84,242,224,74,4,0,58,96,102,5,10,65,32,
-99,104,114,65,36,136,4,148,234,165,129,139,48,64,41,135,190,65,21,134,
-173,2,95,51,48,64,32,225,149,11,106,163,225,149,5,77,134,96,113,70,
-217,141,109,0,51,77,241,237,67,2,2,60,32,64,98,210,224,19,8,129,
-227,172,166,160,19,69,202,234,1,1,234,11,2,224,40,7,66,13,224,40,
-12,224,102,8,65,253,224,61,7,64,251,224,102,13,107,217,3,67,32,61,
-61,64,38,112,239,134,88,224,97,3,0,58,97,34,106,233,72,239,249,116,
-3,226,86,5,65,233,1,53,57,240,31,0,0,54,111,237,145,56,65,137,
-77,27,1,50,57,139,33,1,95,50,80,238,0,51,112,210,1,95,51,81,
-197,192,41,2,64,95,50,109,230,97,247,64,123,131,54,4,111,114,100,32,
-58,96,18,9,10,65,32,98,115,105,110,100,101,120,64,16,163,17,2,50,
-52,56,96,156,231,49,0,78,222,82,140,107,222,103,168,4,67,32,95,57,
-56,77,215,128,230,80,189,96,11,239,41,1,105,143,242,141,4,19,87,111,
-114,100,56,46,115,117,99,99,58,32,111,118,101,114,102,108,111,119,99,255,
-81,203,224,108,9,0,57,224,108,3,98,193,224,109,42,8,112,114,101,100,
-58,32,117,110,100,224,110,3,73,164,0,50,66,217,143,3,64,14,87,20,
-1,95,50,107,94,67,23,0,56,74,203,129,79,224,245,3,154,210,128,5,
-193,159,0,49,86,62,200,149,2,95,50,56,67,156,192,57,224,194,1,224,
-31,13,224,89,1,237,28,2,128,123,96,84,224,20,2,96,54,96,20,0,
-58,96,62,225,167,6,79,145,192,80,139,38,129,160,0,49,241,203,3,225,
-32,9,225,141,19,160,82,96,195,192,82,97,134,224,83,23,225,115,13,112,
-139,65,102,99,230,68,28,224,174,3,225,89,7,105,158,161,51,1,51,48,
-97,156,224,137,2,224,25,1,69,119,224,71,3,64,19,0,48,192,72,131,
-203,67,186,224,83,1,128,77,160,58,65,75,165,147,106,76,155,102,224,133,
-1,87,213,68,20,241,14,1,64,5,109,7,225,244,0,243,231,6,64,66,
-171,144,203,121,219,188,96,131,129,53,0,56,106,216,128,28,192,76,203,49,
-65,122,134,69,241,71,5,0,32,160,53,160,252,140,162,224,165,0,224,42,
-1,243,161,0,64,225,224,218,16,128,136,224,218,67,129,44,224,218,69,96,
-165,224,218,11,238,155,0,178,160,71,176,64,44,128,179,224,125,5,160,192,
-96,202,160,180,162,222,64,91,149,35,64,150,164,72,211,5,192,9,0,58,
-98,81,99,111,1,56,55,108,2,2,95,56,56,147,82,0,58,98,117,154,
-36,87,148,0,58,67,175,224,42,0,100,99,96,39,128,9,0,50,64,34,
-64,35,184,110,67,190,2,95,50,53,86,147,101,200,2,95,50,53,85,100,
-96,11,239,11,1,65,86,166,16,224,18,4,129,25,224,18,4,132,189,224,
-18,4,65,0,224,18,6,134,211,224,18,4,64,151,224,18,6,224,132,10,
-68,168,224,18,6,135,134,224,18,4,130,140,224,170,5,224,190,11,224,191,
-10,105,38,224,19,7,224,193,10,105,148,224,19,7,224,195,10,148,146,224,
-19,6,224,197,10,113,110,224,19,7,224,199,10,116,171,224,19,7,225,135,
-11,224,199,10,98,138,224,19,7,224,199,10,104,94,224,19,7,224,199,10,
-104,196,224,19,7,169,21,224,19,4,64,199,251,177,7,17,111,69,110,117,
-109,58,32,111,117,116,32,111,102,32,114,97,110,103,191,54,168,46,64,7,
-99,3,0,95,130,179,64,7,99,46,1,95,50,107,74,64,7,106,67,1,
-95,50,91,188,64,7,91,207,96,7,132,224,0,50,92,45,96,7,160,79,
-184,70,0,50,124,236,64,7,160,79,103,237,64,7,160,79,64,180,64,7,
-93,94,96,7,160,79,101,188,64,7,160,79,87,92,96,7,160,79,93,247,
-96,7,160,79,148,88,1,95,50,94,212,64,7,94,234,96,7,160,79,100,
-112,0,85,241,119,1,137,220,98,69,234,4,7,64,41,234,147,53,128,7,
-96,8,96,150,234,145,14,128,7,96,8,169,190,234,143,33,128,7,96,8,
-132,189,224,38,7,65,55,64,29,97,63,64,8,133,113,224,99,8,99,12,
-224,119,7,130,248,224,80,5,65,72,64,71,97,80,64,8,204,139,224,38,
-4,99,71,0,85,143,84,128,8,129,1,66,187,224,39,4,130,227,224,59,
-5,161,22,147,93,64,8,129,22,64,9,96,237,224,189,9,64,41,224,208,
-7,64,160,224,19,7,131,141,224,109,5,65,55,64,90,97,63,64,8,134,
-170,224,38,7,130,56,128,7,96,8,134,54,224,98,7,132,63,224,58,5,
-65,33,64,49,97,41,0,85,113,112,224,96,9,140,49,96,6,64,7,138,
-30,224,94,8,64,155,224,18,6,132,57,224,75,4,65,47,0,85,114,26,
-96,7,129,52,224,35,6,160,246,192,245,231,159,0,225,48,5,226,0,10,
-161,255,193,6,193,154,130,6,135,214,106,204,230,221,0,96,179,0,39,233,
-232,1,104,116,236,229,3,108,199,128,46,224,12,5,169,239,107,6,192,78,
-99,193,224,25,12,196,195,0,57,224,19,2,0,57,77,21,96,11,0,58,
-96,6,137,24,84,152,0,39,88,57,77,68,0,56,92,173,77,88,97,110,
-244,173,2,96,11,184,71,192,105,160,98,148,63,224,6,4,0,58,64,107,
-224,95,5,224,92,6,224,79,6,97,34,224,79,10,0,58,64,192,235,232,
-7,69,47,170,241,0,56,98,34,171,232,235,147,17,2,73,110,116,235,230,
-19,160,80,65,107,224,80,0,254,5,8,224,81,9,235,228,12,1,73,32,
-64,2,65,247,0,57,235,224,1,128,85,225,247,3,189,27,225,187,0,0,
-57,235,223,1,128,44,224,25,1,235,223,1,160,25,128,90,224,77,1,130,
-145,224,82,0,128,76,160,57,65,65,0,51,235,3,17,235,2,72,166,155,
-135,2,235,1,16,135,41,64,10,235,1,4,128,53,235,1,7,235,0,14,
-96,222,224,215,16,96,113,224,215,67,130,4,224,215,68,133,128,224,215,9,
-235,216,10,64,43,235,215,33,136,80,203,215,64,148,235,215,15,98,73,157,
-160,64,13,0,56,217,151,75,186,195,82,78,177,1,95,50,83,113,203,243,
-132,240,96,83,224,28,15,0,58,98,172,156,0,64,77,128,100,0,65,96,
-100,0,54,96,13,124,230,64,179,88,160,128,150,252,171,0,192,222,64,45,
-254,65,0,3,50,32,75,52,126,4,64,21,132,21,192,21,97,64,0,58,
-68,70,128,114,64,136,91,93,101,32,128,17,0,49,192,17,129,93,152,148,
-128,17,129,2,152,140,96,17,73,48,128,17,0,52,192,17,192,204,70,63,
-128,17,128,211,152,116,128,17,128,215,152,108,128,17,128,187,152,106,128,17,
-221,21,70,247,128,17,224,179,0,71,18,128,18,224,180,1,192,181,66,126,
-160,18,192,182,74,29,160,18,192,183,74,56,160,18,192,184,74,83,160,18,
-192,185,66,29,160,18,192,186,74,137,160,18,192,187,74,164,160,18,192,188,
-65,164,160,18,192,189,74,218,128,18,72,250,128,18,224,189,0,73,22,128,
-18,225,115,1,192,189,66,148,160,18,192,189,75,70,160,18,192,189,75,97,
-160,18,192,189,75,124,160,18,192,189,75,151,160,18,192,189,75,178,160,18,
-192,189,75,205,160,18,192,189,71,36,183,65,113,232,70,154,156,191,2,50,
-53,49,214,135,99,155,198,141,0,53,128,220,123,183,102,34,64,19,128,221,
-224,69,9,230,150,10,224,71,0,227,118,0,0,51,66,191,64,18,64,25,
-96,90,224,1,3,67,217,96,0,224,20,11,224,17,8,224,14,5,224,11,
-2,192,8,93,0,131,86,86,255,195,64,0,90,128,130,64,21,239,150,0,
-71,224,87,20,0,58,117,70,15,10,65,32,34,94,95,94,44,94,41,94,
-66,94,57,94,59,96,5,18,53,94,54,94,57,94,58,94,57,94,52,94,
-57,94,57,94,73,94,38,96,7,0,66,96,19,30,57,94,89,94,32,94,
-53,94,57,94,54,94,60,94,51,94,60,94,89,94,33,94,53,94,58,94,
-54,94,58,124,32,96,75,22,57,94,67,94,59,94,61,94,57,94,60,94,
-61,94,50,94,55,94,58,94,45,94,61,96,13,8,58,94,40,94,40,94,
-60,94,33,96,75,31,60,94,40,94,50,94,56,94,66,94,40,94,57,94,
-86,94,32,94,58,94,70,94,32,94,87,94,33,94,58,94,71,94,2,33,
-94,32,224,3,102,224,33,59,224,3,53,224,9,1,0,66,224,15,6,64,
-5,0,66,96,5,2,33,94,67,224,19,6,224,43,3,224,79,13,224,69,
-9,224,15,1,2,33,94,50,160,67,0,67,96,9,0,34,96,25,224,5,
-3,224,3,21,224,33,25,192,37,192,77,224,129,3,224,3,99,0,70,96,
-5,128,11,64,5,128,23,193,77,224,3,2,1,124,68,97,21,28,90,94,
-33,94,81,94,49,94,67,94,60,94,75,94,49,94,77,94,60,94,68,94,
-49,94,70,94,60,94,49,96,3,6,80,94,60,124,111,94,35,224,57,0,
-64,21,64,7,4,48,94,48,94,49,97,83,8,57,94,32,94,67,94,48,
-94,60,96,25,67,73,2,32,94,48,160,3,64,41,0,80,96,11,3,72,
-94,32,124,193,29,225,211,3,224,3,35,64,179,64,9,0,58,160,15,96,
-75,5,124,50,94,32,124,47,224,75,40,224,3,13,8,61,94,68,94,35,
-94,37,94,37,224,73,56,224,3,37,224,29,19,224,67,31,224,3,145,1,
-48,124,65,79,130,49,4,69,94,57,124,40,98,53,0,52,96,17,18,61,
-94,61,94,59,94,48,124,44,94,35,94,52,94,35,94,57,94,35,224,5,
-4,6,71,94,48,94,90,94,50,98,97,67,189,69,87,6,74,94,48,94,
-69,94,45,229,179,0,0,59,96,5,64,73,0,74,96,53,64,25,14,57,
-94,95,94,50,94,49,94,73,94,50,94,84,94,35,101,231,10,67,94,57,
-94,50,94,50,94,35,124,98,96,73,4,50,94,70,94,35,101,187,6,69,
-94,35,94,49,94,49,96,117,4,61,94,67,94,35,96,39,64,51,2,66,
-94,50,96,89,8,50,94,77,94,57,94,48,94,45,64,63,1,94,93,99,
-59,0,35,64,193,3,124,88,94,50,96,119,64,33,0,48,64,51,5,124,
-32,94,50,94,72,160,81,0,61,96,139,0,49,96,235,6,35,94,59,94,
-59,94,85,96,205,64,29,128,35,0,66,96,5,66,119,64,35,0,78,96,
-101,64,83,64,23,64,17,64,15,16,74,94,50,94,68,94,48,94,87,94,
-50,94,60,94,69,94,50,96,137,0,45,96,19,3,72,94,35,124,70,103,
-2,49,94,87,96,205,6,95,94,35,94,36,124,53,96,167,0,36,96,151,
-8,66,94,36,94,71,94,35,94,67,96,15,2,36,94,36,160,249,65,27,
-129,103,199,7,2,49,94,78,160,55,4,36,94,48,94,71,96,103,0,48,
-97,11,64,7,64,185,2,48,94,70,96,5,64,85,129,145,128,217,128,101,
-64,215,64,15,128,63,128,7,64,27,65,197,64,29,192,75,65,85,64,121,
-64,35,64,121,64,21,65,27,2,69,94,40,98,15,65,157,128,29,64,37,
-64,75,64,243,224,63,1,224,139,7,224,5,7,64,55,64,101,64,125,64,
-247,128,71,64,23,65,85,64,185,2,35,94,70,224,191,0,65,13,128,135,
-64,37,128,155,65,17,224,125,1,0,72,224,181,0,224,121,11,0,68,225,
-5,6,129,203,192,59,129,3,129,71,0,78,160,51,224,251,3,66,191,64,
-127,0,50,98,133,64,55,225,125,27,224,119,7,129,217,225,127,13,64,93,
-128,141,225,129,17,66,225,65,125,128,245,64,33,65,113,65,41,128,245,65,
-41,64,13,193,101,128,9,192,17,192,39,64,7,0,75,161,169,128,123,64,
-5,128,29,64,145,129,145,128,213,0,69,96,35,163,51,105,35,0,69,97,
-251,69,131,64,131,128,43,129,5,128,131,0,86,96,5,0,79,225,109,4,
-130,213,129,215,64,165,224,237,1,192,53,128,173,225,119,9,64,39,2,57,
-94,70,98,113,194,243,0,57,224,111,10,67,37,225,107,9,0,68,96,117,
-193,171,128,235,128,123,64,11,64,219,226,143,1,224,117,3,128,17,2,36,
-94,75,225,147,0,0,36,226,93,3,99,201,64,23,227,79,3,225,59,3,
-68,141,65,93,64,45,0,36,96,189,225,201,7,0,72,96,209,132,35,192,
-159,0,81,161,155,68,63,194,205,128,207,66,79,131,15,128,85,65,173,130,
-133,66,129,128,201,128,183,128,217,0,57,64,185,1,124,47,96,115,64,201,
-68,71,64,57,67,187,68,131,68,103,235,85,0,0,124,64,123,226,49,1,
-129,67,128,131,193,89,128,69,69,9,128,143,128,35,69,47,64,89,224,123,
-1,66,127,0,95,96,55,2,66,94,61,101,37,75,129,64,11,64,251,66,
-57,64,41,0,73,96,251,69,195,128,3,75,237,64,3,64,185,97,217,0,
-124,64,103,64,175,0,77,97,27,67,169,134,107,64,119,69,197,64,33,128,
-251,64,63,64,87,134,163,0,68,107,247,64,115,96,213,1,124,42,97,127,
-129,161,65,37,133,107,129,111,129,191,64,143,2,69,94,57,97,23,192,21,
-131,69,193,221,129,63,65,113,134,17,0,76,226,135,0,128,211,129,239,0,
-36,163,31,64,13,2,61,94,61,167,75,73,13,137,101,64,139,71,79,137,
-141,1,66,124,129,221,197,153,196,47,224,17,0,98,97,224,13,1,70,171,
-224,45,18,102,15,2,48,124,56,224,51,4,195,87,64,201,4,72,94,57,
-94,83,98,133,131,153,0,73,98,123,2,48,124,85,167,241,0,69,170,43,
-4,52,94,68,124,107,98,189,10,57,94,80,94,50,94,41,94,89,94,50,
-97,155,3,66,94,48,124,70,223,71,39,2,66,94,39,97,167,67,71,130,
-179,65,15,4,72,94,48,94,82,162,229,66,129,0,57,96,17,64,31,64,
-17,67,73,65,57,195,181,160,19,1,124,51,224,49,0,66,73,66,203,129,
-91,65,229,135,147,142,21,64,37,195,59,130,237,68,137,64,185,72,163,72,
-51,64,133,0,45,168,67,64,219,0,34,66,233,1,124,52,160,167,66,57,
-3,35,94,35,124,75,79,65,175,3,68,94,48,124,65,243,69,73,0,94,
-160,151,199,123,132,213,229,29,1,65,227,128,29,66,101,65,67,199,139,72,
-97,195,15,4,74,94,48,124,43,162,183,65,53,195,147,97,117,0,124,74,
-181,68,169,226,125,1,64,55,66,167,64,161,128,245,131,75,130,163,131,11,
-128,123,0,73,160,45,224,219,0,224,7,0,0,70,97,33,65,3,64,31,
-67,45,5,37,94,79,94,35,124,131,139,72,97,0,46,162,173,67,67,197,
-17,192,93,64,187,192,201,64,73,66,21,67,227,0,72,169,15,128,171,64,
-227,195,65,195,61,131,29,99,61,96,243,128,91,198,13,128,31,128,99,64,
-135,0,57,99,207,65,219,64,209,192,69,65,71,67,175,131,55,130,23,193,
-83,2,69,94,49,162,65,138,155,65,173,0,42,162,171,76,149,0,71,102,
-3,129,179,2,57,94,76,225,61,0,66,251,65,51,196,177,128,105,129,237,
-8,43,94,33,124,62,94,49,94,76,77,31,0,124,76,147,4,36,94,49,
-124,63,237,53,2,224,3,255,224,3,17,193,143,224,3,181,64,197,2,71,
-94,32,228,245,0,0,69,162,89,81,235,64,23,192,7,224,31,11,207,51,
-192,3,192,43,0,77,160,43,128,15,0,34,224,7,8,79,21,0,48,241,
-53,0,0,34,114,125,2,66,94,60,102,13,224,23,3,64,19,0,67,160,
-75,192,21,66,231,0,60,96,73,0,68,111,145,0,60,163,7,224,81,7,
-64,23,8,74,94,41,94,68,94,45,94,69,179,57,6,55,94,56,94,53,
-94,55,224,7,0,67,57,2,42,94,43,96,35,0,41,102,23,64,25,69,
-63,2,51,94,51,99,245,0,58,101,239,0,74,179,127,4,51,94,73,94,
-57,160,83,68,119,2,45,94,40,173,39,74,135,77,219,64,45,77,193,224,
-13,1,69,233,69,183,70,183,0,59,107,77,67,161,2,67,94,37,99,245,
-4,37,94,75,94,35,96,21,71,177,80,149,64,5,64,11,242,89,1,128,
-7,192,23,0,58,96,247,71,229,64,15,192,3,64,245,64,51,145,55,67,
-249,64,49,64,17,65,227,71,121,80,129,65,75,64,65,128,25,8,61,94,
-79,94,40,124,34,94,39,160,51,0,39,104,137,137,171,64,47,0,68,96,
-43,0,58,96,147,128,51,192,5,0,70,96,5,0,94,160,31,192,25,128,
-17,2,66,94,75,116,41,0,61,232,201,0,0,83,160,39,64,53,4,53,
-94,54,124,80,96,15,8,93,94,61,94,88,94,58,124,39,103,125,1,58,
-124,64,49,0,85,97,179,10,61,94,84,94,48,124,59,94,40,124,77,96,
-19,4,40,94,65,124,54,96,51,69,139,10,58,124,53,94,61,94,71,94,
-58,124,110,96,19,2,65,124,119,224,107,2,224,3,11,4,93,94,40,124,
-43,105,15,129,145,0,94,160,7,224,3,7,0,79,64,77,5,92,95,94,
-61,94,65,225,189,0,224,3,30,1,124,62,224,47,2,0,95,160,11,6,
-66,94,65,94,58,124,47,96,207,129,37,64,231,76,183,66,49,64,103,6,
-48,124,104,94,61,124,47,242,13,2,193,243,227,163,3,243,11,1,64,5,
-67,135,79,165,243,175,111,224,3,73,0,33,162,205,128,13,70,197,64,7,
-74,43,67,137,86,135,2,57,124,37,163,223,64,21,100,15,1,124,55,168,
-203,71,27,77,145,0,35,104,81,73,101,138,17,224,5,33,80,125,196,29,
-64,3,67,247,64,7,128,5,68,21,132,61,64,5,128,23,196,73,226,7,
-5,71,191,67,251,64,41,137,133,64,49,2,53,94,76,177,233,215,203,224,
-3,3,1,52,124,64,205,0,89,98,11,2,88,94,61,106,25,6,65,124,
-85,94,61,94,89,106,157,0,61,184,9,6,61,94,49,94,50,94,39,226,
-123,11,96,91,224,87,8,96,5,64,27,2,72,94,39,232,175,0,0,52,
-117,41,128,139,0,39,96,81,128,153,74,251,137,187,72,33,69,59,66,97,
-3,50,94,52,124,73,187,74,77,64,13,136,119,75,91,137,233,132,43,79,
-127,0,61,82,185,1,124,37,96,109,64,23,2,79,94,50,100,11,138,153,
-67,233,0,71,100,91,2,78,94,40,98,247,2,73,94,40,99,7,64,15,
-2,66,124,63,78,205,2,124,51,124,64,47,0,50,128,13,5,94,65,124,
-35,124,125,176,65,4,49,94,72,124,118,141,243,100,7,4,72,94,48,124,
-39,233,23,2,68,113,64,37,65,39,64,121,73,55,72,239,0,83,102,147,
-226,155,53,224,3,19,73,87,69,193,73,181,66,65,0,49,224,73,48,179,
-199,171,131,0,39,173,75,137,213,4,86,94,60,94,72,118,195,150,197,224,
-3,13,246,153,41,224,3,69,79,69,224,17,3,224,35,13,224,195,3,88,
-213,64,9,224,185,35,70,249,192,5,224,3,19,248,61,3,64,5,66,217,
-128,7,128,3,224,47,5,0,84,104,63,129,189,66,71,2,49,94,33,100,
-25,211,87,139,71,68,93,235,243,1,71,19,139,181,147,255,146,5,77,105,
-77,195,67,251,148,63,1,36,124,67,57,0,79,160,55,64,19,204,99,76,
-177,0,81,171,159,66,185,149,221,64,105,64,29,0,91,108,35,132,151,64,
-121,78,1,142,9,64,65,0,92,242,191,0,236,213,3,236,151,5,76,125,
-68,121,69,33,64,81,71,213,64,77,141,251,85,201,131,41,112,189,111,97,
-144,17,192,225,128,7,67,207,129,5,77,33,64,23,65,75,64,55,141,85,
-131,113,77,117,144,229,173,189,96,245,144,51,140,123,64,75,174,117,160,25,
-0,87,177,103,131,195,79,77,224,121,1,64,17,129,137,64,19,78,149,146,
-27,224,7,5,229,235,6,112,83,74,47,64,219,194,109,6,67,94,48,124,
-79,94,33,110,255,128,211,224,5,1,0,57,96,9,192,207,65,143,2,50,
-124,87,101,143,0,50,101,135,65,119,64,63,64,15,65,61,2,46,94,70,
-100,147,2,46,94,46,192,7,1,94,71,160,9,2,47,124,49,96,9,4,
-47,94,66,124,109,128,163,1,124,105,101,19,64,157,0,33,96,79,74,245,
-70,191,129,227,2,50,94,58,176,3,146,63,128,3,224,5,0,112,121,4,
-80,94,60,94,79,65,129,3,124,106,94,50,101,217,4,79,94,61,124,63,
-160,95,87,47,71,1,69,125,148,195,94,47,69,125,83,213,222,55,64,215,
-64,17,134,149,74,215,230,67,11,224,3,3,65,125,64,7,144,71,139,7,
-129,235,134,85,192,3,139,31,0,52,105,43,66,91,152,211,138,61,64,161,
-0,65,161,157,87,247,66,69,254,207,58,160,59,192,165,65,69,2,49,124,
-44,162,43,80,185,131,145,226,43,9,140,35,128,31,87,181,0,58,126,251,
-64,9,65,63,0,67,169,159,66,105,0,66,121,93,137,163,65,83,144,191,
-145,205,193,161,114,97,112,99,0,50,66,47,1,124,122,184,235,64,221,66,
-49,0,44,178,93,4,72,94,61,124,52,103,127,1,40,94,74,245,95,105,
-65,161,76,3,145,59,2,61,124,46,96,47,68,77,4,65,94,65,94,48,
-195,219,98,117,76,23,4,35,94,90,94,40,97,85,90,29,64,73,66,247,
-0,83,104,13,67,147,0,39,103,151,0,37,96,129,67,99,0,48,177,135,
-144,103,64,55,64,37,67,247,2,39,124,41,103,57,6,32,124,39,94,33,
-124,77,160,195,210,33,73,117,64,187,0,35,101,63,135,97,0,71,164,207,
-132,117,0,74,109,125,0,78,96,5,0,70,253,45,0,75,177,67,51,0,
-78,96,5,66,235,141,135,64,195,64,59,66,249,2,66,124,54,163,175,71,
-207,65,101,64,147,68,1,71,195,2,48,124,41,109,69,3,72,94,49,124,
-64,191,193,175,67,5,81,79,129,117,65,45,128,23,150,227,69,97,0,40,
-96,11,65,173,86,85,65,255,69,97,4,72,94,40,124,47,225,177,4,64,
-85,2,68,94,40,96,125,141,169,64,63,65,215,64,25,2,57,124,63,170,
-79,65,45,65,163,64,51,2,79,94,40,99,101,77,227,132,199,137,29,138,
-151,134,21,211,191,65,179,130,97,147,23,69,55,0,40,99,155,74,61,64,
-7,64,33,64,89,197,187,73,7,129,5,0,61,101,235,64,89,131,57,64,
-55,116,45,99,223,64,169,64,15,201,159,64,243,64,215,64,133,64,11,84,
-81,154,21,118,229,65,7,3,124,79,94,48,85,81,3,124,54,94,48,94,
-105,1,94,76,96,7,70,211,102,173,162,23,134,141,243,67,3,64,209,69,
-183,85,7,146,143,92,223,2,49,94,85,111,181,0,48,109,195,0,65,64,
-93,1,94,94,65,27,1,124,41,96,147,64,185,157,23,129,53,97,19,64,
-123,96,99,64,237,74,3,129,153,64,197,70,201,66,197,75,45,77,239,64,
-193,129,79,75,229,2,48,94,84,96,209,0,40,105,189,203,209,134,83,84,
-27,0,78,164,219,65,43,85,195,64,183,230,97,1,128,45,135,21,68,21,
-216,143,198,205,68,51,0,45,97,43,134,85,68,151,156,185,219,77,65,11,
-2,66,94,35,97,35,148,37,71,133,193,31,70,149,64,75,131,25,70,83,
-128,83,128,119,102,189,120,103,64,119,84,59,135,147,136,15,64,135,134,113,
-138,159,64,53,133,89,64,199,67,97,65,9,221,71,244,53,1,64,5,202,
-15,160,233,107,41,246,247,7,132,147,69,17,101,243,168,21,64,73,64,193,
-66,47,192,223,199,101,251,175,33,129,91,128,141,154,187,251,175,1,153,233,
-64,47,64,91,85,91,128,53,192,31,84,137,194,77,64,229,154,155,192,119,
-132,185,64,9,64,71,156,77,192,95,64,217,64,5,225,5,1,136,57,65,
-113,136,203,66,83,64,155,2,92,94,48,98,29,192,237,64,49,129,63,131,
-167,213,89,192,57,137,217,0,93,186,21,192,121,192,221,129,31,128,243,129,
-167,195,41,0,65,66,161,97,89,194,89,64,169,224,51,5,0,86,97,235,
-98,143,102,27,192,97,245,237,1,128,39,137,243,129,17,129,151,73,173,0,
-82,173,99,128,37,64,47,192,153,161,215,224,45,0,0,83,106,37,2,48,
-94,90,161,75,224,49,1,130,241,65,111,67,37,64,47,134,119,77,235,65,
-219,2,65,124,56,165,89,226,167,1,99,29,1,124,99,102,101,4,32,94,
-95,94,33,96,55,68,197,68,85,226,39,1,132,131,226,31,1,91,25,87,
-149,226,15,1,193,9,66,1,137,211,64,121,67,31,87,31,64,185,160,77,
-0,124,67,5,225,71,3,133,3,192,235,64,59,0,90,96,103,2,73,94,
-35,173,239,64,89,196,187,65,197,65,151,234,183,1,67,183,2,45,94,50,
-183,1,225,99,1,65,253,69,3,74,241,131,231,4,57,94,65,124,53,186,
-73,144,61,193,85,122,137,0,124,128,185,152,129,225,127,1,130,69,128,43,
-0,82,230,69,0,0,57,248,247,0,0,85,162,189,64,55,226,17,2,0,
-124,234,167,1,137,217,66,241,64,85,64,63,198,85,131,39,139,103,224,141,
-1,135,9,129,105,71,253,221,193,128,103,194,75,228,189,1,0,66,64,213,
-250,119,2,139,73,222,93,64,211,106,113,121,247,64,29,66,35,64,133,224,
-75,1,66,131,101,83,0,124,77,21,136,129,2,84,94,40,115,207,2,67,
-94,59,104,197,0,76,167,125,10,89,94,50,124,101,94,48,124,110,94,39,
-184,189,66,205,1,65,124,66,253,1,84,124,90,207,0,96,163,173,64,49,
-0,72,99,9,0,79,122,149,64,215,69,201,65,77,0,95,98,193,100,53,
-5,124,70,94,50,124,53,66,157,97,83,85,25,197,9,64,147,0,77,98,
-61,0,68,123,217,64,211,154,169,133,153,154,61,197,3,129,61,250,143,1,
-157,223,131,139,65,103,221,25,76,43,67,21,193,213,103,63,166,131,64,145,
-65,73,0,67,104,75,2,66,94,49,98,131,147,121,129,35,0,65,96,143,
-195,47,0,86,105,165,2,57,124,100,188,27,136,7,71,9,66,17,135,13,
-0,76,121,99,77,145,64,119,79,243,65,49,65,125,66,131,4,50,124,47,
-124,117,97,117,98,3,81,147,0,124,64,141,65,255,64,65,4,50,124,69,
-124,102,96,73,158,107,64,5,64,73,73,95,70,139,65,171,0,50,69,11,
-168,149,64,13,64,87,65,143,154,123,74,207,0,82,105,221,76,79,64,225,
-66,15,138,169,194,69,128,57,158,163,65,37,3,45,94,94,124,68,103,2,
-65,124,111,190,177,64,245,4,67,124,51,94,61,97,227,65,207,64,49,0,
-86,142,45,4,124,115,94,61,124,75,85,2,65,124,117,129,89,212,241,0,
-124,79,33,197,153,75,5,68,55,2,71,94,45,101,25,137,195,0,35,114,
-43,3,67,94,35,124,75,157,86,5,0,65,107,39,4,35,94,61,124,121,
-167,41,68,143,160,7,1,124,86,178,113,0,88,86,35,96,191,76,59,76,
-47,64,7,138,139,0,81,160,13,64,21,234,179,1,190,135,224,13,0,152,
-89,88,187,152,111,234,203,1,74,221,224,63,1,64,37,128,43,128,45,203,
-9,224,29,7,80,163,64,93,137,191,192,33,224,157,3,224,7,23,0,91,
-176,183,10,88,94,32,94,58,94,88,94,33,94,58,117,251,224,15,55,177,
-15,1,124,49,67,55,86,237,1,124,54,101,119,1,61,124,66,143,67,231,
-1,35,94,87,119,129,147,67,41,66,87,67,67,72,99,2,35,94,72,106,
-1,0,73,113,43,0,83,117,187,68,167,2,33,94,65,100,49,133,51,0,
-80,162,19,221,195,64,5,172,157,4,124,61,94,49,124,65,15,2,35,124,
-111,108,249,202,227,73,215,153,75,195,209,75,27,84,29,131,201,2,35,94,
-80,254,83,0,132,15,66,191,2,59,94,67,96,143,68,67,0,49,224,25,
-0,85,65,192,53,68,247,228,35,1,2,67,124,95,229,141,0,137,55,237,
-209,3,1,65,124,136,239,108,67,64,147,67,127,3,124,33,94,32,93,33,
-96,163,64,99,228,115,4,1,94,70,96,151,0,58,114,5,75,215,0,59,
-74,221,99,25,78,5,148,227,1,65,124,77,217,128,111,135,175,128,117,195,
-165,195,119,192,145,134,213,64,5,129,7,224,3,1,131,217,224,61,7,224,
-3,9,224,31,1,128,83,224,241,3,224,101,1,128,117,0,80,238,189,0,
-64,13,129,1,0,80,85,145,171,243,0,66,68,69,121,65,68,57,0,99,
-182,165,0,78,175,35,128,7,96,5,1,124,36,165,75,0,76,96,243,4,
-32,94,61,124,55,108,251,102,51,192,65,121,197,144,183,0,61,100,159,87,
-253,0,65,118,239,2,65,124,122,98,115,4,60,94,69,124,87,160,45,70,
-113,66,33,175,49,1,124,118,160,135,86,95,65,35,0,75,160,39,65,105,
-224,13,0,1,124,55,118,115,64,225,147,149,90,101,64,15,68,95,64,181,
-224,53,1,0,61,107,77,1,66,124,90,165,64,215,66,251,64,33,207,161,
-64,65,66,183,64,81,64,181,192,247,90,167,136,49,128,23,2,65,94,82,
-97,3,0,91,165,37,0,72,161,193,4,66,124,77,124,93,96,9,66,121,
-2,50,124,32,97,19,193,223,0,65,101,91,161,201,2,124,44,92,96,35,
-166,13,0,58,80,27,229,215,0,2,68,124,107,96,7,0,83,114,161,0,
-68,135,33,1,124,97,96,41,0,38,104,99,129,197,64,97,96,111,5,124,
-43,124,56,124,80,108,229,74,233,2,95,94,45,96,93,69,199,4,35,94,
-67,124,124,109,171,0,47,68,3,1,124,123,96,9,64,131,224,15,2,31,
-34,32,58,50,52,53,32,64,10,65,32,95,54,32,95,49,54,51,32,64,
-95,54,32,89,32,66,32,66,32,83,32,85,64,18,5,52,32,64,64,64,
-64,64,16,1,90,32,224,7,1,12,83,39,32,83,32,64,66,32,67,39,
-32,83,39,64,8,14,83,32,64,95,49,52,52,32,95,54,57,32,64,35,
-49,160,52,0,67,64,23,224,38,0,26,66,32,64,64,67,32,67,32,95,
-54,52,32,95,49,55,51,32,64,64,95,49,55,52,32,95,50,49,64,120,
-7,51,52,49,32,35,49,50,56,96,59,128,53,64,110,10,95,49,50,51,
-32,64,67,32,95,57,56,160,41,224,53,19,3,85,32,35,48,224,64,0,
-31,66,32,80,32,95,51,51,57,32,102,114,111,109,85,84,70,56,32,34,
-92,34,47,118,97,114,47,102,111,108,100,101,114,31,115,47,122,50,47,56,
-52,112,116,102,51,98,120,55,104,53,52,48,112,107,110,99,121,48,121,50,
-120,112,99,48,48,48,10,48,103,110,47,84,47,109,104,115,105,110,64,13,
-17,48,48,57,57,57,53,46,104,115,92,34,44,50,48,50,58,56,34,128,
-105,65,12,97,15,96,114,128,13,64,176,224,230,28,128,228,2,64,67,39,
-65,36,6,95,49,57,49,32,95,57,64,50,160,24,96,245,96,16,3,67,
-32,95,53,192,11,192,63,3,95,50,49,53,64,227,4,50,51,55,32,64,
-160,55,224,28,0,129,119,64,70,96,151,2,95,50,51,64,22,64,8,1,
-52,49,225,80,0,160,78,128,140,225,60,2,64,71,64,11,2,95,50,52,
-64,33,3,58,50,52,52,130,39,2,50,52,50,66,53,0,51,96,13,7,
-98,115,117,110,112,97,99,107,64,17,0,50,96,17,64,110,4,95,50,51,
-57,32,64,57,1,48,32,64,56,0,49,96,24,2,66,32,89,66,34,65,
-203,0,58,96,25,64,44,65,41,0,67,129,44,4,55,53,32,95,55,64,
-160,96,118,97,185,130,124,130,7,128,57,96,189,64,92,0,67,225,42,3,
-192,190,0,64,128,49,0,58,96,33,96,139,64,115,64,61,0,80,128,6,
-160,68,64,33,0,56,128,205,5,49,50,53,32,95,50,64,21,3,95,50,
-49,50,64,10,64,114,192,11,0,53,96,11,1,50,55,161,96,64,11,66,
-131,160,11,1,51,48,224,11,2,0,54,224,11,0,64,9,1,50,49,64,
-80,1,50,50,97,57,64,22,1,10,65,163,0,99,41,129,236,66,48,128,
-255,64,2,64,151,162,72,226,78,0,66,4,225,192,1,192,37,64,16,128,
-52,64,77,96,5,99,122,129,28,0,49,64,7,2,85,32,65,193,44,0,
-50,64,137,0,51,130,25,98,68,1,50,51,99,210,64,136,2,95,55,57,
-130,88,160,19,7,64,64,83,32,73,32,64,75,64,183,162,127,224,125,0,
-1,83,39,65,69,194,84,99,251,129,131,66,54,0,75,192,172,98,232,96,
-128,64,18,224,128,7,162,251,192,139,96,71,130,135,96,16,224,54,15,0,
-64,128,206,97,103,0,53,97,223,0,54,97,81,64,45,2,75,52,32,128,
-174,0,58,96,27,224,21,2,160,20,130,182,2,85,32,90,96,1,0,75,
-128,231,0,58,96,89,160,44,64,13,130,188,224,37,9,130,187,225,148,0,
-97,1,1,95,49,66,36,3,95,50,50,57,96,58,130,202,0,85,64,134,
-192,57,0,58,96,27,130,129,161,181,6,95,50,50,54,32,64,65,64,49,
-67,157,224,27,10,96,136,0,50,130,43,96,77,224,196,1,64,30,8,10,
-65,32,117,114,101,109,32,58,98,150,64,13,3,113,117,111,116,64,14,163,
-152,2,49,50,54,100,10,100,100,164,118,3,54,32,95,51,67,152,226,148,
-7,64,83,129,0,0,73,64,65,128,253,0,83,99,141,65,145,226,93,0,
-163,155,2,56,54,32,131,150,98,175,130,196,224,22,4,165,167,0,56,229,
-109,79,3,53,52,58,49,165,108,132,202,0,49,64,208,0,49,67,111,98,
-167,0,79,64,166,0,79,97,67,160,36,224,34,3,224,26,3,224,23,2,
-198,220,2,95,50,49,66,128,2,95,50,50,100,175,65,38,100,155,1,95,
-49,67,30,1,95,56,68,10,0,49,198,213,0,58,96,37,65,111,1,56,
-52,98,202,1,95,57,96,53,64,32,128,53,0,56,101,138,128,20,129,233,
-2,75,32,58,96,112,3,10,65,32,80,64,10,129,205,196,15,131,50,162,
-226,96,184,96,14,161,250,0,49,226,212,0,98,16,96,36,0,58,96,34,
-64,131,1,53,57,64,47,3,50,32,95,56,97,238,128,10,65,224,128,10,
-0,49,64,134,3,64,95,49,57,96,194,64,34,0,73,97,222,96,220,71,
-172,1,49,54,100,178,230,157,7,134,4,230,180,9,224,22,13,128,45,96,
-185,97,15,129,38,64,31,101,246,192,24,64,19,130,104,96,243,0,53,133,
-196,0,55,97,141,64,66,2,35,50,53,69,111,0,58,96,44,98,208,1,
-55,55,64,4,0,56,98,206,65,137,2,49,56,48,96,5,64,101,0,56,
-96,22,0,56,69,189,96,61,2,95,49,56,104,30,96,73,128,38,0,57,
-131,14,96,12,135,26,2,95,49,57,224,110,0,1,95,49,136,79,134,228,
-0,48,69,203,192,11,0,51,224,56,8,196,242,98,246,71,214,230,169,1,
-224,27,5,0,49,65,145,96,28,1,95,56,69,91,0,64,66,38,192,41,
-2,95,50,48,102,93,64,18,224,81,51,65,179,224,81,6,66,115,1,50,
-48,224,220,1,1,50,48,70,180,192,11,0,56,66,254,4,95,50,48,57,
-32,160,67,0,75,160,8,0,75,66,7,64,8,0,58,96,43,5,10,65,
-32,90,32,85,66,185,0,48,130,206,6,112,111,112,99,111,117,110,68,102,
-64,68,196,181,0,66,96,109,2,53,32,64,70,64,135,131,0,58,64,113,
-97,182,64,24,0,58,64,139,226,183,3,133,87,224,1,9,165,105,224,0,
-2,0,58,96,88,64,72,2,51,54,48,228,74,2,18,97,114,105,116,104,
-109,101,116,105,99,32,111,118,101,114,102,108,111,119,68,17,0,58,97,1,
-131,78,165,78,0,83,228,191,5,192,5,2,95,50,48,103,27,3,95,50,
-48,50,227,96,0,230,231,0,71,149,130,142,135,37,1,49,57,66,140,230,
-211,2,131,160,226,241,3,128,66,0,58,66,47,128,234,224,228,15,224,1,
-3,224,240,9,64,0,0,58,96,147,96,68,102,34,64,169,192,211,65,108,
-1,49,57,98,255,64,147,0,58,66,171,161,90,0,51,224,108,42,0,58,
-96,75,224,92,4,64,244,132,141,2,95,49,57,101,24,96,252,0,58,67,
-33,160,105,225,193,17,224,103,14,0,58,96,73,224,195,5,71,53,128,195,
-67,135,224,89,0,224,92,14,224,84,7,0,58,96,58,231,106,1,224,1,
-21,225,103,12,0,58,96,131,197,56,69,51,101,45,133,39,133,38,131,240,
-229,38,7,227,156,1,101,4,139,25,68,232,0,58,96,47,103,60,137,12,
-98,68,64,232,226,40,1,0,58,64,88,160,184,232,34,1,96,45,5,10,
-65,32,42,32,58,96,126,129,42,1,95,49,64,149,130,89,226,122,12,101,
-131,0,58,68,220,160,49,236,121,3,228,75,10,138,34,98,221,64,154,70,
-204,224,29,3,1,95,49,71,196,234,103,1,1,95,49,100,74,227,214,0,
-64,106,226,4,0,136,146,224,2,2,193,85,64,51,160,223,224,30,3,225,
-133,3,0,58,96,104,224,178,62,229,147,0,160,178,65,111,224,178,4,226,
-40,0,0,51,224,141,3,226,23,6,0,58,96,56,224,183,7,226,66,14,
-0,58,96,117,226,178,0,100,242,64,154,64,18,4,120,111,114,32,58,102,
-150,2,10,65,32,128,11,129,208,4,97,110,100,32,58,102,187,111,97,0,
-54,137,50,3,95,49,54,54,66,57,64,212,167,33,224,1,31,107,255,224,
-0,10,224,57,25,192,1,224,65,14,224,56,25,128,1,224,62,13,224,55,
-25,64,1,224,59,12,224,54,25,224,56,13,224,53,44,224,50,41,224,47,
-38,224,44,35,224,41,32,224,38,29,224,35,26,224,32,23,224,29,20,224,
-26,17,224,23,14,224,20,11,224,17,8,224,14,5,224,11,2,192,8,109,
-113,224,0,9,0,58,74,28,229,83,1,224,1,23,227,202,4,224,68,3,
-0,54,96,68,0,73,67,165,238,61,4,139,103,101,125,99,186,0,53,171,
-43,1,95,49,128,10,105,143,160,11,73,63,160,11,0,55,102,24,160,11,
-69,170,192,11,107,147,74,235,173,152,138,218,132,69,64,6,5,10,65,32,
-117,62,61,64,134,132,82,1,117,62,64,11,132,81,1,117,60,96,24,132,
-82,3,117,60,32,58,96,114,64,11,2,99,109,112,64,13,132,71,100,95,
-96,110,101,210,192,157,64,11,0,58,96,187,3,10,65,32,47,64,73,64,
-18,160,244,0,54,128,244,0,75,64,10,206,70,1,54,50,64,13,209,223,
-145,221,64,20,160,29,0,48,64,13,128,152,7,98,115,108,101,110,103,116,
-104,64,17,232,147,0,101,30,142,99,74,186,64,21,0,82,142,27,64,16,
-170,68,145,238,1,49,53,64,156,1,35,49,78,244,2,58,49,53,170,63,
-96,182,0,52,97,107,0,53,75,233,1,49,53,103,162,0,53,110,214,0,
-53,104,67,76,40,129,77,96,65,129,77,96,10,0,58,96,6,225,77,0,
-64,40,193,77,64,58,225,77,0,64,77,193,77,64,95,3,10,65,32,105,
-129,77,64,115,96,201,139,25,2,58,49,53,128,218,65,35,64,16,143,106,
-0,51,64,13,225,119,3,85,70,2,95,49,52,101,216,64,188,193,108,64,
-17,3,10,65,32,61,96,11,226,98,1,64,37,128,143,115,23,111,114,209,
-202,80,221,0,90,64,7,110,222,1,95,49,83,44,64,6,114,77,0,49,
-179,121,113,243,97,30,82,236,0,58,96,29,96,22,71,52,192,73,3,50,
-51,32,35,109,142,160,10,178,5,195,116,224,32,2,143,218,116,135,177,239,
-0,89,243,122,0,115,62,224,65,4,224,64,5,64,200,64,0,96,58,163,
-88,179,244,139,145,128,163,128,244,211,248,1,95,49,83,130,71,210,0,58,
-96,29,200,97,64,14,232,112,0,99,134,0,58,97,8,167,40,164,18,0,
-58,97,36,194,112,128,36,129,92,75,223,0,54,137,134,114,66,81,1,130,
-70,146,75,1,58,49,178,17,11,94,109,100,53,83,116,114,105,110,103,32,
-58,96,27,180,188,2,66,32,95,98,99,81,250,0,64,97,74,64,15,213,
-141,116,41,0,49,141,116,108,32,0,58,96,102,128,234,160,56,0,48,73,
-177,1,90,32,224,31,0,129,10,4,110,101,119,67,65,128,112,2,76,101,
-110,64,115,129,10,224,213,4,178,54,2,65,32,58,99,48,240,37,0,2,
-115,101,113,142,16,96,8,101,20,0,58,99,54,144,82,81,250,192,75,224,
-1,1,229,137,78,0,58,85,51,193,123,229,92,2,0,58,115,22,3,10,
-65,32,79,64,144,129,80,4,95,49,48,54,32,78,100,78,61,110,109,96,
-8,3,95,49,49,48,66,60,101,21,0,49,112,169,192,11,67,201,192,11,
-0,57,224,11,1,81,116,1,95,49,81,154,0,58,96,18,65,192,6,112,
-111,107,101,87,111,114,73,98,177,179,4,94,112,101,101,107,192,18,162,105,
-65,183,75,72,145,227,0,49,81,124,0,58,64,90,160,193,241,85,2,96,
-34,224,50,4,101,170,192,50,226,132,1,1,95,49,81,127,67,97,68,246,
-1,95,49,81,163,64,33,129,132,2,116,111,73,79,48,96,21,96,14,1,
-80,116,74,18,177,178,243,217,5,96,98,227,39,0,246,12,0,129,116,67,
-197,64,93,66,136,183,4,69,134,1,64,95,76,196,108,163,0,58,65,59,
-193,138,229,119,2,177,65,237,122,1,79,206,65,197,128,64,85,114,66,170,
-142,226,0,58,65,140,160,68,234,217,0,175,255,1,95,49,80,71,76,108,
-0,35,101,191,176,4,148,121,64,27,193,18,226,78,8,226,117,73,176,81,
-203,246,64,32,2,95,49,49,88,144,64,34,1,95,49,79,65,163,176,224,
-22,1,163,182,81,221,99,179,163,186,119,222,194,182,176,111,64,78,79,202,
-0,95,70,65,0,58,96,40,66,82,3,102,114,101,101,64,235,173,230,101,
-166,224,96,6,0,95,78,205,0,95,79,86,140,148,96,34,192,114,97,187,
-97,131,165,136,192,23,0,58,96,177,246,8,4,64,171,133,119,96,254,0,
-39,87,16,224,49,0,0,73,161,9,225,0,3,193,225,225,72,1,224,119,
-2,64,115,178,79,96,130,249,241,11,165,129,176,111,205,48,96,156,130,20,
-92,11,0,83,118,247,123,248,129,79,64,226,1,32,95,79,224,65,113,130,
-80,224,89,7,96,88,176,106,145,26,132,39,0,58,176,84,68,201,0,58,
-176,35,96,184,71,255,130,164,250,230,0,226,169,7,176,53,242,25,6,8,
-117,110,100,101,102,105,110,101,100,114,15,240,36,0,233,249,4,0,58,239,
-248,3,99,181,72,195,99,14,0,95,72,235,0,83,238,137,11,65,113,238,
-87,2,144,17,85,225,0,48,224,37,3,224,33,0,128,249,240,37,1,0,
-95,79,246,0,58,176,31,2,66,32,95,116,183,112,52,240,15,0,129,153,
-93,59,1,56,50,176,45,0,80,96,7,97,114,225,113,0,112,170,64,120,
-97,11,143,6,96,212,181,41,85,6,99,164,96,92,193,184,244,70,0,252,
-144,0,247,176,1,194,68,0,67,103,243,150,180,128,191,65,5,0,48,253,
-194,0,97,2,1,56,56,128,155,97,210,176,121,4,105,110,118,32,58,176,
-26,4,115,104,114,32,58,176,3,72,232,175,233,0,97,128,23,129,143,4,
-115,104,108,32,58,175,111,2,43,32,58,175,76,2,45,32,58,175,67,2,
-73,32,58,175,64,230,86,7,175,75,130,155,100,157,239,80,0,0,53,158,
-110,0,95,75,27,0,95,75,45,0,95,75,62,0,95,75,80,0,95,113,
-132,74,35,149,59,74,34,96,9,0,58,175,118,131,166,98,189,131,179,96,
-37,0,53,131,103,69,91,172,96,224,29,1,224,49,1,224,39,5,128,237,
-227,59,2,172,74,74,129,172,64,2,62,32,58,171,229,74,125,171,227,2,
-60,32,58,171,225,138,122,171,225,106,79,108,107,75,216,0,58,171,235,74,
-76,171,232,65,98,171,207,2,80,32,58,171,205,195,255,164,58,194,34,224,
-20,11,224,17,8,224,14,5,224,11,2,192,8,229,132,0,172,47,250,236,
-5,172,57,4,110,101,103,32,58,172,55,2,42,32,58,172,49,2,45,32,
-58,172,45,2,43,32,58,172,37,224,148,68,0,58,172,100,199,88,64,17,
-225,225,0,73,145,68,90,66,26,75,255,96,12,165,226,1,64,58,204,113,
-3,53,53,32,58,172,54,2,73,32,58,172,51,64,41,66,76,76,41,0,
-58,172,59,64,29,128,224,64,9,168,134,7,109,97,108,108,111,99,32,58,
-172,56,224,158,2,0,58,172,58,2,85,32,58,172,57,224,198,14,0,58,
-172,74,64,19,0,95,76,37,1,64,95,108,73,172,72,103,221,107,253,172,
-77,6,114,97,105,115,101,32,58,172,79,7,65,46,114,101,97,100,32,58,
-172,80,13,73,79,46,103,101,116,65,114,103,82,101,102,32,58,172,46,4,
-95,51,50,32,95,108,47,75,108,229,59,1,5,115,116,100,101,114,114,101,
-56,172,65,2,73,79,46,128,20,1,32,58,171,196,96,59,75,148,224,59,
-9,2,111,117,116,128,59,205,35,67,160,0,58,171,207,128,73,4,111,117,
-116,32,58,223,110,3,51,54,32,58,171,205,2,73,32,58,171,195,128,95,
-154,78,224,95,6,1,105,110,96,94,171,219,3,75,52,32,58,171,189,128,
-91,3,105,110,32,58,171,186,129,89,0,95,75,19,102,69,135,247,231,167,
-0,0,95,75,109,194,70,231,254,3,97,132,0,95,107,236,64,104,205,69,
-225,195,1,171,190,203,222,2,50,56,32,101,26,162,72,75,176,1,64,58,
-171,202,93,75,171,192,0,46,162,20,171,197,76,147,0,58,171,175,13,73,
-79,46,112,101,114,102,111,114,109,73,79,32,58,171,185,0,75,107,3,231,
-232,1,0,58,171,99,0,95,64,192,66,134,96,123,104,157,88,2,225,4,
-0,3,62,62,32,58,203,107,64,66,69,8,110,137,0,51,232,241,0,90,
-229,156,18,72,26,188,28,160,9,0,58,221,250,156,139,72,217,163,37,75,
-33,0,95,74,209,90,26,224,35,2,96,32,118,153,192,32,0,95,101,85,
-221,21,0,55,86,206,224,47,12,96,150,116,254,65,163,0,58,171,108,113,
-122,96,9,71,177,168,123,129,19,153,11,253,0,4,138,156,128,253,234,221,
-1,0,49,171,58,192,12,96,199,171,10,129,27,96,61,142,76,235,48,2,
-143,80,194,228,97,243,109,235,129,219,71,192,129,81,73,13,96,36,64,199,
-64,193,69,156,69,155,128,232,2,75,32,58,128,203,143,216,200,210,0,58,
-164,81,9,79,46,114,101,116,117,114,110,32,58,128,201,97,181,2,61,32,
-58,128,197,2,80,32,58,226,192,3,228,30,0,229,0,32,0,58,226,178,
-1,228,89,11,231,83,0,0,50,143,39,64,200,1,95,57,67,143,224,0,
-255,224,0,255,224,0,255,224,0,137,1,32,125,
-};
-unsigned char *combexpr = data;
-int combexprlen = 43133;
+122,76,90,49,146,171,0,0,31,118,56,46,48,10,57,55,51,10,65,32,
+95,48,32,95,50,52,32,64,95,50,53,32,95,51,53,32,64,95,51,55,
+32,1,64,64,224,22,4,1,52,48,224,22,13,0,50,224,22,0,1,49,
+49,160,23,7,51,54,50,32,64,67,39,32,224,17,0,5,64,66,32,95,
+49,50,160,11,7,83,32,83,32,95,51,54,54,64,4,0,56,96,45,31,
+57,32,95,51,55,49,32,73,32,64,64,102,114,111,109,85,84,70,56,32,
+34,45,45,99,112,112,34,32,64,64,64,64,64,24,3,95,51,56,54,64,
+12,64,73,224,103,0,1,56,56,64,79,3,39,32,83,39,224,194,0,10,
+64,64,67,39,66,32,66,32,95,51,57,64,17,0,50,96,58,224,108,26,
+6,118,101,114,115,105,111,110,128,112,96,188,192,80,12,66,32,95,52,49,
+54,32,64,67,32,95,50,53,64,237,64,5,7,79,32,35,51,50,32,64,
+75,64,94,1,52,49,64,254,64,8,1,50,51,65,16,96,133,224,150,62,
+2,104,101,108,161,4,224,147,12,0,66,128,147,224,49,1,6,85,115,97,
+103,101,58,32,96,50,224,176,4,224,34,1,21,32,91,102,105,108,101,32,
+46,46,46,93,32,91,32,45,68,115,121,109,32,92,124,128,8,3,61,118,
+97,108,96,12,12,73,112,97,116,104,32,93,42,32,32,91,45,79,64,47,
+2,93,94,42,64,84,224,75,6,15,94,41,94,41,91,45,45,110,111,109,
+97,99,114,111,93,32,96,11,3,108,105,110,101,96,10,64,8,5,112,114,
+97,103,109,97,96,14,224,10,2,3,116,101,120,116,224,81,20,4,115,116,
+114,105,112,96,42,96,9,3,45,101,111,108,96,13,5,104,97,115,104,101,
+115,128,93,4,97,121,111,117,116,96,10,3,117,110,108,105,192,79,224,74,
+6,0,32,98,71,3,32,115,116,100,64,7,8,45,111,112,116,105,111,110,
+115,32,96,54,7,105,110,99,108,117,100,101,61,64,223,4,110,97,109,101,
+93,161,105,225,203,8,7,66,32,67,32,67,39,32,83,98,213,128,8,160,
+9,160,12,96,13,224,29,0,0,39,97,161,0,66,64,11,224,8,5,0,
+39,65,177,0,66,226,20,2,0,66,98,35,226,19,2,2,52,50,53,224,
+91,0,224,38,3,193,240,128,10,225,243,6,6,110,107,110,111,119,110,32,
+128,219,129,251,64,178,0,39,193,255,1,52,50,128,57,224,55,6,10,44,
+32,102,111,114,32,118,97,108,105,100,160,59,4,115,32,116,114,121,226,60,
+5,226,55,2,130,141,129,101,225,36,4,3,55,32,35,49,225,57,0,96,
+121,96,235,224,232,2,64,139,224,229,1,100,26,4,56,50,32,95,55,67,
+191,4,95,57,57,32,64,96,64,228,88,0,64,234,224,120,1,18,65,116,
+32,109,111,115,116,32,111,110,101,32,111,117,116,112,117,116,32,98,193,20,
+40,45,79,41,32,99,97,110,32,98,101,32,115,112,101,99,105,102,105,101,
+100,96,156,224,152,2,64,111,128,0,131,144,0,67,161,67,0,83,64,31,
+64,126,129,108,0,66,161,153,1,51,57,196,178,3,64,95,57,52,64,7,
+2,95,51,53,68,185,1,48,57,96,72,129,231,128,26,2,95,51,50,128,
+20,64,15,65,182,2,95,57,52,65,104,2,95,57,52,101,15,1,57,52,
+96,95,2,95,57,55,225,29,2,9,58,57,55,50,32,64,10,65,32,89,
+66,23,1,32,66,96,142,130,93,98,29,64,5,226,64,0,4,66,32,95,
+53,48,64,89,64,18,128,122,224,9,12,160,65,66,102,10,66,32,95,56,
+56,55,32,64,95,55,48,96,132,128,6,1,64,66,96,111,1,80,32,68,
+176,192,119,161,16,64,251,128,65,2,32,61,61,65,137,128,173,64,125,0,
+85,160,25,3,95,49,50,51,224,194,0,224,82,43,129,133,224,82,68,128,
+61,224,82,24,2,95,57,54,160,20,128,72,160,2,224,60,0,98,11,129,
+124,128,20,224,21,0,64,1,194,27,64,92,1,52,52,64,4,3,55,32,
+64,35,97,236,160,0,224,85,3,64,162,224,85,4,65,155,224,81,4,0,
+67,160,121,224,19,4,224,99,12,0,55,162,90,198,57,0,39,64,2,100,
+71,226,176,3,164,80,64,103,0,80,96,26,225,4,4,224,97,1,98,239,
+1,57,55,71,194,1,53,48,132,211,224,87,9,192,140,128,11,2,67,39,
+32,64,82,225,86,6,224,52,2,96,237,224,51,3,160,26,96,53,67,225,
+64,54,129,207,2,95,49,54,103,249,97,120,96,48,162,236,1,32,64,225,
+87,4,135,71,193,38,225,126,16,128,38,98,30,96,101,192,17,128,130,224,
+175,5,96,40,192,129,160,135,160,6,0,58,99,152,3,10,65,32,83,96,
+145,96,153,2,32,95,57,128,170,128,131,194,121,225,255,11,0,83,64,233,
+128,251,226,66,0,224,37,3,71,216,196,48,130,13,224,32,6,0,56,96,
+70,225,254,14,96,194,69,178,68,120,0,66,64,150,73,150,2,56,56,57,
+160,33,229,30,1,2,47,92,92,229,145,1,64,46,2,95,57,54,105,42,
+128,117,192,67,132,223,1,57,54,65,42,97,169,64,190,0,85,99,106,0,
+64,64,235,133,14,2,95,51,54,67,254,4,79,32,35,52,57,136,222,5,
+64,64,64,85,32,65,64,8,3,95,52,52,49,99,102,224,166,0,1,64,
+35,96,45,128,0,65,50,3,95,51,55,56,160,27,232,211,17,199,118,128,
+181,165,69,224,234,4,96,136,0,55,70,86,0,48,192,94,64,68,0,67,
+70,49,0,48,169,51,67,217,64,56,0,58,98,214,5,10,65,32,79,32,
+80,230,52,2,232,148,0,104,99,0,57,70,202,0,64,224,33,9,72,161,
+160,32,65,112,224,32,7,232,192,1,160,36,66,26,224,36,7,224,32,4,
+65,210,224,32,7,72,236,160,30,64,183,224,30,7,104,224,160,31,65,83,
+224,31,12,73,0,160,35,65,219,224,35,7,137,22,160,32,65,21,224,201,
+8,105,44,128,32,0,54,65,84,224,32,7,105,66,160,31,130,1,225,43,
+7,2,119,97,114,107,30,1,95,57,75,222,194,27,128,0,0,58,97,139,
+1,10,65,98,85,133,155,1,85,32,64,21,0,56,224,21,2,64,86,128,
+21,0,55,96,21,64,19,1,52,32,65,217,0,58,98,177,224,40,0,64,
+94,128,40,0,53,160,40,1,95,49,130,142,1,95,49,103,179,0,58,99,
+164,99,185,224,1,8,3,39,32,95,57,64,44,71,204,71,106,139,102,2,
+57,53,49,71,182,98,6,224,26,14,198,80,224,27,11,133,50,224,19,5,
+99,189,224,18,5,99,118,64,129,0,49,65,233,224,27,9,224,17,5,196,
+237,224,112,11,100,59,224,19,6,102,17,224,18,4,97,201,224,18,6,99,
+144,224,84,12,97,182,65,59,0,51,225,126,0,0,48,193,126,136,147,3,
+80,32,35,57,192,17,133,26,3,80,32,35,56,192,17,131,102,3,80,32,
+35,55,160,17,64,145,128,17,193,198,64,183,128,17,0,53,192,17,225,235,
+0,0,54,192,17,129,234,3,80,32,35,51,192,17,193,230,73,173,128,17,
+129,222,64,162,192,17,224,180,0,192,179,65,203,78,187,1,54,54,136,41,
+198,93,165,138,2,67,32,60,69,71,161,145,224,25,9,136,230,224,26,13,
+98,10,135,191,230,173,0,160,26,171,143,0,85,69,59,69,70,232,144,1,
+134,89,66,122,1,64,85,194,168,129,224,0,85,64,61,103,176,224,49,5,
+64,102,160,49,128,37,133,90,132,222,128,0,224,132,13,162,197,224,87,15,
+64,30,224,87,21,224,59,17,65,21,224,59,10,2,57,53,48,67,134,206,
+173,224,160,1,225,67,15,96,64,224,189,13,98,180,225,66,12,64,25,225,
+66,16,224,44,6,64,36,224,43,11,224,116,13,96,29,224,70,11,102,73,
+224,114,30,144,229,224,114,10,225,3,14,194,70,224,25,9,235,211,0,224,
+168,8,176,228,224,124,9,100,63,224,168,30,108,140,225,27,32,226,210,16,
+226,209,20,224,43,6,226,203,2,225,27,6,192,115,227,98,5,225,0,16,
+226,219,1,224,97,6,226,213,2,224,141,24,226,197,2,224,141,5,224,44,
+11,226,117,15,136,156,0,51,165,63,68,113,133,19,76,165,209,206,70,183,
+64,74,172,157,96,20,128,216,206,82,96,8,205,205,1,49,53,162,252,99,
+85,201,126,224,16,3,105,105,224,122,0,96,117,133,119,203,204,224,1,3,
+172,95,160,66,224,29,18,224,26,17,224,23,14,224,20,11,224,17,8,224,
+14,5,224,11,2,192,8,108,147,128,0,0,58,103,148,101,193,5,75,32,
+95,51,51,55,232,93,2,29,92,34,99,112,112,104,115,115,114,99,47,109,
+97,108,99,111,108,109,45,119,97,108,108,97,99,101,45,117,110,105,83,153,
+1,101,47,96,33,6,45,49,46,50,48,46,57,128,12,9,46,104,115,92,
+34,44,56,48,58,49,138,72,102,20,79,114,2,10,65,32,65,88,0,75,
+139,227,74,139,96,118,138,104,0,90,203,14,0,58,111,172,96,43,0,90,
+224,43,0,134,136,240,17,3,103,205,208,19,193,158,129,231,143,113,224,29,
+1,172,126,0,57,65,183,193,217,66,100,98,219,241,206,2,1,95,57,112,
+228,0,54,71,154,85,85,141,183,0,57,85,73,64,0,0,80,233,121,4,
+3,115,116,100,105,169,118,0,52,66,15,108,117,1,95,55,141,196,0,58,
+112,135,71,4,2,55,48,51,149,185,0,58,96,38,96,196,65,131,1,95,
+57,117,183,1,57,52,66,193,131,103,2,95,54,57,66,225,64,193,245,74,
+1,2,54,57,57,242,81,3,14,84,70,45,56,47,47,82,79,85,78,68,
+84,82,73,80,172,95,204,197,242,152,1,86,2,96,189,0,52,135,24,64,
+213,69,37,0,58,96,205,1,10,65,65,134,0,50,96,148,131,58,161,50,
+1,57,51,101,189,0,54,77,127,128,49,0,58,96,167,226,230,0,2,95,
+57,51,99,133,97,104,110,109,0,95,96,95,128,127,160,199,193,115,192,15,
+128,215,134,214,239,37,3,0,95,99,72,0,95,143,180,0,58,96,123,96,
+104,0,95,70,215,0,51,65,128,132,136,0,83,110,187,96,124,99,138,2,
+95,57,51,101,141,96,9,96,108,96,9,104,82,0,58,96,160,65,121,1,
+57,51,68,33,83,97,0,58,96,27,128,19,2,53,32,58,96,61,224,33,
+2,0,56,96,33,130,97,192,19,96,249,64,91,160,249,96,146,97,83,242,
+150,5,64,125,160,200,96,159,105,207,86,128,226,140,0,96,27,128,25,160,
+234,0,58,64,99,97,116,169,53,101,21,69,70,0,58,96,58,20,10,65,
+32,73,79,46,115,101,116,109,97,115,107,105,110,103,115,116,97,116,101,64,
+182,129,170,224,138,0,82,132,64,90,109,166,0,58,97,48,96,84,109,239,
+65,187,101,64,66,232,192,15,96,131,97,18,64,6,177,134,128,255,64,68,
+66,22,2,50,32,58,96,17,130,34,96,25,129,59,0,75,67,98,0,58,
+96,60,128,160,0,103,224,160,8,64,148,96,160,1,49,52,131,64,0,58,
+99,80,76,14,98,8,227,148,6,3,95,56,57,48,97,220,1,95,57,84,
+125,1,95,56,79,119,2,95,56,56,133,93,65,54,128,57,227,242,13,131,
+155,147,253,196,239,248,203,1,194,146,241,141,0,163,117,1,56,56,65,161,
+120,23,2,95,57,50,99,227,146,31,101,23,235,157,0,0,56,143,230,144,
+127,147,248,172,58,1,57,48,128,5,64,65,65,255,65,55,148,137,0,55,
+140,101,130,23,2,55,51,53,64,214,135,77,172,253,0,56,65,131,128,58,
+128,70,2,64,95,56,143,48,0,56,111,48,96,0,0,58,97,11,162,28,
+0,65,107,81,1,64,75,88,213,73,131,100,186,0,58,96,86,164,72,70,
+233,160,133,64,142,88,183,64,139,0,57,137,203,65,112,121,32,65,42,74,
+125,135,82,0,57,138,224,1,57,49,135,80,3,95,57,49,57,97,171,194,
+64,149,1,229,31,0,0,79,99,115,145,154,133,60,161,206,164,172,241,98,
+10,180,4,224,39,25,165,101,132,77,64,40,101,169,0,54,178,63,129,78,
+160,231,96,16,224,136,0,3,64,64,82,32,129,199,224,103,0,0,83,160,
+103,179,203,96,10,162,3,241,195,5,208,188,224,90,27,224,35,27,72,165,
+100,48,65,71,134,210,96,37,226,62,1,98,65,98,101,243,103,20,0,57,
+132,56,128,183,224,181,1,139,214,230,5,1,10,98,101,103,105,110,123,99,
+111,100,101,125,134,0,160,158,161,216,243,218,4,64,99,224,133,1,166,40,
+225,17,8,224,120,9,242,47,25,2,101,110,100,224,131,3,224,133,7,226,
+94,0,229,8,0,97,65,1,95,57,166,144,128,0,166,55,226,33,17,143,
+27,160,153,224,184,9,69,182,192,30,128,96,212,51,1,95,52,64,32,128,
+250,70,119,71,11,69,219,0,51,128,127,160,147,1,57,49,68,115,5,53,
+48,55,32,95,54,134,74,1,95,52,103,3,96,192,99,208,224,200,0,224,
+100,2,96,57,116,183,84,229,165,239,224,241,1,248,54,0,128,114,0,52,
+116,151,225,30,1,132,125,128,44,225,52,14,0,58,96,8,133,144,135,168,
+64,53,3,10,65,32,90,160,1,87,91,96,38,0,54,96,22,2,66,32,
+90,64,149,224,4,1,96,6,169,231,0,58,96,229,224,37,11,0,90,66,
+210,160,34,133,169,3,75,32,75,51,96,110,133,126,107,82,193,152,203,75,
+226,188,7,68,189,100,89,64,30,0,82,160,47,214,3,71,156,250,133,0,
+128,59,129,244,99,164,168,37,224,2,0,128,20,224,21,14,163,230,224,2,
+0,224,43,0,224,15,2,134,8,162,72,64,3,224,19,0,193,19,224,16,
+2,247,245,0,130,13,224,154,11,236,44,0,192,83,228,89,2,200,153,0,
+75,133,166,128,24,1,95,51,113,252,163,72,96,5,1,95,57,79,189,227,
+57,1,6,112,114,111,103,114,97,109,99,55,224,21,1,5,99,111,109,109,
+101,110,115,234,128,75,165,21,73,99,229,12,3,165,38,163,167,101,214,192,
+49,224,228,3,160,225,247,119,3,105,128,64,51,0,56,72,170,72,115,193,
+151,224,47,1,160,251,161,14,161,11,224,255,4,233,147,3,160,249,96,253,
+224,176,41,224,177,53,192,60,225,196,46,162,89,128,157,96,30,67,44,227,
+61,0,225,198,26,225,176,3,225,220,13,183,30,225,203,103,68,48,103,169,
+128,213,198,178,161,29,227,152,1,224,68,19,0,58,96,140,138,79,129,51,
+96,60,160,5,230,151,2,238,45,3,1,92,34,160,246,230,115,0,128,46,
+97,114,128,196,254,234,6,4,76,105,110,101,32,160,52,193,35,223,29,0,
+49,73,67,0,51,252,162,2,224,59,6,0,58,160,56,97,23,96,50,224,
+34,8,0,32,88,40,5,32,98,101,102,111,114,160,102,255,62,10,64,35,
+0,46,255,61,2,192,170,97,123,224,10,8,224,99,8,1,73,110,158,245,
+192,63,225,234,2,96,105,224,249,14,2,32,97,116,128,157,224,253,136,96,
+0,225,173,161,0,58,99,150,98,169,64,1,0,80,72,166,66,252,195,0,
+167,163,104,40,224,15,2,96,168,132,50,224,193,10,231,216,4,224,14,0,
+64,67,0,58,107,91,206,22,5,54,32,95,55,32,95,64,17,1,95,54,
+227,106,0,80,139,64,25,0,54,78,118,2,95,56,57,230,253,5,74,221,
+103,61,185,19,80,49,2,95,57,48,109,202,0,48,109,154,172,14,108,174,
+235,199,3,236,72,31,96,173,3,80,32,95,56,111,198,233,190,4,218,28,
+0,58,109,57,241,144,1,177,105,96,24,241,169,0,64,22,224,24,3,136,
+129,96,24,64,2,97,28,0,58,96,179,128,22,0,51,168,155,160,49,64,
+27,200,119,64,1,0,89,193,129,64,1,239,211,0,237,178,0,140,105,159,
+6,250,195,0,133,36,197,183,232,32,7,160,21,96,18,192,88,140,182,224,
+35,7,224,41,3,224,43,1,96,136,235,100,3,226,103,1,7,95,95,70,
+73,76,69,95,95,227,23,2,224,79,54,2,76,73,78,224,79,20,166,13,
+224,79,32,2,68,65,84,224,79,68,2,84,73,77,224,79,5,96,45,192,
+77,113,186,192,65,96,10,236,209,2,93,255,93,236,160,34,66,184,172,81,
+224,151,1,224,2,7,192,30,225,79,3,224,106,2,224,181,7,224,49,2,
+224,151,15,224,85,0,224,14,3,206,199,196,17,224,30,0,229,210,0,224,
+173,6,224,118,2,234,45,6,224,18,2,128,56,64,200,240,96,0,64,3,
+224,24,3,229,253,0,231,253,1,0,95,67,184,150,199,192,5,153,207,225,
+34,1,0,79,128,149,64,48,72,142,192,189,3,95,55,53,55,64,168,2,
+50,48,49,172,249,238,197,0,104,96,253,243,2,224,173,3,224,175,1,224,
+22,65,225,172,13,160,25,97,15,97,80,200,227,225,95,7,224,89,5,119,
+245,160,0,226,190,3,128,85,192,35,96,85,224,59,4,226,219,12,226,246,
+0,129,65,161,45,133,17,0,57,177,32,64,7,2,95,55,55,248,73,1,
+224,56,1,184,13,104,180,192,115,128,88,242,116,3,96,15,2,55,57,53,
+192,16,230,3,7,229,244,8,224,101,0,226,46,6,226,52,3,224,233,2,
+226,54,1,234,53,5,226,58,16,227,94,4,98,62,224,56,1,109,254,129,
+43,1,95,55,115,87,226,41,7,226,252,7,120,223,248,3,53,22,76,97,
+110,103,117,97,103,101,47,80,114,101,112,114,111,99,101,115,115,111,114,47,
+67,64,34,8,47,77,97,99,114,111,80,97,115,184,35,5,49,53,50,58,
+50,50,196,114,225,108,6,1,95,54,68,166,128,9,230,38,2,3,95,56,
+57,52,64,180,0,53,234,122,5,7,37,72,58,37,77,58,37,83,202,130,
+1,95,56,97,242,226,131,18,224,104,47,6,100,32,37,98,32,37,89,224,
+104,31,65,210,96,18,64,113,232,97,1,2,95,57,48,178,133,224,38,14,
+1,49,52,112,172,181,164,0,48,226,78,0,224,101,8,227,146,2,97,239,
+96,219,64,30,244,52,3,232,125,0,160,2,96,19,226,57,3,231,90,7,
+160,2,224,39,12,226,180,0,224,120,9,224,124,15,224,181,8,224,141,3,
+131,221,234,80,0,224,194,17,224,97,36,173,6,66,245,104,144,137,235,160,
+231,128,10,224,75,0,64,142,2,95,50,53,151,84,205,13,2,95,49,55,
+120,136,73,67,1,51,57,208,196,2,95,57,48,64,87,244,68,2,103,83,
+1,57,48,173,81,160,220,1,95,56,89,89,129,26,1,95,55,73,136,144,
+34,64,0,0,58,105,243,105,23,114,81,196,93,1,95,52,120,215,96,149,
+246,201,1,243,57,0,105,25,96,61,0,51,234,239,4,0,75,71,125,0,
+54,227,178,2,75,34,6,98,114,101,97,107,115,44,76,101,227,193,68,6,
+72,97,115,104,68,101,102,75,132,99,194,3,50,53,58,54,131,8,224,134,
+126,107,125,120,172,98,1,64,7,0,58,97,178,202,163,64,14,140,48,106,
+251,65,204,0,58,99,140,88,186,228,19,0,2,56,57,55,234,158,5,98,
+41,0,56,148,127,0,50,73,63,123,245,2,35,49,48,163,199,0,58,100,
+7,89,26,1,32,58,96,40,64,78,2,56,57,54,64,13,139,56,3,94,
+71,69,84,73,100,3,77,73,76,76,96,36,0,54,128,36,80,105,225,53,
+1,16,100,101,102,97,117,108,116,84,105,109,101,76,111,99,97,108,101,64,
+214,0,58,100,134,148,14,230,35,0,228,78,3,67,12,83,228,99,13,0,
+58,68,185,162,33,98,238,131,108,172,69,195,70,221,120,227,224,4,224,30,
+1,128,16,93,47,0,50,224,40,1,227,130,1,120,83,234,72,1,2,79,
+32,35,89,240,96,126,224,45,2,224,120,6,224,100,1,224,9,8,0,39,
+236,30,5,172,45,64,16,228,116,0,232,23,6,164,137,240,150,3,244,147,
+13,224,182,3,242,46,2,228,214,10,232,83,12,161,8,0,64,104,171,140,
+244,160,61,172,145,224,8,2,234,163,4,224,69,2,225,42,7,0,49,236,
+226,2,224,157,5,132,164,247,251,6,64,50,237,21,3,224,188,5,189,85,
+167,241,64,244,248,164,0,229,51,3,159,93,225,253,1,160,10,1,95,55,
+122,203,96,0,160,96,224,186,3,226,37,2,225,50,9,160,2,224,29,1,
+165,193,230,103,6,224,220,0,97,164,224,17,3,138,89,224,31,1,128,13,
+64,71,233,198,2,146,172,2,95,56,52,155,95,64,0,225,115,3,224,2,
+0,225,124,31,230,52,2,192,45,224,73,13,224,67,1,225,141,8,225,192,
+4,192,175,100,26,138,248,161,42,244,120,1,243,108,1,2,49,57,49,243,
+109,5,224,54,3,224,53,16,243,162,7,224,52,3,0,75,225,163,3,155,
+226,130,0,160,6,134,121,224,37,2,64,16,64,97,160,66,226,4,2,90,
+59,80,102,0,73,166,175,226,214,1,227,11,15,226,177,3,248,237,2,128,
+113,64,5,0,58,108,12,230,237,42,159,44,103,158,69,38,93,82,102,236,
+128,212,0,67,74,236,196,238,133,207,132,43,149,174,96,2,235,184,3,238,
+174,3,133,20,161,245,94,114,0,50,254,120,0,2,95,56,56,137,252,94,
+140,194,129,139,146,128,233,2,83,32,85,66,7,241,83,8,98,204,160,4,
+229,162,1,64,180,178,96,251,71,15,8,35,105,110,99,108,117,100,101,32,
+202,81,210,244,224,48,15,1,92,34,242,254,2,243,68,8,0,35,115,68,
+0,49,192,77,224,138,2,81,168,224,69,14,64,239,131,93,255,66,3,0,
+83,64,125,0,57,82,133,76,112,0,51,76,118,64,111,0,51,64,204,2,
+56,56,57,252,31,22,2,92,92,47,160,95,161,83,65,168,243,58,6,130,
+117,161,172,226,13,0,0,52,99,233,98,84,2,95,51,54,155,132,128,42,
+0,58,64,118,135,52,5,56,48,32,75,32,85,228,69,0,227,169,1,129,
+21,224,11,0,2,95,56,56,196,223,0,58,96,200,242,143,0,224,46,1,
+224,61,17,192,8,187,72,96,75,243,3,0,128,144,0,54,224,17,1,104,
+108,98,57,200,108,136,94,96,255,128,18,0,50,104,130,64,18,227,20,2,
+165,68,128,9,132,130,135,48,229,112,2,225,40,1,196,160,194,238,160,164,
+2,95,56,55,129,77,244,54,0,99,194,2,95,52,51,80,51,134,16,225,
+105,2,98,254,67,204,3,95,56,56,49,168,234,67,119,0,55,65,163,190,
+209,78,53,189,12,0,56,81,223,0,58,99,41,244,53,1,161,4,96,206,
+181,131,0,39,66,231,157,33,0,54,171,4,98,131,95,210,2,56,55,50,
+72,80,67,71,162,147,64,5,0,79,149,103,229,78,0,3,95,56,55,57,
+96,106,169,146,0,56,94,137,0,55,64,83,128,197,0,58,96,31,248,153,
+3,231,241,2,64,110,129,31,134,133,131,241,2,95,56,51,66,187,97,35,
+253,203,3,128,13,229,145,2,128,35,0,48,77,121,137,222,135,238,1,95,
+56,79,212,0,58,96,46,226,62,2,136,162,225,162,1,225,171,4,230,63,
+4,232,189,1,225,118,0,64,184,228,130,0,102,61,201,170,1,95,51,65,
+39,1,95,52,99,111,64,15,0,48,234,130,1,5,52,49,53,32,95,52,
+64,149,227,248,8,31,85,110,109,97,116,99,104,101,100,32,35,105,102,58,
+32,112,111,115,105,116,105,111,110,115,32,111,102,32,111,112,101,110,12,32,
+99,111,110,116,101,120,116,32,97,114,101,58,163,251,64,81,70,19,131,211,
+106,79,1,52,51,201,53,228,10,0,232,78,1,133,242,98,193,224,225,6,
+96,227,0,66,65,222,224,54,10,224,42,7,242,105,25,231,141,4,238,154,
+0,224,40,1,161,55,200,79,224,25,3,242,46,0,224,69,9,224,72,0,
+224,184,7,96,75,224,146,13,163,160,167,187,66,104,100,245,184,80,192,0,
+226,4,10,160,53,224,31,20,226,42,0,130,181,224,171,2,163,231,224,36,
+6,224,71,16,160,43,224,146,2,224,41,15,224,50,1,224,191,26,224,45,
+2,224,93,5,192,175,224,31,4,224,2,12,224,52,4,224,191,23,224,56,
+17,99,30,224,42,2,224,5,6,225,61,7,224,60,6,225,211,8,224,1,
+5,247,19,14,0,100,110,96,247,17,2,224,0,0,224,177,6,224,140,3,
+224,14,9,224,140,61,4,117,110,100,101,102,224,139,26,225,79,6,225,45,
+7,224,139,60,1,105,102,224,140,132,224,139,14,227,75,3,224,139,12,192,
+11,227,165,0,128,0,224,131,19,224,178,7,224,43,19,224,175,16,224,172,
+10,225,55,6,226,65,6,224,198,4,224,129,57,2,101,108,115,226,213,11,
+224,131,102,225,7,12,225,179,6,224,131,86,1,110,100,225,140,121,5,112,
+114,97,103,109,97,224,133,10,199,81,0,66,120,0,192,13,96,98,250,247,
+4,141,143,224,22,3,192,134,103,28,224,11,10,239,150,9,128,125,192,16,
+250,249,8,128,233,230,255,6,232,4,4,65,8,238,9,2,84,244,184,160,
+106,127,224,212,0,160,0,231,152,3,249,219,5,225,108,6,227,156,4,224,
+159,1,224,1,1,225,135,11,224,39,11,64,1,227,144,15,141,127,225,130,
+8,230,86,6,228,48,12,224,100,9,224,144,10,224,36,9,64,1,224,141,
+14,6,119,97,114,110,105,110,103,224,141,7,226,117,4,226,132,6,224,113,
+54,4,101,114,114,111,114,224,111,10,224,2,9,224,247,0,224,87,6,224,
+149,0,224,68,2,224,128,11,128,34,224,132,12,78,181,224,131,6,224,61,
+7,207,193,78,22,112,105,1,51,49,234,95,2,239,225,0,227,43,6,129,
+173,96,65,227,41,0,224,8,4,64,189,204,46,138,82,2,95,49,53,83,
+68,1,52,51,74,196,0,52,137,232,128,72,112,227,106,218,109,106,64,67,
+1,95,52,76,27,98,252,66,245,1,52,52,188,91,224,27,2,142,60,224,
+211,6,225,181,6,225,202,2,227,218,1,224,38,8,224,19,10,224,16,7,
+224,13,0,108,223,142,250,128,28,128,20,107,243,1,53,49,113,97,0,55,
+92,174,225,67,2,227,171,3,226,0,34,235,132,9,64,1,235,79,14,0,
+83,64,71,225,97,0,225,197,0,80,87,236,246,2,192,0,225,211,12,253,
+62,1,128,251,237,32,0,193,166,64,76,0,57,64,20,76,174,1,95,54,
+193,193,237,63,4,128,15,237,66,5,0,87,131,123,20,58,32,117,110,107,
+110,111,119,110,32,100,105,114,101,99,116,105,118,101,32,35,130,156,98,2,
+146,14,224,61,8,4,94,42,105,110,32,96,38,237,73,7,224,203,7,165,
+209,97,234,128,150,226,39,4,226,11,9,129,201,1,95,54,115,49,225,165,
+6,226,243,255,128,2,226,243,4,128,31,160,45,226,245,11,116,199,2,95,
+51,54,230,161,1,225,92,3,96,206,89,157,96,97,225,247,44,230,208,2,
+160,226,130,159,65,117,128,5,194,158,128,166,231,70,26,96,31,226,62,3,
+163,8,227,5,1,96,13,226,233,4,226,180,46,224,146,31,64,0,231,178,
+7,161,204,232,131,16,245,158,6,226,13,1,226,186,0,129,220,224,131,1,
+96,50,0,55,125,119,64,37,1,95,55,83,122,2,95,52,51,182,249,225,
+72,0,224,98,0,0,85,161,87,192,86,228,58,3,119,87,224,193,1,128,
+145,64,5,147,6,245,86,16,225,42,2,255,161,3,224,67,1,245,110,0,
+147,57,224,80,2,115,89,163,195,224,0,0,224,222,1,160,9,161,98,133,
+5,224,160,3,130,205,194,80,128,16,229,46,0,224,70,15,129,169,99,149,
+66,252,226,233,1,242,87,44,107,48,93,203,226,48,10,241,246,11,224,149,
+21,3,95,55,57,49,127,85,192,237,224,49,35,128,16,160,201,230,26,7,
+226,69,4,226,101,3,194,9,1,95,56,66,43,226,59,1,193,93,193,195,
+83,167,224,119,2,160,34,101,40,130,135,224,41,15,64,21,66,118,84,70,
+225,232,1,224,59,37,96,180,103,12,224,70,6,192,55,99,23,161,33,128,
+13,194,27,116,80,128,54,90,230,97,149,226,72,8,192,55,128,2,160,92,
+227,35,2,224,28,8,224,15,5,224,64,3,64,26,224,33,5,69,129,117,
+244,160,161,102,234,149,249,129,102,213,251,128,230,246,0,8,122,139,0,53,
+64,19,65,20,64,19,166,119,96,0,224,206,8,76,187,131,3,1,95,51,
+119,231,249,154,11,134,229,70,145,96,115,226,68,7,251,5,0,195,38,192,
+17,224,94,5,99,58,247,72,0,224,119,27,224,61,17,193,43,162,19,128,
+223,202,223,96,20,229,5,2,162,52,192,15,162,58,224,14,1,137,104,192,
+53,96,32,134,177,192,101,97,85,135,223,1,56,55,96,216,96,235,1,56,
+55,131,252,102,28,69,58,130,141,224,200,10,192,49,231,246,5,1,56,55,
+245,2,1,192,139,165,180,224,171,2,224,170,0,226,63,1,160,9,96,8,
+167,175,119,154,226,232,3,252,240,0,3,95,49,55,52,160,9,2,51,51,
+57,97,184,160,32,86,183,2,55,53,55,253,156,0,110,151,1,64,35,102,
+32,96,0,225,127,1,222,254,195,241,221,9,1,95,52,96,51,237,94,8,
+161,157,74,70,226,124,1,226,207,1,231,126,12,232,247,6,225,0,5,192,
+83,230,220,14,164,234,232,188,0,226,224,1,230,47,1,225,98,2,225,234,
+1,64,124,203,126,235,178,4,139,169,224,49,4,225,129,0,224,77,5,160,
+31,247,2,4,224,30,6,224,114,1,247,3,41,224,156,5,229,166,7,224,
+2,1,247,202,10,226,76,0,224,90,10,138,193,224,90,0,239,165,9,224,
+32,3,224,206,8,204,132,0,56,224,209,1,110,143,244,227,13,224,43,26,
+96,39,224,30,17,244,161,9,227,236,2,237,93,7,224,166,2,224,195,1,
+224,189,5,224,105,15,243,85,6,225,21,6,224,78,42,244,40,4,224,173,
+5,224,77,1,224,74,1,0,67,224,74,17,243,107,5,128,46,99,44,101,
+143,128,19,226,50,1,96,151,96,13,232,232,6,224,57,3,124,0,128,34,
+66,61,192,122,92,8,156,9,230,213,2,128,101,64,34,251,236,0,128,34,
+201,19,233,35,115,192,207,113,30,225,93,0,96,103,101,182,224,217,11,224,
+251,24,161,87,196,73,230,246,0,160,0,225,26,1,239,79,4,233,64,36,
+97,51,124,62,237,65,2,194,9,224,10,2,232,37,4,194,55,226,243,1,
+232,202,0,224,240,19,230,195,1,137,26,224,223,7,224,122,1,161,77,235,
+248,4,225,254,0,198,86,192,85,231,234,12,231,209,16,228,138,5,99,175,
+239,213,4,226,176,2,97,151,231,99,37,224,192,1,231,70,18,230,57,9,
+231,68,85,231,34,0,231,35,10,231,32,5,231,31,5,161,16,135,22,224,
+245,29,224,228,19,231,30,5,231,23,3,96,13,2,51,51,55,227,142,2,
+31,92,34,99,112,112,104,115,115,114,99,47,109,97,108,99,111,108,109,45,
+119,97,108,108,97,99,101,45,117,110,105,118,101,3,114,115,101,47,96,33,
+30,45,49,46,50,48,46,57,47,76,97,110,103,117,97,103,101,47,80,114,
+101,112,114,111,99,101,115,115,111,114,47,67,64,34,64,5,0,73,69,192,
+9,46,104,115,92,34,44,54,56,58,53,132,198,0,58,96,141,1,10,65,
+139,181,64,170,87,53,132,191,196,202,65,61,66,194,226,120,3,194,122,0,
+58,97,171,4,10,65,32,80,32,132,14,99,210,112,18,231,98,2,238,238,
+1,98,168,0,95,169,116,160,15,1,35,57,164,142,96,12,96,43,192,33,
+64,95,0,53,160,159,239,107,4,1,95,52,97,57,64,176,228,143,0,1,
+64,64,171,148,0,58,98,176,5,10,65,32,85,32,90,224,1,2,0,75,
+196,173,64,32,0,51,160,85,98,225,65,215,4,55,55,49,32,64,65,211,
+160,253,194,28,128,184,99,6,1,54,55,64,108,67,92,139,193,1,95,56,
+70,31,1,95,56,99,224,3,67,39,32,79,65,51,0,80,65,225,65,27,
+240,165,10,0,35,157,140,0,32,199,104,96,174,0,79,128,243,162,74,96,
+6,97,133,132,98,128,157,0,75,172,90,98,130,96,164,226,46,10,5,92,
+34,44,48,58,48,225,215,0,0,50,96,225,3,95,56,55,48,224,37,2,
+3,112,114,101,68,96,131,0,100,64,39,0,58,96,169,1,10,65,102,242,
+114,93,65,232,3,95,55,48,54,65,180,196,95,138,103,0,58,64,72,129,
+84,1,75,50,65,75,129,78,0,58,96,253,128,22,0,51,96,22,98,30,
+0,58,97,26,161,97,64,1,194,31,64,0,227,42,1,168,44,227,145,6,
+129,128,224,25,15,233,18,2,224,29,13,233,51,3,224,33,16,224,36,3,
+224,37,20,224,40,4,224,41,23,224,44,5,224,45,26,224,48,6,224,49,
+29,224,52,7,231,6,3,224,38,4,232,233,6,237,147,0,224,0,1,193,
+138,224,55,5,224,103,14,224,40,19,224,43,6,224,83,30,224,75,16,224,
+41,50,192,232,199,152,165,129,244,177,6,224,5,9,235,187,0,225,21,3,
+192,1,0,89,224,96,1,224,28,9,224,32,6,224,172,14,230,121,1,224,
+42,2,224,74,11,172,71,192,155,233,31,1,192,5,224,105,2,192,67,230,
+182,5,192,250,64,25,245,180,1,160,13,224,2,4,224,242,16,165,197,5,
+67,32,60,32,64,35,237,33,3,224,67,9,128,218,192,34,224,70,5,160,
+203,128,70,230,235,2,224,37,5,148,227,224,22,4,75,207,192,19,224,103,
+3,238,18,6,224,13,5,97,94,230,121,9,64,0,65,32,0,85,81,214,
+70,32,134,105,81,175,224,27,0,129,66,64,74,65,98,98,10,69,201,0,
+52,104,119,234,231,0,225,39,9,224,186,0,224,25,4,0,82,224,187,0,
+227,133,7,128,24,224,41,1,225,236,1,224,184,5,150,244,224,44,7,225,
+176,0,224,64,4,96,185,238,212,5,200,238,224,221,12,96,5,150,59,230,
+161,5,1,32,32,236,220,0,224,252,11,224,134,1,128,13,234,242,1,97,
+89,235,92,0,234,142,0,224,0,4,224,178,1,128,1,238,240,9,226,70,
+17,128,28,162,70,235,165,1,224,37,4,225,8,1,3,67,32,61,61,224,
+39,17,193,177,225,155,8,229,27,0,224,81,1,252,0,0,224,100,4,64,
+44,96,42,160,173,160,26,96,17,90,107,172,202,225,4,1,192,106,240,56,
+8,192,36,64,61,75,239,2,95,55,48,161,184,226,124,12,224,78,0,224,
+1,17,226,143,1,224,43,21,194,161,224,37,9,225,151,10,225,49,0,224,
+1,1,226,183,15,235,115,1,224,47,6,253,74,13,226,189,13,241,146,3,
+196,217,227,159,9,233,168,2,162,129,65,75,161,48,225,55,8,192,105,238,
+42,13,226,134,6,253,246,14,227,172,16,227,109,1,224,50,8,229,99,4,
+226,240,9,197,205,224,51,3,225,111,35,228,39,2,236,187,11,195,79,228,
+226,19,1,52,32,240,226,2,228,2,2,226,21,9,228,102,19,224,125,8,
+227,78,0,224,123,19,0,50,224,123,15,160,57,163,112,232,203,10,224,41,
+1,128,91,224,248,6,0,66,192,40,224,38,0,231,127,0,224,73,16,224,
+70,27,160,108,224,65,11,224,62,4,224,53,2,161,192,64,12,193,10,226,
+175,2,228,42,10,225,46,7,128,5,224,77,11,160,209,64,21,0,85,142,
+92,0,52,90,18,1,56,52,103,106,0,67,76,145,246,252,2,224,89,60,
+114,192,224,89,5,212,6,224,89,15,225,24,2,194,68,96,4,224,67,2,
+228,238,16,226,2,3,130,204,225,127,0,64,14,161,78,65,106,129,110,192,
+44,200,254,69,15,0,82,236,123,0,77,71,226,216,2,236,128,8,192,53,
+160,252,129,170,241,248,4,224,38,0,143,207,168,74,164,245,160,94,239,200,
+83,7,84,111,107,101,110,105,115,101,143,200,5,50,49,53,58,49,51,227,
+177,13,192,1,234,153,3,224,31,11,224,35,7,225,115,6,224,2,2,234,
+193,12,224,83,14,228,175,1,225,71,0,234,196,20,161,118,227,128,6,64,
+43,234,200,67,232,150,3,228,9,10,224,74,35,235,19,255,225,39,10,235,
+19,255,235,19,17,226,46,48,229,28,2,224,37,5,226,46,2,224,86,6,
+234,212,8,96,78,225,116,8,231,224,13,224,181,3,224,43,2,182,156,225,
+115,26,253,93,7,96,228,192,8,64,48,151,88,93,201,82,123,246,220,11,
+225,143,5,1,45,123,232,36,4,233,81,53,194,95,82,195,0,35,234,185,
+1,224,36,2,224,58,10,233,10,14,254,71,11,225,40,33,1,49,50,224,
+63,1,226,157,34,1,125,45,226,157,20,225,246,2,198,182,226,124,9,128,
+21,224,160,4,227,126,13,255,41,13,227,126,31,224,225,3,192,59,226,11,
+23,250,231,7,224,254,18,224,84,0,195,72,224,88,3,160,147,117,65,121,
+248,118,208,233,122,6,224,67,1,192,1,229,131,62,135,55,229,131,13,224,
+47,2,228,58,5,90,37,224,161,7,226,24,9,229,148,17,224,0,1,224,
+188,1,160,140,96,62,239,126,21,224,52,6,230,251,6,239,89,2,163,128,
+231,164,2,224,76,1,228,210,29,236,192,2,224,37,5,225,125,10,226,197,
+2,231,116,10,128,24,224,102,8,226,200,8,120,111,224,90,9,194,200,225,
+19,7,224,198,1,224,45,1,225,16,2,224,89,2,224,90,12,201,53,129,
+34,154,3,224,50,2,224,44,3,227,16,10,64,99,2,95,56,53,152,80,
+226,13,0,249,55,2,224,63,22,98,120,192,63,224,54,2,224,65,8,225,
+80,10,160,246,224,241,5,64,144,224,194,11,160,129,227,125,28,96,142,226,
+219,24,192,14,160,26,224,47,5,228,237,21,64,1,241,231,213,241,233,9,
+224,46,18,241,236,5,224,40,6,228,8,10,225,57,0,224,1,1,227,75,
+15,241,239,144,224,229,9,224,226,10,224,152,4,230,244,75,224,62,2,226,
+224,9,229,188,0,69,235,232,225,2,230,212,3,224,101,6,64,1,224,202,
+47,233,203,13,224,203,71,2,52,57,32,105,73,233,177,16,161,200,232,221,
+7,224,5,6,224,229,14,225,11,7,225,182,16,243,145,255,224,122,4,196,
+248,224,123,19,243,145,21,240,27,7,225,59,6,232,63,1,225,117,7,224,
+179,0,102,208,227,251,3,241,239,18,224,95,60,105,233,224,95,30,226,25,
+1,128,95,225,191,10,244,88,9,169,2,224,80,23,224,77,30,224,73,25,
+224,70,27,160,108,224,65,11,224,62,4,224,53,2,129,65,234,137,10,244,
+166,191,224,89,81,245,0,77,226,0,13,128,164,64,1,0,83,226,19,0,
+224,41,6,160,188,224,247,1,224,1,3,161,241,227,34,15,224,74,6,233,
+41,6,98,20,192,88,224,85,6,236,226,7,235,101,12,128,82,239,20,11,
+192,5,232,26,7,224,155,5,225,102,42,3,66,32,79,32,128,70,97,112,
+160,12,225,187,0,233,129,13,226,41,9,231,172,1,0,49,160,78,224,73,
+6,224,50,18,64,94,229,84,1,1,39,39,197,84,224,50,22,224,170,7,
+224,148,23,64,190,64,51,0,52,224,222,3,192,58,194,21,193,191,128,76,
+165,83,128,87,98,24,132,14,192,44,205,215,247,70,213,4,57,52,58,49,
+49,230,233,1,234,89,5,224,233,3,192,1,247,47,1,224,25,7,192,1,
+230,169,3,224,37,15,224,35,4,224,30,10,97,38,247,154,4,224,36,9,
+192,1,247,193,5,230,230,7,224,2,0,228,32,3,230,236,3,224,200,18,
+193,195,168,236,224,5,8,224,68,3,160,73,227,136,2,163,142,228,86,13,
+224,116,4,224,34,6,224,157,4,224,154,13,164,202,240,70,8,64,0,231,
+147,3,231,76,10,232,74,5,224,95,27,242,38,4,192,95,237,232,4,128,
+5,224,106,20,224,97,20,233,8,3,224,38,8,164,207,3,67,32,61,61,
+224,42,20,247,125,15,241,57,3,234,246,9,229,230,8,237,31,33,247,147,
+69,1,39,32,244,198,22,240,149,6,96,12,162,112,194,170,243,227,5,65,
+169,243,229,7,225,240,13,239,80,3,226,59,2,164,165,128,1,225,52,10,
+225,104,7,240,76,1,224,102,9,229,41,0,224,28,11,0,90,224,79,14,
+192,107,166,229,224,31,6,167,20,230,243,2,231,132,14,228,21,11,225,247,
+8,193,68,199,161,162,43,193,89,160,32,128,73,244,167,2,225,172,0,129,
+122,229,204,3,197,205,224,103,5,245,70,1,226,137,64,243,213,22,224,64,
+4,225,41,10,240,200,2,228,192,0,207,155,224,222,19,233,51,6,128,191,
+224,126,1,224,13,4,129,69,224,117,12,64,113,225,78,2,251,139,3,235,
+131,1,128,0,224,201,1,64,1,245,37,255,245,37,221,226,154,0,131,135,
+229,44,9,96,207,244,152,8,224,0,1,192,166,160,170,164,58,167,162,227,
+139,13,224,52,5,194,212,224,22,9,193,234,248,33,6,224,37,5,226,174,
+10,64,1,228,251,0,224,73,1,160,2,225,39,0,160,25,64,220,226,195,
+6,128,21,192,176,230,31,9,225,19,14,227,228,2,249,61,32,224,1,9,
+245,134,8,236,134,3,225,90,4,224,166,0,225,99,12,194,90,225,145,5,
+224,42,11,224,123,1,252,157,34,227,68,7,96,42,229,230,0,224,105,6,
+227,204,21,231,254,25,224,130,23,229,94,7,9,51,54,57,32,95,51,55,
+49,32,73,244,56,4,242,125,3,225,172,3,0,57,148,97,224,54,5,236,
+241,6,226,207,2,231,192,1,198,194,231,199,14,224,193,3,243,243,13,65,
+114,231,246,11,234,13,8,231,170,10,225,219,5,225,32,10,231,171,19,230,
+86,5,194,242,231,168,6,224,163,1,160,16,192,58,128,148,129,213,247,56,
+7,128,56,99,24,0,79,134,213,225,73,1,231,186,2,225,6,6,240,125,
+3,193,109,200,134,225,91,10,224,54,0,129,23,224,69,3,224,92,6,231,
+221,102,227,248,4,64,62,225,8,13,192,57,233,108,4,224,229,17,227,64,
+18,232,0,16,227,132,50,245,66,2,224,130,5,225,7,9,241,78,2,225,
+7,29,241,43,5,224,51,30,240,128,8,226,136,5,224,158,3,224,178,0,
+98,25,192,188,229,167,0,224,16,0,1,56,53,130,0,229,92,1,2,95,
+56,54,116,62,96,30,251,79,0,64,0,229,209,17,225,26,5,64,11,225,
+116,6,227,220,0,227,123,1,224,151,1,128,16,176,206,128,5,103,231,224,
+89,1,96,37,226,148,2,224,173,1,194,48,230,162,16,192,93,245,35,27,
+227,151,0,224,117,1,128,1,251,232,1,224,80,0,224,224,6,227,180,1,
+128,209,230,170,5,162,92,224,67,1,224,61,7,224,64,2,224,61,22,163,
+42,224,59,11,224,55,4,224,52,2,225,15,4,128,158,246,129,16,224,243,
+1,228,237,2,228,234,4,225,78,14,245,190,10,224,76,71,192,223,96,51,
+226,140,9,160,217,128,204,224,60,6,128,0,226,124,1,226,133,4,224,169,
+6,165,42,105,116,140,61,128,98,237,112,12,128,50,230,187,1,224,98,8,
+228,195,12,243,188,7,224,155,13,236,108,2,224,106,1,128,44,243,218,120,
+5,49,55,49,58,49,50,250,197,4,108,46,229,67,1,2,51,54,56,129,
+129,196,118,196,76,72,85,64,44,165,64,224,39,8,68,149,69,84,228,124,
+0,1,95,49,96,7,0,83,65,219,7,53,56,32,64,95,54,48,52,98,
+46,2,51,54,54,204,5,224,244,1,1,95,96,160,149,224,47,3,0,54,
+224,47,17,0,39,224,48,0,224,33,15,7,40,41,44,91,93,59,123,125,
+128,38,224,37,15,2,32,94,41,224,32,21,22,58,33,35,36,37,38,42,
+43,46,47,60,61,62,63,64,92,92,92,94,92,124,45,126,192,52,193,15,
+230,191,2,82,151,224,20,4,67,165,142,191,128,11,230,231,0,7,58,56,
+54,55,32,64,10,65,162,211,130,101,98,195,162,228,130,212,67,30,229,220,
+0,0,66,70,109,1,51,50,241,205,0,160,2,224,30,1,225,206,9,234,
+81,15,3,108,105,110,101,226,11,0,224,74,53,5,112,114,97,103,109,97,
+224,76,0,232,27,0,128,214,224,71,33,2,100,101,102,224,148,1,132,59,
+193,76,224,55,20,4,117,110,100,101,102,128,54,193,28,64,192,2,95,50,
+48,64,11,1,95,54,97,52,227,101,81,4,72,97,115,104,68,96,186,131,
+103,3,56,56,58,53,96,141,0,90,64,190,4,56,53,51,32,64,107,164,
+192,0,196,24,160,159,128,234,160,2,3,95,51,55,57,64,51,0,54,64,
+237,0,50,101,83,162,17,98,4,194,1,224,204,98,0,57,160,204,233,148,
+3,226,36,1,199,225,160,13,165,1,225,181,18,3,79,32,35,52,234,79,
+4,238,16,0,130,229,225,9,0,119,197,162,135,199,61,75,225,97,57,1,
+51,54,65,80,129,68,1,53,50,225,11,2,16,105,110,99,111,109,112,108,
+101,116,101,32,109,97,99,114,111,32,98,83,7,105,116,105,111,110,58,94,
+42,128,200,224,54,10,2,32,32,35,130,124,0,32,163,218,0,39,160,34,
+68,217,64,7,224,182,3,3,95,56,53,55,96,16,233,219,7,224,202,0,
+129,38,232,218,4,160,201,227,9,20,224,83,9,235,100,8,227,159,34,64,
+77,0,49,224,77,2,226,99,1,161,104,64,68,232,73,5,228,7,10,228,
+132,0,161,20,1,56,53,71,238,197,230,243,94,0,2,95,57,53,224,16,
+0,160,96,237,86,0,102,60,192,76,162,224,65,191,226,224,0,128,207,192,
+25,0,49,192,25,2,95,56,54,135,34,160,31,5,55,51,53,32,95,55,
+67,26,228,30,0,231,232,0,65,167,0,54,170,251,64,8,1,52,52,64,
+4,1,51,51,64,9,96,153,235,22,5,128,147,64,40,1,57,57,128,48,
+2,55,53,55,229,185,5,197,167,2,95,54,51,224,56,0,195,179,97,7,
+128,7,226,71,5,0,35,229,10,2,224,56,2,224,55,4,0,56,224,55,
+11,229,141,0,224,53,2,64,163,96,167,64,253,67,14,129,7,0,80,224,
+243,0,227,145,13,130,22,238,53,2,226,27,13,1,51,53,226,105,3,160,
+59,163,205,195,199,224,79,1,136,214,234,138,1,1,95,49,117,157,199,55,
+96,98,224,33,1,130,82,73,238,0,54,226,90,0,235,4,3,247,62,1,
+224,170,25,225,36,2,0,35,230,98,1,195,93,128,111,228,150,22,242,7,
+7,224,101,31,192,62,176,89,229,166,1,140,185,225,12,8,160,251,113,199,
+226,123,4,224,12,3,128,0,164,36,224,53,0,163,204,225,80,8,225,79,
+8,244,219,2,224,23,4,224,91,2,2,64,64,89,96,181,227,28,1,192,
+180,0,67,227,19,5,136,132,0,54,104,132,3,75,50,32,58,96,69,64,
+11,2,32,75,32,64,25,0,52,160,13,0,65,96,13,0,51,96,13,4,
+95,56,53,52,32,99,237,224,4,1,0,58,99,168,64,28,4,51,56,48,
+32,75,75,143,10,32,67,32,80,32,75,32,95,55,55,54,226,230,2,2,
+114,101,112,70,150,8,109,101,110,116,44,32,97,116,32,230,185,84,3,50,
+53,58,54,129,202,224,135,127,75,242,224,137,126,0,90,140,152,97,205,96,
+153,0,52,224,153,127,66,77,0,49,226,77,14,101,60,65,206,101,125,64,
+9,201,96,96,12,96,210,96,17,163,37,64,18,141,128,224,26,1,227,40,
+0,0,58,102,132,2,10,65,32,65,11,0,90,68,134,192,4,150,199,0,
+58,96,100,1,10,65,224,29,7,224,34,5,0,56,160,34,70,127,101,185,
+3,95,54,51,56,67,18,0,53,139,220,227,18,23,69,248,5,98,114,101,
+97,107,115,227,17,116,224,134,109,1,64,90,225,190,0,97,85,193,185,65,
+78,89,6,225,174,0,0,58,107,17,161,104,185,34,224,10,30,232,201,1,
+0,32,83,14,193,251,64,88,160,79,64,44,224,7,11,224,70,2,224,59,
+2,0,58,96,163,226,22,6,224,60,5,128,41,0,58,96,217,98,95,0,
+90,121,26,0,58,115,184,96,57,2,80,32,35,72,218,0,85,98,40,130,
+237,4,80,32,35,51,32,71,239,0,58,120,8,192,38,65,15,96,38,95,
+194,101,141,143,105,1,58,56,81,113,226,189,1,128,96,64,25,224,213,10,
+64,144,0,58,115,62,160,28,1,80,32,154,150,0,80,96,72,129,10,3,
+80,32,35,53,160,128,74,133,128,17,0,48,192,17,128,202,3,80,32,35,
+54,192,17,128,203,113,72,234,51,1,112,80,145,43,1,95,56,85,48,7,
+95,55,54,48,32,95,55,54,73,186,0,54,204,238,244,213,0,129,41,144,
+44,1,58,56,74,174,239,15,0,80,10,224,65,14,74,11,67,94,170,106,
+0,67,73,93,0,49,231,51,0,1,95,55,100,37,160,86,1,58,56,75,
+183,160,246,137,68,238,157,4,157,48,96,8,152,179,1,95,56,233,128,0,
+233,6,3,200,95,247,220,8,128,207,96,8,1,95,54,69,69,233,9,0,
+224,60,4,245,223,2,162,145,64,189,96,224,7,64,95,49,57,49,32,95,
+57,169,42,103,218,128,48,1,95,56,68,75,224,20,2,136,122,224,33,2,
+165,197,192,38,1,64,58,96,81,226,2,6,194,189,0,58,96,39,194,186,
+98,85,64,235,228,191,0,73,14,0,50,72,187,139,151,193,39,225,108,7,
+233,67,1,225,108,1,96,37,225,238,13,64,101,0,54,160,101,129,218,64,
+44,0,49,64,104,1,55,57,97,106,201,159,116,82,96,138,237,223,16,31,
+67,97,110,110,111,116,32,101,120,112,97,110,100,32,35,105,102,32,100,105,
+114,101,99,116,105,118,101,32,105,110,32,102,1,105,108,237,194,3,205,196,
+1,95,49,76,58,1,52,51,139,208,224,81,5,4,58,94,42,32,32,251,
+94,2,224,140,1,6,66,32,95,48,32,95,50,164,145,66,143,1,51,57,
+64,16,67,185,1,95,51,64,226,225,49,1,169,80,96,52,1,52,49,64,
+108,108,186,224,193,10,31,87,97,114,110,105,110,103,58,32,116,114,97,105,
+108,105,110,103,32,99,104,97,114,97,99,116,101,114,115,32,97,102,116,1,
+101,114,64,214,128,142,224,62,10,174,214,97,0,3,115,105,111,110,224,245,
+47,224,240,1,130,68,97,145,2,95,56,51,98,132,225,144,41,4,112,97,
+114,115,101,225,143,76,227,71,3,225,143,17,148,56,157,64,225,152,10,1,
+95,56,154,24,225,159,90,224,255,56,225,153,3,0,95,65,148,128,241,64,
+0,1,58,56,77,181,72,85,224,224,0,96,8,0,56,174,179,236,211,15,
+1,47,47,128,83,175,22,129,19,0,58,97,19,64,76,1,49,49,65,254,
+67,189,0,56,84,168,69,157,224,17,0,5,52,55,55,32,95,55,118,11,
+67,216,96,19,1,55,50,111,48,224,181,3,3,92,124,92,124,160,99,2,
+55,52,56,79,171,82,193,96,40,162,83,229,248,1,160,70,99,68,0,51,
+181,239,128,143,172,98,224,143,3,0,49,224,143,45,1,38,38,224,141,16,
+250,48,3,224,141,11,213,157,64,40,64,141,1,52,54,64,65,96,113,224,
+10,13,224,135,9,79,94,0,51,207,94,224,188,2,224,140,2,96,217,96,
+218,224,129,0,129,209,224,49,5,0,56,84,206,225,0,4,0,56,98,53,
+128,188,224,38,5,128,21,224,212,5,170,168,224,83,9,246,167,1,0,53,
+143,13,1,51,57,103,237,162,115,128,41,0,49,134,8,224,17,3,72,134,
+129,88,2,53,51,32,224,208,5,97,230,0,58,96,216,225,55,28,225,77,
+31,225,213,1,1,62,61,161,213,224,144,2,5,53,57,32,95,53,55,131,
+34,225,138,13,78,156,193,138,224,55,1,1,56,50,224,55,1,224,117,21,
+0,60,224,117,9,1,55,53,224,60,21,64,117,244,229,0,224,55,2,72,
+32,224,116,29,0,61,224,234,10,225,173,0,224,61,24,0,33,224,61,9,
+105,34,192,61,0,58,98,69,225,165,6,226,33,3,0,55,137,128,224,29,
+1,226,132,6,98,24,226,132,38,224,18,4,130,63,128,50,0,58,96,6,
+224,141,6,225,84,12,74,134,225,84,8,1,57,56,65,84,169,243,224,54,
+13,242,235,0,225,78,3,73,116,192,55,0,58,96,209,225,16,17,1,48,
+50,225,16,23,215,158,225,70,7,225,16,39,139,10,64,6,227,68,17,224,
+228,13,226,230,11,0,53,225,27,25,0,55,224,54,10,1,56,48,96,139,
+175,43,228,225,14,224,56,11,1,50,52,224,56,2,0,58,97,21,101,209,
+1,50,53,84,183,0,56,92,4,1,95,56,117,88,1,95,56,65,40,128,
+42,1,95,56,64,65,160,11,1,50,52,224,23,1,1,50,52,224,23,1,
+0,56,71,7,3,95,50,53,48,192,17,108,134,64,9,106,90,0,83,102,
+243,237,143,0,0,80,136,179,227,18,1,12,73,110,116,101,103,101,114,58,
+32,100,105,118,105,105,57,3,98,121,32,48,167,107,237,203,1,108,6,64,
+64,83,63,5,80,32,95,50,49,54,64,4,71,92,147,76,224,17,9,128,
+64,237,113,5,135,237,245,160,1,247,183,3,2,32,95,56,156,9,244,66,
+0,0,66,97,21,96,93,0,56,130,14,128,42,98,38,192,36,171,252,160,
+12,0,83,139,145,0,56,72,253,0,85,83,161,128,79,233,43,0,109,130,
+64,5,160,88,183,48,153,65,136,133,1,85,32,245,255,0,81,25,98,212,
+224,0,3,0,58,97,113,1,10,65,160,194,64,58,1,95,50,78,211,2,
+95,51,55,109,89,64,49,252,191,3,64,9,0,89,161,61,224,19,0,237,
+94,0,64,63,255,226,4,233,217,3,224,219,1,173,31,235,134,3,128,238,
+128,69,152,137,73,20,98,104,110,197,128,220,206,83,120,209,0,52,224,28,
+2,96,241,68,36,0,49,109,98,1,67,32,99,21,128,12,1,95,50,163,
+126,2,64,95,53,109,139,216,40,129,219,0,58,97,95,226,193,3,0,50,
+74,99,0,50,70,241,64,6,71,57,0,50,110,164,162,181,64,114,194,181,
+160,11,224,138,0,194,187,128,11,64,6,0,58,96,12,128,94,124,165,96,
+148,1,95,53,79,169,64,180,0,51,78,187,128,42,64,43,206,200,143,100,
+97,94,207,42,174,97,206,167,224,7,2,71,231,1,53,55,64,71,1,53,
+55,99,150,130,79,0,80,98,25,163,124,204,188,224,26,0,79,6,64,21,
+64,59,121,240,0,53,65,241,128,36,192,27,128,28,194,52,96,58,0,39,
+160,46,96,26,163,27,250,183,1,144,25,0,83,251,218,0,239,74,5,243,
+165,1,64,69,0,55,97,7,246,213,0,227,1,0,183,50,224,253,1,0,
+39,96,254,162,76,143,83,0,49,191,46,128,95,160,163,128,220,160,12,66,
+238,128,37,64,253,96,217,154,164,224,197,16,64,39,64,48,192,243,225,16,
+3,228,17,2,102,35,99,92,64,137,0,50,64,69,98,152,239,223,0,122,
+111,113,123,105,108,1,67,39,67,16,3,95,56,49,56,227,22,0,224,77,
+3,224,13,5,0,58,100,27,113,133,228,219,6,15,108,97,115,116,58,32,
+101,109,112,116,121,32,108,105,115,116,100,213,129,44,2,85,32,64,82,127,
+128,98,99,212,64,8,66,114,224,89,1,0,79,114,141,64,127,0,58,97,
+13,227,211,0,133,115,0,75,66,168,64,253,2,10,65,32,100,106,0,58,
+97,255,176,54,68,163,220,248,227,195,1,113,216,98,43,0,53,106,49,1,
+95,53,80,67,64,7,96,14,0,58,100,148,2,10,65,32,88,169,133,172,
+200,60,249,203,1,192,93,96,70,159,43,132,69,229,31,0,243,241,11,64,
+133,234,220,1,0,49,102,251,2,95,49,55,64,11,99,92,234,232,1,92,
+102,131,252,146,196,132,36,129,166,96,48,224,47,1,228,73,0,0,64,129,
+184,0,58,101,193,161,39,130,187,1,95,50,64,217,129,29,179,26,224,27,
+6,129,71,163,240,2,50,50,52,64,164,232,187,1,224,104,2,64,188,232,
+156,1,224,24,2,96,10,2,64,95,57,77,248,1,56,48,106,131,96,33,
+2,56,48,54,224,11,2,0,56,65,79,96,13,202,107,3,95,56,48,57,
+224,20,8,0,58,103,135,133,222,224,170,1,198,178,129,213,224,2,0,225,
+103,0,192,11,145,198,75,69,230,126,3,178,151,229,185,0,1,95,56,101,
+76,224,46,0,82,34,224,46,0,160,23,67,140,0,48,190,49,224,65,24,
+68,194,224,64,19,134,211,0,58,64,239,160,218,96,71,100,23,224,72,17,
+96,102,96,16,99,132,0,58,65,67,130,223,166,206,253,115,1,133,34,165,
+110,0,82,224,22,4,255,72,0,0,58,96,106,130,1,129,92,164,241,161,
+66,224,41,1,230,241,0,157,95,255,238,3,138,216,192,227,98,16,96,49,
+104,245,64,238,224,159,3,224,82,1,192,76,133,81,96,66,66,78,65,242,
+226,202,5,0,58,96,241,230,123,2,226,28,3,134,121,0,58,105,175,99,
+245,3,75,51,32,75,64,24,0,58,74,25,160,218,0,95,79,137,100,86,
+198,108,157,118,133,206,65,192,255,80,4,0,35,86,176,131,226,99,197,162,
+118,163,224,162,102,224,47,3,0,49,70,240,128,210,224,79,12,0,49,67,
+75,97,243,2,95,55,57,110,5,173,26,0,85,65,206,0,48,224,16,2,
+160,18,235,239,2,170,201,103,242,128,133,1,82,32,228,26,2,87,176,133,
+143,0,58,107,250,118,232,64,221,1,95,55,225,81,10,196,77,137,193,0,
+55,75,136,0,58,64,109,224,54,22,166,128,0,55,65,106,224,54,1,131,
+147,224,54,17,160,191,0,53,114,208,160,53,64,254,130,15,194,97,253,251,
+1,226,120,2,165,37,225,112,0,226,107,2,226,201,1,201,123,160,2,98,
+185,231,93,1,128,2,164,32,224,91,5,193,254,224,22,0,195,204,131,207,
+195,51,0,64,100,101,226,250,1,139,40,233,241,8,162,195,128,162,131,9,
+131,8,178,45,96,85,1,95,50,70,136,70,61,78,24,160,0,128,162,1,
+79,32,118,243,97,196,225,64,5,129,173,0,64,65,53,227,229,4,237,222,
+9,237,113,12,101,124,236,240,0,130,36,237,245,4,1,55,51,64,28,77,
+29,2,95,55,50,87,7,183,216,64,215,241,48,2,96,168,2,95,55,51,
+64,55,120,113,73,239,1,56,57,64,112,98,15,104,69,192,209,96,59,224,
+98,0,64,133,238,110,0,224,81,43,0,58,119,120,197,31,224,187,4,103,
+16,225,226,1,98,41,231,77,0,0,51,112,62,232,119,1,0,100,123,213,
+0,100,173,68,160,53,225,70,5,193,231,224,100,3,242,57,6,1,55,53,
+65,37,129,48,225,59,5,86,150,0,57,195,239,244,221,16,1,44,41,213,
+49,238,216,5,136,186,224,0,0,194,135,225,71,2,98,82,2,95,52,54,
+97,165,64,4,172,12,132,17,248,166,6,0,90,69,36,1,54,50,96,217,
+107,194,239,189,3,96,0,227,68,2,225,8,10,224,18,10,225,24,7,228,
+147,1,66,180,164,242,237,49,0,224,45,12,65,75,224,65,12,64,189,79,
+126,224,166,8,224,88,9,224,184,7,167,49,69,143,65,253,165,148,97,252,
+225,131,15,226,9,5,230,10,0,130,185,0,67,142,60,129,85,229,203,0,
+96,104,65,225,76,156,0,64,98,100,3,52,51,51,32,197,70,224,182,0,
+65,202,235,30,0,224,205,4,224,80,1,192,5,142,166,0,75,128,45,1,
+75,50,241,116,2,224,69,4,1,64,75,65,53,224,26,3,227,202,0,1,
+64,75,66,111,224,26,13,68,64,0,55,235,118,2,255,37,68,7,67,112,
+112,73,102,100,101,102,191,35,4,51,56,58,49,50,161,78,0,75,131,183,
+165,126,129,73,130,77,133,80,224,10,0,225,77,0,65,127,65,79,82,212,
+225,3,15,225,74,7,173,158,160,81,165,232,64,13,161,194,225,94,7,64,
+24,255,1,1,224,111,38,67,78,64,1,67,143,197,91,98,178,83,170,1,
+95,55,109,92,229,101,7,224,113,6,241,177,0,96,169,224,69,1,197,22,
+109,193,130,27,93,149,139,214,150,190,224,89,10,225,220,100,1,52,53,225,
+220,1,0,58,101,203,254,160,2,231,152,2,0,80,135,252,102,113,227,159,
+1,231,37,6,71,31,137,9,237,134,4,192,21,167,133,96,69,64,248,167,
+40,0,58,68,240,232,51,1,216,123,3,95,51,54,54,104,80,137,248,192,
+24,155,94,65,220,0,54,74,122,0,67,68,13,0,54,197,151,225,51,1,
+2,39,96,95,128,213,0,58,102,244,74,92,2,55,49,51,136,142,1,55,
+49,67,88,64,197,111,106,97,252,64,21,1,53,32,224,64,2,25,69,120,
+112,101,99,116,101,100,32,101,110,100,32,111,102,32,105,110,112,117,116,32,
+40,69,79,70,229,227,0,0,58,103,129,254,225,15,0,55,75,38,106,177,
+226,37,3,251,165,8,3,35,108,105,110,219,152,134,20,251,151,2,0,51,
+97,42,111,216,180,233,213,89,128,31,0,49,82,122,0,51,175,160,160,146,
+137,181,204,38,194,118,170,212,141,53,234,188,4,1,64,35,91,201,192,188,
+0,80,66,160,244,80,3,193,167,160,26,0,56,99,75,64,49,162,175,143,
+54,162,45,162,15,229,177,1,81,19,224,92,1,224,10,0,235,149,13,65,
+77,129,6,203,152,227,240,0,235,114,10,169,60,64,26,65,211,64,153,128,
+172,224,26,0,224,108,1,66,189,211,149,147,85,224,223,0,192,173,235,253,
+19,128,79,170,31,99,6,162,186,238,161,1,224,224,6,224,179,13,129,104,
+128,115,98,10,224,144,2,66,53,225,95,11,224,44,19,245,248,5,64,0,
+2,58,55,56,139,127,2,65,32,58,96,76,3,10,65,32,75,64,10,137,
+100,237,165,2,96,172,130,29,224,244,12,158,165,224,199,13,127,129,2,64,
+95,52,156,160,192,7,193,75,135,80,230,30,1,224,61,1,137,180,178,225,
+2,95,55,56,97,14,3,58,55,56,54,140,104,167,239,200,234,0,56,64,
+129,197,87,133,236,96,56,0,58,96,56,224,205,1,117,137,232,207,36,207,
+218,233,127,2,111,135,0,51,128,126,234,198,1,68,22,234,18,0,233,211,
+20,161,161,230,86,3,224,128,16,224,43,7,236,241,4,230,222,0,134,76,
+96,45,67,178,232,163,5,97,8,240,82,2,130,130,225,125,1,231,32,6,
+115,119,1,55,55,175,112,230,181,8,64,244,65,83,166,237,224,208,0,248,
+70,3,224,7,7,197,204,129,197,230,221,14,128,0,230,206,97,2,51,55,
+55,230,206,3,66,65,242,253,4,131,172,225,92,5,225,101,6,182,196,214,
+202,134,107,236,247,0,66,233,100,73,66,206,0,54,162,56,78,242,1,95,
+55,111,206,179,53,65,23,66,54,100,147,245,103,0,224,69,0,224,60,14,
+128,42,162,31,85,86,160,10,230,48,5,5,109,97,99,114,111,32,128,227,
+194,1,166,51,129,225,224,51,10,1,32,101,198,205,128,55,160,136,96,53,
+64,144,230,107,1,224,145,6,192,91,224,74,2,23,97,114,103,117,109,101,
+110,116,115,44,32,98,117,116,32,119,97,115,32,103,105,118,101,110,128,90,
+224,77,5,160,208,162,6,166,167,165,29,64,2,1,95,55,230,123,1,250,
+99,4,234,1,2,201,241,101,95,193,179,1,95,55,84,115,236,1,4,66,
+231,160,98,98,135,0,48,228,111,1,108,105,132,225,2,55,53,55,71,236,
+126,130,166,254,165,222,247,118,4,65,249,64,98,81,173,224,101,8,128,42,
+224,100,9,68,179,97,231,99,79,129,144,96,27,165,188,133,83,64,125,65,
+119,69,230,228,67,0,0,58,99,55,72,165,2,53,54,49,67,184,0,58,
+96,64,177,126,71,123,0,75,67,192,0,54,225,136,2,4,101,120,112,97,
+110,92,61,4,44,32,97,116,32,227,84,68,4,72,97,115,104,68,109,70,
+170,37,2,53,58,54,130,56,224,133,125,109,79,224,135,124,80,62,225,15,
+125,66,71,0,58,98,127,228,241,4,224,9,1,131,54,0,55,67,144,163,
+124,124,57,68,140,67,22,132,128,152,134,84,113,184,230,64,83,219,236,246,
+129,1,184,173,128,71,219,7,67,155,224,53,1,64,104,226,190,19,228,70,
+2,226,190,114,224,133,108,226,190,10,224,135,110,226,190,8,224,135,110,0,
+32,112,87,0,58,101,46,226,52,19,2,114,101,112,64,125,64,161,226,54,
+116,224,135,110,226,56,10,224,137,112,152,148,82,162,224,144,124,0,58,106,
+186,144,39,0,52,90,13,87,101,71,128,0,53,71,75,1,55,54,96,27,
+2,73,32,58,96,16,71,103,0,52,124,155,0,55,80,82,1,95,55,95,
+227,68,252,97,94,96,56,0,51,83,255,224,11,0,96,229,64,11,0,58,
+96,6,64,63,4,49,51,54,32,75,176,176,0,49,225,0,3,6,110,111,
+32,102,105,101,108,201,106,96,29,104,253,0,52,82,23,128,105,1,49,52,
+96,105,64,11,0,58,96,6,96,145,0,57,66,240,1,51,53,77,40,1,
+49,56,224,81,2,25,67,111,110,116,114,111,108,46,69,120,99,101,112,116,
+105,111,110,46,73,110,116,101,114,110,97,108,64,98,224,39,1,10,82,101,
+99,83,101,108,69,114,114,111,114,96,123,97,161,0,58,96,226,227,84,2,
+0,73,141,70,64,28,99,117,1,75,51,97,33,134,56,107,15,1,32,83,
+211,63,95,150,69,208,64,8,1,55,53,85,194,0,51,78,73,230,41,1,
+234,129,1,73,88,106,248,145,148,237,239,3,198,93,96,37,106,92,0,54,
+65,10,0,54,75,33,107,6,128,166,134,102,126,142,2,95,50,54,65,126,
+96,28,1,95,50,224,40,1,1,95,51,73,172,1,95,51,81,249,3,95,
+55,54,55,97,194,64,25,1,95,53,70,165,64,106,0,54,129,215,224,20,
+4,1,51,48,65,110,160,65,0,48,224,89,0,0,58,96,6,222,118,0,
+66,203,242,204,40,128,2,128,184,143,34,79,33,0,53,88,197,137,241,243,
+30,1,110,76,0,51,171,77,2,50,54,49,253,191,0,160,60,237,30,0,
+1,50,51,74,49,91,144,224,64,2,64,50,126,188,96,50,65,37,82,249,
+64,22,65,132,254,99,2,224,113,91,254,213,5,224,42,7,224,15,7,0,
+58,65,111,97,66,171,178,187,13,224,153,13,208,104,2,95,50,50,75,82,
+128,148,64,163,64,81,160,183,224,13,2,224,149,16,191,90,66,0,98,50,
+2,56,32,58,96,42,200,165,172,222,0,55,64,124,136,153,82,159,140,100,
+178,88,161,36,64,5,96,12,169,18,0,50,115,80,187,194,128,30,64,22,
+3,57,56,32,95,155,59,96,88,0,53,160,14,123,203,128,9,157,71,131,
+27,66,178,148,194,192,40,0,35,240,20,0,155,243,1,95,55,111,239,0,
+58,67,3,131,155,1,95,55,64,50,2,95,55,54,99,141,64,29,1,10,
+65,82,201,0,49,64,218,132,32,96,245,0,58,96,39,0,10,83,224,0,
+58,96,223,96,24,0,65,96,24,233,167,8,108,167,128,230,194,219,105,164,
+0,54,68,207,66,195,129,38,67,147,159,214,160,228,97,216,64,21,224,117,
+1,67,193,234,4,6,176,179,145,124,170,4,109,160,112,80,211,35,0,58,
+100,24,224,165,1,68,69,226,47,4,160,5,113,189,0,64,78,4,1,75,
+52,130,47,2,95,55,50,164,107,1,55,53,109,56,182,58,96,35,64,37,
+224,35,1,160,139,0,58,81,172,129,79,224,93,7,0,55,67,74,160,93,
+98,71,224,93,0,129,24,118,168,150,167,224,95,10,240,50,1,126,50,227,
+134,0,170,246,148,232,124,239,97,111,246,226,7,210,112,99,26,0,52,70,
+168,224,231,12,176,126,0,67,88,65,96,15,224,137,11,189,61,229,245,1,
+31,87,104,101,110,32,108,111,111,107,105,110,103,32,102,111,114,32,97,32,
+110,111,110,45,101,109,112,116,121,32,115,101,113,24,117,101,110,99,101,32,
+119,105,116,104,32,115,101,112,97,114,97,116,111,114,115,58,94,42,94,150,
+199,0,58,97,92,135,56,216,184,242,227,0,0,48,206,159,64,210,243,43,
+3,224,41,8,0,49,192,41,243,4,4,0,58,115,83,128,92,253,117,3,
+65,39,133,105,130,58,230,48,6,98,150,0,54,252,223,1,240,210,11,240,
+209,10,177,5,240,175,6,2,103,111,116,160,35,224,157,6,0,58,64,187,
+64,156,120,25,0,89,161,221,68,33,224,140,2,239,253,10,0,64,141,2,
+242,211,40,14,112,111,108,121,112,97,114,115,101,45,49,46,49,50,47,64,
+43,5,84,101,120,116,47,80,64,19,136,207,4,49,48,57,58,55,128,172,
+176,238,98,88,0,52,90,65,224,14,1,245,165,3,109,206,224,25,12,66,
+53,0,83,64,212,64,25,253,60,2,128,30,91,13,96,57,246,4,20,0,
+49,127,174,224,33,19,119,118,224,66,20,154,16,99,41,246,72,8,110,141,
+128,55,121,149,165,228,209,47,96,164,192,12,96,43,230,74,0,1,95,52,
+73,78,0,53,150,165,224,66,31,128,139,224,67,53,96,240,224,66,6,0,
+55,67,40,224,134,34,97,85,224,67,15,196,5,228,110,0,101,42,129,196,
+228,210,1,250,247,5,255,11,15,8,44,59,40,41,91,93,123,125,96,195,
+0,230,5,0,104,215,228,199,0,71,18,224,102,6,251,103,3,90,71,225,
+183,3,1,64,35,91,177,229,59,4,128,6,159,49,128,97,155,80,165,4,
+227,190,8,13,66,97,100,32,99,104,97,114,97,99,116,101,114,58,131,160,
+212,57,229,13,0,136,16,226,93,0,162,203,128,116,249,116,10,250,85,13,
+0,52,107,126,160,33,135,252,161,91,160,46,160,71,224,202,0,65,90,127,
+248,64,10,229,225,0,161,19,229,204,0,132,108,132,153,129,226,96,103,230,
+251,1,233,143,1,200,185,129,232,192,91,212,70,224,48,8,224,46,14,129,
+14,226,95,6,224,62,10,96,54,253,37,30,1,95,39,229,25,0,230,164,
+0,224,98,26,64,79,64,101,96,11,102,239,96,47,3,64,67,32,79,230,
+48,2,226,159,26,22,33,64,35,36,37,38,42,43,46,47,60,61,62,63,
+92,92,92,94,92,124,58,45,126,160,148,129,229,193,226,169,163,97,223,224,
+207,15,1,101,69,224,58,12,202,245,128,18,229,17,15,135,171,224,110,4,
+226,17,8,192,130,225,138,11,226,25,11,230,179,6,0,43,230,172,2,226,
+36,6,226,28,7,224,180,30,131,135,224,180,84,0,45,224,180,34,224,128,
+65,0,79,138,253,194,78,224,124,30,196,117,224,197,8,3,109,105,115,115,
+73,32,7,43,47,45,47,100,105,103,105,168,19,224,39,8,14,97,102,116,
+101,114,32,101,32,105,110,32,102,108,111,97,224,38,15,6,108,105,116,101,
+114,97,108,164,184,64,155,255,142,7,215,230,224,204,8,224,68,1,2,46,
+46,46,227,126,1,96,229,195,72,64,0,95,88,194,198,0,85,101,65,64,
+218,170,233,225,165,9,10,110,100,32,111,102,32,105,110,112,117,116,64,188,
+133,80,224,35,5,2,115,116,114,65,2,160,187,128,34,96,118,198,20,97,
+164,129,131,138,197,232,78,6,193,202,246,89,10,64,186,99,140,97,170,166,
+161,97,176,106,187,97,148,80,221,233,53,76,3,49,56,58,52,210,152,228,
+143,3,122,39,127,36,249,125,0,64,0,249,121,4,96,36,64,48,96,39,
+230,128,2,109,25,80,109,128,60,205,192,1,64,67,102,232,2,52,52,54,
+69,3,191,208,128,225,234,43,9,225,159,13,160,169,0,58,107,7,114,75,
+254,38,2,222,123,2,95,55,50,135,118,98,69,224,72,2,202,247,0,97,
+225,200,0,71,71,163,163,225,181,7,109,217,235,73,1,224,70,1,3,98,
+105,110,100,128,51,224,125,3,64,52,66,204,224,17,2,80,238,94,253,224,
+143,15,224,132,3,4,32,104,97,115,32,114,255,3,110,97,108,32,198,91,
+65,144,224,150,41,236,72,5,97,45,206,223,130,121,0,83,159,169,160,96,
+99,59,77,227,96,15,237,230,8,0,58,64,200,174,206,0,50,78,134,64,
+57,236,151,8,64,225,162,215,236,238,2,165,93,224,192,3,0,57,68,170,
+224,20,7,128,213,224,181,2,224,225,12,225,191,14,0,44,108,167,0,39,
+231,143,0,224,152,14,134,2,224,138,4,163,116,224,27,12,235,156,5,224,
+27,4,1,49,48,112,162,224,28,14,157,19,224,28,15,229,212,0,224,28,
+11,169,6,224,28,13,224,144,18,97,83,224,27,14,131,186,224,27,14,97,
+107,224,83,14,192,55,101,69,0,83,198,45,224,157,15,236,169,0,224,28,
+10,141,9,64,22,4,83,32,95,54,48,138,211,238,163,2,229,145,8,18,
+117,110,114,101,99,111,103,110,105,115,101,100,32,101,115,99,97,112,101,239,
+142,1,1,105,110,225,253,4,3,58,32,92,92,97,249,233,65,2,207,33,
+224,137,7,82,50,224,27,16,97,124,224,27,14,98,40,224,27,14,97,151,
+224,27,14,97,95,224,27,13,85,179,224,27,16,97,77,224,27,14,97,235,
+224,27,14,224,195,18,149,120,224,27,13,0,56,224,83,18,95,92,224,27,
+16,97,79,228,164,9,0,56,125,30,230,176,76,5,51,48,56,58,49,52,
+163,234,83,73,227,233,5,224,137,8,66,179,229,197,24,196,119,0,35,130,
+198,235,115,16,4,39,92,92,86,84,228,103,0,224,125,26,120,177,224,125,
+32,115,3,224,125,20,1,85,83,228,229,3,0,55,121,116,224,4,15,224,
+155,22,112,19,230,223,34,224,67,12,115,170,225,93,33,160,186,224,154,61,
+224,86,1,168,156,226,11,61,224,67,22,67,69,224,154,33,99,87,224,242,
+28,226,41,37,106,19,224,174,27,225,228,59,224,242,38,224,243,32,100,61,
+224,156,54,101,181,224,156,34,176,208,227,189,29,69,161,227,189,34,128,248,
+227,189,18,4,83,79,72,39,32,96,7,128,6,1,84,88,128,7,0,73,
+128,6,1,89,78,128,7,5,85,66,39,32,111,114,96,10,0,80,240,100,
+1,228,109,73,144,132,224,175,18,0,82,228,109,9,225,210,90,102,196,224,
+198,33,211,250,225,32,26,103,254,224,157,55,224,67,28,226,112,1,228,243,
+0,225,102,17,2,78,85,76,193,240,2,78,65,75,225,241,35,104,67,228,
+53,34,225,241,24,1,76,70,230,221,35,231,91,37,140,141,224,124,18,0,
+72,231,90,82,159,113,224,125,19,0,71,226,236,40,225,125,39,165,24,224,
+219,73,141,186,224,219,18,1,70,70,194,96,0,70,224,229,1,232,65,20,
+225,250,60,224,67,22,230,87,37,221,93,225,149,24,230,242,58,226,217,38,
+209,28,231,74,62,224,155,22,68,81,224,155,33,209,101,233,29,92,231,141,
+39,193,211,225,56,25,119,9,224,88,33,192,245,227,107,63,224,246,22,224,
+157,38,185,164,227,177,16,2,111,110,101,82,240,3,39,92,92,69,168,34,
+2,69,79,84,128,7,1,78,81,128,7,1,84,66,128,7,0,77,195,216,
+2,69,83,67,227,217,14,224,188,23,234,34,59,225,247,37,0,49,225,1,
+1,224,88,60,224,224,59,224,156,1,234,34,35,225,249,28,229,90,37,83,
+108,224,174,35,129,74,224,85,23,84,0,224,85,35,134,82,224,86,25,228,
+140,37,64,4,224,86,28,238,87,37,146,95,96,20,231,3,17,1,68,69,
+233,101,0,2,68,76,69,224,10,0,6,67,91,49,46,46,52,93,227,59,
+9,228,55,23,238,250,38,164,234,234,164,94,237,178,38,198,192,225,62,18,
+1,67,82,193,50,2,67,65,78,225,45,40,228,100,106,196,98,233,111,73,
+233,110,24,0,66,226,106,1,0,66,233,111,2,228,78,62,225,38,23,236,
+160,37,196,237,224,206,18,1,65,67,236,148,2,153,240,95,29,0,53,72,
+137,1,95,55,123,183,190,0,224,29,10,0,52,224,29,2,218,46,224,31,
+0,86,48,1,95,48,160,138,96,30,90,21,245,200,1,1,95,55,90,42,
+224,63,0,224,251,8,86,80,159,174,0,48,64,54,3,95,49,53,57,64,
+4,64,211,0,35,123,235,88,217,91,248,128,18,0,57,104,22,246,123,22,
+249,148,4,5,99,116,114,108,45,101,150,128,8,109,97,108,102,111,114,109,
+101,100,86,113,1,92,94,97,17,246,115,3,125,101,224,203,2,96,225,64,
+224,5,49,57,49,32,95,57,98,99,0,51,68,7,96,5,128,159,193,84,
+225,143,1,187,44,224,17,3,128,40,224,17,2,151,238,228,94,4,180,57,
+224,35,2,224,34,8,188,79,224,17,2,174,14,224,17,2,224,88,8,162,
+235,227,86,8,224,234,2,158,96,68,5,225,90,6,253,102,7,217,189,225,
+97,4,162,88,0,58,123,63,1,10,65,118,74,0,83,66,210,1,55,52,
+226,188,4,6,100,101,99,105,109,97,108,129,117,65,84,1,55,52,64,111,
+158,210,65,196,1,52,54,224,15,1,1,95,50,64,77,98,213,1,51,57,
+94,63,160,12,116,41,2,95,55,52,154,198,0,54,218,198,0,55,65,27,
+186,187,156,253,155,169,67,9,0,58,98,146,224,152,18,2,111,99,116,224,
+150,46,161,91,0,53,97,224,224,149,0,0,52,224,109,20,2,104,101,120,
+225,2,45,131,231,2,95,55,52,104,8,192,108,0,51,96,108,227,70,4,
+5,95,49,53,51,32,35,124,29,99,81,0,51,71,143,152,255,224,38,9,
+123,65,224,38,0,187,23,64,183,224,39,6,102,212,224,39,0,152,250,3,
+95,51,54,48,226,30,2,8,100,105,103,105,116,84,111,73,110,189,227,227,
+57,12,224,16,0,163,67,64,86,193,222,224,49,28,96,176,224,49,21,96,
+39,157,29,0,58,97,39,65,142,0,39,127,168,191,233,66,224,66,229,94,
+107,64,0,128,27,64,5,228,160,1,100,205,0,51,67,36,94,1,68,175,
+172,147,64,38,128,42,227,65,1,153,95,1,39,66,65,190,1,66,39,96,
+5,3,32,95,53,54,64,165,224,117,0,96,11,125,174,96,7,2,83,32,
+95,252,162,3,0,67,68,111,128,74,226,18,25,160,133,1,95,51,105,103,
+67,180,99,186,0,50,86,85,2,66,32,80,197,113,224,71,27,160,76,222,
+219,229,78,9,1,94,42,227,247,0,108,214,6,114,32,109,111,114,101,32,
+165,61,255,17,7,0,32,98,5,0,115,228,20,1,159,229,130,77,70,54,
+99,194,224,14,0,226,101,1,229,229,0,226,146,0,229,247,2,194,151,224,
+45,10,194,152,224,45,2,130,157,64,124,159,52,171,186,225,203,0,97,202,
+224,145,1,2,54,48,54,97,126,2,51,54,54,167,130,231,61,3,1,96,
+95,199,57,230,187,3,1,51,56,229,43,7,225,55,8,0,69,254,235,0,
+10,110,32,105,100,101,110,116,105,102,105,101,190,234,1,92,34,225,62,4,
+1,79,32,102,35,220,250,1,58,55,70,67,96,184,1,49,51,132,208,1,
+95,49,102,109,0,58,96,120,96,25,1,51,51,100,98,64,1,0,80,64,
+35,64,201,130,140,197,188,0,55,107,85,1,95,55,111,164,162,235,0,58,
+97,0,128,64,0,52,229,57,0,98,64,1,95,55,100,98,3,95,54,32,
+89,100,186,0,83,72,71,0,75,65,119,96,4,162,39,192,50,99,121,98,
+82,0,89,69,121,162,216,64,4,224,55,1,166,87,184,234,96,10,200,172,
+0,89,67,0,2,39,32,80,225,69,24,9,102,97,105,108,101,100,32,116,
+111,32,124,86,3,32,97,110,121,79,89,22,116,104,101,32,112,111,115,115,
+105,98,108,101,32,99,104,111,105,99,101,115,58,94,42,97,85,99,183,1,
+48,32,121,186,96,11,2,53,32,85,99,155,129,108,224,98,8,192,55,224,
+53,1,97,237,1,55,48,195,35,128,220,0,66,128,91,227,253,0,129,6,
+224,19,2,0,83,96,14,228,98,0,128,2,128,20,224,55,2,225,32,4,
+224,26,3,0,90,161,37,192,38,128,76,96,11,0,39,102,220,192,91,1,
+95,49,97,209,0,80,160,64,194,53,226,34,1,0,54,167,22,0,89,132,
+135,74,181,136,171,132,228,193,1,64,52,0,58,65,29,128,45,128,115,0,
+80,70,85,66,140,5,10,65,32,85,32,58,66,102,166,96,0,39,64,2,
+64,59,72,170,132,73,0,75,96,85,1,95,55,144,13,132,199,104,73,99,
+29,0,85,64,31,0,65,224,33,3,66,101,225,123,5,12,73,110,32,97,
+32,115,101,113,117,101,110,99,101,225,136,12,1,83,39,65,121,101,93,99,
+120,105,146,64,173,69,126,224,135,12,161,31,64,137,0,52,82,118,160,137,
+170,143,176,185,0,58,68,14,168,61,68,145,64,44,83,64,224,80,11,0,
+58,96,117,128,43,3,54,32,95,52,118,138,226,255,0,133,132,193,83,99,
+210,0,53,250,76,2,0,55,96,45,0,58,64,210,129,72,0,85,193,142,
+2,90,32,90,69,118,2,52,52,49,236,0,5,198,221,131,31,234,160,0,
+0,90,130,195,96,220,160,85,96,0,0,58,96,11,97,174,0,75,96,228,
+0,58,97,127,96,16,0,73,65,205,64,196,67,241,203,166,97,21,132,22,
+101,9,1,95,52,73,32,96,55,0,54,225,18,0,235,166,5,64,237,3,
+83,32,64,82,227,171,3,225,196,1,159,220,8,115,97,116,105,115,102,121,
+58,32,131,178,236,167,7,96,95,130,107,99,58,100,180,69,179,65,11,224,
+75,1,6,82,97,110,32,111,117,116,67,227,10,105,110,112,117,116,32,40,
+69,79,70,41,197,45,137,219,64,73,130,161,1,95,52,76,243,100,232,224,
+153,12,0,110,164,54,162,86,74,225,2,95,52,55,96,39,101,20,1,52,
+56,65,20,96,11,0,58,96,6,163,9,228,227,1,0,83,202,87,67,200,
+227,191,9,99,182,99,185,98,94,0,58,96,98,64,152,1,54,50,64,152,
+64,248,234,158,0,229,10,0,0,58,96,165,64,37,97,28,134,74,224,35,
+1,96,226,129,235,232,139,0,224,14,6,232,124,7,1,95,49,96,211,101,
+239,0,50,96,210,128,10,64,48,96,10,0,58,96,6,64,114,192,18,224,
+230,5,229,202,9,0,67,162,125,70,85,205,117,229,191,1,2,95,52,56,
+102,153,102,111,1,51,56,193,132,1,64,58,96,18,64,103,0,51,225,72,
+3,136,161,142,59,170,212,97,30,72,240,0,58,96,6,128,50,67,230,224,
+122,0,134,60,139,90,96,130,160,80,102,165,224,74,8,64,11,0,58,96,
+6,2,10,65,32,67,90,0,85,128,16,194,210,0,90,128,242,65,171,69,
+57,0,58,96,82,161,238,64,20,224,28,6,130,95,2,73,32,58,96,192,
+97,209,64,101,0,49,67,80,68,120,107,225,0,80,66,24,0,80,79,11,
+0,48,104,133,192,12,164,61,160,45,129,235,66,66,234,7,0,230,37,5,
+96,197,129,120,132,237,138,31,166,60,0,83,160,58,0,64,96,18,224,5,
+4,230,113,6,160,60,230,145,2,230,127,14,129,195,224,19,2,170,187,243,
+195,6,202,142,192,42,134,2,227,8,3,132,165,224,215,2,224,40,3,0,
+64,224,76,3,174,241,128,57,224,110,12,202,146,225,20,1,64,36,134,81,
+2,50,48,57,128,46,100,180,64,5,96,157,198,215,2,64,64,79,68,249,
+167,9,224,64,56,224,199,0,224,73,44,135,103,66,9,128,30,2,79,32,
+35,75,123,224,91,1,204,17,225,1,15,128,114,3,82,32,95,51,101,228,
+224,153,4,98,37,0,39,96,2,99,41,98,112,128,39,224,119,24,225,239,
+1,64,1,0,89,192,23,226,135,1,226,68,5,224,48,4,72,125,224,66,
+6,200,127,224,63,9,70,105,244,145,0,161,241,192,182,2,95,51,57,64,
+29,200,253,224,78,1,1,95,52,70,13,77,173,224,24,7,232,49,5,23,
+87,97,114,110,105,110,103,58,32,67,97,110,39,116,32,102,105,110,100,32,
+102,105,108,101,203,83,224,60,3,236,212,0,224,19,2,224,78,6,19,92,
+34,32,105,110,32,100,105,114,101,99,116,111,114,105,101,115,94,42,94,134,
+110,225,168,1,64,2,192,72,160,68,0,54,110,19,224,13,1,0,56,237,
+48,4,224,65,0,225,144,20,224,139,8,17,94,42,32,32,65,115,107,101,
+100,32,102,111,114,32,98,121,58,32,134,183,1,49,51,65,25,72,64,192,
+0,165,255,199,154,66,4,64,74,244,2,15,6,109,105,115,115,105,110,103,
+97,39,160,84,244,46,6,224,148,2,207,9,161,203,70,116,96,103,2,95,
+54,54,100,16,129,20,67,11,77,51,0,55,65,21,224,39,5,0,55,68,
+255,97,23,224,163,0,234,172,0,160,63,69,199,0,48,71,252,77,141,225,
+89,0,225,102,0,1,95,55,77,146,128,229,79,202,65,107,160,19,128,0,
+112,158,100,98,0,52,72,235,169,241,64,200,64,39,0,57,101,118,134,239,
+0,85,102,11,0,90,64,111,132,206,0,58,96,31,197,208,75,227,1,95,
+54,235,34,0,74,173,105,226,84,181,84,184,64,222,238,26,15,2,92,92,
+47,161,230,204,43,0,58,96,100,2,10,65,32,108,222,97,249,129,75,228,
+48,0,97,206,64,105,0,58,96,50,1,10,65,224,122,0,224,210,1,229,
+53,7,135,251,137,174,129,3,225,24,12,0,58,96,7,96,81,0,58,65,
+92,166,116,225,152,1,4,67,32,95,54,55,85,211,0,54,81,195,97,180,
+0,54,80,129,168,89,64,35,3,95,54,57,57,226,144,2,15,85,84,70,
+45,56,47,47,82,79,85,78,68,84,82,73,80,128,238,133,238,227,228,1,
+0,95,73,214,2,95,55,48,96,222,1,95,54,119,2,0,58,98,4,204,
+133,132,83,2,95,55,48,168,119,224,150,4,2,95,55,48,116,251,230,69,
+1,64,34,115,58,97,9,152,121,1,55,57,145,227,0,35,149,39,226,133,
+2,103,31,224,42,2,65,174,65,55,5,35,50,48,57,53,49,103,139,4,
+35,53,53,50,57,97,36,129,142,224,124,2,0,52,111,22,226,173,6,225,
+111,0,150,227,130,113,0,67,68,162,65,62,0,52,117,100,225,37,1,21,
+104,71,101,116,67,111,110,116,101,110,116,115,58,32,115,117,114,114,111,103,
+97,116,138,115,129,102,193,42,129,28,225,60,3,65,147,0,54,130,241,64,
+84,224,131,0,227,143,0,0,58,97,87,4,10,65,32,75,51,70,7,0,
+58,96,39,7,10,65,32,94,103,101,116,98,65,232,170,73,4,51,57,57,
+32,79,81,247,80,77,1,95,52,65,105,170,145,64,10,180,143,129,37,0,
+51,67,199,225,228,22,243,218,6,20,117,110,107,110,111,119,110,32,116,101,
+120,116,32,101,110,99,111,100,105,110,103,235,225,2,98,59,144,96,66,65,
+130,122,69,24,1,57,51,64,4,66,17,96,15,97,84,0,52,74,172,128,
+20,64,46,169,252,1,52,56,67,10,1,54,57,130,133,73,78,0,73,68,
+27,67,172,0,85,64,23,160,92,131,52,3,85,32,75,50,110,90,0,58,
+96,24,106,215,2,51,54,32,77,188,97,94,0,49,145,159,0,85,96,35,
+1,95,51,205,139,2,49,52,48,64,74,121,95,2,49,52,50,192,11,0,
+58,96,6,96,132,2,57,32,75,77,208,65,37,0,49,229,211,3,65,223,
+19,114,111,108,46,69,120,99,101,112,116,105,111,110,46,73,110,116,101,114,
+110,150,56,224,39,1,3,83,111,109,101,224,35,0,97,32,129,133,96,215,
+99,14,129,23,101,54,167,194,169,222,2,95,54,55,65,29,0,54,99,243,
+0,95,173,146,65,64,64,55,98,228,194,238,64,63,2,32,64,35,102,15,
+224,22,9,98,177,224,22,9,97,2,224,22,9,99,180,128,22,98,33,96,
+20,131,214,0,51,76,62,0,54,91,180,1,95,54,79,71,224,19,1,0,
+56,96,19,0,56,224,19,11,219,90,224,19,3,136,157,224,19,4,0,57,
+150,64,1,54,57,75,34,96,242,9,10,65,32,105,115,105,110,116,32,58,
+96,20,130,241,0,58,96,40,64,11,65,240,1,64,58,96,75,64,14,0,
+50,99,12,96,110,128,14,0,65,96,14,174,233,162,75,93,68,2,95,54,
+55,100,63,1,54,56,68,31,64,124,64,11,0,53,224,11,0,1,51,51,
+224,23,0,0,58,96,6,129,164,129,10,66,188,0,56,97,142,169,98,98,
+96,100,44,0,51,80,18,132,133,114,196,181,88,162,106,224,15,7,96,92,
+236,111,1,0,95,102,94,96,89,64,141,0,51,96,187,130,32,2,80,32,
+58,96,16,224,198,2,0,56,110,221,100,137,1,95,51,84,201,192,147,0,
+51,224,159,2,128,198,64,11,0,58,96,6,227,18,37,128,92,131,18,96,
+11,0,58,96,6,227,18,64,4,65,115,121,110,99,227,23,12,64,220,192,
+171,0,75,212,205,2,51,49,54,224,104,2,13,115,116,97,99,107,32,111,
+118,101,114,102,108,111,119,164,158,224,33,4,3,104,101,97,112,224,32,5,
+224,33,7,9,116,104,114,101,97,100,32,107,105,108,240,154,1,224,33,5,
+5,117,115,101,114,32,105,64,193,2,114,117,112,184,193,193,30,130,66,129,
+30,96,11,0,58,96,6,225,30,60,225,26,17,66,190,98,17,67,164,81,
+201,99,133,226,223,3,101,43,158,46,130,24,159,97,130,24,192,11,66,24,
+96,11,0,58,96,6,225,108,1,0,85,243,213,1,2,67,32,60,164,11,
+232,134,0,128,18,134,163,164,161,128,18,64,110,0,85,225,163,7,19,82,
+97,116,105,111,90,101,114,111,68,101,110,111,109,105,110,97,116,111,114,161,
+67,224,43,8,64,34,0,114,220,9,224,32,12,6,105,118,105,100,101,66,
+121,64,79,192,36,224,151,6,66,163,224,151,6,66,208,224,74,8,11,76,
+111,115,115,79,102,80,114,101,99,105,115,193,94,224,38,10,2,85,110,100,
+226,60,3,224,33,10,0,79,226,93,4,64,0,194,27,230,77,2,96,11,
+0,58,96,6,226,27,61,3,114,105,116,104,226,27,13,213,161,133,9,64,
+17,132,52,7,99,97,116,99,104,32,58,54,70,96,153,119,233,108,4,73,
+252,74,210,140,51,0,54,76,2,0,54,89,46,224,115,1,6,111,112,101,
+110,70,105,108,179,50,233,19,1,0,58,106,59,130,143,0,49,194,143,131,
+188,68,210,68,212,71,171,238,162,0,152,154,3,95,52,49,48,206,200,64,
+167,133,20,197,76,207,78,250,127,3,247,156,7,0,32,193,113,0,58,64,
+173,64,110,234,212,8,108,50,138,212,75,77,200,143,1,49,52,106,14,233,
+127,8,224,33,2,76,60,128,90,131,107,189,178,138,76,85,198,1,64,95,
+87,31,253,56,2,0,56,139,203,224,32,2,125,143,224,19,7,165,218,112,
+19,2,95,54,54,106,123,224,119,0,126,149,96,138,96,114,1,95,52,73,
+196,1,95,54,90,201,0,58,96,43,73,223,7,102,108,117,115,104,98,32,
+58,96,22,219,65,237,139,1,90,233,235,136,7,102,183,135,202,192,5,84,
+190,64,4,64,114,64,3,224,131,4,224,13,6,234,170,6,160,234,1,54,
+53,100,101,0,53,135,196,234,175,0,1,54,54,104,57,0,58,96,226,135,
+172,103,130,64,22,96,213,0,66,85,23,115,82,96,51,139,71,0,58,96,
+60,128,245,0,54,93,29,72,196,0,58,96,29,9,10,65,32,65,46,119,
+114,105,116,101,64,243,130,88,5,94,99,108,111,115,101,65,4,64,126,237,
+205,0,2,95,54,52,74,65,2,53,55,32,137,3,64,87,64,173,10,10,
+65,32,116,111,70,117,110,80,116,114,64,50,234,42,0,64,50,0,51,126,
+32,64,40,129,95,1,95,54,71,27,66,128,234,156,0,96,233,224,9,1,
+135,230,84,218,144,173,161,224,92,208,131,255,1,51,50,69,102,97,240,0,
+58,96,6,139,135,0,56,64,123,225,20,0,0,58,98,151,129,191,225,194,
+4,2,64,95,54,93,163,64,101,226,180,3,209,203,64,23,226,232,4,64,
+150,64,128,96,37,0,54,106,30,1,95,54,80,79,160,44,76,179,2,57,
+32,95,78,246,163,84,204,237,85,195,0,54,93,53,64,6,160,189,0,58,
+99,52,172,22,71,113,96,123,102,230,128,5,108,65,0,58,96,47,234,182,
+0,237,56,4,0,54,146,173,64,21,226,55,5,97,155,99,122,137,31,224,
+55,6,144,198,192,177,228,94,0,162,178,0,95,105,86,128,160,130,3,14,
+73,79,46,112,101,114,102,111,114,109,73,79,32,94,38,162,17,1,64,58,
+96,98,9,10,65,32,102,112,102,105,110,32,58,64,118,128,14,2,110,101,
+119,64,14,129,253,8,94,97,100,100,95,70,73,76,69,64,18,129,249,96,
+18,2,117,116,102,65,167,65,70,152,240,0,52,67,102,64,166,64,89,129,
+189,177,248,225,177,1,143,136,73,57,192,213,96,11,161,65,241,78,3,3,
+79,32,35,49,86,66,101,173,224,26,10,0,57,205,225,224,27,8,76,224,
+224,26,11,229,17,1,1,119,43,200,156,0,54,97,170,99,224,228,127,0,
+98,158,1,95,54,100,128,225,96,3,194,19,226,105,8,0,58,98,134,104,
+21,1,49,52,99,80,0,58,96,61,163,35,192,233,112,147,72,145,64,92,
+130,75,128,6,131,5,96,118,0,58,96,6,99,133,0,73,107,200,191,127,
+1,94,102,70,84,1,32,58,96,175,97,110,252,146,0,173,15,145,27,252,
+177,10,166,76,84,56,177,63,224,47,2,130,39,223,17,2,51,54,51,210,
+62,145,97,115,163,100,1,132,134,242,213,0,67,165,162,188,229,43,0,1,
+95,52,66,79,176,93,4,67,32,95,57,56,144,111,192,18,1,58,54,189,
+86,188,30,220,218,64,24,163,250,2,53,48,56,64,4,71,82,67,78,2,
+64,95,53,66,58,160,11,0,54,89,150,64,80,1,95,54,73,169,132,141,
+1,95,54,105,169,96,33,0,58,96,6,188,100,66,87,1,95,52,79,26,
+0,58,64,34,128,22,3,66,32,95,53,64,247,0,66,99,109,0,52,64,
+194,8,95,54,50,55,32,95,53,57,48,84,92,77,54,130,58,101,201,0,
+53,68,182,0,80,64,165,167,9,140,146,96,246,121,232,67,183,242,162,1,
+98,231,96,84,64,184,68,87,224,23,8,160,76,135,52,227,191,0,128,27,
+211,131,192,24,192,52,1,95,54,154,163,64,21,89,145,129,131,141,97,1,
+61,61,169,182,155,187,0,54,67,251,226,231,1,2,98,105,110,171,169,224,
+61,1,181,142,242,35,0,240,208,2,65,0,0,51,225,0,0,96,102,227,
+21,0,192,32,67,216,131,146,0,53,155,101,0,64,98,107,128,12,225,30,
+0,224,213,1,247,212,4,65,138,251,220,3,96,33,126,54,0,57,70,234,
+192,195,134,145,0,58,96,204,224,43,2,96,154,1,95,52,86,252,3,56,
+32,95,52,70,156,128,38,131,34,77,246,253,198,0,103,72,189,195,64,96,
+81,81,1,95,54,93,156,0,58,65,239,160,22,98,3,114,164,114,58,225,
+116,0,98,99,123,14,164,192,2,51,57,52,64,23,131,79,196,39,83,179,
+97,7,167,22,189,250,99,242,191,112,0,83,112,41,236,32,7,224,25,13,
+96,77,155,189,214,57,160,25,180,176,0,85,81,198,225,248,4,108,158,194,
+153,233,138,0,160,43,96,131,226,41,6,171,104,162,78,0,85,213,41,0,
+54,166,64,64,0,224,129,12,96,30,224,85,16,99,157,224,85,9,98,50,
+224,144,22,65,14,224,58,21,224,145,1,236,189,8,224,171,13,104,105,224,
+112,16,99,43,224,171,45,175,224,224,171,19,224,59,16,101,231,224,59,9,
+151,15,160,0,166,7,98,86,0,58,96,6,226,77,0,109,186,141,173,0,
+67,64,8,96,3,196,7,164,46,136,158,129,207,136,58,160,159,0,50,224,
+17,1,2,64,75,51,64,116,128,12,230,24,1,109,3,224,23,0,224,24,
+0,224,93,0,125,45,224,99,6,224,86,4,233,39,0,224,142,13,64,215,
+224,47,5,224,24,2,0,53,225,63,1,193,1,133,204,64,6,214,254,165,
+72,75,217,129,85,65,15,105,244,0,56,100,21,224,187,0,128,131,67,13,
+128,17,96,104,224,91,0,96,86,198,12,114,135,227,30,9,164,215,192,31,
+107,103,0,50,76,93,224,24,0,229,181,7,78,73,64,0,0,58,70,151,
+132,138,96,36,205,152,2,95,53,51,70,214,135,250,2,50,49,53,138,45,
+100,119,96,19,233,186,0,172,125,96,14,115,18,128,66,224,63,2,5,95,
+51,51,57,32,35,74,161,110,200,234,235,0,224,10,1,0,58,96,172,230,
+237,4,230,79,14,131,53,254,139,1,124,179,102,20,66,101,121,113,227,224,
+2,160,27,97,22,160,49,180,242,230,32,6,0,53,247,122,1,224,119,13,
+160,229,231,21,2,225,84,10,114,35,128,0,109,89,0,58,71,253,99,16,
+69,203,2,95,54,49,103,216,64,80,64,19,229,200,5,133,187,0,58,96,
+35,104,85,85,53,0,53,122,229,128,10,117,64,160,10,224,21,1,71,252,
+192,10,224,32,0,0,54,90,142,1,95,54,103,205,64,0,0,58,96,91,
+96,85,0,51,64,30,120,206,1,54,49,110,119,64,36,138,5,224,142,0,
+1,51,54,161,173,230,91,4,160,58,105,103,96,243,64,20,236,182,3,224,
+43,9,159,41,224,43,7,161,146,224,25,1,224,18,1,0,54,170,172,0,
+54,167,166,64,159,245,62,1,0,90,225,245,0,156,88,0,58,96,38,224,
+188,6,97,10,1,51,48,64,193,100,251,96,11,131,194,67,114,224,40,5,
+224,55,11,141,98,128,10,96,156,224,217,5,0,55,226,202,0,224,196,7,
+207,118,229,37,3,160,77,90,197,227,54,0,224,68,6,224,66,2,237,192,
+0,0,58,97,59,225,150,7,64,145,65,210,224,199,5,225,173,4,224,74,
+12,214,22,224,74,6,64,142,224,74,6,0,50,104,0,224,18,1,128,94,
+224,233,8,225,171,2,1,95,54,163,215,96,105,227,196,1,65,171,0,80,
+98,95,210,43,1,80,32,180,66,1,64,58,96,58,225,183,7,0,57,110,
+79,113,105,1,95,54,91,190,225,73,6,121,178,225,141,7,1,57,50,224,
+53,4,0,54,96,53,253,181,12,1,95,39,234,84,3,224,205,10,107,1,
+202,204,0,58,99,66,192,183,64,19,128,183,131,70,82,22,1,95,49,73,
+203,1,95,54,93,113,129,52,224,185,1,1,95,51,98,191,0,58,96,144,
+144,245,0,51,64,58,245,119,6,64,35,224,18,6,65,82,244,242,7,65,
+95,231,211,5,231,152,2,233,66,2,224,10,2,122,54,224,66,1,64,20,
+224,29,1,224,75,4,233,6,2,233,141,4,224,151,6,72,129,245,119,6,
+129,20,192,50,224,60,2,224,39,6,67,133,224,39,12,65,31,178,227,225,
+79,1,0,53,101,74,225,79,3,121,5,126,100,0,58,97,92,225,127,7,
+142,248,69,66,0,58,96,38,211,51,71,203,2,95,55,53,64,9,0,54,
+74,118,65,167,1,67,32,224,17,1,1,64,35,122,140,0,58,96,58,225,
+164,17,96,249,233,140,14,224,244,3,233,56,14,224,34,2,0,58,96,171,
+160,190,66,220,82,33,1,35,49,123,98,1,95,53,77,244,64,6,0,57,
+96,199,131,52,224,199,11,97,31,224,199,5,0,49,114,168,0,58,96,59,
+224,200,2,226,51,5,224,146,11,0,58,96,117,224,251,22,224,18,5,65,
+135,248,43,11,226,83,25,224,10,13,226,44,31,0,58,98,24,228,51,6,
+94,101,0,53,108,224,161,82,99,249,138,219,0,79,246,76,2,1,46,46,
+67,251,224,17,3,1,58,58,128,17,2,79,32,35,84,132,71,251,96,12,
+92,145,224,12,0,0,49,73,204,128,13,224,57,1,1,60,45,224,75,7,
+1,45,62,224,75,1,224,48,0,96,62,0,54,224,62,9,0,61,96,44,
+200,107,128,0,229,184,5,0,53,132,232,224,20,7,101,101,0,58,103,228,
+196,150,64,248,68,150,96,49,161,197,228,250,11,22,33,64,35,36,37,38,
+63,43,46,47,60,61,62,63,92,92,92,94,92,124,58,45,126,64,136,0,
+58,97,62,142,88,225,88,2,99,84,137,103,0,82,79,39,97,245,240,22,
+3,160,148,142,128,229,78,5,229,67,1,65,159,224,91,10,134,171,144,138,
+239,213,2,118,175,235,147,1,66,20,105,220,192,31,224,161,10,128,24,70,
+106,98,127,230,185,4,224,151,17,239,234,1,240,55,0,0,58,96,202,230,
+145,9,1,95,53,126,196,224,72,4,74,160,65,141,2,67,32,79,224,62,
+2,198,249,1,80,32,186,144,64,20,131,197,225,150,15,8,44,59,40,41,
+91,93,123,125,96,129,136,190,226,231,166,7,114,36,2,75,32,89,225,1,
+6,0,89,96,238,72,181,0,64,234,72,1,224,58,6,97,158,231,225,5,
+65,54,65,104,231,89,2,0,35,83,72,107,54,1,95,52,72,173,161,238,
+234,158,7,224,91,15,193,23,152,74,225,91,4,224,18,1,0,53,94,229,
+193,175,146,14,132,66,129,220,204,72,249,103,0,1,50,48,73,156,135,247,
+97,0,225,131,10,95,244,241,187,0,162,54,96,6,0,95,75,7,225,236,
+1,0,95,113,19,65,96,231,209,2,132,103,64,20,228,85,9,97,117,65,
+246,225,58,5,64,194,0,85,96,179,150,246,128,137,130,102,2,53,50,53,
+64,4,176,243,101,219,129,84,224,201,5,203,43,224,109,12,121,54,227,243,
+4,0,56,136,241,64,0,0,58,107,254,192,189,67,65,128,189,175,111,225,
+225,10,233,61,7,131,170,224,95,2,0,67,124,10,206,131,226,248,4,235,
+25,5,226,51,11,166,133,224,20,6,128,243,224,20,5,0,49,114,165,224,
+21,8,136,213,224,21,8,102,75,224,21,8,116,149,224,21,8,224,109,11,
+96,230,226,224,8,128,85,225,17,4,129,115,194,235,225,21,0,193,163,224,
+17,3,130,127,224,17,2,96,100,224,17,4,74,248,224,35,6,224,34,8,
+130,143,224,17,3,139,56,224,17,3,224,88,8,134,252,224,16,2,142,121,
+225,163,8,77,111,107,190,224,95,8,229,21,5,108,122,219,240,128,18,226,
+190,5,168,89,0,53,112,30,2,95,50,49,79,36,111,245,1,51,49,87,
+102,96,40,0,56,203,241,227,147,9,68,142,80,90,182,232,224,171,13,68,
+62,132,213,226,102,23,117,134,224,20,8,137,201,224,20,6,226,35,11,93,
+106,224,20,9,226,55,11,110,32,224,20,7,94,230,224,20,9,65,234,224,
+20,8,226,118,11,95,153,224,20,9,224,209,11,0,55,224,209,11,0,55,
+224,209,11,106,44,224,20,8,224,209,11,112,139,224,20,7,97,185,224,20,
+8,224,209,11,0,56,224,209,11,0,56,224,209,11,101,218,224,20,8,224,
+209,11,68,194,224,20,9,224,209,11,69,170,224,20,9,224,209,11,105,23,
+224,20,8,224,209,11,228,26,12,98,166,224,20,8,228,47,11,105,149,228,
+47,10,227,249,8,184,9,224,17,2,176,247,224,17,3,227,215,8,126,142,
+224,17,5,145,189,224,17,3,134,15,224,17,3,228,155,8,166,246,224,17,
+3,228,84,8,72,52,224,17,6,228,138,9,228,192,9,224,179,8,135,88,
+224,17,4,224,179,8,81,190,224,17,6,224,179,8,229,26,10,229,97,26,
+229,62,9,224,178,8,229,61,15,224,16,1,224,175,8,224,174,8,224,173,
+8,225,96,9,224,16,7,224,170,8,197,47,5,95,53,56,50,32,79,179,
+133,233,95,1,1,56,51,236,32,2,2,83,79,72,112,168,224,79,7,224,
+47,17,224,46,8,128,178,0,79,224,98,16,2,78,85,76,224,51,7,96,
+161,224,49,17,2,83,84,88,224,49,7,96,245,224,49,17,0,69,224,49,
+9,97,56,224,49,18,1,79,84,224,49,7,96,200,224,49,18,1,78,81,
+224,49,7,97,190,224,49,17,2,65,67,75,224,49,7,98,1,224,49,17,
+1,66,69,225,43,8,98,68,224,49,18,0,83,224,48,7,98,134,224,48,
+17,0,72,224,247,8,98,200,224,48,17,1,76,70,225,242,8,225,191,22,
+0,86,224,98,8,131,79,224,49,17,0,70,224,99,9,225,241,22,1,67,
+82,224,49,8,225,241,22,1,83,73,224,49,8,225,191,22,2,68,76,69,
+224,50,8,225,192,22,2,68,67,49,224,50,8,225,193,22,2,68,67,50,
+224,50,8,225,195,22,2,68,67,51,224,50,8,225,197,22,2,68,67,52,
+224,50,7,133,134,224,50,17,1,78,65,226,190,8,133,203,225,99,18,1,
+89,78,224,50,8,227,186,24,0,66,224,50,8,225,201,22,1,67,65,224,
+101,9,227,188,23,0,77,224,49,8,225,252,22,1,83,85,224,151,9,225,
+252,22,2,69,83,67,224,50,8,225,252,22,0,70,227,190,8,135,172,224,
+49,17,0,71,224,49,9,225,250,22,0,82,224,49,8,136,52,224,49,17,
+0,85,224,49,9,225,248,23,0,80,224,49,8,225,247,22,0,68,228,234,
+9,0,49,129,45,242,174,5,224,0,17,238,95,11,245,236,0,111,64,242,
+13,13,1,83,39,253,46,1,123,196,190,109,224,75,0,144,36,125,212,0,
+85,210,143,224,19,0,187,247,112,67,233,177,2,201,172,143,162,242,61,14,
+82,59,64,0,80,170,0,58,65,14,64,161,0,80,160,98,147,0,125,81,
+0,90,160,4,112,95,145,117,71,203,192,217,146,60,79,116,109,110,76,56,
+0,95,149,221,3,49,49,52,49,101,107,3,95,51,54,48,225,108,3,30,
+97,116,97,46,67,104,97,114,46,99,104,114,58,32,105,110,118,97,108,105,
+100,32,99,111,100,101,112,111,105,110,116,97,137,77,117,0,48,111,231,146,
+94,2,95,50,50,84,223,1,49,48,144,2,128,9,224,98,1,0,58,109,
+153,214,55,237,243,2,249,195,13,253,225,26,0,58,110,46,124,56,83,12,
+64,210,3,95,53,53,53,64,5,77,154,2,95,53,53,96,5,77,145,75,
+47,107,51,1,56,48,238,62,0,0,53,108,216,1,95,53,108,202,224,13,
+1,65,156,0,73,64,214,64,102,96,214,1,49,54,64,4,0,55,125,139,
+181,142,0,58,96,39,224,29,0,0,51,82,165,224,29,4,0,54,224,59,
+7,1,95,49,64,147,0,58,96,102,64,25,0,54,78,171,77,237,1,95,
+53,77,222,1,95,53,129,150,77,192,1,95,53,77,177,1,95,53,77,162,
+2,95,55,54,224,176,0,1,55,55,192,10,0,58,96,6,83,189,158,48,
+224,5,2,160,78,145,57,162,224,128,6,0,58,96,80,224,52,27,224,59,
+2,0,58,96,139,224,52,20,224,98,2,160,59,0,58,96,198,224,52,27,
+224,112,2,0,58,97,1,116,145,0,66,98,221,191,189,87,126,0,64,96,
+19,211,136,191,209,1,95,53,163,72,124,197,160,35,131,111,67,134,0,52,
+101,226,0,67,64,9,139,88,1,64,58,96,123,97,124,65,84,79,148,1,
+95,53,79,133,0,58,97,136,223,224,0,51,111,47,128,31,0,58,96,31,
+192,148,243,198,2,228,10,0,116,23,98,239,99,220,0,53,120,244,192,13,
+1,51,50,67,239,226,175,1,64,82,2,10,65,32,84,24,226,26,2,96,
+25,218,107,96,84,99,208,0,66,66,242,226,64,7,196,23,160,4,1,83,
+32,68,27,224,48,32,193,90,132,59,246,216,5,224,208,1,1,67,39,69,
+28,244,181,4,224,238,3,64,97,65,31,90,225,129,96,0,53,67,169,178,
+155,2,64,64,75,100,121,160,60,160,108,128,111,164,235,160,114,215,97,64,
+88,192,25,160,121,224,115,22,224,113,5,224,111,3,224,49,17,0,54,133,
+109,224,0,2,0,58,100,37,193,245,1,53,54,68,25,0,52,96,75,160,
+16,4,49,32,95,50,53,67,137,2,51,53,50,68,59,0,50,68,91,132,
+219,5,53,54,50,32,95,51,69,168,205,62,66,56,96,44,224,155,4,0,
+58,96,119,129,242,2,52,32,75,64,131,0,58,64,59,128,118,0,89,193,
+111,98,177,225,174,1,230,78,3,192,21,162,217,224,29,0,160,165,248,54,
+2,0,58,64,177,128,88,69,43,229,208,4,16,102,111,108,100,108,49,58,
+32,101,109,112,116,121,32,108,105,115,197,194,1,53,53,99,122,0,54,223,
+7,160,146,0,83,226,1,4,64,91,64,39,133,188,160,134,0,85,245,201,
+6,98,229,97,13,248,123,1,192,189,119,80,163,157,133,255,64,182,1,95,
+50,138,82,228,31,0,97,59,69,237,163,48,130,32,5,95,57,56,32,95,
+49,134,23,66,109,224,13,1,96,151,188,35,228,99,3,227,137,2,133,154,
+64,83,99,231,66,13,164,0,70,14,68,91,0,80,187,198,214,108,64,15,
+64,9,200,28,2,95,51,50,91,200,96,77,0,58,96,6,96,110,66,33,
+166,113,101,215,66,27,99,192,0,73,195,49,135,157,227,125,4,128,113,230,
+51,2,96,153,228,7,1,128,209,165,218,131,28,64,59,163,69,250,139,2,
+68,255,193,157,97,92,229,44,3,226,255,0,192,86,194,215,184,216,129,39,
+131,146,128,15,133,35,130,246,1,52,57,224,155,0,99,219,128,57,121,45,
+162,149,161,25,224,46,1,224,102,0,160,44,228,59,3,224,184,11,224,134,
+15,229,172,0,224,137,8,192,90,224,134,27,224,181,2,225,11,3,224,73,
+0,161,11,98,27,0,55,227,35,2,7,92,34,46,47,108,105,98,47,72,
+252,7,47,73,110,116,101,103,101,114,96,7,12,114,110,97,108,46,104,115,
+92,34,44,53,52,58,141,175,0,58,97,251,104,122,0,53,118,220,99,69,
+64,117,163,35,97,150,128,238,254,68,0,98,253,96,23,202,9,67,51,164,
+64,225,238,0,64,41,228,17,4,132,223,128,5,227,216,8,19,105,109,112,
+111,115,115,105,98,108,101,58,32,120,115,32,62,61,32,121,115,96,161,0,
+75,68,160,224,223,39,3,57,48,58,54,132,24,0,64,97,147,130,85,128,
+189,226,90,0,227,194,3,2,85,32,65,129,145,227,193,1,0,49,250,248,
+0,228,187,0,199,250,71,39,229,26,0,196,200,224,80,12,98,204,224,80,
+8,97,180,96,69,97,129,196,237,99,108,102,57,69,16,0,57,87,207,140,
+31,131,248,131,255,180,68,164,82,224,37,1,64,106,224,14,3,228,109,1,
+1,95,50,180,102,0,58,96,114,163,245,65,190,0,85,231,102,22,166,124,
+98,108,0,56,229,33,11,1,64,58,66,176,164,183,1,95,51,70,35,167,
+12,66,47,227,27,3,129,116,200,98,0,52,201,107,96,169,128,120,202,88,
+0,52,165,8,228,214,1,0,53,75,46,66,7,169,11,195,56,105,29,105,
+51,193,127,169,92,131,139,163,169,68,200,157,35,139,52,0,52,96,210,96,
+17,201,82,0,58,96,7,202,205,96,223,1,95,49,106,211,0,49,137,229,
+106,211,0,49,106,211,0,49,106,211,106,205,96,73,138,205,96,10,0,58,
+96,6,3,10,65,32,75,65,252,0,58,96,155,64,13,2,50,32,58,96,
+185,96,25,0,75,96,25,195,116,0,52,227,116,1,67,206,227,116,2,164,
+99,130,15,230,160,9,162,126,230,162,8,226,216,15,97,160,64,110,162,131,
+231,143,1,100,172,226,208,3,227,48,46,224,91,1,227,48,9,224,95,4,
+227,48,31,224,80,2,162,131,194,114,227,48,9,131,30,227,29,0,101,45,
+231,110,2,224,11,3,0,58,96,71,1,10,65,77,221,0,58,96,147,143,
+46,2,53,51,55,65,104,64,76,109,159,1,64,58,77,185,193,146,111,59,
+96,87,232,84,0,224,200,1,72,19,98,116,1,95,51,125,178,0,64,66,
+254,161,72,198,53,163,23,225,75,0,160,7,0,83,96,167,225,73,1,104,
+23,128,240,101,240,0,53,97,127,0,80,193,31,225,15,0,224,8,0,143,
+10,127,53,97,215,2,51,51,57,142,183,64,191,130,213,240,11,10,196,62,
+238,190,0,160,127,233,203,1,162,128,238,206,4,233,198,3,200,28,169,71,
+195,130,97,231,110,228,99,57,240,87,0,224,69,14,129,80,240,54,12,160,
+27,112,59,64,92,163,221,2,66,32,95,76,239,234,47,2,67,147,131,41,
+241,115,0,253,110,6,205,12,164,119,240,243,5,0,58,111,184,144,88,225,
+175,0,235,238,1,167,232,163,125,225,111,4,65,144,129,111,135,137,224,62,
+48,129,241,224,62,48,185,163,194,97,129,141,226,121,2,224,60,21,165,225,
+1,52,53,242,165,3,15,118,97,108,68,105,103,58,32,66,97,100,32,98,
+97,115,101,135,76,0,83,98,226,88,249,64,9,99,186,103,10,94,203,0,
+49,74,81,0,35,98,254,190,221,96,17,87,53,97,29,68,192,224,49,11,
+190,103,224,49,3,126,17,74,175,68,47,67,5,1,48,57,132,18,67,197,
+97,181,230,250,0,134,234,95,53,128,5,128,78,250,182,0,224,61,39,131,
+189,224,61,12,224,48,13,70,172,162,132,1,53,51,98,79,101,168,1,53,
+51,81,177,224,192,9,224,68,23,225,36,15,96,33,225,36,5,139,228,224,
+99,41,132,38,0,58,67,164,164,219,224,109,27,76,21,64,52,134,197,96,
+227,98,7,224,127,39,0,58,97,37,70,250,227,240,6,254,29,8,128,131,
+224,20,5,80,118,224,20,8,147,149,224,21,7,255,152,12,0,49,102,30,
+254,115,7,127,6,254,115,9,253,101,10,224,17,8,128,212,224,16,19,132,
+25,224,16,7,1,58,53,86,38,207,178,229,156,7,227,189,5,181,181,230,
+64,1,134,92,128,11,134,97,144,134,166,109,224,35,5,236,181,3,231,206,
+2,240,102,6,0,39,68,19,224,21,2,224,66,0,100,75,227,58,2,189,
+117,230,194,0,236,19,0,70,216,64,66,137,105,241,204,2,96,4,66,23,
+229,155,0,0,89,160,93,102,252,97,135,70,42,134,179,97,15,247,57,1,
+134,10,146,179,226,89,3,192,134,225,87,1,128,119,66,136,1,52,57,105,
+172,65,83,0,56,129,176,224,23,2,193,109,96,25,1,95,52,80,12,64,
+0,70,146,64,73,160,48,96,139,0,58,94,63,200,27,66,229,226,51,2,
+64,28,208,105,230,186,8,129,144,0,82,215,65,230,108,3,0,58,96,72,
+226,254,7,0,48,131,56,230,188,14,235,44,1,224,49,0,152,47,1,58,
+53,64,24,119,73,93,95,117,235,64,25,64,94,2,52,54,57,64,45,118,
+55,99,132,151,77,1,52,55,81,211,160,86,107,13,96,11,0,58,96,6,
+132,13,72,255,0,53,90,86,64,146,1,51,56,64,247,0,52,86,5,151,
+187,90,61,179,248,178,4,64,42,139,255,104,57,236,191,0,0,53,67,107,
+233,212,1,64,17,108,134,103,193,0,53,91,29,232,194,0,107,44,71,207,
+195,16,0,52,64,118,103,208,96,182,64,29,227,46,2,97,200,96,29,2,
+52,54,56,64,44,98,12,0,58,96,42,161,174,3,49,53,32,35,106,45,
+232,228,1,65,50,1,95,53,67,194,192,138,224,40,0,152,56,0,56,97,
+49,162,49,0,58,96,190,225,223,3,77,33,0,53,104,104,105,35,146,7,
+75,154,236,122,2,2,32,95,52,140,143,96,90,64,155,64,79,1,95,53,
+157,212,96,86,64,120,129,64,0,51,76,24,96,18,129,197,2,95,52,57,
+87,253,66,13,0,58,96,104,128,125,97,11,0,90,108,235,0,48,162,67,
+64,196,228,59,5,128,156,179,243,246,169,1,228,230,3,96,253,105,117,0,
+58,64,245,224,113,2,66,31,0,58,96,27,128,19,2,48,32,95,64,186,
+82,98,64,23,165,175,160,157,0,49,96,43,247,74,0,1,95,52,69,61,
+1,95,53,71,49,67,53,1,58,53,69,141,128,224,0,50,97,252,0,58,
+96,27,192,203,64,44,0,52,69,219,1,58,53,70,47,235,197,0,164,108,
+128,8,75,93,2,58,53,48,129,22,129,242,0,53,66,252,114,166,209,162,
+0,48,118,213,0,48,182,213,128,239,100,183,0,89,116,55,66,90,64,77,
+68,192,137,72,212,106,233,20,4,1,95,51,109,230,0,51,67,46,2,51,
+55,49,118,133,204,113,128,36,234,103,2,224,239,0,226,85,6,96,208,196,
+183,65,138,161,43,97,143,163,183,96,181,64,182,100,18,2,53,48,52,233,
+108,2,19,80,114,101,108,117,100,101,46,114,101,97,100,58,32,110,111,32,
+112,97,114,201,114,150,73,3,95,53,48,53,175,2,224,57,18,8,97,109,
+98,105,103,117,111,117,115,224,64,3,65,36,130,47,66,68,64,13,129,252,
+101,153,128,16,129,249,109,14,64,158,228,158,10,229,178,1,150,243,166,35,
+226,243,6,235,198,11,155,250,229,167,7,0,58,97,28,226,110,0,0,52,
+72,94,0,58,96,49,224,19,2,129,224,226,60,2,68,139,66,58,65,94,
+226,99,0,104,205,97,129,96,183,163,115,228,70,2,64,166,251,170,5,141,
+158,3,95,52,56,51,225,194,1,1,56,53,192,11,0,58,96,6,64,76,
+96,179,0,50,97,218,163,133,196,37,140,189,1,95,49,224,64,1,227,237,
+0,2,64,95,50,98,7,133,99,0,57,224,86,3,129,134,246,65,1,0,
+66,134,167,98,160,224,18,7,1,66,39,180,26,129,47,64,72,224,147,1,
+0,49,128,147,69,7,71,115,160,135,134,108,96,135,113,79,128,135,128,10,
+96,251,64,10,0,58,96,6,225,42,0,0,52,193,42,101,83,132,203,225,
+30,5,96,85,161,30,101,241,96,6,64,64,0,51,229,172,3,173,150,0,
+55,160,158,64,64,97,41,100,226,96,6,224,50,3,96,109,195,158,0,67,
+96,58,224,49,0,101,240,96,6,5,10,65,32,73,32,58,96,44,160,10,
+64,106,194,13,87,7,99,141,160,16,86,110,231,199,5,0,58,96,36,192,
+235,78,114,135,154,224,5,0,101,35,206,231,96,67,172,140,1,52,54,64,
+200,200,62,160,27,138,124,224,27,6,165,39,248,78,1,230,148,4,68,64,
+232,136,3,120,109,132,241,2,95,52,56,97,219,97,115,65,255,175,120,132,
+186,164,169,120,179,227,108,1,137,169,64,26,80,140,224,21,1,69,48,103,
+87,228,173,1,193,17,128,0,224,24,1,161,214,168,255,97,214,96,11,0,
+58,96,6,129,74,167,245,0,56,83,142,64,34,64,22,102,176,64,14,253,
+175,1,226,172,0,131,148,255,214,1,97,18,161,52,66,27,1,95,52,89,
+150,64,34,195,244,104,157,65,144,128,43,247,69,7,234,183,1,224,19,2,
+128,115,214,87,224,32,2,224,9,10,65,59,150,163,225,213,0,232,47,7,
+133,231,101,239,65,135,97,116,192,17,131,137,1,95,52,113,138,97,242,224,
+55,7,224,177,7,129,163,226,90,0,162,84,64,41,192,83,224,84,5,224,
+82,5,224,81,11,224,91,4,224,82,9,224,181,1,224,56,17,226,225,5,
+224,57,18,225,108,9,224,9,2,101,243,160,63,193,246,160,230,224,236,16,
+96,98,227,54,2,194,242,139,111,224,113,1,160,218,97,155,98,173,185,23,
+64,125,2,95,52,55,68,192,0,55,102,92,162,66,96,0,224,96,0,113,
+176,64,122,200,243,224,147,25,226,150,5,224,96,2,131,154,177,117,225,1,
+0,161,4,224,13,22,99,150,130,112,97,96,224,237,0,99,245,128,13,224,
+253,1,227,241,0,98,144,173,239,96,17,157,165,225,15,9,224,244,4,64,
+97,224,96,22,130,105,224,95,2,162,122,128,94,228,23,3,194,3,226,190,
+6,225,67,29,225,216,24,160,105,225,206,21,226,190,21,192,9,195,208,226,
+240,25,224,49,11,224,176,2,228,6,9,225,89,8,229,234,0,96,181,224,
+43,4,224,45,6,225,52,0,224,137,18,96,135,226,27,5,193,59,224,138,
+21,250,245,14,27,84,101,120,116,47,80,97,114,115,101,114,67,111,109,98,
+105,110,97,116,111,114,115,47,82,101,97,100,80,154,252,5,49,52,49,58,
+49,48,250,254,0,64,0,141,248,128,103,141,248,128,11,0,58,96,6,113,
+209,144,61,132,152,64,47,137,58,238,2,4,181,182,0,58,64,64,230,19,
+0,64,170,0,58,96,46,192,70,66,52,70,139,101,222,64,55,96,71,173,
+113,76,187,160,21,198,148,2,95,52,55,103,203,88,215,192,85,108,57,96,
+23,128,17,102,138,64,53,102,62,1,55,49,135,27,197,82,98,76,107,174,
+130,226,248,84,2,64,158,206,133,96,106,72,30,98,132,3,95,52,55,52,
+192,11,0,58,96,6,198,215,162,193,128,202,119,177,130,213,0,66,115,18,
+100,41,64,80,67,81,89,240,64,15,130,59,1,95,50,77,105,248,179,2,
+96,248,85,113,224,35,4,224,51,20,247,192,2,130,45,209,190,71,242,236,
+201,5,164,170,128,170,159,64,96,164,1,52,55,224,250,0,228,173,0,163,
+151,224,43,5,224,214,0,118,31,96,139,224,223,37,224,224,49,195,80,227,
+50,4,242,193,0,210,205,136,243,224,250,2,229,160,1,224,202,2,64,5,
+162,119,224,254,9,128,72,225,2,3,224,56,13,225,11,122,224,170,5,119,
+199,132,201,234,1,1,235,52,1,97,5,101,84,166,36,224,192,1,81,146,
+160,99,224,147,48,101,232,167,35,224,7,2,224,141,117,224,104,10,224,103,
+76,96,89,128,199,224,240,119,64,16,1,54,48,230,7,2,31,115,116,105,
+109,101,115,58,32,112,111,115,105,116,105,118,101,32,109,117,108,116,105,112,
+108,105,101,114,32,101,120,112,101,3,99,116,101,100,101,251,0,58,68,223,
+229,219,4,226,220,31,128,146,96,0,128,213,1,95,50,93,16,224,204,24,
+224,55,0,224,195,4,224,54,39,98,103,0,58,99,196,108,142,109,49,173,
+28,0,83,157,121,175,41,141,14,194,154,96,52,244,38,1,178,72,0,58,
+70,44,166,68,0,50,96,14,208,80,128,1,196,17,224,11,0,224,59,2,
+64,81,86,154,240,106,0,64,209,0,58,103,32,174,115,1,54,53,103,49,
+80,169,78,22,128,22,223,59,175,201,0,58,96,31,70,91,1,32,58,96,
+48,207,198,0,54,65,83,172,16,174,70,143,201,141,156,111,201,103,112,143,
+201,160,10,206,202,64,87,175,201,0,51,164,218,128,5,134,191,213,135,104,
+109,70,226,239,160,2,64,120,233,198,7,224,28,7,238,216,11,140,185,224,
+65,9,175,255,96,24,65,34,161,179,159,36,175,214,96,49,0,58,96,6,
+224,178,0,137,139,112,120,67,84,227,51,0,192,75,65,61,199,187,133,177,
+128,46,96,33,0,49,78,186,224,34,4,0,58,96,125,128,93,1,95,51,
+72,8,128,121,161,132,130,6,0,80,65,132,130,2,0,90,160,1,120,249,
+1,64,58,96,199,211,24,224,4,3,158,131,128,205,0,58,97,4,1,10,
+65,194,14,0,58,97,37,96,76,224,55,6,224,85,0,129,252,224,85,8,
+224,34,3,232,123,1,235,130,2,237,186,2,64,240,255,53,0,97,114,139,
+193,131,215,160,14,0,85,164,137,160,38,231,63,3,169,105,0,67,129,146,
+98,115,128,64,113,47,129,153,64,17,97,59,3,54,48,32,58,117,106,161,
+45,65,72,146,182,212,0,135,103,97,227,0,90,180,1,185,71,231,158,1,
+131,70,168,158,244,46,4,251,121,2,92,78,130,71,133,85,225,26,1,96,
+214,64,85,1,95,52,92,156,128,0,224,38,10,224,123,2,64,195,193,227,
+229,51,6,15,105,110,105,116,58,32,101,109,112,116,121,32,108,105,115,116,
+101,31,68,77,225,84,0,224,122,4,193,48,224,123,1,0,58,96,9,97,
+198,232,58,0,2,115,101,113,192,221,128,19,224,16,2,228,75,11,1,64,
+58,96,170,133,144,86,109,0,56,161,6,246,125,5,224,181,1,3,35,108,
+105,110,181,196,64,24,69,54,1,53,50,224,213,2,8,123,45,35,32,76,
+73,78,69,32,96,35,65,49,106,253,66,31,0,51,139,108,0,51,66,244,
+1,95,52,133,94,224,56,1,3,32,35,45,125,128,87,1,58,52,93,151,
+128,215,225,12,1,67,20,181,51,235,68,1,64,86,134,169,131,109,2,95,
+52,52,68,138,149,251,128,15,0,54,192,15,0,58,96,41,96,86,242,213,
+0,225,104,1,207,242,98,71,242,153,0,0,58,64,63,225,29,0,0,49,
+67,86,1,95,52,70,118,129,228,1,52,32,224,192,3,9,94,41,94,42,
+94,43,94,44,94,45,166,234,64,118,224,111,7,130,24,230,43,1,64,85,
+155,73,249,20,2,96,60,242,211,0,128,26,1,52,52,111,39,0,51,88,
+92,1,95,50,70,136,0,58,96,137,67,30,1,54,54,130,132,130,230,234,
+62,0,2,67,32,60,94,32,97,12,224,26,12,90,192,224,26,15,111,197,
+224,26,13,126,79,227,122,0,224,26,4,160,221,0,85,65,146,64,226,68,
+44,1,61,61,192,25,160,254,99,224,223,250,224,44,12,161,17,224,44,8,
+224,117,14,97,52,224,72,12,134,191,224,117,30,134,225,224,117,10,225,7,
+14,98,58,224,145,13,184,124,224,100,10,109,229,224,145,31,103,93,225,7,
+33,98,180,224,72,12,151,134,224,117,30,98,104,225,7,12,226,97,14,194,
+16,225,35,10,100,171,224,173,13,108,97,224,128,12,112,17,224,173,31,64,
+97,225,35,33,125,238,224,72,12,96,25,224,117,31,96,242,226,43,16,96,
+118,225,34,5,195,78,224,145,10,226,189,16,96,25,224,145,32,226,189,16,
+224,45,12,226,134,15,225,200,15,96,164,225,253,13,97,199,224,26,13,98,
+144,224,245,13,165,119,224,154,10,226,244,15,224,44,12,226,216,15,224,117,
+14,100,240,224,72,12,226,244,15,224,44,12,226,160,15,225,7,14,98,115,
+224,144,13,181,10,224,99,10,226,215,15,224,44,11,226,186,15,224,116,13,
+96,29,224,70,11,226,212,15,224,43,11,226,155,15,225,3,15,194,10,224,
+25,9,198,159,224,168,9,182,73,224,124,9,226,235,15,224,43,11,226,233,
+16,224,114,12,226,150,16,226,149,35,226,148,16,228,28,14,225,0,16,226,
+174,16,226,173,36,228,24,35,229,77,16,111,10,0,50,78,9,104,136,0,
+58,96,6,174,113,5,52,48,32,64,95,54,74,46,160,26,138,242,239,33,
+2,0,85,233,108,0,128,5,64,0,64,119,192,239,114,86,128,136,0,64,
+233,150,1,128,17,96,32,252,77,5,173,149,245,67,1,0,58,96,131,105,
+168,64,182,234,49,0,3,95,52,51,56,96,224,138,134,96,61,1,35,51,
+208,200,0,58,106,147,233,162,6,235,165,5,5,102,111,108,100,114,49,235,
+167,8,65,60,129,197,64,140,160,14,141,147,224,10,3,64,121,192,105,202,
+211,105,209,0,49,80,110,65,106,1,52,51,216,177,126,36,136,83,236,255,
+0,0,51,202,177,0,95,79,211,72,160,0,58,96,48,207,252,206,45,86,
+138,192,103,253,26,0,224,29,0,224,31,2,64,32,138,88,111,93,1,95,
+52,97,11,142,152,3,58,52,51,51,138,79,2,51,54,51,74,151,65,213,
+98,1,0,58,96,38,206,48,0,85,96,16,129,226,6,95,49,51,54,32,
+75,32,130,68,0,66,122,63,175,182,0,51,134,242,161,13,98,29,1,49,
+54,225,88,2,4,32,32,97,116,32,76,76,0,32,216,20,192,66,128,63,
+1,49,51,76,127,133,176,129,31,224,66,9,2,99,111,108,192,61,130,76,
+224,57,8,66,75,125,247,224,61,9,13,94,42,32,32,32,32,117,115,101,
+100,32,98,121,32,160,71,128,60,1,52,51,237,222,0,128,20,0,52,80,
+235,96,20,2,95,49,52,81,38,96,11,0,58,96,6,141,219,98,114,226,
+104,1,162,168,165,197,0,52,139,23,0,58,96,7,160,47,65,87,1,75,
+50,204,17,1,58,52,64,15,111,178,97,94,74,184,96,40,0,73,89,162,
+0,95,249,117,7,31,99,112,112,104,115,115,114,99,47,109,97,108,99,111,
+108,109,45,119,97,108,108,97,99,101,45,117,110,105,118,101,114,115,1,101,
+47,96,33,6,45,49,46,50,48,46,57,128,12,153,135,3,55,57,58,49,
+205,102,66,79,96,100,0,75,195,233,64,8,192,143,130,71,3,75,32,58,
+52,66,148,120,226,113,253,74,30,1,58,52,66,160,96,19,0,56,127,92,
+73,60,1,95,52,137,184,1,51,50,65,33,138,69,1,51,51,68,49,192,
+11,76,198,96,11,0,58,96,6,194,63,131,118,225,156,4,10,69,120,105,
+116,83,117,99,99,101,115,115,128,173,161,223,0,52,73,238,79,175,3,56,
+50,32,95,89,155,231,66,1,225,225,9,64,68,5,70,97,105,108,117,114,
+174,177,224,36,1,0,79,132,5,148,223,3,95,49,51,56,162,49,168,205,
+225,244,1,202,139,96,210,64,11,0,58,96,6,115,57,102,202,193,233,68,
+127,178,51,160,16,128,73,0,58,96,178,97,42,0,57,65,104,2,51,53,
+52,64,107,0,56,224,167,2,6,83,121,115,116,101,109,46,64,174,64,167,
+224,192,5,2,67,111,100,128,189,96,171,0,58,97,105,180,42,2,83,32,
+95,65,134,145,96,78,57,0,58,65,161,64,29,224,66,1,130,1,0,34,
+96,27,130,83,1,95,52,114,165,0,48,96,18,130,1,70,123,3,39,32,
+95,48,228,127,0,0,52,73,132,78,226,73,95,129,97,0,58,64,54,128,
+121,2,95,51,57,228,191,1,64,33,0,58,96,47,110,173,101,20,134,226,
+132,233,78,187,84,175,64,78,1,51,57,65,98,5,50,48,57,53,49,48,
+64,61,4,35,53,53,50,57,100,38,99,57,1,52,48,112,25,0,48,99,
+185,70,145,1,95,52,65,142,1,95,52,99,203,224,211,1,17,104,80,117,
+116,67,104,97,114,58,32,115,117,114,114,111,103,97,116,161,223,1,95,51,
+160,141,130,156,1,80,32,105,214,0,73,96,18,245,132,1,96,105,99,144,
+251,88,1,224,9,5,99,191,0,52,64,246,1,95,50,96,41,118,17,0,
+51,142,195,128,6,0,58,96,154,224,81,0,64,1,149,181,164,240,192,14,
+224,11,2,192,8,209,120,64,95,97,143,3,48,56,32,58,96,145,96,13,
+84,101,79,228,0,58,64,23,227,99,3,0,48,113,253,0,48,104,251,131,
+99,64,38,195,99,192,11,67,99,96,11,0,58,96,6,227,99,1,115,26,
+128,1,102,155,104,113,246,177,1,224,5,0,97,182,161,148,64,11,64,174,
+99,161,108,142,128,19,96,31,131,54,0,52,97,201,227,121,6,0,58,229,
+150,1,230,13,2,224,36,15,193,27,229,194,0,67,90,130,57,0,51,86,
+215,65,125,224,72,28,128,162,192,185,209,96,224,171,3,106,107,224,94,10,
+230,94,12,0,40,196,122,224,122,7,0,79,131,221,249,29,0,192,118,228,
+53,0,129,164,132,53,96,11,0,58,96,6,231,48,1,67,68,64,78,0,
+85,254,157,1,236,42,1,224,18,6,109,16,224,19,7,64,84,242,176,0,
+160,19,97,159,236,95,6,69,34,0,85,244,117,4,5,116,101,114,114,117,
+112,217,144,224,28,4,14,114,101,115,111,117,114,99,101,32,118,97,110,105,
+115,104,192,34,224,35,4,89,233,1,111,117,201,5,224,110,7,65,95,224,
+45,3,20,117,110,115,117,112,112,111,114,116,101,100,32,111,112,101,114,97,
+116,105,111,110,224,120,9,12,104,97,114,100,119,97,114,101,32,102,97,117,
+108,192,91,224,243,8,69,80,224,243,7,68,25,224,132,7,73,59,224,243,
+5,14,97,112,112,114,111,112,114,105,97,116,101,32,116,121,112,164,46,224,
+35,5,12,118,97,108,105,100,32,97,114,103,117,109,101,110,192,131,224,34,
+3,3,102,97,105,108,225,18,0,224,115,7,69,34,224,44,3,4,112,114,
+111,116,111,72,159,4,101,114,114,111,114,224,111,9,0,115,101,243,224,29,
+3,224,240,9,225,247,10,225,246,10,225,245,10,225,244,7,21,117,110,115,
+97,116,105,115,102,105,101,100,32,99,111,110,115,116,114,97,105,110,116,167,
+89,224,40,4,0,115,91,176,224,147,2,224,210,4,13,101,114,109,105,115,
+115,105,111,110,32,100,101,110,105,225,10,15,226,2,7,6,105,108,108,101,
+103,97,108,225,254,19,9,101,110,100,32,111,102,32,102,105,108,161,153,224,
+247,8,225,230,10,225,229,7,226,188,0,5,101,120,104,97,117,115,226,224,
+21,3,98,117,115,121,225,201,14,224,86,6,10,100,111,101,115,32,110,111,
+116,32,101,120,235,252,0,224,31,3,6,97,108,114,101,97,100,121,128,30,
+161,82,128,0,196,11,174,128,100,11,150,136,64,6,196,11,2,95,51,53,
+75,135,101,69,107,211,247,82,8,5,72,97,110,100,108,101,132,140,0,67,
+170,95,228,129,8,128,94,64,68,0,58,96,6,232,112,27,3,73,79,46,
+69,193,235,224,28,1,6,73,79,69,120,99,101,112,225,169,0,168,119,70,
+125,7,10,65,32,94,112,117,116,98,70,174,218,213,3,57,57,32,79,64,
+6,64,147,3,95,52,48,48,160,148,0,58,103,204,250,147,3,64,26,183,
+212,153,47,134,135,230,145,2,167,43,237,31,4,1,51,57,151,137,236,28,
+0,232,168,4,166,141,4,51,57,52,32,95,150,204,72,101,0,54,65,85,
+0,57,101,234,237,205,6,3,66,97,100,32,129,78,1,32,109,201,87,96,
+37,0,57,174,231,0,58,64,207,104,201,121,80,249,250,3,120,122,192,151,
+169,232,0,51,104,189,104,188,1,51,57,87,152,237,195,1,128,76,167,193,
+3,57,55,32,58,96,32,73,155,2,112,50,112,64,13,0,54,128,26,87,
+187,0,39,74,74,224,5,4,219,99,111,152,204,46,171,155,224,6,12,224,
+42,2,64,15,171,207,224,42,29,160,28,224,49,10,224,42,15,224,49,10,
+224,42,22,224,49,3,176,72,129,162,0,58,96,6,98,24,0,82,64,240,
+3,95,51,56,57,138,211,0,58,65,214,129,139,0,95,89,13,80,155,0,
+58,98,15,5,10,65,32,97,110,100,65,68,233,213,1,0,89,156,94,155,
+6,72,175,108,38,137,254,194,41,168,17,143,149,0,66,129,207,0,64,80,
+40,129,172,201,208,0,85,224,135,8,130,186,79,83,111,73,0,58,96,27,
+99,193,162,16,0,95,89,138,226,185,4,224,180,2,142,13,226,209,0,0,
+56,104,45,2,58,51,56,130,28,240,114,8,3,104,101,97,100,240,112,8,
+0,75,64,251,64,57,97,15,100,179,0,89,201,208,64,250,96,10,160,255,
+128,252,253,185,0,170,216,229,81,0,96,39,224,5,0,145,180,1,95,51,
+90,81,179,161,96,2,112,184,225,80,0,98,252,112,16,96,40,2,95,51,
+55,98,228,224,42,1,128,6,224,38,0,224,87,6,160,47,192,159,132,195,
+3,67,39,32,79,96,33,0,53,164,51,128,30,96,185,3,95,50,48,49,
+169,158,64,33,0,54,132,241,192,40,170,16,97,111,113,41,132,22,128,85,
+64,54,0,57,251,152,3,1,45,79,131,231,128,71,197,51,228,106,0,64,
+64,224,52,10,9,45,115,116,114,105,112,45,101,111,108,164,37,224,188,131,
+229,43,4,224,192,20,231,79,0,225,169,255,225,169,104,193,171,176,40,255,
+88,15,6,45,45,104,97,115,104,101,232,65,1,227,137,255,227,137,255,225,
+169,255,227,137,51,64,18,131,120,224,9,12,234,103,3,65,166,170,158,167,
+55,64,14,227,203,0,209,60,72,100,80,73,0,49,83,127,96,176,128,0,
+224,39,0,113,63,225,246,4,160,62,99,214,224,76,1,96,37,167,173,128,
+2,96,17,192,71,138,15,192,17,115,103,64,14,145,51,192,140,128,45,64,
+39,97,20,0,54,160,150,224,89,0,209,17,193,67,244,187,0,139,43,128,
+22,96,0,75,178,225,13,2,64,173,160,146,114,195,224,94,8,171,4,224,
+65,2,225,58,1,64,116,173,98,96,181,129,48,97,234,229,12,16,0,111,
+195,45,138,21,146,25,96,93,224,179,4,128,10,0,55,106,127,128,0,229,
+53,0,225,173,2,160,124,96,17,225,192,36,225,179,6,160,7,117,248,193,
+135,224,68,11,0,49,214,68,227,45,2,224,182,4,192,12,96,184,4,95,
+51,55,55,32,155,233,224,196,5,128,182,226,9,0,224,185,0,117,248,2,
+51,55,56,160,110,225,67,15,3,97,110,115,105,230,76,0,224,174,0,224,
+81,2,224,75,34,4,116,114,97,100,105,78,17,0,97,195,217,160,220,162,
+11,224,64,24,1,115,116,208,45,96,0,109,61,96,56,64,45,0,56,100,
+244,172,76,220,113,224,34,18,140,111,128,131,226,98,49,0,120,226,98,4,
+228,225,2,224,80,47,4,105,110,99,108,117,238,84,1,226,185,8,100,174,
+229,45,3,160,48,0,61,225,25,2,131,250,196,15,226,169,0,64,135,224,
+130,27,0,80,232,61,6,225,234,6,163,7,102,112,0,56,226,181,1,133,
+117,224,70,2,0,67,96,70,224,30,17,128,31,128,228,225,47,49,0,65,
+225,128,11,225,0,54,3,45,104,101,108,231,105,0,224,76,56,91,74,242,
+176,0,224,79,57,224,78,7,64,62,143,239,228,163,4,128,87,177,17,227,
+99,0,228,164,12,198,0,243,46,2,65,220,225,181,1,135,108,231,74,3,
+195,80,106,59,207,142,128,18,78,199,160,18,96,123,98,182,225,15,18,224,
+33,44,225,160,5,227,228,5,94,228,227,228,7,224,66,10,1,110,111,94,
+55,228,79,3,64,195,1,56,49,64,249,240,251,0,224,243,2,224,254,3,
+64,41,225,158,13,2,68,85,73,96,82,3,58,51,56,54,178,219,1,56,
+48,126,219,0,90,167,129,97,143,64,162,0,56,220,36,0,58,96,179,224,
+43,3,178,50,128,46,224,41,1,0,58,97,93,224,40,5,129,227,224,35,
+0,0,58,97,147,224,34,3,88,38,224,119,2,65,39,224,121,0,64,46,
+250,210,3,226,145,0,64,8,72,114,0,58,96,43,112,181,0,58,64,80,
+128,10,91,11,65,108,128,56,176,65,66,67,0,85,65,102,129,250,192,18,
+1,66,39,96,21,225,136,1,232,64,0,232,108,2,170,187,97,177,242,247,
+1,93,153,157,34,162,149,3,32,95,55,53,221,176,145,17,223,51,0,64,
+65,93,103,3,98,229,92,89,115,242,117,136,64,0,128,178,144,249,117,32,
+0,65,96,221,73,218,192,17,65,217,0,58,98,233,209,165,126,100,107,64,
+128,17,92,22,107,86,255,125,2,128,218,0,58,107,115,126,233,3,95,51,
+55,48,98,20,0,58,66,29,193,59,0,55,225,59,4,74,105,179,182,2,
+95,51,54,102,241,141,212,64,218,0,58,96,6,10,10,65,32,115,101,113,
+117,97,108,32,58,96,33,161,163,2,95,51,54,182,9,0,52,96,72,128,
+191,186,120,97,9,1,95,51,74,207,0,58,96,39,98,7,1,54,51,165,
+169,192,170,64,38,242,239,2,129,137,65,237,129,145,0,58,64,49,96,58,
+242,151,43,0,54,97,113,2,58,51,54,129,15,242,151,8,3,116,97,105,
+108,242,151,8,0,65,96,150,211,57,124,189,0,51,64,177,64,204,128,178,
+129,62,2,73,32,58,96,16,252,207,1,1,51,53,99,238,0,53,156,183,
+92,207,192,56,92,207,224,11,0,68,202,96,11,0,58,96,6,247,54,5,
+160,61,231,88,5,120,191,188,19,151,24,128,38,0,58,96,6,1,10,65,
+163,207,140,61,92,25,148,134,0,53,163,245,247,53,16,6,67,111,110,116,
+114,111,108,247,51,11,96,18,2,67,97,108,137,29,100,104,0,58,96,223,
+95,92,141,2,246,237,1,64,7,230,70,1,134,83,0,95,99,68,130,38,
+0,53,65,135,67,200,171,78,98,22,2,95,51,53,171,90,140,169,0,58,
+64,160,130,151,119,94,96,30,227,212,3,227,95,0,227,184,1,235,158,0,
+0,58,98,104,96,155,0,85,225,229,7,9,109,100,53,67,111,109,98,105,
+110,101,161,235,133,103,64,143,66,104,0,90,97,61,2,95,50,54,168,71,
+1,48,53,64,86,65,72,0,89,96,116,64,251,102,181,66,159,236,116,1,
+194,163,236,33,2,128,236,100,93,198,230,1,95,51,97,6,97,15,0,56,
+164,7,0,95,87,144,1,95,51,228,92,0,128,190,130,112,8,94,109,100,
+53,65,114,114,97,121,66,92,216,94,226,251,1,0,57,76,161,64,155,1,
+95,51,135,50,100,143,248,61,1,247,209,4,1,95,51,66,187,224,46,3,
+169,187,192,46,1,95,49,121,94,227,51,5,0,52,167,45,0,58,96,200,
+162,231,64,20,68,253,96,211,172,105,229,3,10,205,237,224,106,0,225,53,
+3,192,25,232,101,5,4,67,32,95,54,52,160,67,3,95,49,55,52,129,
+35,4,95,51,51,57,32,128,82,64,0,225,117,1,96,55,238,103,2,248,
+191,2,64,187,255,228,1,128,45,96,96,172,205,229,135,7,226,141,0,142,
+40,224,70,0,224,43,10,194,119,224,38,0,160,16,0,58,65,97,226,178,
+0,0,90,151,74,64,21,0,54,163,214,0,50,67,114,68,176,225,253,0,
+129,247,124,207,0,95,87,114,0,58,97,153,2,10,65,32,95,0,0,58,
+96,28,128,57,0,53,100,81,91,18,1,95,51,90,120,65,173,101,156,0,
+52,65,207,1,50,52,80,91,64,89,64,11,67,76,192,11,192,113,68,67,
+0,48,224,11,0,65,79,64,107,131,82,2,114,101,109,64,107,186,240,2,
+49,50,54,64,107,96,157,97,135,98,197,115,143,64,53,64,54,130,156,97,
+49,96,131,65,157,64,147,0,58,96,39,183,192,226,21,1,70,35,97,189,
+252,243,2,0,95,70,186,165,163,98,113,5,56,32,95,51,51,55,227,167,
+2,31,92,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,92,34,44,51,2,57,58,49,169,33,
+100,11,1,51,51,160,171,68,39,2,95,54,49,226,47,1,96,30,1,50,
+49,101,72,164,99,3,95,50,49,54,160,19,193,204,253,37,0,104,97,172,
+93,160,158,0,83,64,235,73,52,160,83,168,60,96,69,128,13,0,79,64,
+211,0,79,235,228,2,68,66,64,29,224,21,3,2,95,50,49,97,232,1,
+50,50,64,70,0,58,97,78,5,10,65,32,65,32,58,96,188,230,96,2,
+101,177,3,95,51,51,54,65,165,0,51,130,84,67,120,64,16,230,96,2,
+0,49,100,57,96,77,166,96,192,56,70,96,192,11,66,2,166,2,64,6,
+164,67,64,10,73,21,72,108,2,95,51,51,136,79,0,51,199,126,0,85,
+131,93,2,95,51,51,165,171,0,39,68,225,64,23,64,203,160,47,224,15,
+8,64,65,130,82,200,145,64,23,100,41,177,224,171,186,69,93,101,5,0,
+51,66,64,192,68,105,158,224,21,2,128,154,251,81,0,133,72,2,95,50,
+48,96,245,0,51,161,67,130,139,2,95,53,53,65,30,130,125,2,75,32,
+58,96,45,161,52,64,64,232,223,1,64,90,168,223,253,2,7,224,14,5,
+192,170,236,139,1,169,9,96,188,0,58,96,6,201,40,1,50,51,107,108,
+192,50,76,200,99,58,65,236,160,26,147,254,224,26,3,0,58,96,91,198,
+210,130,125,64,77,130,115,221,33,201,204,1,75,50,234,170,2,234,194,15,
+197,102,234,198,27,224,8,1,64,214,96,142,188,141,229,181,2,192,9,128,
+44,253,16,4,0,58,96,54,105,198,1,50,49,65,102,201,85,0,58,64,
+15,96,24,72,199,139,227,3,95,51,49,54,227,219,2,11,110,111,32,109,
+97,116,99,104,32,97,116,32,131,196,96,32,128,149,68,166,130,211,136,219,
+163,45,64,6,232,190,29,223,221,0,46,68,53,0,114,177,210,224,39,1,
+2,80,97,116,64,22,0,77,64,128,2,70,97,105,232,210,4,67,81,129,
+2,0,83,100,4,146,222,130,121,99,53,135,33,163,64,2,95,49,52,66,
+16,100,90,195,244,72,120,96,5,77,148,0,54,227,251,0,104,213,98,128,
+68,3,225,28,1,83,107,238,250,3,101,98,139,51,3,49,52,56,32,128,
+15,99,20,0,54,66,245,0,49,74,82,224,24,2,161,56,224,220,1,4,
+39,92,92,39,39,165,23,161,75,96,158,224,82,3,97,246,136,205,224,17,
+3,132,240,231,138,3,224,151,1,0,64,160,35,168,50,224,139,0,142,191,
+74,168,224,133,4,3,92,92,92,34,238,190,2,0,58,96,131,64,244,65,
+24,0,58,97,234,105,156,241,176,4,70,98,0,49,74,193,250,1,2,67,
+235,0,67,183,59,160,136,95,18,129,18,64,39,138,227,130,168,191,33,244,
+209,2,73,149,96,176,161,144,64,59,129,144,160,200,96,62,193,205,0,51,
+95,77,64,216,102,36,255,236,3,0,90,64,28,97,0,64,61,224,231,3,
+0,38,240,9,1,131,181,104,141,248,23,0,200,234,136,163,118,101,225,89,
+7,224,60,1,149,51,160,223,128,77,160,223,96,224,64,56,128,79,96,177,
+65,32,225,163,6,128,162,224,180,1,64,194,226,92,3,78,8,208,121,244,
+136,1,224,210,16,80,88,0,80,103,71,224,30,1,2,78,85,76,96,30,
+96,25,0,49,224,25,3,2,83,79,72,224,25,1,0,50,224,25,4,1,
+84,88,224,25,1,0,51,224,25,3,0,69,224,25,3,0,52,224,25,4,
+1,79,84,224,25,1,0,53,224,25,4,1,78,81,224,25,1,0,54,224,
+25,3,2,65,67,75,224,25,1,0,55,113,33,1,57,55,161,240,96,19,
+145,53,0,57,69,77,224,19,0,0,57,96,19,0,49,66,146,224,20,1,
+1,49,48,160,21,0,48,224,21,4,0,49,160,21,224,64,4,66,52,64,
+21,0,48,194,91,128,21,0,51,160,43,0,52,224,108,4,128,43,226,134,
+0,128,42,224,248,4,0,83,153,219,128,25,224,248,4,0,83,145,190,128,
+25,224,248,4,2,68,76,69,224,26,2,0,55,224,26,4,0,67,137,37,
+128,26,0,56,224,26,5,0,50,224,26,2,250,96,4,2,68,67,51,225,
+203,2,226,0,4,2,68,67,52,224,26,2,226,1,4,1,78,65,225,127,
+2,70,14,224,187,2,1,89,78,224,26,2,226,3,6,0,66,224,26,2,
+225,11,4,1,67,65,224,53,3,226,5,5,0,77,224,25,2,225,12,4,
+1,83,85,224,79,3,225,12,4,1,69,83,149,216,128,26,225,12,4,1,
+70,83,224,25,2,225,11,4,0,71,224,25,2,72,96,224,25,1,0,82,
+224,25,3,225,9,4,0,85,224,25,2,107,35,225,63,2,0,69,131,64,
+198,23,224,0,21,111,11,140,152,0,58,101,112,69,54,229,30,0,77,110,
+0,49,79,214,0,35,109,166,173,128,96,17,1,64,35,176,18,66,93,103,
+164,0,48,76,80,66,150,198,124,74,215,237,118,10,209,56,0,51,66,238,
+0,95,84,183,108,250,235,34,5,198,32,1,56,50,192,53,103,189,228,197,
+1,187,113,96,68,224,23,4,104,132,224,39,7,103,58,128,112,128,21,244,
+5,0,198,195,164,185,72,15,96,11,0,58,96,6,129,13,101,25,160,201,
+224,154,10,224,195,0,99,214,235,190,1,192,114,108,199,237,39,0,224,36,
+0,128,160,224,10,5,96,50,158,201,238,20,0,97,89,129,128,102,170,104,
+18,224,74,4,0,58,96,102,5,10,65,32,99,104,114,65,131,136,200,0,
+83,103,249,65,165,2,95,51,48,64,61,225,215,11,107,87,225,215,5,77,
+159,96,84,71,27,141,134,0,51,78,10,225,204,2,2,60,32,64,99,20,
+224,19,8,130,37,161,197,160,19,70,12,234,67,1,234,77,2,224,40,7,
+66,79,224,40,12,224,102,8,70,134,224,61,7,65,231,224,102,13,108,27,
+3,67,32,61,61,64,38,110,158,134,154,224,97,3,0,58,97,34,107,43,
+73,49,249,225,3,226,184,5,65,171,1,53,57,240,65,0,0,54,80,15,
+83,161,129,188,0,50,64,15,0,51,208,230,1,50,54,79,191,77,94,65,
+130,0,53,224,41,1,2,64,95,50,107,135,97,218,64,123,136,189,4,111,
+114,100,32,58,96,18,9,10,65,32,98,115,105,110,100,101,120,64,16,180,
+205,0,50,66,68,0,50,84,210,128,97,2,95,50,54,72,84,96,11,233,
+230,1,85,95,160,169,224,18,4,66,241,224,18,6,129,251,224,18,4,65,
+30,224,18,6,224,94,10,113,220,224,18,5,109,112,224,18,5,64,247,224,
+18,6,130,31,224,18,4,65,128,224,170,7,224,190,11,224,191,10,99,168,
+224,19,7,224,193,10,104,182,224,19,7,224,195,10,143,109,224,19,6,224,
+197,10,111,101,224,19,7,224,199,10,108,88,224,19,7,225,135,11,224,199,
+10,98,168,224,19,7,224,199,10,98,247,224,19,7,224,199,10,99,93,224,
+19,7,163,174,224,19,4,105,187,246,183,6,17,111,69,110,117,109,58,32,
+111,117,116,32,111,102,32,114,97,110,103,186,60,162,199,64,7,106,106,1,
+95,50,119,198,64,7,99,88,1,95,50,87,252,96,7,146,217,0,50,106,
+34,64,7,100,239,1,95,50,81,166,96,7,133,207,0,50,88,149,96,7,
+160,79,142,203,1,95,50,127,233,2,64,95,50,89,136,96,7,160,79,0,
+56,160,79,89,250,96,7,160,79,90,86,96,7,160,79,0,56,160,79,0,
+56,160,79,83,12,64,7,0,57,160,79,0,57,160,79,139,29,1,95,50,
+134,147,2,95,50,57,160,79,0,57,132,95,228,137,6,98,69,228,157,7,
+64,65,229,44,53,128,7,96,8,96,174,229,42,14,128,7,96,8,96,229,
+229,40,35,128,7,96,8,96,225,224,38,8,64,255,64,29,97,7,64,8,
+140,54,224,99,8,99,12,224,119,7,130,248,224,80,5,65,96,64,71,97,
+104,64,8,199,7,224,38,4,99,71,0,85,138,47,128,8,129,1,66,187,
+224,39,4,130,227,224,59,5,161,22,143,47,64,8,129,22,64,9,209,101,
+224,169,6,64,41,224,208,7,64,160,224,19,7,131,141,224,109,5,65,55,
+64,90,97,63,64,8,199,205,224,38,5,65,55,64,29,97,63,64,8,168,
+123,224,98,6,132,63,224,58,5,65,33,64,49,97,41,0,85,108,75,224,
+96,9,134,202,96,6,64,7,205,242,224,94,6,64,155,224,18,6,132,57,
+224,75,4,65,47,0,85,108,245,96,7,129,52,224,35,6,160,246,192,245,
+128,244,225,158,8,226,0,10,161,255,193,6,193,154,167,18,64,47,2,95,
+50,50,94,89,198,221,99,52,0,39,177,41,223,228,231,126,3,103,96,128,
+46,224,12,5,142,206,2,95,50,51,73,219,160,78,99,193,224,25,12,164,
+195,1,51,48,224,64,0,2,95,51,48,231,102,0,0,58,96,6,138,9,
+79,115,0,39,137,219,250,37,0,107,104,243,20,2,218,116,72,11,160,217,
+145,232,143,165,96,11,192,42,160,134,164,123,92,55,224,6,6,0,58,64,
+136,224,124,5,224,121,35,224,108,5,129,92,224,108,10,0,58,64,250,232,
+99,0,70,37,72,247,74,57,1,50,57,131,103,0,95,72,185,184,157,230,
+28,5,17,73,110,116,46,115,117,99,99,58,32,111,118,101,114,102,108,111,
+119,134,26,224,69,5,134,125,87,54,224,69,17,8,112,114,101,100,58,32,
+117,110,100,224,70,3,1,73,32,64,2,66,26,79,86,160,143,226,20,3,
+183,234,225,216,0,122,237,128,112,192,19,1,51,48,74,244,128,58,64,7,
+0,56,192,59,130,178,66,162,224,70,0,128,64,160,51,65,24,139,89,129,
+193,0,83,105,215,224,119,1,96,201,0,83,194,230,98,158,65,162,203,205,
+242,53,1,209,166,96,65,178,90,210,67,128,84,113,140,167,20,129,190,128,
+27,236,25,1,145,250,161,138,129,97,248,16,2,129,91,224,243,0,204,181,
+128,163,224,41,1,250,73,0,64,222,224,215,16,96,113,224,215,67,129,242,
+224,215,68,133,145,224,215,7,97,189,252,58,0,128,209,96,43,128,176,224,
+123,5,160,189,96,199,160,177,162,177,64,90,155,199,226,247,1,249,201,0,
+192,9,0,58,98,73,67,53,5,56,49,32,95,56,51,67,206,4,56,32,
+95,56,56,132,211,100,233,154,182,98,142,192,40,224,36,9,0,58,98,154,
+118,219,64,20,85,197,100,173,128,17,0,49,192,17,132,133,146,252,128,17,
+132,26,146,244,128,17,215,35,69,158,128,17,130,191,146,228,128,17,129,249,
+146,220,96,17,73,11,128,17,0,55,192,17,128,216,146,210,128,17,128,193,
+146,208,128,17,224,179,0,70,159,128,18,224,180,1,192,181,73,143,160,18,
+192,182,73,170,160,18,192,183,0,56,224,183,0,71,77,128,18,224,184,0,
+71,187,128,18,224,185,0,71,216,96,18,74,22,160,18,192,187,70,26,160,
+18,192,188,74,76,160,18,192,189,74,103,128,18,72,135,128,18,224,189,0,
+72,163,128,18,225,115,1,192,189,66,76,160,18,192,189,74,211,160,18,192,
+189,66,241,160,18,192,189,75,9,160,18,192,189,75,36,160,18,192,189,75,
+63,160,18,192,189,66,144,160,18,192,189,70,177,177,169,87,42,101,240,151,
+39,2,50,54,52,167,91,197,219,78,37,64,44,9,115,117,98,116,114,97,
+99,116,32,58,64,35,224,62,14,1,54,48,224,61,8,128,239,123,112,126,
+112,0,58,96,25,254,133,8,96,68,151,130,0,56,64,4,89,193,110,239,
+15,10,65,32,34,94,95,94,44,94,41,94,66,94,57,94,59,96,5,18,
+53,94,54,94,57,94,58,94,57,94,52,94,57,94,57,94,73,94,38,96,
+7,0,66,96,19,30,57,94,89,94,32,94,53,94,57,94,54,94,60,94,
+51,94,60,94,89,94,33,94,53,94,58,94,54,94,58,124,32,96,75,22,
+57,94,67,94,59,94,61,94,57,94,60,94,61,94,50,94,55,94,58,94,
+45,94,61,96,13,8,58,94,40,94,40,94,60,94,33,96,75,31,60,94,
+40,94,50,94,56,94,66,94,40,94,57,94,86,94,32,94,58,94,70,94,
+32,94,87,94,33,94,58,94,71,94,2,33,94,32,224,3,102,224,33,59,
+224,3,53,224,9,1,0,66,224,15,6,64,5,0,66,96,5,2,33,94,
+67,224,19,6,224,43,3,224,79,13,224,69,9,224,15,1,2,33,94,50,
+160,67,0,67,96,9,0,34,96,25,224,5,3,224,3,21,224,33,25,192,
+37,192,77,224,129,3,224,3,99,0,70,96,5,128,11,64,5,128,23,193,
+77,224,3,2,1,124,68,97,21,28,90,94,33,94,81,94,49,94,67,94,
+60,94,75,94,49,94,77,94,60,94,68,94,49,94,70,94,60,94,49,96,
+3,6,80,94,60,124,111,94,35,224,57,0,64,21,64,7,4,48,94,48,
+94,49,97,83,8,57,94,32,94,67,94,48,94,60,96,25,67,73,2,32,
+94,48,160,3,64,41,0,80,96,11,3,72,94,32,124,193,29,225,211,3,
+224,3,35,64,179,64,9,0,58,160,15,96,75,5,124,50,94,32,124,47,
+224,75,40,224,3,13,8,61,94,68,94,35,94,37,94,37,224,73,56,224,
+3,37,224,29,19,224,67,31,224,3,145,1,48,124,65,79,130,49,4,69,
+94,57,124,40,98,53,0,52,96,17,18,61,94,61,94,59,94,48,124,44,
+94,35,94,52,94,35,94,57,94,35,224,5,4,6,71,94,48,94,90,94,
+50,98,97,67,189,69,87,6,74,94,48,94,69,94,45,229,179,0,0,59,
+96,5,64,73,0,74,96,53,64,25,14,57,94,95,94,50,94,49,94,73,
+94,50,94,84,94,35,101,231,10,67,94,57,94,50,94,50,94,35,124,98,
+96,73,4,50,94,70,94,35,101,187,6,69,94,35,94,49,94,49,96,117,
+4,61,94,67,94,35,96,39,64,51,2,66,94,50,96,89,8,50,94,77,
+94,57,94,48,94,45,64,63,1,94,93,99,59,0,35,64,193,3,124,88,
+94,50,96,119,64,33,0,48,64,51,5,124,32,94,50,94,72,160,81,0,
+61,96,139,0,49,96,235,6,35,94,59,94,59,94,85,96,205,64,29,128,
+35,0,66,96,5,66,119,64,35,0,78,96,101,64,83,64,23,64,17,64,
+15,16,74,94,50,94,68,94,48,94,87,94,50,94,60,94,69,94,50,96,
+137,0,45,96,19,3,72,94,35,124,70,103,2,49,94,87,96,205,6,95,
+94,35,94,36,124,53,96,167,0,36,96,151,8,66,94,36,94,71,94,35,
+94,67,96,15,2,36,94,36,160,249,65,27,129,103,199,7,2,49,94,78,
+160,55,4,36,94,48,94,71,96,103,0,48,97,11,64,7,64,185,2,48,
+94,70,96,5,64,85,129,145,128,217,128,101,64,215,64,15,128,63,128,7,
+64,27,65,197,64,29,192,75,65,85,64,121,64,35,64,121,64,21,65,27,
+2,69,94,40,98,15,65,157,128,29,64,37,64,75,64,243,224,63,1,224,
+139,7,224,5,7,64,55,64,101,64,125,64,247,128,71,64,23,65,85,64,
+185,2,35,94,70,224,191,0,65,13,128,135,64,37,128,155,65,17,224,125,
+1,0,72,224,181,0,224,121,11,0,68,225,5,6,129,203,192,59,129,3,
+129,71,0,78,160,51,224,251,3,66,191,64,127,0,50,98,133,64,55,225,
+125,27,224,119,7,129,217,225,127,13,64,93,128,141,225,129,17,66,225,65,
+125,128,245,64,33,65,113,65,41,128,245,65,41,64,13,193,101,128,9,192,
+17,192,39,64,7,0,75,161,169,128,123,64,5,128,29,64,145,129,145,128,
+213,0,69,96,35,163,51,105,35,0,69,97,251,69,131,64,131,128,43,129,
+5,128,131,0,86,96,5,0,79,225,109,4,130,213,129,215,64,165,224,237,
+1,192,53,128,173,225,119,9,64,39,2,57,94,70,98,113,194,243,0,57,
+224,111,10,67,37,225,107,9,0,68,96,117,193,171,128,235,128,123,64,11,
+64,219,226,143,1,224,117,3,128,17,2,36,94,75,225,147,0,0,36,226,
+93,3,99,201,64,23,227,79,3,225,59,3,68,141,65,93,64,45,0,36,
+96,189,225,201,7,0,72,96,209,132,35,192,159,0,81,161,155,68,63,194,
+205,128,207,66,79,131,15,128,85,65,173,130,133,66,129,128,201,128,183,128,
+217,0,57,64,185,1,124,47,96,115,64,201,68,71,64,57,67,187,68,131,
+68,103,235,85,0,0,124,64,123,226,49,1,129,67,128,131,193,89,128,69,
+69,9,128,143,128,35,69,47,64,89,224,123,1,66,127,0,95,96,55,2,
+66,94,61,101,37,75,129,64,11,64,251,66,57,64,41,0,73,96,251,69,
+195,128,3,75,237,64,3,64,185,97,217,0,124,64,103,64,175,0,77,97,
+27,67,169,134,107,64,119,69,197,64,33,128,251,64,63,64,87,134,163,0,
+68,107,247,64,115,96,213,1,124,42,97,127,129,161,65,37,133,107,129,111,
+129,191,64,143,2,69,94,57,97,23,192,21,131,69,193,221,129,63,65,113,
+134,17,0,76,226,135,0,128,211,129,239,0,36,163,31,64,13,2,61,94,
+61,167,75,73,13,137,101,64,139,71,79,137,141,1,66,124,129,221,197,153,
+196,47,224,17,0,98,97,224,13,1,70,171,224,45,18,102,15,2,48,124,
+56,224,51,4,195,87,64,201,4,72,94,57,94,83,98,133,131,153,0,73,
+98,123,2,48,124,85,167,241,0,69,170,43,4,52,94,68,124,107,98,189,
+10,57,94,80,94,50,94,41,94,89,94,50,97,155,3,66,94,48,124,70,
+223,71,39,2,66,94,39,97,167,67,71,130,179,65,15,4,72,94,48,94,
+82,162,229,66,129,0,57,96,17,64,31,64,17,67,73,65,57,195,181,160,
+19,1,124,51,224,49,0,66,73,66,203,129,91,65,229,135,147,142,21,64,
+37,195,59,130,237,68,137,64,185,72,163,72,51,64,133,0,45,168,67,64,
+219,0,34,66,233,1,124,52,160,167,66,57,3,35,94,35,124,75,79,65,
+175,3,68,94,48,124,65,243,69,73,0,94,160,151,199,123,132,213,229,29,
+1,65,227,128,29,66,101,65,67,199,139,72,97,195,15,4,74,94,48,124,
+43,162,183,65,53,195,147,97,117,0,124,74,181,68,169,226,125,1,64,55,
+66,167,64,161,128,245,131,75,130,163,131,11,128,123,0,73,160,45,224,219,
+0,224,7,0,0,70,97,33,65,3,64,31,67,45,5,37,94,79,94,35,
+124,131,139,72,97,0,46,162,173,67,67,197,17,192,93,64,187,192,201,64,
+73,66,21,67,227,0,72,169,15,128,171,64,227,195,65,195,61,131,29,99,
+61,96,243,128,91,198,13,128,31,128,99,64,135,0,57,99,207,65,219,64,
+209,192,69,65,71,67,175,131,55,130,23,193,83,2,69,94,49,162,65,138,
+155,65,173,0,42,162,171,76,149,0,71,102,3,129,179,2,57,94,76,225,
+61,0,66,251,65,51,196,177,128,105,129,237,8,43,94,33,124,62,94,49,
+94,76,77,31,0,124,76,147,4,36,94,49,124,63,237,53,2,224,3,255,
+224,3,17,193,143,224,3,181,64,197,2,71,94,32,228,245,0,0,69,162,
+89,81,235,64,23,192,7,224,31,11,207,51,192,3,192,43,0,77,160,43,
+128,15,0,34,224,7,8,79,21,0,48,241,53,0,0,34,114,125,2,66,
+94,60,102,13,224,23,3,64,19,0,67,160,75,192,21,66,231,0,60,96,
+73,0,68,111,145,0,60,163,7,224,81,7,64,23,8,74,94,41,94,68,
+94,45,94,69,179,57,6,55,94,56,94,53,94,55,224,7,0,67,57,2,
+42,94,43,96,35,0,41,102,23,64,25,69,63,2,51,94,51,99,245,0,
+58,101,239,0,74,179,127,4,51,94,73,94,57,160,83,68,119,2,45,94,
+40,173,39,74,135,77,219,64,45,77,193,224,13,1,69,233,69,183,70,183,
+0,59,107,77,67,161,2,67,94,37,99,245,4,37,94,75,94,35,96,21,
+71,177,80,149,64,5,64,11,242,89,1,128,7,192,23,0,58,96,247,71,
+229,64,15,192,3,64,245,64,51,145,55,67,249,64,49,64,17,65,227,71,
+121,80,129,65,75,64,65,128,25,8,61,94,79,94,40,124,34,94,39,160,
+51,0,39,104,137,137,171,64,47,0,68,96,43,0,58,96,147,128,51,192,
+5,0,70,96,5,0,94,160,31,192,25,128,17,2,66,94,75,116,41,0,
+61,232,201,0,0,83,160,39,64,53,4,53,94,54,124,80,96,15,8,93,
+94,61,94,88,94,58,124,39,103,125,1,58,124,64,49,0,85,97,179,10,
+61,94,84,94,48,124,59,94,40,124,77,96,19,4,40,94,65,124,54,96,
+51,69,139,10,58,124,53,94,61,94,71,94,58,124,110,96,19,2,65,124,
+119,224,107,2,224,3,11,4,93,94,40,124,43,105,15,129,145,0,94,160,
+7,224,3,7,0,79,64,77,5,92,95,94,61,94,65,225,189,0,224,3,
+30,1,124,62,224,47,2,0,95,160,11,6,66,94,65,94,58,124,47,96,
+207,129,37,64,231,76,183,66,49,64,103,6,48,124,104,94,61,124,47,242,
+13,2,193,243,227,163,3,243,11,1,64,5,67,135,79,165,243,175,111,224,
+3,73,0,33,162,205,128,13,70,197,64,7,74,43,67,137,86,135,2,57,
+124,37,163,223,64,21,100,15,1,124,55,168,203,71,27,77,145,0,35,104,
+81,73,101,138,17,224,5,33,80,125,196,29,64,3,67,247,64,7,128,5,
+68,21,132,61,64,5,128,23,196,73,226,7,5,71,191,67,251,64,41,137,
+133,64,49,2,53,94,76,177,233,215,203,224,3,3,1,52,124,64,205,0,
+89,98,11,2,88,94,61,106,25,6,65,124,85,94,61,94,89,106,157,0,
+61,184,9,6,61,94,49,94,50,94,39,226,123,11,96,91,224,87,8,96,
+5,64,27,2,72,94,39,232,175,0,0,52,117,41,128,139,0,39,96,81,
+128,153,74,251,137,187,72,33,69,59,66,97,3,50,94,52,124,73,187,74,
+77,64,13,136,119,75,91,137,233,132,43,79,127,0,61,82,185,1,124,37,
+96,109,64,23,2,79,94,50,100,11,138,153,67,233,0,71,100,91,2,78,
+94,40,98,247,2,73,94,40,99,7,64,15,2,66,124,63,78,205,2,124,
+51,124,64,47,0,50,128,13,5,94,65,124,35,124,125,176,65,4,49,94,
+72,124,118,141,243,100,7,4,72,94,48,124,39,233,23,2,68,113,64,37,
+65,39,64,121,73,55,72,239,0,83,102,147,226,155,53,224,3,19,73,87,
+69,193,73,181,66,65,0,49,224,73,48,179,199,171,131,0,39,173,75,137,
+213,4,86,94,60,94,72,118,195,150,197,224,3,13,246,153,41,224,3,69,
+79,69,224,17,3,224,35,13,224,195,3,88,213,64,9,224,185,35,70,249,
+192,5,224,3,19,248,61,3,64,5,66,217,128,7,128,3,224,47,5,0,
+84,104,63,129,189,66,71,2,49,94,33,100,25,211,87,139,71,68,93,235,
+243,1,71,19,139,181,147,255,146,5,77,105,77,195,67,251,148,63,1,36,
+124,67,57,0,79,160,55,64,19,204,99,76,177,0,81,171,159,66,185,149,
+221,64,105,64,29,0,91,108,35,132,151,64,121,78,1,142,9,64,65,0,
+92,242,191,0,236,213,3,236,151,5,76,125,68,121,69,33,64,81,71,213,
+64,77,141,251,85,201,131,41,112,189,111,97,144,17,192,225,128,7,67,207,
+129,5,77,33,64,23,65,75,64,55,141,85,131,113,77,117,144,229,173,189,
+96,245,144,51,140,123,64,75,174,117,160,25,0,87,177,103,131,195,79,77,
+224,121,1,64,17,129,137,64,19,78,149,146,27,224,7,5,229,235,6,112,
+83,74,47,64,219,194,109,6,67,94,48,124,79,94,33,110,255,128,211,224,
+5,1,0,57,96,9,192,207,65,143,2,50,124,87,101,143,0,50,101,135,
+65,119,64,63,64,15,65,61,2,46,94,70,100,147,2,46,94,46,192,7,
+1,94,71,160,9,2,47,124,49,96,9,4,47,94,66,124,109,128,163,1,
+124,105,101,19,64,157,0,33,96,79,74,245,70,191,129,227,2,50,94,58,
+176,3,146,63,128,3,224,5,0,112,121,4,80,94,60,94,79,65,129,3,
+124,106,94,50,101,217,4,79,94,61,124,63,160,95,87,47,71,1,69,125,
+148,195,94,47,69,125,83,213,222,55,64,215,64,17,134,149,74,215,230,67,
+11,224,3,3,65,125,64,7,144,71,139,7,129,235,134,85,192,3,139,31,
+0,52,105,43,66,91,152,211,138,61,64,161,0,65,161,157,87,247,66,69,
+254,207,58,160,59,192,165,65,69,2,49,124,44,162,43,80,185,131,145,226,
+43,9,140,35,128,31,87,181,0,58,126,251,64,9,65,63,0,67,169,159,
+66,105,0,66,121,93,137,163,65,83,144,191,145,205,193,161,114,97,112,99,
+0,50,66,47,1,124,122,184,235,64,221,66,49,0,44,178,93,4,72,94,
+61,124,52,103,127,1,40,94,74,245,95,105,65,161,76,3,145,59,2,61,
+124,46,96,47,68,77,4,65,94,65,94,48,195,219,98,117,76,23,4,35,
+94,90,94,40,97,85,90,29,64,73,66,247,0,83,104,13,67,147,0,39,
+103,151,0,37,96,129,67,99,0,48,177,135,144,103,64,55,64,37,67,247,
+2,39,124,41,103,57,6,32,124,39,94,33,124,77,160,195,210,33,73,117,
+64,187,0,35,101,63,135,97,0,71,164,207,132,117,0,74,109,125,0,78,
+96,5,0,70,253,45,0,75,177,67,51,0,78,96,5,66,235,141,135,64,
+195,64,59,66,249,2,66,124,54,163,175,71,207,65,101,64,147,68,1,71,
+195,2,48,124,41,109,69,3,72,94,49,124,64,191,193,175,67,5,81,79,
+129,117,65,45,128,23,150,227,69,97,0,40,96,11,65,173,86,85,65,255,
+69,97,4,72,94,40,124,47,225,177,4,64,85,2,68,94,40,96,125,141,
+169,64,63,65,215,64,25,2,57,124,63,170,79,65,45,65,163,64,51,2,
+79,94,40,99,101,77,227,132,199,137,29,138,151,134,21,211,191,65,179,130,
+97,147,23,69,55,0,40,99,155,74,61,64,7,64,33,64,89,197,187,73,
+7,129,5,0,61,101,235,64,89,131,57,64,55,116,45,99,223,64,169,64,
+15,201,159,64,243,64,215,64,133,64,11,84,81,154,21,118,229,65,7,3,
+124,79,94,48,85,81,3,124,54,94,48,94,105,1,94,76,96,7,70,211,
+102,173,162,23,134,141,243,67,3,64,209,69,183,85,7,146,143,92,223,2,
+49,94,85,111,181,0,48,109,195,0,65,64,93,1,94,94,65,27,1,124,
+41,96,147,64,185,157,23,129,53,97,19,64,123,96,99,64,237,74,3,129,
+153,64,197,70,201,66,197,75,45,77,239,64,193,129,79,75,229,2,48,94,
+84,96,209,0,40,105,189,203,209,134,83,84,27,0,78,164,219,65,43,85,
+195,64,183,230,97,1,128,45,135,21,68,21,216,143,198,205,68,51,0,45,
+97,43,134,85,68,151,156,185,219,77,65,11,2,66,94,35,97,35,148,37,
+71,133,193,31,70,149,64,75,131,25,70,83,128,83,128,119,102,189,120,103,
+64,119,84,59,135,147,136,15,64,135,134,113,138,159,64,53,133,89,64,199,
+67,97,65,9,221,71,244,53,1,64,5,202,15,160,233,107,41,246,247,7,
+132,147,69,17,101,243,168,21,64,73,64,193,66,47,192,223,199,101,251,175,
+33,129,91,128,141,154,187,251,175,1,153,233,64,47,64,91,85,91,128,53,
+192,31,84,137,194,77,64,229,154,155,192,119,132,185,64,9,64,71,156,77,
+192,95,64,217,64,5,225,5,1,136,57,65,113,136,203,66,83,64,155,2,
+92,94,48,98,29,192,237,64,49,129,63,131,167,213,89,192,57,137,217,0,
+93,186,21,192,121,192,221,129,31,128,243,129,167,195,41,0,65,66,161,97,
+89,194,89,64,169,224,51,5,0,86,97,235,98,143,102,27,192,97,245,237,
+1,128,39,137,243,129,17,129,151,73,173,0,82,173,99,128,37,64,47,192,
+153,161,215,224,45,0,0,83,106,37,2,48,94,90,161,75,224,49,1,130,
+241,65,111,67,37,64,47,134,119,77,235,65,219,2,65,124,56,165,89,226,
+167,1,99,29,1,124,99,102,101,4,32,94,95,94,33,96,55,68,197,68,
+85,226,39,1,132,131,226,31,1,91,25,87,149,226,15,1,193,9,66,1,
+137,211,64,121,67,31,87,31,64,185,160,77,0,124,67,5,225,71,3,133,
+3,192,235,64,59,0,90,96,103,2,73,94,35,173,239,64,89,196,187,65,
+197,65,151,234,183,1,67,183,2,45,94,50,183,1,225,99,1,65,253,69,
+3,74,241,131,231,4,57,94,65,124,53,186,73,144,61,193,85,122,137,0,
+124,128,185,152,129,225,127,1,130,69,128,43,0,82,230,69,0,0,57,248,
+247,0,0,85,162,189,64,55,226,17,2,0,124,234,167,1,137,217,66,241,
+64,85,64,63,198,85,131,39,139,103,224,141,1,135,9,129,105,71,253,221,
+193,128,103,194,75,228,189,1,0,66,64,213,250,119,2,139,73,222,93,64,
+211,106,113,121,247,64,29,66,35,64,133,224,75,1,66,131,101,83,0,124,
+77,21,136,129,2,84,94,40,115,207,2,67,94,59,104,197,0,76,167,125,
+10,89,94,50,124,101,94,48,124,110,94,39,184,189,66,205,1,65,124,66,
+253,1,84,124,90,207,0,96,163,173,64,49,0,72,99,9,0,79,122,149,
+64,215,69,201,65,77,0,95,98,193,100,53,5,124,70,94,50,124,53,66,
+157,97,83,85,25,197,9,64,147,0,77,98,61,0,68,123,217,64,211,154,
+169,133,153,154,61,197,3,129,61,250,143,1,157,223,131,139,65,103,221,25,
+76,43,67,21,193,213,103,63,166,131,64,145,65,73,0,67,104,75,2,66,
+94,49,98,131,147,121,129,35,0,65,96,143,195,47,0,86,105,165,2,57,
+124,100,188,27,136,7,71,9,66,17,135,13,0,76,121,99,77,145,64,119,
+79,243,65,49,65,125,66,131,4,50,124,47,124,117,97,117,98,3,81,147,
+0,124,64,141,65,255,64,65,4,50,124,69,124,102,96,73,158,107,64,5,
+64,73,73,95,70,139,65,171,0,50,69,11,168,149,64,13,64,87,65,143,
+154,123,74,207,0,82,105,221,76,79,64,225,66,15,138,169,194,69,128,57,
+158,163,65,37,3,45,94,94,124,68,103,2,65,124,111,190,177,64,245,4,
+67,124,51,94,61,97,227,65,207,64,49,0,86,142,45,4,124,115,94,61,
+124,75,85,2,65,124,117,129,89,212,241,0,124,79,33,197,153,75,5,68,
+55,2,71,94,45,101,25,137,195,0,35,114,43,3,67,94,35,124,75,157,
+86,5,0,65,107,39,4,35,94,61,124,121,167,41,68,143,160,7,1,124,
+86,178,113,0,88,86,35,96,191,76,59,76,47,64,7,138,139,0,81,160,
+13,64,21,234,179,1,190,135,224,13,0,152,89,88,187,152,111,234,203,1,
+74,221,224,63,1,64,37,128,43,128,45,203,9,224,29,7,80,163,64,93,
+137,191,192,33,224,157,3,224,7,23,0,91,176,183,10,88,94,32,94,58,
+94,88,94,33,94,58,117,251,224,15,55,177,15,1,124,49,67,55,86,237,
+1,124,54,101,119,1,61,124,66,143,67,231,1,35,94,87,119,129,147,67,
+41,66,87,67,67,72,99,2,35,94,72,106,1,0,73,113,43,0,83,117,
+187,68,167,2,33,94,65,100,49,133,51,0,80,162,19,221,195,64,5,172,
+157,4,124,61,94,49,124,65,15,2,35,124,111,108,249,202,227,73,215,153,
+75,195,209,75,27,84,29,131,201,2,35,94,80,254,83,0,132,15,66,191,
+2,59,94,67,96,143,68,67,0,49,224,25,0,85,65,192,53,68,247,228,
+35,1,2,67,124,95,229,141,0,137,55,237,209,3,1,65,124,136,239,108,
+67,64,147,67,127,3,124,33,94,32,93,33,96,163,64,99,228,115,4,1,
+94,70,96,151,0,58,114,5,75,215,0,59,74,221,99,25,78,5,148,227,
+1,65,124,77,217,128,111,135,175,128,117,195,165,195,119,192,145,134,213,64,
+5,129,7,224,3,1,131,217,224,61,7,224,3,9,224,31,1,128,83,224,
+241,3,224,101,1,128,117,0,80,238,189,0,64,13,129,1,0,80,85,145,
+171,243,0,66,68,69,121,65,68,57,0,99,182,165,0,78,175,35,128,7,
+96,5,1,124,36,165,75,0,76,96,243,4,32,94,61,124,55,108,251,102,
+51,192,65,121,197,144,183,0,61,100,159,87,253,0,65,118,239,2,65,124,
+122,98,115,4,60,94,69,124,87,160,45,70,113,66,33,175,49,1,124,118,
+160,135,86,95,65,35,0,75,160,39,65,105,224,13,0,1,124,55,118,115,
+64,225,147,149,90,101,64,15,68,95,64,181,224,53,1,0,61,107,77,1,
+66,124,90,165,64,215,66,251,64,33,207,161,64,65,66,183,64,81,64,181,
+192,247,90,167,136,49,128,23,2,65,94,82,97,3,0,91,165,37,0,72,
+161,193,4,66,124,77,124,93,96,9,66,121,2,50,124,32,97,19,193,223,
+0,65,101,91,161,201,2,124,44,92,96,35,166,13,0,58,80,27,229,215,
+0,2,68,124,107,96,7,0,83,114,161,0,68,135,33,1,124,97,96,41,
+0,38,104,99,129,197,64,97,96,111,5,124,43,124,56,124,80,108,229,74,
+233,2,95,94,45,96,93,69,199,4,35,94,67,124,124,109,171,0,47,68,
+3,1,124,123,96,9,64,131,224,15,2,31,34,32,58,50,53,57,32,64,
+10,65,32,95,54,32,95,49,54,51,32,64,95,54,32,89,32,66,32,66,
+32,83,32,85,64,18,5,52,32,64,64,64,64,64,16,1,90,32,224,7,
+1,12,83,39,32,83,32,64,66,32,67,39,32,83,39,64,8,14,83,32,
+64,95,49,52,52,32,95,54,57,32,64,35,49,160,52,0,67,64,23,224,
+38,0,26,66,32,64,64,67,32,67,32,95,54,52,32,95,49,55,51,32,
+64,64,95,49,55,52,32,95,50,49,64,120,7,51,51,57,32,35,49,50,
+56,96,59,128,53,64,110,10,95,49,50,51,32,64,67,32,95,57,56,160,
+41,224,53,19,3,85,32,35,48,224,64,0,31,66,32,80,32,95,51,51,
+55,32,102,114,111,109,85,84,70,56,32,34,92,34,46,47,108,105,98,47,
+68,97,116,97,47,23,67,104,97,114,47,85,110,105,99,111,100,101,46,104,
+115,92,34,44,50,48,50,58,56,34,128,64,64,227,96,230,96,73,128,13,
+64,135,224,189,28,128,187,2,64,67,39,64,251,6,95,49,57,49,32,95,
+57,64,50,160,24,96,204,96,16,3,67,32,95,53,192,11,192,63,3,95,
+50,49,53,64,186,4,50,53,49,32,64,160,55,224,28,0,129,78,64,70,
+96,151,3,95,50,53,50,96,162,3,95,50,53,53,225,39,0,160,78,128,
+140,225,19,2,64,71,64,11,10,95,50,53,55,32,64,64,58,50,53,56,
+129,254,2,50,53,54,66,12,0,55,96,13,7,98,115,117,110,112,97,99,
+107,64,17,0,54,96,17,64,110,2,95,50,53,64,232,3,50,53,52,32,
+64,56,0,53,96,24,2,66,32,89,65,249,65,162,0,58,96,25,64,44,
+65,41,0,67,129,44,4,55,53,32,95,55,64,183,96,118,97,144,130,83,
+129,222,128,57,128,189,129,229,225,42,1,192,190,0,64,128,49,0,58,96,
+33,96,139,64,115,64,61,0,80,128,6,160,68,64,33,0,50,128,205,1,
+49,50,129,63,64,23,2,95,50,51,64,234,7,95,50,49,50,32,95,50,
+51,64,139,192,11,0,57,96,11,1,52,49,161,105,64,11,64,23,192,11,
+65,219,160,11,1,53,48,224,11,0,0,54,64,87,65,151,1,50,50,65,
+120,0,58,96,22,1,10,65,162,224,99,9,129,245,66,57,129,8,64,2,
+64,160,162,81,226,87,0,66,13,225,201,1,192,37,64,16,128,52,64,77,
+96,5,99,90,97,37,1,52,53,64,7,2,85,32,65,161,53,1,52,54,
+128,15,0,75,128,178,64,233,96,0,0,67,64,27,98,47,64,145,1,95,
+55,64,234,224,19,1,7,64,64,83,32,73,32,64,75,64,192,162,145,224,
+134,0,1,83,39,65,87,194,102,99,228,129,149,66,72,64,102,96,181,98,
+250,224,121,0,224,137,16,163,22,160,149,128,80,130,162,96,16,224,63,24,
+0,64,128,233,96,17,0,57,98,3,0,48,97,108,64,38,2,75,52,32,
+128,192,0,58,96,27,224,21,2,160,20,130,218,2,85,32,90,96,1,0,
+75,132,201,0,58,96,90,160,44,64,13,0,54,224,37,14,130,223,225,175,
+0,97,19,3,95,49,50,52,65,249,0,52,98,238,65,147,128,72,0,50,
+224,57,0,0,58,96,27,130,165,161,208,6,95,50,52,48,32,64,65,96,
+49,130,159,224,27,7,128,136,130,70,96,77,224,196,2,128,239,5,117,114,
+101,109,32,58,98,177,64,13,3,113,117,111,116,64,14,195,188,1,50,52,
+101,106,65,168,66,181,1,49,54,130,241,1,50,53,64,27,97,73,229,63,
+22,129,108,3,95,51,54,48,229,43,2,19,87,111,114,100,56,46,115,117,
+99,99,58,32,111,118,101,114,102,108,111,119,133,27,224,108,12,64,94,224,
+108,0,99,198,224,109,42,8,112,114,101,100,58,32,117,110,100,224,110,3,
+99,115,0,49,67,115,68,2,96,14,0,56,227,129,1,66,214,1,50,57,
+67,207,224,245,8,131,103,128,5,64,148,1,53,57,197,186,162,139,2,95,
+50,51,67,217,192,57,224,194,1,224,31,13,224,89,1,64,25,0,49,67,
+67,192,123,0,54,98,31,224,20,0,128,54,96,20,0,58,96,62,225,167,
+6,1,56,54,96,58,64,80,0,51,131,133,129,160,0,49,228,250,2,225,
+32,10,225,141,19,160,82,64,195,224,82,0,97,134,224,83,23,225,115,13,
+101,236,65,102,65,95,0,51,101,72,224,174,2,225,89,7,0,55,97,137,
+193,51,99,36,224,137,2,224,25,1,0,53,224,71,6,64,19,0,51,192,
+72,227,108,0,128,187,96,83,128,77,160,58,65,75,0,54,195,151,165,98,
+135,154,128,133,72,124,68,219,232,150,0,101,68,68,173,134,33,131,120,0,
+89,160,170,224,66,0,64,13,168,159,136,249,128,7,96,131,129,53,0,56,
+96,172,128,28,192,76,64,32,136,210,1,95,56,135,162,3,64,67,32,79,
+99,205,128,11,160,53,160,252,64,177,224,165,2,224,42,1,167,16,0,58,
+96,225,224,218,16,128,136,224,218,67,129,44,224,218,69,96,165,224,218,11,
+168,25,192,46,106,46,64,44,128,179,224,125,5,160,192,96,202,160,180,162,
+222,64,91,73,85,128,150,164,72,234,164,0,232,40,0,66,81,131,111,0,
+54,104,250,2,95,56,56,137,2,0,58,98,117,5,10,65,32,75,32,95,
+72,192,0,58,67,175,229,117,3,102,108,0,58,67,189,229,139,10,0,50,
+230,101,1,64,13,229,124,0,164,157,169,88,64,9,105,29,64,35,131,248,
+2,80,32,58,64,37,128,60,102,8,0,50,201,61,224,1,3,103,253,64,
+0,224,20,11,224,17,8,224,14,5,224,11,2,192,8,102,177,128,184,129,
+125,3,95,49,50,54,105,22,101,138,170,194,3,54,32,95,51,70,100,232,
+215,7,64,54,129,70,0,73,64,189,129,54,0,83,98,156,65,128,129,163,
+162,134,161,157,138,101,128,33,65,181,224,22,4,64,149,0,95,74,194,235,
+144,19,10,73,110,116,101,103,101,114,95,84,121,112,171,144,3,53,52,58,
+49,171,143,96,65,1,50,49,97,109,134,102,1,39,66,66,105,226,153,3,
+104,73,224,34,1,224,26,3,224,23,2,194,49,2,95,50,49,138,14,1,
+50,48,97,148,130,11,98,199,0,57,66,53,74,12,0,49,204,207,0,58,
+96,37,65,70,1,56,52,102,195,1,95,57,96,53,64,32,128,53,0,56,
+64,90,160,20,130,28,2,75,32,58,96,112,162,3,0,49,130,3,202,41,
+137,67,168,225,96,184,96,14,162,109,0,49,130,34,226,153,6,64,34,64,
+131,70,201,106,197,99,159,160,10,133,47,64,10,0,49,64,134,3,64,95,
+49,57,96,194,64,34,0,73,97,181,231,181,7,231,154,7,140,39,231,177,
+14,224,45,14,96,185,97,15,129,38,64,31,162,219,128,24,64,19,130,63,
+96,243,140,165,1,49,55,97,141,64,66,227,46,0,64,44,98,167,1,55,
+55,64,4,0,56,98,165,65,137,1,49,56,66,161,0,49,103,244,0,56,
+96,22,0,56,70,66,96,61,2,95,49,56,104,216,96,73,128,38,0,57,
+130,229,96,12,141,61,2,95,49,57,224,110,0,1,95,49,137,9,131,174,
+0,48,71,168,192,11,0,51,224,56,8,132,136,162,205,77,249,236,204,1,
+224,27,5,104,91,96,28,1,95,56,165,88,66,99,128,41,2,95,50,48,
+102,196,64,18,224,81,51,65,179,224,81,6,66,115,1,50,48,224,220,1,
+2,50,48,55,224,11,2,0,56,66,254,4,95,50,48,57,32,160,67,0,
+75,160,8,0,75,66,7,64,8,0,58,96,43,5,10,65,32,90,32,85,
+66,185,0,48,130,206,6,112,111,112,99,111,117,110,74,101,64,68,202,180,
+0,66,96,109,71,196,1,55,57,173,166,0,58,64,113,97,182,64,24,0,
+58,64,139,226,183,3,139,86,224,1,9,171,104,224,0,2,0,58,96,88,
+64,72,232,163,5,9,97,114,105,116,104,109,101,116,105,99,232,247,4,0,
+58,97,1,231,47,0,68,241,103,29,228,150,1,192,5,3,95,50,48,49,
+160,7,0,50,227,96,0,164,63,198,93,66,142,134,217,1,49,57,66,140,
+97,139,227,160,3,226,241,3,128,66,0,58,66,47,128,234,224,228,15,224,
+1,3,224,240,9,64,0,0,58,96,147,230,24,1,64,169,192,211,65,108,
+1,49,57,98,255,64,147,0,58,66,171,161,90,0,51,224,108,42,0,58,
+96,75,224,92,4,64,244,132,141,2,95,49,57,101,24,96,252,0,58,67,
+33,160,105,225,193,17,224,103,14,0,58,96,73,224,195,5,74,15,128,195,
+67,135,224,89,0,224,92,14,224,84,7,0,58,96,58,237,105,1,224,1,
+21,225,103,12,0,58,96,131,197,56,69,51,101,45,133,39,133,38,131,240,
+229,38,7,227,156,1,101,4,135,227,68,232,0,58,96,47,103,19,143,29,
+98,68,64,232,226,40,1,0,58,64,88,160,184,238,33,1,96,45,5,10,
+65,32,42,32,58,96,126,129,42,1,95,49,64,149,130,89,226,122,12,101,
+131,0,58,68,220,160,49,176,68,130,195,228,75,9,234,61,2,64,154,70,
+204,224,29,3,1,95,49,169,80,225,165,0,100,74,227,214,0,64,106,226,
+4,0,137,5,224,2,2,193,85,64,51,160,223,224,30,3,225,133,3,0,
+58,96,104,224,178,62,234,31,1,128,178,65,111,224,178,4,226,40,0,0,
+51,224,141,3,226,23,6,0,58,96,56,224,183,7,226,66,14,0,58,96,
+117,226,178,0,100,242,64,154,64,18,4,120,111,114,32,58,102,150,2,10,
+65,32,128,11,129,208,4,97,110,100,32,58,102,187,117,91,78,176,77,157,
+2,49,54,54,66,57,64,212,233,253,8,224,1,21,234,27,0,224,0,6,
+224,57,25,192,1,224,65,14,224,56,25,128,1,224,62,13,224,55,25,64,
+1,224,59,12,224,54,25,224,56,13,224,53,44,224,50,41,224,47,38,224,
+44,35,224,41,32,224,38,29,224,35,26,224,32,23,224,29,20,224,26,17,
+224,23,14,224,20,11,224,17,8,224,14,5,224,11,2,192,8,204,190,224,
+0,6,0,58,74,28,229,83,1,224,1,23,227,202,4,224,68,3,0,54,
+96,68,0,73,67,165,228,51,0,64,45,139,103,101,125,99,186,0,53,171,
+43,1,95,49,128,10,105,143,160,11,118,63,128,11,0,55,102,24,160,11,
+69,170,192,11,107,147,74,235,173,111,138,218,132,69,64,6,5,10,65,32,
+117,62,61,64,134,132,82,1,117,62,64,11,132,81,1,117,60,96,24,132,
+82,3,117,60,32,58,96,114,64,11,2,99,109,112,64,13,132,71,100,95,
+96,110,101,210,192,157,64,11,0,58,96,187,3,10,65,32,47,64,73,64,
+18,160,244,0,54,128,244,0,75,64,10,206,29,1,54,50,64,13,128,147,
+1,98,115,152,0,64,20,160,29,0,48,64,13,128,152,7,98,115,108,101,
+110,103,116,104,64,17,232,147,0,101,30,142,58,74,186,64,21,0,82,141,
+242,64,16,170,68,152,17,0,49,88,86,88,209,0,55,96,27,170,63,96,
+182,85,157,1,95,49,120,248,0,49,87,206,1,95,49,114,136,0,49,88,
+91,1,95,49,76,40,129,77,96,65,129,77,96,10,0,58,96,6,225,77,
+0,184,158,97,77,184,150,129,77,184,68,97,77,184,46,0,105,129,77,183,
+199,90,245,118,107,0,49,182,107,65,35,182,96,112,161,1,58,49,182,89,
+129,119,86,40,1,95,49,86,70,0,58,96,188,193,108,182,88,0,61,96,
+11,226,98,1,64,37,128,143,121,58,111,73,145,208,1,95,49,82,219,0,
+90,64,7,110,222,1,95,49,79,151,64,6,65,84,1,58,49,182,88,120,
+13,97,30,86,13,0,58,96,29,96,22,71,52,192,73,3,50,51,32,35,
+109,142,160,10,177,196,195,116,224,32,2,143,177,122,170,184,0,82,67,219,
+124,0,80,64,103,224,65,2,224,64,5,64,200,64,0,96,58,163,88,182,
+198,139,145,128,163,128,244,129,76,71,215,86,182,71,210,0,58,96,29,200,
+97,64,14,232,112,0,99,134,0,58,97,8,167,40,164,18,0,58,97,36,
+194,112,128,36,209,75,0,95,81,99,96,96,66,55,112,216,107,60,82,14,
+96,40,129,119,11,94,109,100,53,83,116,114,105,110,103,32,58,96,27,186,
+223,2,66,32,95,98,99,82,18,85,83,0,39,96,15,219,176,122,74,0,
+49,141,116,108,32,0,58,96,102,128,234,160,56,0,48,73,177,1,90,32,
+224,31,0,129,10,4,110,101,119,67,65,128,112,2,76,101,110,64,115,129,
+10,224,213,4,178,91,2,65,32,58,99,48,240,37,0,2,115,101,113,142,
+16,96,8,101,20,0,58,99,54,144,82,81,209,192,75,224,1,1,229,137,
+78,0,58,91,86,193,123,229,92,2,0,58,121,21,3,10,65,32,79,64,
+144,129,80,3,95,49,48,54,83,101,0,49,78,61,110,109,96,8,3,95,
+49,49,48,66,60,101,21,0,49,112,169,192,11,67,201,192,11,87,166,160,
+11,81,116,1,95,49,81,154,0,58,96,18,65,192,3,112,111,107,101,86,
+185,64,110,129,99,4,94,112,101,101,107,192,18,162,105,65,183,75,72,145,
+227,0,49,81,124,0,58,64,90,160,193,241,85,2,96,34,224,50,4,101,
+170,192,50,226,132,1,1,95,49,81,127,67,97,68,246,1,95,49,81,163,
+64,33,129,132,2,116,111,73,79,48,96,21,96,14,1,80,116,74,18,177,
+178,244,76,5,96,98,245,17,3,174,185,97,116,67,197,64,93,66,136,189,
+39,69,134,1,64,95,76,196,108,163,0,58,65,59,193,138,229,119,2,177,
+65,237,122,1,79,206,65,197,128,64,88,100,66,170,142,226,0,58,65,140,
+160,68,234,217,0,175,255,1,95,49,80,71,76,108,0,35,101,191,176,4,
+154,120,64,27,193,18,226,78,8,226,117,73,176,81,203,246,64,32,1,95,
+49,90,94,97,13,1,95,49,79,65,163,176,224,22,1,163,182,81,221,99,
+179,163,186,125,248,194,182,176,111,64,78,79,202,0,95,70,65,0,58,96,
+40,66,82,3,102,114,101,101,64,235,173,230,101,166,224,96,6,0,95,78,
+205,0,95,79,86,140,148,96,34,192,114,97,187,97,131,165,136,192,23,0,
+58,96,177,252,7,4,64,171,133,119,96,254,0,39,93,8,224,49,0,0,
+73,161,9,225,0,3,193,225,225,72,1,224,119,2,64,115,178,79,96,130,
+186,91,255,85,5,133,129,176,111,205,48,96,156,130,20,0,89,109,164,65,
+133,2,66,32,90,134,30,113,80,2,83,32,95,79,224,65,113,130,80,224,
+89,7,96,88,176,106,145,26,132,39,0,58,176,84,68,201,0,58,176,35,
+96,184,71,255,130,164,0,53,192,75,226,169,7,176,53,242,25,6,90,178,
+4,102,105,110,101,100,114,15,240,36,0,233,249,4,0,58,239,248,3,99,
+181,72,195,99,14,0,95,72,235,0,83,238,137,11,65,113,238,87,2,144,
+17,85,225,0,48,224,37,3,224,33,0,128,249,240,37,1,0,95,79,246,
+0,58,176,31,0,66,188,172,112,52,240,15,0,129,153,89,6,1,56,50,
+176,45,0,80,96,7,97,114,225,113,0,112,170,64,120,97,11,143,6,96,
+212,181,41,85,6,99,164,96,92,193,184,244,70,0,136,90,247,135,4,194,
+68,249,72,0,0,55,192,191,65,5,0,48,249,85,0,97,2,217,55,97,
+210,176,121,4,105,110,118,32,58,176,26,4,115,104,114,32,58,176,3,72,
+232,175,233,0,97,128,23,129,143,4,115,104,108,32,58,175,111,2,43,32,
+58,175,76,2,45,32,58,175,67,2,73,32,58,175,64,230,86,7,175,75,
+130,155,100,157,239,80,0,2,53,32,95,75,10,0,95,75,27,0,95,75,
+45,0,95,75,62,0,95,75,80,0,95,113,132,74,35,149,59,74,34,96,
+9,0,58,175,118,131,166,98,189,131,179,96,37,0,53,131,103,69,91,172,
+96,224,29,1,224,49,1,224,39,5,128,237,227,59,2,172,74,74,129,172,
+64,2,62,32,58,171,229,74,125,171,227,2,60,32,58,171,225,138,122,171,
+225,106,79,108,107,75,216,0,58,171,235,74,76,171,232,65,98,171,207,2,
+80,32,58,171,205,195,255,164,58,194,34,224,20,11,224,17,8,224,14,5,
+224,11,2,192,8,229,132,0,172,47,179,129,163,208,172,57,4,110,101,103,
+32,58,172,55,2,42,32,58,172,49,2,45,32,58,172,45,2,43,32,58,
+172,37,224,148,68,0,58,172,100,199,88,64,17,225,225,0,73,145,68,90,
+66,26,75,255,96,12,165,226,1,64,58,204,113,3,53,53,32,58,172,54,
+2,73,32,58,172,51,64,41,66,76,76,41,0,58,172,59,64,29,128,224,
+64,9,168,134,7,109,97,108,108,111,99,32,58,172,56,224,158,2,0,58,
+172,58,2,85,32,58,172,57,224,198,14,0,58,172,74,64,19,0,95,76,
+37,1,64,95,108,73,172,72,103,221,107,253,172,77,6,114,97,105,115,101,
+32,58,172,79,7,65,46,114,101,97,100,32,58,172,80,13,73,79,46,103,
+101,116,65,114,103,82,101,102,32,58,172,46,4,95,51,50,32,95,108,47,
+75,108,229,59,1,5,115,116,100,101,114,114,101,56,172,65,2,73,79,46,
+128,20,1,32,58,171,196,96,59,75,148,224,59,9,2,111,117,116,128,59,
+205,35,67,160,0,58,171,207,128,73,4,111,117,116,32,58,171,210,4,95,
+51,54,32,58,171,205,2,73,32,58,171,195,128,95,122,78,0,52,224,95,
+6,1,105,110,96,94,171,219,3,75,52,32,58,171,189,128,91,3,105,110,
+32,58,171,186,129,89,0,95,75,19,102,69,135,247,231,167,0,0,95,75,
+109,194,70,231,254,3,97,132,0,95,107,236,64,104,205,69,225,195,1,171,
+190,203,222,2,50,56,32,101,26,162,72,75,176,1,64,58,171,202,93,34,
+171,192,0,46,162,20,254,30,0,2,54,32,58,171,175,13,73,79,46,112,
+101,114,102,111,114,109,73,79,32,58,171,185,0,75,107,3,231,232,1,0,
+58,171,99,0,95,64,192,66,134,96,123,104,157,88,2,225,4,0,3,62,
+62,32,58,203,107,64,66,69,8,110,137,0,51,232,241,0,90,229,156,18,
+72,26,188,28,160,9,0,58,221,209,156,139,72,217,163,37,75,33,0,95,
+74,209,90,26,224,35,2,96,32,118,153,192,32,0,95,101,85,221,21,0,
+55,86,206,224,47,12,96,150,116,254,65,163,0,58,171,108,113,122,96,9,
+71,177,168,123,129,19,153,11,253,0,4,138,156,128,253,234,221,1,0,49,
+171,58,192,12,96,199,171,10,129,27,96,61,142,76,235,48,2,143,80,194,
+228,97,243,109,235,129,219,71,192,129,81,73,13,96,36,64,199,64,193,69,
+156,69,155,128,232,2,75,32,58,128,203,143,216,200,210,0,58,164,81,9,
+79,46,114,101,116,117,114,110,32,58,128,201,97,181,2,61,32,58,128,197,
+2,80,32,58,226,192,3,228,30,0,229,0,32,0,58,226,178,1,228,89,
+11,231,83,0,0,50,143,39,64,200,1,95,57,114,143,224,0,255,224,0,
+255,224,0,255,224,0,170,1,32,125,
+};
+unsigned char *combexpr = data;
+int combexprlen = 43930;
 #include "mhsffi.h"
 static struct ffi_entry table[] = {
 { 0,0 }
diff --git a/generated/mhs.c b/generated/mhs.c
--- a/generated/mhs.c
+++ b/generated/mhs.c
@@ -1,6318 +1,6397 @@
 static unsigned char data[] = {
-122,76,90,49,3,237,1,0,26,118,55,46,50,10,50,51,50,53,10,65,
-32,95,48,32,95,50,51,32,64,95,51,52,53,32,64,66,224,15,2,6,
-53,55,32,64,64,66,32,224,18,3,17,52,57,32,64,64,64,83,39,32,
-66,32,64,66,39,32,67,32,83,64,50,6,83,32,67,39,32,83,39,128,
-10,24,64,95,49,50,55,32,95,51,53,57,32,64,102,114,111,109,85,84,
-70,56,32,34,45,104,34,64,57,10,64,67,39,66,32,85,32,95,52,48,
-55,64,4,0,56,64,19,1,75,50,96,25,224,70,29,0,63,224,70,61,
-4,45,104,101,108,112,224,74,10,0,49,96,68,224,74,37,6,118,101,114,
-115,105,111,110,224,77,9,3,50,50,49,32,224,40,1,8,77,105,99,114,
-111,72,115,44,32,160,47,0,32,64,48,96,35,4,95,52,50,48,32,128,
-10,224,46,1,16,44,32,99,111,109,98,105,110,97,116,111,114,32,102,105,
-108,101,224,55,5,2,52,50,49,96,111,224,172,0,2,83,39,32,64,123,
-2,64,67,32,224,166,14,6,110,117,109,101,114,105,99,224,174,5,2,66,
-32,80,192,250,64,131,224,77,0,96,0,65,250,64,248,96,90,64,5,2,
-95,56,50,130,8,64,109,2,95,52,50,64,13,64,134,0,67,64,12,3,
-52,32,64,35,64,12,0,66,128,80,64,7,224,209,5,6,102,108,97,103,
-115,32,61,96,191,4,64,95,49,49,56,64,53,98,79,129,56,96,100,162,
-113,4,83,32,95,52,51,96,144,128,121,224,23,4,96,249,224,23,10,96,
-186,65,4,0,66,66,159,10,95,52,51,53,32,64,85,32,75,32,65,128,
-99,0,67,66,174,2,39,32,64,96,208,9,95,52,51,54,32,64,95,52,
-51,55,65,50,5,67,32,95,55,52,50,65,225,0,52,66,243,0,75,96,
-161,1,50,50,64,198,192,153,0,80,64,231,0,39,96,212,0,55,64,41,
-7,56,52,52,32,95,53,50,57,224,224,2,11,99,111,109,109,97,110,100,
-45,108,105,110,101,64,228,2,35,48,32,96,3,129,86,3,95,51,52,51,
-226,172,0,128,143,3,95,50,50,56,128,14,64,99,98,2,1,57,52,96,
-15,3,95,50,51,48,64,230,1,85,32,129,144,64,198,96,149,224,43,0,
-128,149,3,95,50,51,50,64,32,163,145,4,32,95,56,48,57,64,20,64,
-101,2,95,51,49,65,170,64,34,64,7,129,93,128,60,129,209,2,95,49,
-51,96,32,226,47,1,98,61,1,56,52,192,13,5,79,32,35,52,54,32,
-129,14,193,27,3,67,39,32,79,161,220,1,56,54,224,8,2,160,6,161,
-60,192,45,96,0,2,58,50,51,66,29,2,10,65,32,65,105,224,1,19,
-0,83,64,77,2,48,53,32,65,53,1,95,49,97,208,162,70,1,79,32,
-224,140,2,96,98,65,196,64,25,97,190,224,205,0,226,254,4,224,192,4,
-2,95,55,52,65,91,160,152,0,79,65,138,0,57,67,241,4,49,32,73,
-32,64,227,41,2,5,108,105,98,47,103,109,132,28,96,56,128,241,97,173,
-0,49,227,82,3,3,47,108,105,98,224,37,1,224,66,3,3,111,117,116,
-46,67,189,162,233,96,199,224,6,28,96,154,224,6,0,128,20,1,51,49,
-96,182,160,6,224,27,4,224,113,1,6,100,101,102,97,117,108,116,160,112,
-64,35,65,116,0,51,97,116,2,66,32,89,97,241,98,32,0,83,194,201,
-65,50,4,67,32,64,64,80,226,245,0,162,21,64,5,64,13,163,253,132,
-255,228,83,14,132,68,224,57,42,0,118,224,57,48,0,113,224,57,48,0,
-114,224,57,48,0,108,224,57,48,0,115,224,57,48,1,67,82,224,58,49,
-0,87,224,58,49,224,57,48,0,84,224,57,48,3,88,67,80,80,224,60,
-48,0,122,224,57,48,0,81,224,57,2,195,26,198,78,128,73,231,245,19,
-0,111,192,61,64,46,0,82,96,54,229,142,2,229,134,0,0,50,229,134,
-0,224,105,49,2,112,116,99,224,108,20,128,85,224,114,0,105,167,96,114,
-103,10,164,182,134,233,1,64,67,68,202,198,72,224,144,12,161,51,64,14,
-161,69,96,108,232,91,4,0,49,71,154,0,35,74,46,128,0,167,187,96,
-5,97,126,224,57,1,96,87,128,105,225,161,1,192,37,224,38,0,225,170,
-6,128,95,1,49,48,224,96,0,224,61,43,0,49,201,32,224,61,45,102,
-203,224,61,1,224,67,0,224,61,11,0,67,224,61,6,0,54,231,227,0,
-128,54,0,66,225,91,1,225,33,8,224,62,10,0,55,226,47,2,224,119,
-6,224,178,18,0,56,136,105,224,53,38,0,57,199,165,224,53,36,0,55,
-193,29,224,195,2,226,31,8,1,49,48,192,145,160,37,102,121,224,51,74,
-0,49,192,195,224,103,35,202,120,224,103,35,203,27,224,51,33,227,35,0,
-128,36,169,186,74,111,2,54,55,54,200,165,4,89,32,66,32,80,105,222,
-163,177,2,49,48,54,103,177,0,80,105,95,3,52,53,48,32,107,89,203,
-51,97,124,72,180,106,40,1,54,54,99,246,0,52,73,130,0,55,107,159,
-99,55,2,95,50,54,132,15,227,68,0,128,132,65,219,228,62,19,73,202,
-132,62,64,43,128,138,2,64,95,57,75,45,224,0,8,224,79,12,107,36,
-192,77,0,55,234,134,1,1,49,57,193,62,227,81,1,64,16,129,25,0,
-85,128,10,160,68,0,67,234,200,12,202,82,128,49,0,90,224,60,1,224,
-10,0,224,220,23,224,76,1,229,27,4,1,56,56,138,251,229,27,4,224,
-223,28,0,57,224,223,11,224,130,19,0,49,74,217,224,130,10,1,55,52,
-66,248,224,130,5,224,70,64,224,197,10,224,72,0,64,53,230,161,1,224,
-43,20,230,205,9,225,198,32,67,58,225,198,64,224,76,2,224,252,5,0,
-57,96,18,225,198,10,109,123,238,145,9,7,85,110,107,110,111,119,110,32,
-78,153,1,58,32,103,100,203,230,172,116,0,35,65,104,64,76,237,184,3,
-160,156,160,249,64,128,165,34,76,146,1,49,52,108,146,64,63,0,56,231,
-199,3,0,46,135,196,224,34,20,136,84,224,25,11,0,97,200,1,160,241,
-206,138,96,72,224,239,2,232,24,63,225,196,13,224,65,1,0,95,231,94,
-0,224,39,11,68,139,224,39,27,0,53,224,39,30,228,147,1,224,39,11,
-80,151,160,40,228,110,1,224,61,2,228,65,3,96,61,224,108,21,224,46,
-8,224,39,14,228,218,3,224,39,19,228,34,3,224,39,17,0,50,229,120,
-2,224,79,20,114,42,224,39,27,227,216,1,5,95,54,49,32,95,55,65,
-108,2,49,53,55,160,9,79,145,102,84,128,0,224,64,0,0,83,224,64,
-11,129,98,128,57,82,122,0,51,177,234,128,57,131,175,135,11,78,117,0,
-50,110,117,6,95,56,49,48,32,75,32,80,184,131,221,224,1,21,136,114,
-224,0,5,224,53,44,224,50,41,224,47,38,224,44,35,224,41,32,224,38,
-29,224,35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,224,
-17,8,224,14,5,224,11,2,192,8,96,5,100,245,232,172,3,224,0,5,
-66,88,0,49,226,88,5,0,90,224,147,4,224,1,15,226,34,10,226,88,
-255,224,37,23,224,35,4,224,32,23,224,29,20,224,26,17,224,23,14,224,
-20,11,224,17,8,224,14,5,224,11,2,192,8,96,5,226,86,19,66,85,
-0,48,226,85,5,224,101,1,104,142,225,247,25,64,1,226,46,10,224,55,
-26,224,53,10,224,50,41,224,47,38,224,44,35,224,41,32,224,38,29,224,
-35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,226,45,14,
-0,58,135,200,226,40,13,64,1,162,44,226,46,255,224,41,20,224,38,29,
-224,35,26,224,32,23,224,29,20,224,26,17,226,3,12,66,1,0,56,226,
-1,17,193,255,224,85,7,224,1,11,225,254,255,224,38,20,224,35,26,224,
-32,23,224,29,20,224,26,17,224,23,14,228,25,13,66,22,0,55,228,24,
-19,228,26,2,226,28,255,224,41,19,224,38,29,224,35,26,224,32,23,224,
-29,20,225,235,11,65,233,0,54,225,233,21,225,235,3,225,236,255,224,41,
-19,224,38,29,224,35,26,224,32,23,225,207,10,65,206,0,53,225,206,23,
-128,1,225,212,2,225,215,255,224,41,21,225,110,7,65,107,0,52,225,107,
-29,192,1,225,115,5,64,0,224,49,23,64,1,225,119,64,224,193,3,64,
-189,0,51,224,189,9,64,161,224,89,23,64,1,226,11,246,224,38,29,224,
-35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,224,17,8,
-224,14,5,224,11,2,238,115,17,66,76,243,32,6,224,106,3,224,1,13,
-227,12,9,226,121,48,224,153,2,64,138,241,82,6,224,69,11,224,124,3,
-224,31,11,224,1,7,224,117,11,224,53,44,224,50,41,224,47,38,224,44,
-35,224,41,32,224,38,29,224,35,26,226,67,9,65,176,240,173,16,224,1,
-7,226,51,6,224,40,17,224,1,1,225,185,205,225,71,6,0,58,155,181,
-227,128,33,227,124,8,224,46,21,128,1,225,74,114,224,239,4,64,237,238,
-181,18,224,1,7,224,235,7,224,43,19,192,1,226,53,161,226,9,5,65,
-26,237,185,22,224,1,11,229,139,10,224,88,2,64,84,0,54,128,84,6,
-50,55,48,32,95,57,51,90,78,3,57,51,53,32,96,26,170,112,2,50,
-51,49,64,4,0,51,64,4,95,184,4,64,95,50,51,53,224,12,0,14,
-67,32,83,32,95,49,50,55,32,95,53,49,32,64,35,157,208,224,18,4,
-89,123,224,18,6,126,153,224,18,5,155,6,224,18,4,224,94,10,64,183,
-0,67,127,233,224,18,0,127,241,93,49,252,128,1,19,116,111,69,110,117,
-109,58,32,111,117,116,32,111,102,32,114,97,110,103,101,156,146,128,220,64,
-194,64,64,161,12,125,42,3,95,49,48,57,95,87,64,8,0,53,64,121,
-4,64,95,49,56,54,128,26,97,23,3,64,85,32,83,221,58,2,67,32,
-60,160,178,224,18,6,160,159,224,18,3,64,159,1,85,32,96,6,64,7,
-129,121,224,35,6,64,111,1,85,32,96,6,64,7,64,88,96,36,224,91,
-4,129,71,224,55,4,65,71,1,85,32,96,6,64,7,154,229,1,85,32,
-97,133,189,155,1,54,54,225,183,1,128,252,158,9,128,5,157,129,5,49,
-52,50,32,95,54,64,52,91,73,224,47,0,224,13,6,1,67,39,66,164,
-3,95,50,54,55,224,81,3,97,33,224,26,13,161,105,0,55,224,20,2,
-2,50,55,56,224,12,0,66,98,235,103,28,226,196,4,224,34,13,224,1,
-5,230,26,205,224,41,32,224,38,29,231,177,8,65,143,236,57,10,161,127,
-224,84,15,224,1,3,225,119,255,224,38,20,224,35,26,224,32,23,224,29,
-20,224,26,17,224,23,14,224,20,11,224,17,8,224,14,5,236,49,16,66,
-67,140,48,0,83,100,18,0,66,229,190,0,5,51,53,57,32,64,75,64,
-51,0,66,64,27,1,95,48,68,7,127,160,0,56,196,148,1,39,32,95,
-150,128,9,224,31,0,2,64,67,39,64,119,8,95,55,57,50,32,64,95,
-56,56,69,163,9,66,32,95,52,52,56,32,95,57,50,133,111,3,95,55,
-57,53,68,126,0,49,91,30,96,97,0,67,96,75,1,66,32,102,24,64,
-174,0,49,230,30,2,11,67,97,110,110,111,116,32,102,105,110,100,32,134,
-22,3,64,66,32,85,64,46,133,14,0,56,100,244,128,155,165,7,0,50,
-64,96,64,0,224,10,1,68,198,0,48,135,40,140,151,64,109,0,54,160,
-182,224,227,7,1,52,52,101,107,3,32,95,52,50,64,92,101,168,224,33,
-4,4,50,50,57,56,32,192,235,224,128,0,64,232,71,246,126,110,7,49,
-32,64,79,32,35,53,56,161,70,96,29,224,112,2,128,41,224,234,6,0,
-32,192,224,5,89,32,66,32,80,32,64,56,128,99,3,67,39,32,89,96,
-12,0,32,64,15,0,64,64,28,96,145,126,219,70,96,128,174,0,49,72,
-31,96,0,3,67,39,32,79,96,94,6,57,57,32,95,49,51,48,225,111,
-1,160,141,128,37,129,153,0,64,161,154,0,64,161,177,65,36,140,11,96,
-112,98,69,128,6,160,15,64,112,64,136,1,95,54,66,38,2,95,52,52,
-65,230,192,6,113,142,64,225,0,49,98,3,128,21,0,58,96,137,98,105,
-2,32,95,49,83,28,129,188,225,115,2,104,101,130,77,225,81,0,160,37,
-225,134,1,200,75,1,51,53,64,46,2,95,51,53,160,37,226,57,12,22,
-103,101,116,68,105,114,101,99,116,111,114,121,67,111,110,116,101,110,116,115,
-58,32,99,130,79,3,111,112,101,110,193,110,129,94,2,83,39,32,65,91,
-64,5,225,233,4,97,83,96,136,129,113,98,121,0,83,232,214,0,224,138,
-5,226,150,0,224,65,3,104,187,224,24,8,1,51,53,97,116,129,225,96,
-217,225,190,0,226,90,8,1,95,52,64,223,97,85,105,222,225,111,1,104,
-250,0,52,96,97,97,101,139,145,9,94,99,95,100,95,110,97,109,101,32,
-64,19,138,138,7,94,114,101,97,100,100,105,114,96,18,0,54,96,18,0,
-75,224,145,5,0,55,64,145,225,128,4,194,168,0,66,130,210,225,91,1,
-64,91,0,58,129,63,64,167,64,185,66,97,104,219,224,66,30,6,118,101,
-114,115,105,111,110,224,69,1,0,52,87,3,3,95,50,50,56,128,205,224,
-69,29,13,99,111,109,112,105,108,101,114,58,32,109,104,115,45,96,74,2,
-95,56,57,100,89,224,64,29,6,100,101,112,101,110,100,115,224,134,1,0,
-55,64,134,64,38,3,54,56,32,85,99,112,160,51,0,64,128,231,192,66,
-4,79,32,35,52,53,163,222,128,187,97,140,1,50,49,130,186,98,86,225,
-195,2,96,126,224,118,1,15,101,120,112,111,115,101,100,45,109,111,100,117,
-108,101,115,58,162,138,165,79,227,1,3,0,85,99,160,64,209,226,19,4,
-224,79,6,4,111,116,104,101,114,224,77,7,192,60,138,106,228,127,1,1,
-95,54,196,128,74,111,228,131,11,64,24,129,213,1,56,50,162,102,128,0,
-66,60,140,106,128,170,0,66,224,151,7,226,188,0,227,181,2,74,181,1,
-54,53,202,181,0,52,64,38,138,245,229,8,14,15,66,117,105,108,100,105,
-110,103,32,112,97,99,107,97,103,101,128,147,170,186,69,1,163,171,230,123,
-7,67,158,66,64,68,149,1,55,54,224,20,0,133,51,67,180,196,98,132,
-197,227,232,1,2,95,52,51,192,229,96,29,128,48,0,39,224,5,8,224,
-230,3,192,131,224,232,30,192,234,128,10,224,239,5,3,87,114,105,116,224,
-238,9,101,211,98,120,226,181,9,2,32,116,111,161,168,0,55,139,212,160,
-0,224,219,0,96,195,128,108,224,183,6,161,160,0,39,96,2,64,184,64,
-250,224,70,0,160,46,1,50,50,227,67,0,166,1,100,189,0,67,97,122,
-104,42,77,216,65,126,3,50,50,57,49,97,6,0,56,67,13,0,85,102,
-181,3,64,85,32,65,96,156,0,52,135,227,224,21,5,109,180,68,41,163,
-100,136,74,164,62,227,255,0,3,95,50,49,49,193,147,96,146,225,170,6,
-192,196,225,127,29,225,128,22,6,67,111,109,112,114,101,115,68,143,3,32,
-116,105,109,193,129,129,74,225,131,0,101,126,77,18,133,209,69,178,4,55,
-52,32,95,55,135,60,225,156,2,1,109,115,194,176,168,132,101,23,163,23,
-1,49,50,69,102,64,87,0,54,101,246,6,51,54,56,32,95,55,55,142,
-188,163,109,64,51,129,172,97,33,129,91,131,124,141,132,1,66,32,232,35,
-1,225,145,1,168,10,248,64,1,128,7,230,91,4,141,159,65,175,0,51,
-65,110,0,55,105,163,64,88,140,77,0,83,196,241,1,54,52,97,153,2,
-95,49,52,68,249,103,190,198,242,104,80,2,64,35,52,128,82,166,136,131,
-14,0,80,227,155,1,98,129,224,50,4,101,47,161,8,168,71,99,148,103,
-227,66,17,2,95,52,51,96,83,128,130,66,20,200,91,0,49,97,30,64,
-150,130,51,1,95,54,99,222,64,14,1,54,54,106,78,1,54,56,65,0,
-231,150,0,224,163,3,0,73,64,9,64,237,224,174,2,161,4,104,55,226,
-14,8,195,135,103,65,104,45,9,102,32,116,104,101,32,102,111,114,109,96,
-20,0,45,198,188,131,131,98,21,4,49,50,54,32,95,107,80,64,0,65,
-81,139,91,195,130,64,1,235,177,30,224,11,2,192,8,73,241,160,86,183,
-88,0,50,65,153,3,95,50,49,53,106,215,99,175,224,109,0,0,95,96,
-144,73,246,0,56,97,7,162,189,0,55,65,42,96,246,70,9,1,55,55,
-64,26,68,99,1,49,49,69,131,2,49,57,51,107,64,64,77,66,21,162,
-102,163,5,200,249,65,100,229,38,5,204,11,195,146,1,67,32,138,71,241,
-231,6,15,112,107,103,80,97,116,104,32,105,115,32,101,109,112,116,121,230,
-163,0,130,166,129,243,96,6,0,79,66,55,0,79,235,57,0,192,27,128,
-135,96,105,134,123,231,41,5,228,17,13,64,12,0,52,70,232,0,49,131,
-168,177,118,228,15,22,6,73,110,115,116,97,108,108,229,147,9,64,99,168,
-12,229,144,6,0,105,234,78,0,64,81,230,28,0,233,92,5,196,82,70,
-133,224,13,1,229,180,0,224,208,4,4,95,50,50,55,54,68,113,160,177,
-64,86,224,226,0,128,50,224,253,10,64,53,64,212,203,219,96,0,231,4,
-3,64,54,232,8,0,225,91,2,161,123,135,83,231,204,19,161,81,146,199,
-231,192,14,4,99,114,101,97,116,231,182,1,224,84,6,97,66,224,219,1,
-69,242,131,246,2,32,95,56,66,205,192,150,128,193,64,176,110,50,110,87,
-76,174,133,36,1,95,57,200,153,169,30,236,207,8,134,158,134,157,0,55,
-69,179,202,162,233,193,10,224,101,3,234,136,4,238,168,1,64,0,0,75,
-131,222,98,218,1,95,52,148,140,67,46,139,118,70,231,2,90,32,75,99,
-69,64,21,182,3,105,100,0,55,67,17,1,50,50,79,63,64,26,0,54,
-224,26,0,0,54,66,150,64,25,0,52,128,25,137,93,193,226,0,80,109,
-226,0,32,133,25,68,200,225,100,1,1,46,47,129,95,135,86,167,99,64,
-72,0,51,128,72,179,174,1,50,50,97,120,83,204,96,22,133,231,97,2,
-0,56,66,199,74,11,103,142,64,28,240,14,0,163,211,2,95,53,53,129,
-221,0,56,132,101,64,49,128,61,64,54,101,73,166,201,1,95,54,135,157,
-205,239,64,48,64,126,64,64,224,125,1,65,5,64,21,229,163,1,1,95,
-52,65,131,64,26,129,67,162,112,194,160,80,47,69,196,1,95,52,149,222,
-224,30,15,0,56,133,213,224,30,6,1,95,52,71,47,168,197,226,213,2,
-1,95,51,98,72,176,49,96,125,129,171,168,213,96,212,224,99,2,110,178,
-105,141,0,55,72,82,0,53,89,230,79,75,237,142,0,65,153,166,81,235,
-100,0,162,227,134,120,162,4,0,53,96,223,228,65,2,3,95,52,48,57,
-66,113,1,49,32,64,66,66,145,0,55,228,248,1,71,227,129,136,229,15,
-1,129,155,238,135,0,150,96,231,100,4,141,62,129,9,228,176,2,229,82,
-3,131,240,168,21,0,85,71,228,128,52,238,75,4,0,55,130,163,71,136,
-160,22,64,193,130,165,66,179,198,31,160,135,0,66,64,134,136,102,64,17,
-224,54,2,224,140,0,160,87,130,152,2,94,109,107,174,141,65,83,166,186,
-233,229,7,230,102,3,235,233,1,229,93,9,0,56,215,44,169,178,228,223,
-1,67,191,0,56,64,44,114,51,0,90,228,229,13,71,70,144,182,239,98,
-3,1,64,67,134,109,128,0,64,27,0,85,160,35,128,9,160,10,224,183,
-11,229,233,2,205,33,131,209,161,14,160,167,230,10,2,224,21,8,224,24,
-1,192,239,165,248,160,80,172,145,224,96,3,231,13,31,235,19,28,16,116,
-111,112,32,108,101,118,101,108,32,100,101,102,110,115,58,32,96,0,236,154,
-0,229,91,3,1,51,54,153,50,235,32,5,164,145,96,22,231,44,6,7,
-40,117,110,112,114,117,110,101,179,210,224,76,3,224,64,2,0,95,68,109,
-99,19,0,49,232,12,2,225,18,24,237,170,9,65,11,0,67,91,49,120,
-220,130,200,101,187,227,173,1,151,62,161,13,164,69,131,165,239,244,4,224,
-195,2,0,61,160,187,96,24,0,50,224,160,8,225,202,5,130,252,224,180,
-1,173,125,75,2,64,62,129,178,226,79,2,226,158,4,103,178,0,55,96,
-139,64,4,228,115,6,224,55,4,226,137,12,224,119,5,233,183,4,226,49,
-68,9,102,105,110,97,108,32,112,97,115,115,130,43,226,49,3,163,151,97,
-82,128,59,226,53,0,128,14,237,89,18,230,243,2,237,89,4,163,239,161,
-255,129,5,205,1,130,161,238,245,16,224,225,1,64,146,134,5,169,94,228,
-60,1,235,71,3,104,173,1,48,55,160,147,172,131,89,123,64,27,71,254,
-128,65,78,218,161,158,1,95,52,118,123,64,233,6,48,51,32,95,56,54,
-53,230,241,0,229,242,3,231,207,2,0,104,192,220,175,24,177,157,72,30,
-0,56,69,35,128,172,244,36,0,161,239,129,142,226,111,1,161,99,192,30,
-225,87,3,96,19,160,34,84,186,69,24,97,226,76,13,64,172,2,35,49,
-48,85,250,225,130,20,6,32,108,105,110,101,115,47,225,136,2,236,11,4,
-229,134,3,100,237,194,255,160,123,100,211,128,155,109,173,1,50,50,77,219,
-225,5,2,3,99,111,109,98,192,91,165,6,224,53,4,126,81,224,53,9,
-234,107,1,225,195,3,3,95,56,56,48,226,161,2,3,109,104,115,99,224,
-42,7,229,201,0,230,24,11,79,159,72,42,224,46,1,226,86,4,232,65,
-0,224,168,0,227,80,7,1,95,55,86,217,225,208,0,162,61,0,50,144,
-218,1,95,56,138,248,96,44,234,252,3,224,11,0,209,151,239,84,1,193,
-223,2,95,50,50,69,22,64,7,0,54,167,188,130,57,192,128,3,95,51,
-54,52,130,227,70,221,66,68,237,143,5,31,84,104,101,32,45,114,32,102,
-108,97,103,32,99,117,114,114,101,110,116,108,121,32,111,110,108,121,32,119,
-111,114,107,115,4,32,119,105,116,104,85,85,161,46,64,104,161,9,209,222,
-1,50,50,68,149,64,117,104,162,2,95,49,49,72,241,0,56,110,87,112,
-179,225,121,2,2,97,105,110,227,186,3,71,246,138,108,85,99,144,192,128,
-228,255,53,0,78,74,97,249,64,121,0,57,167,189,0,83,96,106,0,39,
-96,113,128,16,161,25,1,95,56,113,40,160,123,1,55,49,64,11,97,155,
-98,14,228,168,5,10,68,117,112,108,105,99,97,116,101,32,105,77,232,1,
-110,99,237,222,3,197,248,140,165,111,67,200,213,230,2,7,1,97,116,128,
-55,118,53,78,101,224,119,3,224,0,1,66,233,72,72,224,91,0,1,95,
-52,195,162,225,207,0,227,167,4,160,38,2,79,32,35,68,123,102,88,81,
-234,71,80,147,65,224,131,2,0,125,225,85,1,64,31,1,85,32,172,162,
-228,17,2,90,59,224,13,1,238,120,2,174,123,160,250,224,17,2,192,20,
-227,202,2,224,48,8,224,51,10,224,57,3,227,188,3,224,29,17,224,65,
-3,135,35,195,103,195,236,224,45,11,128,41,224,37,8,230,192,0,236,191,
-1,161,209,65,102,2,49,50,50,138,237,97,119,106,157,76,154,109,125,3,
-51,50,52,32,134,226,1,95,55,116,59,161,130,0,50,148,209,1,75,52,
-161,119,224,159,6,68,101,2,49,50,51,97,190,0,50,210,96,224,31,2,
-100,90,224,234,8,225,5,2,192,40,194,196,129,41,64,133,198,82,224,34,
-3,224,62,0,99,227,128,120,224,34,3,64,18,132,121,128,15,96,101,132,
-215,124,48,2,32,95,56,77,14,1,95,49,147,28,160,0,96,41,212,66,
-163,121,228,201,0,192,100,100,202,105,44,160,17,77,18,132,187,160,123,225,
-10,10,225,4,2,192,162,224,166,5,192,157,160,221,234,200,1,160,185,193,
-22,132,93,0,56,230,165,1,96,61,96,147,96,209,102,230,64,211,214,134,
-227,64,1,71,131,143,24,231,8,4,128,0,226,48,0,0,67,97,231,0,
-50,175,186,235,248,6,3,64,66,32,82,64,214,0,54,222,86,173,247,128,
-238,233,133,5,236,32,1,180,171,228,48,4,1,65,32,227,172,0,224,122,
-1,143,62,226,112,1,161,21,96,21,228,139,4,0,49,64,207,254,81,0,
-228,57,12,228,23,2,2,64,94,42,231,69,0,143,160,160,65,1,54,52,
-234,171,5,163,127,138,103,160,9,131,32,231,217,3,1,95,49,145,58,96,
-238,100,98,160,133,193,60,65,59,192,86,2,80,32,90,241,7,0,132,182,
-192,25,65,31,0,85,96,42,128,233,3,85,32,75,51,64,2,160,11,224,
-53,0,86,167,224,11,1,229,227,0,0,55,81,216,98,155,229,236,13,229,
-162,8,1,78,111,76,189,3,105,110,105,116,87,218,4,102,111,117,110,100,
-85,197,187,237,197,217,227,111,0,70,149,181,94,182,104,246,83,10,65,64,
-246,83,3,5,95,52,53,48,32,35,66,27,64,62,176,246,0,54,169,246,
-0,54,96,61,0,54,248,147,0,228,115,6,130,201,140,232,170,100,4,55,
-50,32,95,55,146,122,192,68,0,49,98,229,202,117,169,146,0,58,135,21,
-145,141,0,51,106,37,1,50,49,178,94,71,168,125,223,137,100,129,216,97,
-56,119,206,74,53,81,242,64,7,82,87,248,75,10,196,8,130,206,197,117,
-133,85,65,150,130,246,109,86,248,91,0,195,10,224,94,36,162,116,165,19,
-224,108,0,96,176,143,181,162,5,224,107,4,96,106,227,122,0,103,127,0,
-51,128,224,227,47,0,1,54,56,231,248,9,10,35,105,110,99,108,117,100,
-101,32,92,34,98,0,219,96,2,79,32,35,86,251,238,175,1,64,103,235,
-167,15,7,109,104,115,102,102,105,46,104,131,94,96,123,4,56,32,95,51,
-53,73,210,225,73,24,150,236,224,245,6,224,13,0,100,117,192,36,224,46,
-2,224,10,6,164,158,225,125,5,129,15,129,19,225,25,0,225,17,0,130,
-59,0,50,122,123,228,78,1,224,212,1,31,115,116,97,116,105,99,32,115,
-116,114,117,99,116,32,102,102,105,95,101,110,116,114,121,32,116,97,98,108,
-101,91,93,32,2,61,32,123,64,239,228,122,6,236,165,1,70,12,194,154,
-224,87,3,4,123,32,48,44,48,136,164,224,22,3,1,125,59,224,17,7,
-224,121,8,1,42,120,64,11,96,127,1,32,61,128,135,96,52,228,187,3,
-234,210,6,24,85,110,105,109,112,108,101,109,101,110,116,101,100,32,70,70,
-73,32,102,101,97,116,117,114,101,225,170,0,1,50,50,69,64,227,154,3,
-99,144,129,188,64,29,192,7,166,38,225,207,1,65,108,65,196,232,207,1,
-225,152,1,133,53,160,5,193,241,0,83,99,122,0,83,66,60,64,63,72,
-64,229,55,0,96,3,96,12,168,52,198,51,136,49,224,85,0,99,116,76,
-240,4,61,61,32,64,35,250,183,1,224,42,0,227,45,2,243,124,3,117,
-186,2,50,50,54,226,26,0,226,17,0,68,28,148,234,141,85,192,100,199,
-136,116,254,0,83,96,15,166,9,100,66,232,23,0,212,107,97,49,225,121,
-1,5,100,121,110,97,109,105,173,89,64,73,0,85,65,107,100,242,224,226,
-3,224,73,26,6,119,114,97,112,112,101,114,224,73,7,69,32,192,73,225,
-24,1,224,65,2,227,173,15,130,216,235,36,1,129,9,0,95,124,53,193,
-205,192,232,186,219,193,210,138,146,72,121,69,191,239,187,22,224,97,0,194,
-40,104,158,3,50,50,54,50,123,90,225,4,0,0,85,182,72,96,23,0,
-51,176,122,224,135,13,226,106,11,245,240,4,224,248,10,68,201,200,34,224,
-88,1,196,125,224,96,0,194,162,224,87,3,225,83,4,150,75,142,124,228,
-161,0,233,162,1,98,229,225,138,4,0,66,72,5,64,215,175,55,246,108,
-0,225,255,3,225,185,36,3,118,97,108,117,163,185,224,105,13,97,59,1,
-67,39,64,106,1,95,55,81,23,192,245,224,141,7,224,17,4,169,196,192,
-142,226,234,1,104,203,133,131,226,105,1,64,38,232,109,15,232,110,9,1,
-98,97,104,94,9,101,105,103,110,32,105,109,112,111,114,174,32,254,33,11,
-99,138,0,54,167,167,0,65,135,182,151,85,105,46,64,14,151,40,1,75,
-50,87,36,64,201,254,77,2,223,198,224,13,9,231,71,1,254,54,0,64,
-62,143,108,224,105,0,136,229,224,105,0,136,181,229,143,3,5,71,69,84,
-82,65,87,229,165,7,11,71,69,84,84,73,77,69,77,73,76,76,73,224,
-27,7,2,97,99,111,112,43,224,19,4,6,100,100,95,70,73,76,69,224,
-23,11,3,117,116,102,56,224,23,8,0,115,144,38,224,19,4,1,116,97,
-224,19,12,0,50,224,20,7,4,99,97,108,108,111,99,234,224,21,4,3,
-108,111,115,101,114,81,224,21,4,224,171,9,2,101,120,112,224,18,7,4,
-102,108,117,115,104,224,59,8,3,102,111,112,101,224,145,8,2,102,114,101,
-98,172,224,19,3,2,103,101,116,224,60,8,5,103,101,116,101,110,118,224,
-21,7,7,105,115,119,105,110,100,111,119,224,148,8,2,108,111,103,224,18,
-7,0,109,224,230,12,6,109,100,53,65,114,114,97,127,86,224,23,6,0,
-66,225,129,11,7,109,100,53,83,116,114,105,110,224,94,9,3,101,109,99,
-112,224,70,9,4,101,109,109,111,118,224,225,8,1,112,117,224,225,9,225,
-194,10,3,115,113,114,116,224,19,8,4,121,115,116,101,109,224,21,7,225,
-235,10,5,116,109,112,110,97,109,224,122,8,1,117,110,225,94,11,5,117,
-110,108,105,110,107,224,21,7,3,114,101,97,100,224,42,8,3,119,114,105,
-116,226,24,9,5,112,101,101,107,80,116,102,127,224,22,4,2,111,107,101,
-224,22,14,3,87,111,114,100,224,69,11,224,23,11,66,247,13,108,122,55,
-55,95,99,111,109,112,114,101,115,115,111,224,82,8,224,34,0,1,100,101,
-224,36,21,2,114,108,101,224,70,22,64,33,224,69,23,2,98,119,116,224,
-69,22,64,33,224,69,19,64,235,4,95,117,105,110,116,227,205,8,65,29,
-224,25,14,192,51,1,49,54,224,52,16,224,26,10,192,53,0,51,227,251,
-8,224,53,0,224,26,10,192,53,1,54,52,224,53,16,224,26,10,64,53,
-224,212,16,224,211,16,224,210,17,224,209,17,224,208,17,224,207,17,224,206,
-17,224,205,17,3,117,115,104,111,227,135,9,129,3,224,26,13,64,53,224,
-52,17,224,51,17,65,82,225,107,16,224,207,15,224,205,15,224,97,13,1,
-108,111,228,186,9,128,98,224,25,12,64,51,224,50,16,224,49,16,1,117,
-108,224,102,18,224,103,17,224,104,17,224,51,16,1,102,108,224,255,13,224,
-23,10,5,115,105,122,101,111,102,225,25,11,160,25,224,100,11,192,26,224,
-27,11,70,206,1,100,105,227,215,8,103,56,224,23,10,69,76,224,46,11,
-2,95,100,95,229,167,11,1,99,104,224,44,10,127,251,224,20,7,4,103,
-101,116,99,119,229,50,8,6,103,101,116,95,98,117,102,224,180,11,3,98,
-95,114,100,224,27,17,1,119,114,224,27,11,6,110,101,119,95,109,112,122,
-224,144,8,4,112,122,95,97,98,231,126,8,96,22,0,100,224,147,8,96,
-22,0,110,224,22,12,1,99,109,232,69,8,64,22,64,197,224,47,12,64,
-24,1,115,105,224,25,15,0,117,224,25,12,82,207,1,95,115,224,56,16,
-224,30,0,224,61,14,229,194,9,64,22,2,109,117,108,224,22,14,1,95,
-50,233,26,10,64,27,1,110,101,232,61,9,8,112,122,95,112,111,112,99,
-111,117,226,158,9,64,27,1,115,117,231,113,8,64,22,5,102,100,105,118,
-95,113,224,104,16,0,116,96,30,224,182,12,4,116,115,116,98,105,224,106,
-12,0,120,224,231,9,5,119,97,110,116,95,103,129,161,240,71,3,224,0,
-94,0,58,144,96,244,94,2,1,95,52,82,119,179,249,1,54,57,76,35,
-80,143,237,28,1,240,140,1,76,62,84,11,96,32,0,54,87,155,1,57,
-55,77,158,240,173,1,64,94,147,248,2,85,32,90,114,36,0,90,176,27,
-141,247,86,197,2,50,50,53,79,74,143,4,0,55,116,101,96,5,96,60,
-144,24,224,56,9,80,129,77,239,236,239,8,4,123,32,92,34,38,65,76,
-88,92,246,169,3,224,34,1,2,92,34,44,92,68,67,69,1,114,95,96,
-42,211,116,224,35,1,1,125,44,96,24,96,0,109,112,224,101,9,224,100,
-29,224,95,24,192,255,224,202,13,224,100,62,225,89,4,65,87,0,54,252,
-232,4,225,77,1,156,190,225,105,1,246,232,0,206,149,149,3,96,8,151,
-0,1,50,50,94,78,224,152,6,225,90,1,113,87,96,154,3,52,55,32,
-64,154,209,152,76,96,172,64,121,96,222,0,52,116,11,0,52,79,28,224,
-17,5,66,140,122,96,238,241,7,2,49,50,53,64,45,224,116,1,206,230,
-16,38,32,109,117,115,116,32,98,101,32,80,116,114,47,70,117,110,171,37,
-78,123,239,217,15,2,40,72,115,128,40,0,41,193,50,224,43,7,176,58,
-64,5,96,186,240,214,7,65,199,154,195,210,184,225,26,1,129,224,128,244,
-65,6,160,43,129,13,226,205,1,146,134,65,143,97,149,129,136,97,113,179,
-9,158,130,160,87,97,40,242,187,0,81,129,0,50,129,17,160,100,96,74,
-129,101,226,57,9,0,59,98,55,64,15,7,95,85,110,105,116,40,115,44,
-144,22,249,195,12,2,79,32,35,87,163,224,234,0,178,71,250,5,4,0,
-52,222,22,224,65,0,87,107,0,49,255,112,3,192,98,2,32,95,53,68,
-87,2,50,50,53,100,104,7,53,55,48,32,95,50,55,54,225,15,0,224,
-110,6,184,138,89,139,195,37,65,60,191,241,68,133,0,54,88,92,96,10,
-228,62,2,66,229,144,188,227,191,10,64,252,1,116,111,162,161,225,173,0,
-118,63,1,50,52,250,251,1,224,49,2,225,33,35,64,122,145,40,67,96,
-129,222,117,46,153,111,121,163,0,85,249,195,0,0,55,229,51,0,145,134,
-64,61,145,89,4,95,49,51,55,54,224,131,3,98,156,64,31,145,58,121,
-141,64,127,1,95,57,90,44,64,24,145,68,227,65,5,69,179,183,136,64,
-34,186,14,224,91,6,12,80,114,105,109,105,116,105,118,101,115,46,73,79,
-160,102,64,57,97,63,0,85,98,151,224,201,3,125,112,180,43,192,31,243,
-211,0,224,243,9,212,85,64,29,0,85,226,207,1,194,233,225,8,4,160,
-43,244,161,1,128,139,134,70,146,80,225,205,10,98,202,163,187,96,93,68,
-159,225,211,5,229,200,11,225,214,0,226,5,5,253,153,3,224,51,8,226,
-199,1,96,44,227,29,7,64,172,182,207,129,19,217,119,163,172,2,67,32,
-60,161,64,131,225,247,79,3,166,8,97,79,0,90,64,4,0,85,164,6,
-224,36,3,165,67,85,182,192,89,226,76,9,101,73,160,32,64,57,224,30,
-7,97,99,224,211,1,229,37,3,226,20,2,192,18,128,0,224,115,2,100,
-175,2,95,54,55,84,62,136,20,130,136,1,50,50,94,236,247,220,0,253,
-24,12,165,184,225,87,8,17,78,111,116,32,97,32,118,97,108,105,100,32,
-67,32,116,121,112,101,221,20,1,49,53,100,42,97,90,0,54,130,190,132,
-118,229,208,17,226,207,2,4,70,108,111,97,116,116,55,245,216,16,224,34,
-2,0,64,224,85,30,0,73,138,77,224,82,16,192,31,224,79,31,209,155,
-224,80,16,224,32,0,224,81,20,3,68,97,116,97,96,75,96,4,112,17,
-224,81,20,128,33,224,82,20,132,118,224,69,16,70,63,224,68,25,0,83,
-115,91,8,46,73,79,46,72,97,110,100,108,151,69,225,22,16,194,119,231,
-93,2,1,54,56,67,61,0,80,168,106,225,200,16,136,3,8,46,67,46,
-84,121,112,101,115,46,128,70,64,35,235,116,3,3,67,67,104,97,235,137,
-8,1,67,83,224,21,12,0,85,224,43,13,240,104,11,1,67,85,224,22,
-13,162,10,224,42,5,224,20,11,0,76,239,10,10,1,67,85,224,21,12,
-5,80,116,114,100,105,102,238,75,8,3,67,83,105,122,238,239,8,1,67,
-83,224,21,12,0,76,224,110,14,224,22,12,1,84,105,143,71,236,163,10,
-67,149,135,105,230,84,18,228,96,1,64,46,135,29,224,46,18,224,43,2,
-248,101,1,228,47,6,3,118,111,105,100,234,254,1,232,149,9,224,41,1,
-8,40,105,110,116,32,115,41,32,123,229,185,5,224,32,1,0,59,158,15,
-160,204,135,93,233,146,0,3,95,50,50,50,91,104,2,50,50,50,228,183,
-0,64,9,191,148,2,35,49,50,70,168,68,250,101,153,64,65,135,134,3,
-95,50,50,51,103,130,1,51,57,103,122,64,31,3,10,65,32,94,245,114,
-10,89,79,64,37,192,233,1,51,55,69,84,96,10,73,29,0,51,128,126,
-186,94,102,74,192,23,198,185,101,106,0,50,224,19,1,3,32,95,51,54,
-192,34,101,171,91,220,0,52,127,25,0,50,69,162,2,95,50,57,137,53,
-224,58,6,64,31,137,1,128,232,105,169,72,178,1,95,51,101,182,185,211,
-224,26,1,64,155,126,178,95,106,4,95,51,50,52,32,169,199,224,153,2,
-224,156,5,64,99,110,100,235,41,0,192,168,1,95,57,96,160,105,33,224,
-30,18,128,69,188,34,225,9,2,160,152,0,51,64,191,122,103,224,65,0,
-224,222,1,0,56,103,212,224,22,8,2,50,50,51,106,59,1,49,49,224,
-165,0,224,0,1,65,156,136,127,0,94,153,187,97,174,135,228,141,67,2,
-39,32,95,106,204,3,50,50,51,53,98,25,97,11,0,55,64,141,158,241,
-64,48,0,54,96,48,4,112,97,99,107,67,152,232,2,76,101,110,96,73,
-131,61,0,94,178,87,96,18,163,33,6,56,57,32,75,32,95,57,126,107,
-160,7,2,95,57,51,225,4,0,2,95,57,53,224,11,1,1,49,48,65,
-8,224,12,0,64,218,128,12,160,157,98,175,65,173,125,67,160,163,189,28,
-129,14,2,49,48,52,192,30,0,95,64,148,96,181,170,139,224,137,18,98,
-254,160,137,96,11,192,137,160,12,128,137,64,12,224,137,1,1,50,50,126,
-188,224,138,3,157,218,233,135,0,0,51,73,136,160,139,64,5,64,139,131,
-153,0,94,84,135,1,80,116,131,52,131,106,0,94,84,178,192,18,131,102,
-174,161,107,174,0,50,128,102,227,37,7,141,109,2,95,49,48,105,119,0,
-58,98,210,131,130,64,51,0,55,126,21,76,152,236,81,0,64,71,68,26,
-128,163,97,44,67,167,109,136,98,0,224,189,0,0,32,162,105,64,217,128,
-58,130,46,0,94,155,192,64,167,66,25,96,186,1,117,116,128,15,162,6,
-244,43,3,96,23,130,11,4,66,32,95,55,49,132,118,136,252,228,190,1,
-30,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,229,183,0,64,165,229,33,0,
-73,150,0,50,96,13,99,243,2,50,32,35,68,229,65,19,224,90,3,1,
-125,59,101,24,224,20,5,224,104,5,10,42,99,111,109,98,101,120,112,114,
-32,61,96,116,128,49,159,5,229,138,8,69,137,192,47,5,108,101,110,32,
-61,32,192,45,224,153,0,235,124,2,141,251,2,79,32,35,74,99,239,129,
-2,161,82,198,26,0,89,64,55,75,6,3,85,32,95,49,110,251,129,237,
-94,132,224,7,1,229,39,1,69,182,206,80,191,135,206,76,1,53,56,65,
-208,160,95,173,102,2,55,51,57,240,177,1,224,160,6,133,69,76,3,0,
-52,160,161,64,56,130,148,64,97,1,75,52,160,2,2,90,32,90,64,6,
-228,81,1,65,109,64,93,1,57,50,127,77,0,49,130,122,0,67,75,48,
-0,53,71,26,65,140,64,23,211,63,1,75,51,128,63,64,19,130,75,64,
-248,2,66,32,80,96,199,205,127,133,108,0,67,105,41,225,4,11,225,12,
-0,161,5,96,0,159,172,64,218,0,56,99,117,0,55,97,4,64,104,0,
-54,192,124,0,50,102,193,0,49,130,162,96,15,160,211,224,1,5,224,225,
-1,192,230,77,205,161,11,224,46,9,224,56,16,192,60,129,225,76,192,0,
-80,140,113,226,82,0,2,64,95,56,96,191,135,131,134,49,163,125,67,177,
-2,50,50,49,196,112,224,14,1,163,56,1,35,54,193,171,66,79,0,50,
-77,22,64,12,237,174,1,0,83,109,84,237,174,3,99,197,237,110,0,224,
-25,3,174,89,0,83,200,45,173,222,65,189,0,85,128,140,160,161,165,104,
-224,195,5,2,50,50,48,109,61,224,196,2,64,0,102,82,237,243,3,96,
-101,102,106,224,62,27,2,85,32,83,128,144,1,95,49,66,75,0,54,141,
-123,0,49,174,96,128,61,97,14,1,49,56,167,55,160,17,98,220,0,50,
-85,201,1,49,50,85,217,2,49,50,52,227,187,2,192,9,169,42,128,44,
-169,8,0,55,69,26,64,69,101,74,128,0,225,73,12,193,6,224,223,5,
-96,21,66,35,161,139,224,34,10,242,5,0,224,34,0,225,78,9,1,49,
-48,135,205,225,15,3,66,70,227,200,2,64,41,0,48,130,204,131,165,97,
-42,1,32,95,118,228,101,205,3,95,52,57,50,73,213,175,253,160,31,73,
-58,97,72,2,35,50,48,80,140,0,64,224,23,8,2,54,53,53,104,121,
-64,22,224,24,4,4,49,49,49,52,49,98,142,3,95,51,52,51,229,71,
-3,2,116,102,56,76,94,5,58,32,98,97,100,32,204,104,226,78,3,0,
-83,197,69,64,147,96,238,1,56,48,137,105,164,191,0,35,170,117,131,219,
-229,116,0,224,46,11,68,226,1,35,49,103,10,169,26,224,44,31,224,41,
-32,131,84,101,43,69,35,0,51,96,21,160,168,67,116,224,27,22,224,26,
-4,160,20,97,13,225,8,28,139,30,224,216,82,224,187,47,224,184,22,178,
-232,224,139,38,224,111,12,203,212,0,67,64,74,64,39,66,230,134,103,204,
-173,107,120,96,201,99,49,67,18,119,207,135,24,76,185,162,187,131,12,107,
-203,70,44,0,54,102,148,96,18,117,88,227,0,4,160,24,99,113,64,22,
-224,75,3,114,120,134,206,128,124,224,28,15,0,57,224,28,19,68,137,128,
-136,224,49,3,164,241,224,137,9,131,189,64,214,224,71,8,64,24,224,48,
-10,99,170,227,186,2,224,235,4,227,178,1,1,92,92,142,110,73,16,192,
-148,225,184,8,2,49,55,52,161,185,129,144,227,30,5,128,59,96,237,225,
-243,18,224,71,18,161,237,160,77,224,155,3,0,63,175,10,193,254,192,107,
-103,10,224,20,1,224,129,29,160,115,133,70,160,56,228,192,6,4,113,117,
-111,116,101,140,203,196,185,224,72,1,69,118,162,159,160,74,122,119,64,0,
-89,60,233,47,2,70,196,7,10,65,32,80,32,35,52,32,182,166,0,48,
-136,246,237,163,2,2,95,52,48,109,79,234,77,3,17,87,101,108,99,111,
-109,101,32,116,111,32,105,110,116,101,114,97,99,80,62,17,32,77,105,99,
-114,111,72,115,44,32,118,101,114,115,105,111,110,32,64,156,3,95,52,49,
-54,82,50,169,223,224,89,4,70,242,131,14,73,198,96,105,224,100,1,8,
-85,115,105,110,103,32,71,77,80,230,247,0,239,126,3,1,95,56,77,41,
-174,3,238,137,5,0,55,67,51,1,50,50,77,84,134,207,72,180,110,20,
-0,49,87,175,103,127,96,141,0,75,71,73,128,58,181,56,74,6,82,225,
-1,50,50,72,228,1,95,51,73,8,78,156,135,93,65,31,138,2,6,95,
-56,49,48,32,75,32,72,105,128,1,137,202,192,13,224,1,19,0,67,128,
-105,224,0,4,224,53,44,224,50,41,224,47,38,224,44,35,224,41,32,224,
-38,29,224,35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,
-224,17,8,66,54,101,162,224,0,6,66,55,0,54,163,87,224,1,27,226,
-34,11,226,91,255,224,41,19,224,38,29,224,35,26,224,32,23,224,29,20,
-224,26,17,224,23,14,224,20,11,224,17,8,224,14,5,224,11,2,192,8,
-110,120,224,0,6,66,120,182,34,69,116,0,55,90,13,2,95,50,49,70,
-3,69,51,128,15,1,55,55,71,246,177,160,96,18,69,164,0,55,82,106,
-112,184,0,49,90,4,1,95,56,75,124,1,95,56,103,157,0,64,224,77,
-2,64,39,229,184,6,88,2,7,32,39,58,113,117,105,116,39,70,34,64,
-8,13,44,32,39,58,104,101,108,112,39,32,102,111,114,32,64,9,133,213,
-224,73,2,1,51,54,71,117,1,54,57,96,162,71,254,230,244,6,2,84,
-104,101,230,109,4,0,115,120,218,25,32,99,117,114,114,101,110,116,108,121,
-32,111,110,108,121,32,119,111,114,107,115,32,119,105,116,104,86,163,160,100,
-1,50,50,83,128,193,17,179,227,225,0,0,0,56,83,41,84,225,85,78,
-224,227,0,148,255,224,33,2,2,50,49,53,137,228,230,115,0,129,44,97,
-129,129,47,166,109,160,33,2,50,49,54,72,244,96,30,72,217,244,226,1,
-2,95,50,49,65,116,232,67,2,4,46,109,104,115,105,96,173,224,19,1,
-1,62,32,128,190,0,80,102,143,2,51,32,64,113,104,160,203,205,167,65,
-252,233,105,2,0,35,224,163,0,225,206,2,70,240,156,37,129,6,224,190,
-4,64,21,1,50,32,64,100,225,202,10,1,66,121,154,49,225,66,3,161,
-69,240,34,1,2,95,54,54,65,173,64,223,129,46,167,47,108,17,96,179,
-226,46,20,11,85,110,114,101,99,111,103,110,105,122,101,100,82,163,2,109,
-97,110,187,112,224,82,9,194,238,81,114,96,10,71,119,144,126,112,34,120,
-60,64,25,0,85,64,107,81,70,113,102,0,90,97,143,226,223,9,73,54,
-71,209,243,46,8,8,65,109,98,105,103,117,111,117,115,192,144,189,18,116,
-12,112,216,83,198,0,54,105,175,224,169,15,64,0,64,118,0,55,65,42,
-64,8,64,55,0,56,66,228,139,19,160,62,65,89,213,7,65,136,1,10,
-65,125,96,233,236,3,155,232,1,95,56,130,67,160,102,175,102,224,43,5,
-2,99,108,101,142,204,64,44,227,242,3,2,55,53,32,64,18,169,1,227,
-118,3,2,56,48,56,129,29,72,247,0,56,85,242,168,246,233,11,0,0,
-49,85,158,201,11,169,59,1,95,55,150,193,224,248,12,224,147,5,4,114,
-101,108,111,97,97,209,64,129,227,83,5,100,85,227,106,9,163,130,227,105,
-19,1,95,56,237,81,0,225,215,4,64,206,224,186,0,224,206,3,224,244,
-4,165,3,225,181,14,224,191,5,4,100,101,108,101,116,99,6,224,108,8,
-97,87,64,8,0,54,182,36,193,231,64,166,65,246,128,26,1,52,53,112,
-132,225,251,2,65,253,129,137,224,132,11,224,127,5,2,116,121,112,224,125,
-10,3,95,50,49,57,122,2,224,61,22,1,107,105,131,77,224,61,9,65,
-26,224,61,23,3,109,97,105,110,224,61,13,66,18,224,61,23,197,230,0,
-75,228,1,12,66,248,97,11,225,134,11,172,247,163,22,146,49,224,88,1,
-0,67,131,148,3,115,58,94,42,102,102,0,32,96,0,96,9,172,131,2,
-94,42,58,130,119,64,24,160,9,5,109,111,100,117,108,101,64,26,99,38,
-96,51,128,9,13,97,108,108,32,100,101,102,105,110,105,116,105,111,110,64,
-33,129,244,3,32,100,32,32,192,9,224,30,0,7,40,115,41,32,100,94,
-42,58,65,151,1,32,101,64,68,4,115,104,111,119,32,96,14,6,111,102,
-32,101,94,42,58,65,116,0,32,96,149,96,26,96,14,6,111,102,32,116,
-94,42,58,65,81,9,32,97,114,103,115,32,114,117,110,32,96,13,102,172,
-7,97,114,103,117,109,101,110,116,64,124,65,55,128,210,10,116,104,105,115,
-32,116,101,120,116,94,42,119,233,128,0,8,101,118,97,108,117,97,116,101,
-32,64,19,1,101,115,77,106,5,94,42,100,101,102,110,160,31,11,97,100,
-100,32,116,111,112,32,108,101,118,101,224,216,3,2,94,42,34,141,228,240,
-154,0,134,24,228,254,8,0,95,64,146,0,65,64,164,100,245,102,204,247,
-132,3,1,49,50,70,207,64,4,0,51,68,178,98,206,70,3,230,188,2,
-96,218,133,198,0,58,130,46,128,113,227,232,7,101,162,227,232,13,1,50,
-49,87,21,134,225,153,48,160,168,80,2,0,48,174,198,66,139,133,133,0,
-80,228,28,0,64,57,67,140,0,75,228,87,13,229,253,10,1,49,53,72,
-228,113,220,88,95,2,95,56,52,78,66,0,49,111,170,226,136,1,99,51,
-222,42,0,52,253,74,0,217,7,2,80,32,79,64,109,240,2,1,230,169,
-4,198,173,224,13,1,0,85,224,13,2,96,25,244,123,0,103,217,0,64,
-91,68,102,215,135,223,1,55,55,132,48,135,241,248,68,0,128,18,64,172,
-102,151,0,49,101,29,96,172,221,40,88,52,65,14,64,19,0,54,225,249,
-0,225,240,4,98,188,198,225,64,26,192,252,224,41,8,250,57,0,161,147,
-225,139,3,128,98,138,112,224,49,1,74,14,0,95,102,194,64,29,251,84,
-0,226,8,74,161,32,226,8,63,124,76,130,8,246,250,1,160,228,219,2,
-226,8,46,225,250,64,129,249,64,215,225,249,3,136,70,105,155,1,56,48,
-71,249,123,156,151,192,113,231,96,43,250,222,0,67,194,64,19,132,22,0,
-80,91,27,67,4,96,5,0,58,135,240,75,48,226,8,5,133,77,98,12,
-130,49,1,56,52,185,241,224,36,2,0,40,224,37,13,224,32,1,16,41,
-32,119,104,101,114,101,94,42,105,109,112,111,114,116,32,83,107,212,12,46,
-73,79,46,80,114,105,110,116,79,114,82,117,132,219,25,97,117,108,116,32,
-78,117,109,32,40,73,110,116,101,103,101,114,44,32,68,111,117,98,108,101,
-41,224,30,1,1,73,115,147,19,1,32,40,128,7,224,26,2,0,83,69,
-135,3,40,40,41,41,101,3,161,197,71,129,226,140,18,161,144,1,32,83,
-98,1,89,157,120,129,64,12,66,84,178,141,231,18,0,66,163,65,251,226,
-124,7,1,64,90,130,195,72,42,0,95,129,199,129,185,0,90,66,104,156,
-53,96,84,64,97,0,50,115,8,1,50,49,94,254,227,13,54,0,56,136,
-104,224,144,9,64,27,130,66,104,183,192,26,133,200,224,86,2,227,226,16,
-70,51,97,55,224,157,4,227,77,2,2,56,53,52,64,4,64,236,3,83,
-32,95,51,76,235,236,254,3,224,42,0,0,80,96,205,171,30,243,217,1,
-224,61,1,224,32,0,243,170,9,128,70,0,51,93,26,134,200,0,53,96,
-79,131,176,226,143,5,2,79,32,35,64,11,64,192,65,90,180,137,128,202,
-0,54,163,7,108,57,99,191,0,83,125,196,148,109,1,55,50,128,94,78,
-137,229,11,9,19,116,114,97,110,115,108,97,116,101,58,32,110,111,116,32,
-102,111,117,110,100,98,234,221,36,161,78,0,55,105,234,254,236,0,97,197,
-1,49,54,102,182,228,52,3,97,96,228,44,3,100,3,130,3,163,244,159,
-77,79,234,128,243,0,52,255,79,0,192,0,181,219,97,14,223,164,128,67,
-0,83,128,110,98,210,194,91,189,60,64,14,96,86,196,128,193,89,129,108,
-100,32,196,182,131,21,64,76,64,17,252,99,4,135,135,130,209,224,32,12,
-133,69,164,235,224,32,11,129,154,160,245,252,133,3,192,24,0,85,64,155,
-99,56,128,165,253,54,18,5,100,121,110,115,121,109,163,237,253,52,0,69,
-80,229,204,1,224,103,8,96,26,0,85,225,251,31,65,247,6,32,112,114,
-105,109,111,112,161,247,233,30,1,201,25,67,70,1,54,55,64,16,0,53,
-109,56,1,50,49,94,17,128,0,174,176,254,213,5,126,190,97,125,1,95,
-52,141,127,0,56,160,73,128,255,96,250,64,21,207,143,161,202,225,79,11,
-128,105,129,79,162,211,224,28,1,96,85,225,1,8,96,21,0,85,193,255,
-224,116,5,1,49,51,141,152,224,32,5,225,36,24,69,219,5,115,115,105,
-98,108,101,175,70,161,38,0,49,142,248,130,175,177,149,106,88,65,121,175,
-98,225,183,0,138,113,100,171,155,108,96,53,135,135,3,95,52,49,48,128,
-43,131,243,160,57,1,50,51,68,83,68,173,3,64,95,50,51,66,39,1,
-52,52,160,179,64,59,239,108,1,3,79,32,35,54,164,32,67,121,160,18,
-68,40,64,18,0,79,224,18,2,0,53,128,18,128,22,236,235,3,1,67,
-39,64,217,112,125,192,81,168,0,65,152,192,18,160,62,68,8,224,62,5,
-0,83,96,62,99,139,160,43,69,190,64,43,67,236,192,125,101,8,131,148,
-192,37,160,18,67,77,192,18,160,100,67,172,192,18,160,201,0,89,224,119,
-8,0,66,96,119,0,66,224,119,2,72,5,64,43,72,150,192,62,0,50,
-128,18,0,82,224,62,8,1,75,50,64,62,100,31,224,24,6,0,51,96,
-24,66,162,224,24,6,0,52,96,24,73,50,225,64,7,0,66,129,65,225,
-129,2,66,84,64,120,0,43,224,18,2,160,221,0,45,224,18,2,160,158,
-0,42,224,83,8,91,39,64,84,64,7,224,28,8,1,114,101,100,28,2,
-114,101,109,224,26,8,0,117,192,56,96,8,224,30,9,160,58,64,7,224,
-28,8,1,110,101,123,147,2,110,101,103,224,26,8,178,216,2,97,110,100,
-224,26,8,0,111,113,181,1,111,114,224,24,8,0,120,128,25,0,120,224,
-26,10,2,105,110,118,64,26,2,105,110,118,224,26,8,2,115,104,108,64,
-26,2,115,104,108,224,26,10,96,80,1,115,104,224,80,9,0,97,160,27,
-64,7,224,55,9,2,117,98,116,85,122,96,60,160,11,224,36,8,6,112,
-111,112,99,111,117,110,96,36,192,11,224,36,8,2,99,108,122,64,31,2,
-99,108,122,224,26,9,0,116,128,26,0,116,224,26,9,1,61,61,64,25,
-68,162,224,24,6,0,47,96,24,0,47,192,24,67,102,162,194,0,60,224,
-43,8,0,60,96,43,0,60,224,43,3,162,60,0,62,224,43,8,0,62,
-96,43,0,62,224,112,9,1,117,60,64,24,0,117,224,93,9,0,117,128,
-94,0,117,224,95,0,224,26,2,0,62,96,25,224,101,9,0,117,128,102,
-0,117,224,103,10,1,111,114,98,46,1,111,114,226,46,9,0,99,129,168,
-0,99,225,167,10,1,102,43,64,25,0,102,195,50,224,24,2,0,45,96,
-24,195,56,224,24,2,107,18,0,102,227,62,9,1,102,47,96,24,0,47,
-224,24,9,129,140,0,102,225,141,10,0,102,129,142,0,102,225,143,0,224,
-26,2,97,55,0,102,225,55,9,0,102,129,55,0,102,225,55,10,0,102,
-97,55,0,102,225,55,9,0,102,129,55,0,102,225,55,10,0,102,163,130,
-64,7,224,28,9,81,145,96,29,113,154,224,30,8,1,114,101,148,171,96,
-8,224,30,8,3,105,116,111,102,64,29,64,7,224,28,8,2,115,101,113,
-64,27,2,115,101,113,224,26,11,1,117,97,131,146,96,9,224,32,8,224,
-31,0,224,30,13,2,115,99,109,115,73,64,7,224,148,9,160,28,64,7,
-224,28,8,0,117,160,28,64,7,224,28,8,1,114,110,96,205,1,114,110,
-224,204,9,3,73,79,46,62,129,98,128,9,224,32,13,224,31,0,224,30,
-11,4,114,101,116,117,114,114,3,224,12,0,224,38,11,0,112,77,232,160,
-37,96,11,224,36,11,7,115,101,114,105,97,108,105,122,117,9,224,15,3,
-224,44,11,1,100,101,224,46,7,224,17,2,224,93,12,1,116,100,146,172,
-192,11,224,36,14,1,111,117,192,168,128,12,224,38,14,1,101,114,99,157,
-224,12,0,224,38,11,7,103,101,116,65,114,103,82,101,97,128,224,15,3,
-225,34,12,7,101,114,102,111,114,109,73,79,193,38,192,15,224,89,12,0,
-99,192,82,0,99,225,240,9,2,97,105,115,97,19,96,8,224,30,8,4,
-99,97,116,99,104,64,30,96,8,224,30,8,235,81,1,128,9,224,32,8,
-4,110,101,119,67,65,143,123,1,76,101,97,80,224,17,5,224,48,8,4,
-112,97,99,107,67,128,30,64,45,224,14,2,224,42,19,160,91,224,17,5,
-224,48,8,2,116,111,73,130,87,96,8,224,30,10,1,80,116,97,166,96,
-8,224,30,10,1,68,98,99,144,96,8,224,30,10,2,70,117,110,224,64,
-0,128,11,224,36,8,5,65,46,97,108,108,111,97,142,160,10,224,34,10,
-3,99,111,112,121,128,33,64,9,224,32,10,0,115,162,198,128,9,224,32,
-10,196,178,128,9,224,32,10,2,119,114,105,152,192,160,10,224,34,10,133,
-208,64,7,224,28,8,2,98,115,43,102,82,64,7,224,28,12,0,46,192,
-29,0,46,224,30,10,128,88,64,7,224,28,10,134,43,64,7,224,28,10,
-102,45,1,98,115,230,46,9,1,98,115,134,47,64,7,224,28,10,100,148,
-1,98,115,228,146,9,1,98,115,132,208,64,7,224,28,10,165,40,96,8,
-224,30,10,66,109,128,31,64,9,224,32,10,1,117,110,224,34,1,128,11,
-224,36,10,6,114,101,112,108,105,99,97,129,142,224,14,2,224,42,10,4,
-108,101,110,103,116,99,141,192,11,224,36,10,3,115,117,98,115,130,133,192,
-11,224,36,10,4,105,110,100,101,120,128,35,96,10,224,34,8,192,9,64,
-35,224,21,0,224,36,7,1,116,111,192,34,128,9,224,32,8,3,104,101,
-97,100,192,34,192,11,224,69,9,2,97,105,108,224,71,0,160,11,224,143,
-9,0,112,136,196,0,112,232,197,10,1,112,50,97,166,64,7,224,28,10,
-1,110,101,135,220,64,8,224,30,10,0,102,133,230,96,8,224,90,11,1,
-98,115,160,91,1,98,115,225,71,10,1,50,102,162,33,1,50,102,64,123,
-74,54,224,0,113,78,193,149,196,249,158,0,183,2,146,254,146,232,239,144,
-6,1,32,61,80,174,0,110,149,87,111,139,224,44,0,0,55,243,232,11,
-150,17,224,63,1,2,95,105,116,102,132,0,58,128,93,248,74,1,215,35,
-248,47,37,64,70,149,131,224,98,4,160,96,148,101,3,95,49,57,52,80,
-44,1,57,57,79,204,1,48,53,81,34,1,95,50,124,40,64,36,0,54,
-192,133,125,248,0,66,85,172,190,181,0,55,85,73,189,251,144,190,181,215,
-64,54,147,29,6,95,56,49,48,32,75,32,83,66,147,119,145,146,126,63,
-0,51,242,37,0,64,47,176,157,128,139,2,50,49,48,97,90,224,132,0,
-144,133,211,82,78,192,151,218,64,80,113,97,81,59,0,57,206,186,64,4,
-64,53,144,127,211,238,147,218,224,59,1,120,22,128,10,64,213,0,85,80,
-189,129,97,0,67,116,160,3,67,39,32,79,152,169,161,86,85,192,192,94,
-79,190,2,90,32,83,179,136,1,85,32,96,14,0,67,64,48,161,220,2,
-95,50,49,81,36,222,141,128,0,192,109,126,187,4,95,49,49,53,55,160,
-33,0,35,129,56,224,34,0,116,145,2,51,50,50,65,112,3,95,54,53,
-57,192,72,4,66,32,95,52,52,65,26,2,54,50,51,115,67,1,49,52,
-66,150,0,55,89,92,88,185,88,203,128,41,117,144,192,0,244,139,0,182,
-120,160,101,145,199,0,55,90,199,244,250,0,162,95,96,191,114,138,226,252,
-3,128,17,99,6,224,214,0,65,104,131,38,0,79,226,100,3,83,180,3,
-105,116,105,118,101,135,224,25,3,1,99,97,137,32,224,19,4,2,108,97,
-115,100,24,224,20,3,3,100,97,116,97,224,19,8,152,109,224,22,9,2,
-114,105,118,168,226,224,23,4,0,111,224,17,7,1,101,108,224,125,9,4,
-102,111,114,97,108,104,138,224,21,6,2,101,105,103,100,205,224,22,3,0,
-105,106,79,224,17,4,121,88,224,21,8,224,57,9,2,110,102,105,102,36,
-224,20,8,224,123,8,96,21,102,116,224,21,5,4,115,116,97,110,99,224,
-191,8,1,108,101,224,125,8,154,21,224,21,7,5,110,101,119,116,121,112,
-224,22,8,141,113,224,17,3,4,112,97,116,116,101,140,89,224,22,3,1,
-116,104,138,23,224,19,4,224,80,10,122,113,64,20,229,192,18,66,54,132,
-252,68,28,0,90,67,243,100,121,64,24,66,102,215,90,66,145,0,80,195,
-154,151,188,0,39,85,48,192,17,114,207,99,48,0,83,87,205,245,173,6,
-151,217,1,53,49,92,119,153,174,160,79,1,51,49,126,121,228,81,3,224,
-55,1,99,71,68,218,64,35,0,95,123,237,117,83,192,131,96,114,248,51,
-1,164,86,252,55,2,64,195,218,250,128,150,155,2,121,126,3,67,32,95,
-52,84,186,1,95,52,64,35,227,242,4,192,34,64,240,185,140,160,117,249,
-191,4,0,52,93,228,153,63,153,250,70,167,249,255,2,1,95,54,121,15,
-96,0,193,49,69,192,0,50,250,0,0,81,148,225,59,3,224,91,0,165,
-76,119,53,187,54,85,83,64,6,64,220,65,208,97,212,150,179,161,58,224,
-93,5,96,85,2,95,56,53,91,237,0,55,134,29,250,155,4,129,30,134,
-123,96,103,64,92,0,50,65,15,100,217,128,239,129,124,64,40,0,54,161,
-71,164,178,192,102,3,95,52,56,51,94,85,229,55,5,225,102,1,64,84,
-164,163,64,10,65,201,64,77,217,180,98,91,185,40,229,29,0,102,77,252,
-150,0,254,48,1,192,24,224,25,11,153,103,96,0,224,71,0,224,29,3,
-224,61,2,224,33,2,224,42,3,224,69,6,224,37,11,224,2,4,224,40,
-1,224,113,17,224,23,0,224,44,2,186,55,224,2,21,224,48,4,225,31,
-8,128,34,224,5,2,64,2,224,49,31,224,17,6,224,53,3,225,189,0,
-224,1,9,224,94,5,225,27,23,224,2,3,224,56,5,224,57,4,225,9,
-24,225,6,5,225,249,16,224,61,15,224,125,9,224,65,42,224,68,11,225,
-40,2,224,55,12,224,2,7,224,64,9,224,134,6,101,49,224,86,3,224,
-145,22,224,86,15,225,184,9,224,1,7,0,83,232,158,3,0,35,101,125,
-224,0,7,224,195,13,224,2,17,225,103,12,224,138,40,219,251,224,0,4,
-224,108,13,224,2,21,224,138,57,233,178,2,224,0,1,225,177,3,192,108,
-161,182,224,96,6,224,177,19,224,89,8,224,143,13,224,1,1,224,153,5,
-253,81,0,224,0,2,226,209,12,224,2,19,224,131,54,221,13,224,0,3,
-224,116,25,192,2,227,82,15,224,131,37,231,87,0,224,65,30,224,114,11,
-224,47,19,225,119,8,72,137,224,0,7,224,223,19,224,2,9,224,126,52,
-231,179,0,224,63,15,224,115,28,224,106,13,128,1,224,112,6,237,46,3,
-128,0,224,97,13,192,2,226,228,19,224,118,34,228,143,9,224,115,31,224,
-118,52,227,240,9,227,75,14,195,240,224,92,8,224,41,7,224,80,5,224,
-130,11,128,1,229,3,6,227,223,8,227,220,11,228,117,28,224,129,5,224,
-124,13,225,7,8,224,126,7,230,156,1,96,44,225,19,7,225,13,16,227,
-228,9,224,122,9,224,124,7,142,211,192,0,224,202,3,231,31,10,136,183,
-224,14,15,224,154,1,224,110,3,192,142,224,19,3,225,126,6,227,228,1,
-224,73,3,64,38,1,64,67,64,134,3,95,49,51,51,143,225,1,52,50,
-64,12,64,179,112,143,140,77,224,18,0,228,46,4,224,127,1,64,65,235,
-159,1,64,0,193,70,128,106,145,241,75,28,96,99,235,84,0,224,69,3,
-235,90,12,234,83,8,224,253,7,1,67,32,64,80,1,56,52,160,233,2,
-64,35,57,225,234,0,224,88,21,160,152,224,83,0,192,43,231,48,6,198,
-19,192,46,64,14,224,40,12,160,210,224,37,0,224,34,10,241,6,0,241,
-75,6,0,35,173,167,192,0,0,73,192,13,173,218,64,5,233,77,2,96,
-126,65,82,224,220,5,97,116,64,16,1,64,80,225,59,1,226,228,8,130,
-62,160,236,98,93,224,248,1,224,25,2,77,125,172,217,161,1,225,208,3,
-224,74,10,226,203,11,65,10,192,139,224,18,2,226,44,5,2,95,51,54,
-224,192,1,226,55,19,242,38,0,109,198,224,85,5,179,108,224,16,20,77,
-143,224,16,4,143,167,1,50,50,240,88,2,31,92,34,109,104,115,47,83,
-121,115,116,101,109,47,67,111,110,115,111,108,101,47,83,105,109,112,108,101,
-82,101,97,100,108,13,105,110,101,46,104,115,92,34,44,49,55,57,58,53,
-80,129,224,136,6,163,85,225,117,1,224,233,17,224,138,5,238,121,18,224,
-41,9,226,206,10,225,227,0,228,89,0,64,5,225,144,8,227,45,8,192,
-62,130,181,192,65,128,8,130,204,66,70,227,220,5,226,150,1,224,2,0,
-239,252,11,224,120,3,224,67,4,64,45,64,35,116,250,0,52,84,156,235,
-34,1,225,255,2,96,128,160,5,64,136,224,132,3,245,115,2,5,32,95,
-56,48,32,95,86,15,64,123,195,253,163,10,96,31,148,147,245,60,3,224,
-42,3,64,41,64,230,226,96,12,224,0,1,224,199,0,145,108,224,238,10,
-161,98,97,64,224,171,2,97,177,128,36,99,86,224,163,3,196,44,209,5,
-210,115,160,54,64,219,224,243,1,128,43,128,5,224,48,5,224,55,1,100,
-58,164,63,224,6,3,225,133,10,241,164,2,192,87,129,251,193,111,227,123,
-18,224,168,2,128,44,225,162,9,224,235,5,224,181,11,224,174,5,224,127,
-0,166,226,160,175,162,143,224,147,1,128,107,134,175,1,95,52,118,214,160,
-6,225,130,1,231,38,0,128,15,247,136,5,225,3,12,226,170,2,227,135,
-1,3,50,49,54,49,151,149,224,234,1,228,193,10,98,137,96,252,194,135,
-96,246,236,210,0,229,68,2,2,64,64,85,244,26,0,225,58,1,224,241,
-2,161,75,227,81,5,1,85,32,237,30,1,227,31,8,226,63,3,231,93,
-6,224,95,12,225,12,2,226,204,9,224,105,2,224,32,2,227,223,15,225,
-51,31,97,195,243,198,9,211,226,225,55,15,224,220,8,224,22,2,225,196,
-4,96,115,228,151,1,224,171,9,226,139,5,228,126,8,167,125,164,50,130,
-116,64,179,225,148,2,101,14,192,35,134,213,129,246,100,95,148,94,244,88,
-3,128,43,160,72,128,2,167,9,225,223,0,97,18,103,102,160,120,227,135,
-3,160,83,225,207,1,224,93,7,245,64,0,131,22,192,5,64,166,99,38,
-64,185,227,213,14,97,134,224,95,7,64,97,160,8,200,126,224,169,0,224,
-180,7,130,123,136,33,224,228,6,166,113,160,118,224,117,1,224,169,7,211,
-159,227,245,2,227,180,4,161,18,196,56,195,117,128,219,128,81,197,220,192,
-200,229,221,0,215,80,96,199,155,79,128,33,224,135,6,225,43,1,192,80,
-162,114,192,83,227,77,4,193,21,160,155,230,142,7,228,88,14,225,211,3,
-229,82,3,165,72,166,142,230,87,19,130,128,224,13,3,65,120,129,31,227,
-57,6,230,90,2,91,199,79,91,194,227,1,95,52,93,82,3,52,49,49,
-32,64,199,232,240,1,4,94,40,32,94,40,200,199,157,99,161,61,251,167,
-0,165,242,128,135,0,82,224,10,1,224,178,10,195,136,228,166,7,230,71,
-0,228,157,3,192,20,128,200,228,63,5,175,165,224,26,5,233,22,4,97,
-178,70,7,247,248,0,134,41,67,101,107,120,167,244,249,203,3,64,23,249,
-216,1,101,10,96,4,161,164,162,194,64,210,102,93,65,67,0,53,67,216,
-166,94,98,26,107,181,1,51,53,135,5,1,53,56,96,24,226,123,1,231,
-192,3,98,48,64,207,130,34,120,29,158,132,0,85,133,134,225,97,7,64,
-32,0,51,248,62,0,66,142,0,80,152,161,158,102,3,95,51,57,55,160,
-255,64,20,157,18,234,10,2,64,147,226,131,4,68,70,1,52,50,64,13,
-136,254,109,199,106,48,0,35,64,4,3,95,51,52,51,234,250,2,12,103,
-101,116,82,97,119,32,102,97,105,108,101,100,130,17,225,94,3,1,95,52,
-130,22,64,122,155,86,8,94,71,69,84,82,65,87,32,58,128,122,155,104,
-2,50,32,65,153,8,0,53,154,158,1,95,54,219,120,3,95,55,56,57,
-96,185,0,53,153,153,96,25,94,30,0,54,162,192,0,51,159,138,64,43,
-127,168,1,49,49,96,90,153,80,226,108,0,224,208,1,3,95,50,49,51,
-136,156,226,38,4,224,246,10,101,228,96,242,2,52,48,55,129,116,224,247,
-1,1,83,97,93,216,6,32,99,97,99,104,101,32,64,247,2,95,49,49,
-95,87,5,50,54,32,95,51,48,64,243,1,95,55,64,178,194,179,1,53,
-51,67,114,96,16,64,158,129,209,64,131,64,143,90,95,1,50,49,66,52,
-64,27,129,204,1,95,50,95,67,64,22,160,224,161,206,5,49,48,53,56,
-32,85,228,254,2,98,74,229,15,4,161,133,128,1,64,215,123,141,64,0,
-192,33,204,102,224,30,5,227,125,2,224,23,3,129,41,251,213,0,131,142,
-128,202,224,10,2,70,8,0,53,78,154,1,48,57,97,188,0,52,166,206,
-224,22,0,1,53,57,99,198,0,54,125,54,192,13,161,145,91,148,161,42,
-128,46,1,50,49,202,49,192,41,135,202,65,8,162,194,225,8,8,225,14,
-1,225,16,8,225,22,1,225,24,1,225,28,8,230,86,17,224,44,11,224,
-40,7,192,37,225,39,1,225,111,11,199,72,0,66,225,93,2,225,116,1,
-193,96,130,154,157,67,193,62,129,0,225,30,1,129,15,225,93,7,224,157,
-0,225,152,2,225,164,10,193,94,225,157,15,102,107,224,100,0,225,134,2,
-68,75,224,44,12,2,49,48,57,240,141,1,65,165,131,237,225,165,7,226,
-120,1,224,255,39,66,85,1,49,48,254,243,0,224,21,4,198,191,224,22,
-4,2,50,49,52,166,51,224,22,7,160,168,0,58,129,5,224,165,7,224,
-139,48,225,21,5,64,29,64,108,229,216,0,224,39,14,160,13,65,142,224,
-13,5,128,0,64,164,165,19,96,164,0,67,160,139,70,38,64,27,165,21,
-227,12,9,226,148,4,227,226,5,225,135,52,128,161,0,55,131,176,224,21,
-6,161,17,225,40,2,225,34,20,194,56,160,53,225,34,51,0,54,225,6,
-4,224,71,7,128,96,64,39,134,22,128,39,0,80,225,239,33,226,245,27,
-224,116,7,163,59,160,22,2,50,49,52,103,208,224,83,37,64,178,134,42,
-128,178,224,99,4,0,50,85,116,160,36,166,51,192,36,114,49,128,30,64,
-29,134,58,145,217,64,23,0,48,98,63,64,25,133,75,224,255,2,128,97,
-96,27,131,193,161,16,210,130,3,67,32,95,55,65,109,1,95,56,201,223,
-232,60,5,136,111,85,241,170,14,69,53,192,60,2,95,55,53,102,210,137,
-24,239,17,10,64,27,64,252,2,95,52,56,134,62,0,58,135,29,199,43,
-2,51,55,54,138,156,1,49,51,67,87,64,29,131,28,11,73,79,46,115,
-101,114,105,97,108,105,122,101,71,255,64,30,72,108,18,97,100,100,95,108,
-122,55,55,95,99,111,109,112,114,101,115,115,111,114,96,30,130,47,3,85,
-32,75,52,64,2,0,90,224,1,4,0,75,249,116,3,64,44,162,52,75,
-52,66,247,6,95,56,48,50,32,95,56,96,196,160,221,96,23,104,90,0,
-49,85,71,3,66,32,95,55,86,80,64,16,64,217,0,75,137,17,96,37,
-172,16,64,87,129,217,136,2,68,45,0,56,65,219,0,56,73,2,96,30,
-201,212,104,126,0,64,232,127,6,13,42,42,42,32,69,120,99,101,112,116,
-105,111,110,58,104,129,96,52,129,234,168,216,160,174,1,52,48,64,14,3,
-54,32,95,56,164,141,129,207,224,204,3,133,19,193,233,224,230,4,131,104,
-98,6,239,209,0,128,239,224,230,0,1,56,53,65,225,1,50,49,64,72,
-1,54,32,236,39,2,2,46,104,115,244,237,0,132,122,225,45,1,128,109,
-96,64,128,10,2,56,53,52,192,254,129,227,1,50,56,96,189,128,179,97,
-85,225,69,0,74,88,64,23,68,242,64,60,203,150,162,173,224,163,4,64,
-255,1,64,95,131,83,224,31,8,65,123,160,39,224,92,4,245,69,2,161,
-89,195,42,3,95,56,48,56,98,132,0,56,77,27,2,50,49,50,73,189,
-0,51,156,145,64,39,166,248,4,56,49,48,32,75,107,179,145,60,1,95,
-56,98,178,96,35,64,50,138,157,225,20,1,174,18,64,80,0,54,64,201,
-1,83,32,66,41,192,61,224,7,3,77,200,172,128,64,14,243,63,5,64,
-19,4,67,32,95,57,51,68,115,173,93,121,124,194,71,172,62,225,163,1,
-13,99,111,109,98,105,110,97,116,111,114,115,58,94,42,97,174,3,95,49,
-49,48,172,126,237,41,2,193,9,65,150,4,10,65,32,80,32,94,249,132,
-71,64,97,224,208,14,129,229,101,13,128,30,226,1,2,97,229,0,49,66,
-220,1,49,57,67,13,241,138,5,193,192,0,89,165,160,226,152,5,0,50,
-75,111,192,96,69,61,227,96,5,193,48,192,81,196,105,192,121,130,7,107,
-240,0,55,102,75,235,241,4,226,218,0,225,53,19,2,112,105,108,76,2,
-14,117,115,101,100,32,98,111,111,116,32,109,111,100,117,108,140,13,64,164,
-194,66,225,166,1,224,249,18,246,98,2,226,163,11,64,153,129,139,160,64,
-96,163,0,85,98,242,241,106,4,145,109,226,17,7,237,1,4,224,233,8,
-224,225,13,17,116,111,116,97,108,32,105,109,112,111,114,116,32,116,105,109,
-101,32,64,0,96,220,64,96,110,131,65,38,3,51,54,32,35,146,106,77,
-0,0,50,99,150,228,2,2,0,109,228,1,1,129,149,239,125,4,251,168,
-2,128,140,65,203,64,7,143,147,1,95,56,67,42,128,102,103,41,77,215,
-97,15,135,93,209,93,66,130,0,54,131,119,206,31,1,56,48,97,50,68,
-245,101,92,110,71,96,40,133,206,226,87,18,196,241,136,28,224,158,1,64,
-45,1,83,32,239,215,2,226,83,5,70,159,71,120,225,180,1,137,115,226,
-154,6,1,83,39,192,121,1,80,32,97,244,98,29,146,182,129,31,117,107,
-243,33,1,96,24,97,215,129,238,1,95,49,79,12,2,95,55,55,98,255,
-128,237,0,50,167,111,96,150,104,1,161,25,0,64,129,57,1,50,49,195,
-195,65,1,208,79,0,75,70,235,79,121,96,21,134,111,0,85,231,3,2,
-64,21,134,80,128,138,229,188,13,162,96,0,55,106,241,0,56,97,102,66,
-84,4,52,56,32,95,57,97,167,65,39,1,55,57,72,219,0,55,66,29,
-64,140,162,195,193,231,65,58,72,195,226,132,8,17,67,97,110,110,111,116,
-32,102,105,110,100,32,112,97,99,107,97,103,227,95,7,163,5,225,141,7,
-230,155,0,200,73,1,95,57,99,67,128,212,133,203,230,167,2,3,112,107,
-103,34,132,201,165,190,226,70,0,102,29,1,95,57,65,7,0,58,130,27,
-143,156,1,49,52,72,72,68,131,169,64,226,73,3,0,55,171,110,187,79,
-226,221,2,128,11,2,95,56,48,98,192,128,13,246,40,0,161,101,228,167,
-29,96,97,231,175,9,155,218,225,14,10,0,56,78,28,225,96,8,0,91,
-64,10,129,82,227,213,3,0,52,68,148,224,16,0,195,81,65,113,4,79,
-32,79,32,35,75,71,66,187,132,180,4,79,32,35,57,51,251,36,1,96,
-107,225,204,11,132,75,69,51,229,34,7,226,94,20,4,32,95,56,56,56,
-232,85,3,200,84,247,32,1,230,89,8,1,95,57,65,183,216,42,99,199,
-96,82,227,174,4,224,98,0,242,38,10,225,102,5,166,213,229,84,27,213,
-5,229,84,13,0,32,149,53,225,89,1,242,53,7,65,76,75,149,193,76,
-96,71,224,12,0,230,0,4,64,129,72,11,230,226,2,205,214,224,231,182,
-246,217,1,234,113,9,105,125,1,95,57,218,42,135,72,84,202,199,72,160,
-79,2,50,49,49,204,101,225,254,12,227,89,26,227,49,13,226,197,1,115,
-252,0,100,226,204,7,234,73,4,134,57,0,67,102,203,0,57,73,56,1,
-64,95,133,188,69,13,3,51,50,52,32,135,132,64,0,68,77,233,70,0,
-232,174,41,224,172,23,104,161,224,170,5,227,117,37,3,46,104,115,45,64,
-68,131,123,97,161,229,185,19,233,17,3,101,194,3,111,117,110,100,172,168,
-229,188,2,202,206,225,239,22,2,50,49,49,175,79,225,240,2,0,48,171,
-81,129,59,0,54,165,137,0,83,171,153,1,49,49,72,1,203,153,65,65,
-135,22,133,187,128,51,136,10,103,8,64,37,64,18,205,148,192,1,229,212,
-2,1,57,49,69,24,240,120,0,128,31,224,184,3,225,73,0,230,125,0,
-0,57,109,255,96,0,224,40,2,227,169,1,157,140,189,146,225,241,30,98,
-229,234,160,7,225,125,6,6,112,97,114,115,105,110,103,161,111,192,0,168,
-202,97,246,148,221,224,148,1,104,96,250,230,5,224,143,7,204,87,128,18,
-1,95,57,111,170,235,41,24,64,138,1,101,100,236,90,2,112,161,211,132,
-224,152,6,192,2,128,157,233,123,7,96,13,224,161,0,251,142,1,233,138,
-8,162,217,225,61,2,228,251,1,217,164,1,49,48,80,193,2,95,56,54,
-98,138,3,95,49,56,52,64,62,239,7,1,98,214,128,10,224,208,5,194,
-212,7,97,109,101,32,100,111,101,115,98,222,12,97,103,114,101,101,32,119,
-105,116,104,32,102,105,160,29,193,125,161,203,133,8,130,250,160,14,0,79,
-158,243,154,4,231,14,1,225,20,14,221,38,224,25,10,193,211,226,173,17,
-64,0,225,237,4,224,2,3,230,59,4,228,15,6,65,175,1,55,54,67,
-132,1,49,48,151,167,97,60,81,201,227,164,1,71,255,172,209,224,0,2,
-227,69,1,224,1,1,157,255,224,31,17,106,252,224,31,18,64,1,224,229,
-21,224,56,18,233,46,8,1,49,48,89,87,224,0,5,130,60,226,140,9,
-224,70,2,184,75,224,88,3,224,41,3,224,128,9,224,29,5,225,193,14,
-225,202,1,225,3,22,226,203,0,229,41,9,129,155,0,51,95,103,0,75,
-231,79,1,224,0,0,226,1,16,226,10,4,227,248,22,1,49,48,90,191,
-227,249,25,9,116,121,112,101,32,99,104,101,99,107,227,255,1,232,17,2,
-1,48,53,119,70,113,223,224,52,1,0,45,64,0,160,44,224,187,8,225,
-54,20,225,94,2,226,57,49,224,97,20,64,2,235,210,0,229,237,4,242,
-59,2,245,224,36,224,0,4,224,180,15,64,1,227,54,3,224,43,23,224,
-228,24,224,230,19,225,69,1,224,88,9,225,1,3,187,104,224,80,10,248,
-121,4,224,83,3,224,74,9,224,2,4,224,80,4,224,31,10,224,94,3,
-224,79,8,192,85,226,4,2,224,30,9,128,118,224,103,3,224,102,16,224,
-36,0,229,51,17,128,41,128,103,109,190,224,8,12,231,219,14,227,82,8,
-0,57,208,232,227,82,20,6,100,101,115,117,103,97,114,231,79,3,131,70,
-243,176,0,224,0,4,196,40,232,112,13,224,5,9,225,0,1,228,5,6,
-64,0,102,198,225,1,4,234,144,17,64,0,225,117,1,138,156,224,19,6,
-234,168,15,2,100,111,110,175,227,224,116,9,231,68,5,224,79,2,224,77,
-6,0,44,224,64,0,128,30,236,135,6,178,164,192,29,231,223,7,0,115,
-172,189,64,31,231,187,4,224,60,4,224,57,10,1,32,43,160,119,224,53,
-16,224,50,16,224,161,12,237,35,6,224,0,6,128,100,227,19,0,96,203,
-254,95,0,224,8,27,225,225,5,234,22,1,96,26,233,59,17,2,95,55,
-54,133,254,64,179,96,17,82,113,233,62,1,3,95,56,52,53,224,225,2,
-10,73,110,116,101,114,97,99,116,105,118,101,225,85,0,1,95,52,71,118,
-226,50,8,96,120,140,127,128,131,67,3,225,104,11,3,108,111,97,100,205,
-121,233,94,18,225,102,2,174,143,160,38,225,88,16,228,100,3,225,44,6,
-235,51,0,128,14,225,61,6,1,64,67,196,15,138,152,228,25,0,199,152,
-224,13,0,0,49,179,156,227,108,0,129,75,112,199,242,115,3,83,186,1,
-50,53,64,97,160,165,250,67,8,224,137,1,240,23,6,192,194,64,27,224,
-94,3,72,19,115,238,128,37,64,153,142,138,151,242,174,151,192,0,160,187,
-192,20,224,46,4,64,0,65,245,0,55,65,245,192,17,224,16,7,224,32,
-8,0,83,96,253,0,57,64,152,0,89,244,255,0,212,252,193,15,180,188,
-64,192,79,53,1,49,49,138,116,64,0,214,0,96,10,0,51,169,185,2,
-85,32,75,201,194,224,247,4,229,199,2,224,23,2,196,231,160,120,112,54,
-161,109,1,49,51,144,243,121,121,110,15,160,0,224,171,11,249,142,1,170,
-178,224,10,4,224,201,4,65,121,192,0,224,248,11,202,111,161,4,7,32,
-67,32,61,61,32,64,35,228,101,1,143,33,245,214,5,225,203,4,193,2,
-64,204,172,205,1,57,52,137,92,175,60,161,33,78,224,222,42,0,57,85,
-160,0,53,67,229,0,53,66,102,1,49,57,97,103,1,95,50,97,160,64,
-51,160,14,1,49,49,148,249,150,8,72,91,0,53,79,36,2,95,54,48,
-64,97,128,53,155,134,224,186,0,128,58,1,53,49,64,91,0,49,73,0,
-128,37,227,142,1,2,101,111,102,131,187,64,197,6,95,51,54,51,32,95,
-53,64,118,247,207,2,64,118,224,111,4,2,49,57,57,114,132,99,76,119,
-107,192,53,96,247,124,124,228,119,3,3,77,97,105,110,96,100,0,79,64,
-128,0,55,124,254,224,31,3,0,109,192,31,164,6,64,115,219,187,96,184,
-128,116,0,53,237,250,9,135,120,224,152,2,75,111,170,17,96,18,64,158,
-225,89,9,129,113,1,49,57,92,230,5,49,57,53,53,32,35,92,152,96,
-63,74,42,96,37,3,95,49,57,56,80,163,160,31,182,186,160,13,135,67,
-224,250,5,3,67,39,32,79,128,47,0,56,196,207,131,183,224,194,15,3,
-119,104,101,114,229,136,1,138,44,225,96,10,194,208,224,107,3,193,104,225,
-163,0,64,21,82,175,81,115,64,239,1,64,67,224,9,30,224,49,21,224,
-79,33,0,67,160,9,2,95,50,48,78,161,67,195,160,172,110,182,0,53,
-114,1,78,156,3,95,49,54,54,67,3,225,126,1,233,85,4,2,97,116,
-97,129,212,2,50,48,56,99,119,3,95,50,48,57,193,124,224,82,1,224,
-92,10,1,49,55,193,175,224,86,9,5,110,101,119,116,121,112,162,46,2,
-50,48,55,195,163,226,0,1,105,22,224,87,13,0,54,65,119,0,49,77,
-28,128,5,96,65,96,7,4,49,57,54,53,32,64,169,66,47,0,54,100,
-23,1,50,55,65,196,96,28,244,93,5,129,172,69,44,0,48,94,146,65,
-13,193,191,224,227,14,224,217,3,162,62,224,217,9,224,214,28,1,50,48,
-99,11,96,28,224,85,1,0,57,123,141,224,85,12,138,3,160,87,1,49,
-48,199,88,104,101,226,239,2,224,13,2,176,158,224,176,0,69,180,67,136,
-96,94,224,9,2,64,39,192,113,224,119,9,5,102,111,114,101,105,103,132,
-12,224,147,18,103,227,194,112,224,38,6,4,99,99,97,108,108,128,37,224,
-26,8,2,97,112,105,224,63,0,67,100,105,228,224,35,5,4,117,110,115,
-97,102,195,149,224,37,1,1,50,48,133,206,99,155,64,219,224,191,0,78,
-65,225,96,4,226,164,11,225,212,13,132,101,225,6,10,3,99,108,97,115,
-153,89,65,213,102,255,193,222,228,205,12,225,239,1,190,158,1,53,50,230,
-17,0,97,122,225,166,12,71,13,97,69,151,179,96,214,225,159,1,1,50,
-48,108,199,224,32,8,224,123,4,96,124,229,30,2,228,162,1,163,42,96,
-184,1,52,51,100,204,162,238,225,13,14,67,81,225,13,13,6,105,110,115,
-116,97,110,99,226,230,0,129,106,224,87,1,216,127,226,143,19,104,248,226,
-123,3,228,116,4,4,101,102,97,117,108,162,90,225,243,1,229,142,0,131,
-238,205,135,230,87,0,3,49,57,54,52,225,138,5,128,131,75,127,1,51,
-53,103,13,125,101,224,104,1,1,40,41,194,152,0,49,192,71,161,18,0,
-57,65,56,2,54,48,49,192,74,160,230,225,94,5,225,60,15,0,50,110,
-114,224,219,13,228,31,4,97,129,224,39,0,98,185,1,49,57,110,238,96,
-23,192,80,0,85,97,86,98,72,224,83,12,5,112,97,116,116,101,114,163,
-165,0,50,74,173,225,216,18,0,54,93,168,231,113,7,224,77,16,226,184,
-2,161,118,226,97,6,128,182,228,211,3,227,103,23,0,56,141,203,225,248,
-13,4,114,105,118,105,110,94,112,227,89,13,227,173,3,129,45,224,69,10,
-1,118,105,230,178,0,105,110,101,206,130,148,227,16,2,141,90,224,65,13,
-226,225,13,130,100,66,98,129,229,82,179,82,187,0,54,89,108,96,78,195,
-100,98,140,129,96,224,5,3,226,8,14,224,24,6,1,114,111,169,71,226,
-34,1,231,216,12,224,54,6,5,110,111,109,105,110,97,229,105,14,6,112,
-104,97,110,116,111,109,165,70,224,113,8,11,101,112,114,101,115,101,110,116,
-97,116,105,111,224,67,0,228,90,6,72,212,159,210,227,136,4,104,148,0,
-73,99,141,108,70,67,113,225,184,8,233,121,11,199,12,233,107,7,2,50,
-48,50,108,200,64,21,227,226,27,66,240,140,249,233,150,11,143,1,76,68,
-0,32,140,110,96,34,0,49,98,14,140,138,0,79,160,89,0,50,91,38,
-142,101,108,31,0,50,104,188,0,52,165,53,239,15,2,224,202,8,1,55,
-50,225,75,2,1,60,45,161,61,224,213,15,175,147,235,16,3,100,223,224,
-213,5,229,26,15,234,163,2,128,56,99,152,236,253,1,225,3,13,238,243,
-5,111,78,73,11,0,50,67,206,207,82,96,0,65,228,157,105,80,39,0,
-48,64,69,163,245,1,50,48,68,55,0,64,109,199,137,85,186,17,64,50,
-0,54,188,44,0,83,65,105,83,222,2,67,32,60,187,142,224,18,6,65,
-77,224,18,6,136,187,237,35,2,140,183,126,198,1,85,32,237,63,6,131,
-101,160,27,2,95,54,56,73,238,193,255,128,235,238,39,6,224,44,17,224,
-42,4,133,92,160,42,0,75,88,254,77,101,128,39,224,174,5,126,2,237,
-210,4,224,58,3,161,221,146,13,160,108,224,116,2,109,212,224,90,0,65,
-58,157,103,129,182,2,80,32,35,157,146,225,170,4,64,37,253,122,1,2,
-80,32,35,97,235,0,80,110,122,70,103,67,145,229,42,19,139,228,0,48,
-125,110,65,211,160,234,230,26,22,229,248,3,2,49,57,57,119,157,229,248,
-2,229,247,8,64,140,175,7,224,140,9,0,50,87,230,233,118,16,132,204,
-230,143,16,232,13,3,160,138,224,126,13,143,22,97,174,232,123,5,164,150,
-232,140,5,224,139,9,112,78,75,134,97,41,225,82,10,229,250,0,159,95,
-70,86,239,54,3,5,83,79,85,82,67,69,165,128,233,121,3,1,57,51,
-166,63,130,74,101,38,165,197,233,37,6,234,12,5,64,121,170,4,224,177,
-13,179,26,192,38,99,233,64,21,160,91,224,132,4,98,160,229,212,7,235,
-121,7,225,125,9,0,97,170,247,1,49,57,165,173,82,169,96,47,233,223,
-17,138,200,230,168,1,225,55,1,66,249,224,97,7,2,104,105,100,199,242,
-224,178,13,169,141,240,12,4,0,50,120,21,226,146,4,128,42,224,107,21,
-8,113,117,97,108,105,102,105,101,100,161,165,230,224,7,144,229,239,91,32,
-225,146,10,225,224,1,92,170,250,19,0,114,233,217,100,96,65,229,67,2,
-70,143,169,59,2,50,48,57,67,222,178,180,0,50,91,42,96,31,104,7,
-225,8,0,180,54,234,124,13,96,51,224,50,0,225,79,3,166,203,224,45,
-6,137,71,78,209,224,26,14,226,21,10,234,35,4,160,106,224,144,24,224,
-71,10,233,4,3,128,129,224,176,10,225,165,6,97,249,5,10,65,32,90,
-32,90,115,255,64,17,136,152,67,38,212,123,64,7,133,61,96,126,96,47,
-96,21,192,50,0,54,198,230,2,49,56,56,80,35,64,171,66,220,1,53,
-51,128,166,64,108,100,17,135,178,230,157,11,128,31,0,90,161,203,140,98,
-96,0,64,95,133,216,2,95,53,49,71,233,229,12,5,77,184,64,34,197,
-213,225,27,13,235,12,4,108,237,233,87,9,228,61,15,1,95,51,116,228,
-1,55,56,96,146,235,55,47,229,177,16,64,16,235,83,1,225,234,2,1,
-54,56,107,17,241,105,5,164,104,239,41,12,237,102,27,228,239,3,149,232,
-241,247,1,160,168,65,77,135,10,227,177,23,235,190,2,193,9,225,3,3,
-4,115,116,111,99,107,235,38,0,224,44,3,164,110,235,114,4,242,197,2,
-224,47,7,105,152,229,75,7,1,110,121,240,73,1,226,235,6,1,50,48,
-121,220,226,235,8,135,83,2,75,52,32,64,12,134,225,1,75,51,87,36,
-64,15,132,174,1,75,50,118,228,0,58,128,164,64,16,64,34,96,15,235,
-176,13,135,34,66,217,193,33,66,94,96,16,230,151,5,193,119,67,73,226,
-51,1,242,198,0,238,28,5,115,67,240,245,3,96,226,1,50,48,84,5,
-102,31,224,237,1,134,184,240,146,1,226,211,4,64,183,131,177,0,85,250,
-78,3,236,56,0,235,14,17,245,175,7,0,48,72,90,167,61,224,124,2,
-172,171,0,80,114,252,66,178,96,165,249,188,1,0,39,73,101,130,204,64,
-129,4,95,49,52,50,48,130,123,2,49,54,55,123,33,82,123,236,17,1,
-64,176,0,54,162,124,0,66,71,23,64,112,248,187,0,224,2,1,70,16,
-128,169,224,1,1,134,46,7,95,49,53,52,55,32,95,56,254,81,1,224,
-36,4,64,1,68,182,128,0,224,82,3,224,2,7,224,36,0,166,121,254,
-218,22,192,152,219,191,234,119,0,128,195,128,29,232,126,0,147,102,235,250,
-2,220,95,245,100,2,117,67,245,73,2,217,195,224,2,0,224,104,2,161,
-1,128,16,96,74,254,205,1,128,149,128,39,64,33,3,95,49,55,49,71,
-253,0,53,83,164,97,102,101,204,160,9,236,34,9,0,51,143,178,165,192,
-0,83,64,79,157,89,94,68,68,65,224,32,0,238,14,0,64,66,137,78,
-109,251,224,0,5,224,175,1,129,200,224,79,0,98,31,124,31,119,30,174,
-64,252,44,3,225,255,1,226,5,3,225,182,9,251,152,0,67,121,86,227,
-128,38,193,22,3,83,32,95,52,66,119,154,8,64,172,65,74,193,129,1,
-52,52,92,128,97,150,128,14,98,213,253,50,4,224,153,7,96,56,0,52,
-104,96,64,114,99,8,96,59,65,201,64,6,170,48,224,172,6,226,212,1,
-224,72,1,224,204,4,224,25,1,206,236,96,21,254,55,0,224,224,31,219,
-221,224,207,0,251,233,3,224,219,5,224,134,1,158,196,4,64,95,53,54,
-57,129,33,130,38,66,82,65,215,0,53,181,127,96,9,128,18,0,54,129,
-204,0,56,70,108,2,95,56,55,70,138,0,50,107,78,0,79,68,199,227,
-232,0,96,149,226,26,5,161,60,160,140,64,154,100,40,128,36,93,157,234,
-150,0,98,197,64,100,96,180,99,229,224,106,4,193,25,255,154,6,15,66,
-97,100,32,71,65,68,84,32,114,101,115,117,108,116,32,230,108,2,160,47,
-0,49,69,162,3,50,48,56,51,98,187,2,95,49,50,128,197,116,1,0,
-95,64,189,64,28,224,134,2,161,156,130,232,128,0,68,189,168,171,0,49,
-92,145,0,50,78,46,160,53,133,128,96,149,0,79,155,147,129,12,162,117,
-97,107,128,131,128,114,101,80,224,194,4,1,58,58,96,176,225,153,0,128,
-45,128,167,65,97,91,185,229,73,0,65,14,224,123,0,64,151,201,32,0,
-89,103,195,132,18,96,245,0,57,73,118,163,220,161,10,0,52,68,132,239,
-90,0,222,54,228,234,1,0,95,65,184,100,172,0,50,74,4,223,25,160,
-61,4,54,32,95,51,48,128,229,0,52,224,145,1,224,69,2,224,63,8,
-126,168,195,70,224,62,12,224,44,3,222,143,128,0,1,95,49,127,79,96,
-239,128,233,175,199,246,226,6,230,250,6,110,242,242,85,5,119,196,96,130,
-224,58,3,238,52,0,224,23,3,234,137,9,143,116,1,50,48,105,170,242,
-199,6,1,45,62,200,165,192,73,224,99,5,133,62,224,27,1,242,116,7,
-224,25,1,196,221,224,11,0,192,8,255,253,3,65,3,240,62,16,246,80,
-12,224,9,11,234,39,0,225,183,2,132,121,196,112,96,168,0,52,164,244,
-0,66,83,252,0,67,64,4,161,177,193,80,193,67,161,27,96,7,132,117,
-160,15,224,135,30,160,117,224,86,11,170,191,70,206,96,252,137,218,0,83,
-234,169,2,224,68,0,0,52,76,171,233,126,4,194,62,145,52,224,40,0,
-2,55,51,57,115,47,67,47,64,232,0,80,130,163,161,3,96,250,133,61,
-227,255,3,235,126,4,224,195,10,137,250,242,18,38,206,214,235,197,4,160,
-186,198,128,64,141,224,227,2,97,146,141,47,96,65,140,185,235,14,6,65,
-46,100,169,224,167,13,2,50,48,55,64,108,172,23,0,58,128,69,224,47,
-29,0,52,128,47,171,48,226,131,9,1,50,48,69,182,172,177,162,14,64,
-48,138,169,190,121,1,49,57,64,79,64,12,0,57,128,78,0,54,227,214,
-9,189,125,192,18,1,64,80,64,78,112,171,172,205,227,75,8,97,171,64,
-77,206,82,242,153,19,208,245,2,53,32,35,105,176,241,81,10,64,74,133,
-89,237,146,12,226,83,4,237,113,10,101,162,83,235,64,12,208,167,108,37,
-224,106,4,96,47,64,106,237,151,7,65,247,225,142,16,101,190,226,6,2,
-190,234,227,102,21,130,224,114,117,227,211,8,192,67,161,155,224,15,1,226,
-89,6,77,23,225,249,26,160,69,64,48,131,177,224,48,12,65,254,64,48,
-162,132,162,180,1,53,57,227,63,0,229,103,1,4,85,73,100,101,110,116,
-220,246,233,11,138,165,99,211,173,158,171,144,138,209,1,54,50,64,104,0,
-52,84,94,234,208,10,136,211,88,188,1,50,32,192,30,130,73,64,159,245,
-169,41,0,50,65,35,64,33,136,93,239,245,1,1,48,52,64,41,2,50,
-48,52,238,31,5,160,107,163,82,131,33,153,7,64,6,0,49,97,27,64,
-75,239,181,6,229,1,10,246,194,11,229,112,15,246,195,50,224,83,14,123,
-232,229,27,15,240,101,22,156,28,64,118,233,21,3,4,105,110,102,105,120,
-219,102,224,45,3,0,57,131,107,224,45,10,0,114,240,101,10,1,49,54,
-73,62,224,46,12,128,45,225,219,4,241,129,12,226,147,12,3,100,105,103,
-105,226,146,11,97,126,194,146,0,75,109,153,112,74,184,238,81,245,66,242,
-241,255,13,65,28,160,32,224,33,8,168,50,160,91,194,190,224,36,0,160,
-0,228,94,4,224,64,12,240,147,8,89,94,225,243,4,227,247,8,66,238,
-249,90,1,197,111,64,24,165,109,155,5,226,62,0,130,196,100,254,0,54,
-238,82,5,131,103,138,129,64,63,133,98,240,6,0,229,241,1,130,195,101,
-9,236,227,1,65,76,236,249,1,239,46,0,233,48,1,168,210,102,12,237,
-137,1,192,30,228,26,0,192,14,112,47,160,74,96,56,224,16,0,149,27,
-224,67,2,182,157,233,53,4,253,42,0,230,136,3,165,101,233,49,3,107,
-70,203,75,224,8,0,224,91,0,111,237,160,159,225,2,5,160,21,0,66,
-133,234,226,168,6,224,29,2,232,246,3,245,96,0,224,169,2,0,39,131,
-160,64,120,140,149,232,235,2,100,47,247,106,5,137,14,240,178,3,240,173,
-3,160,115,224,243,3,206,160,198,93,167,14,238,126,9,65,242,166,234,225,
-71,2,224,242,2,64,166,139,173,236,182,0,232,24,3,229,60,9,64,230,
-241,52,2,160,50,255,15,1,224,18,0,255,21,10,121,128,64,132,192,221,
-224,218,22,94,255,195,105,64,201,135,13,99,253,152,178,128,138,241,145,0,
-180,37,142,82,81,15,224,17,0,129,133,229,45,1,229,46,5,231,220,4,
-100,11,224,50,11,234,26,3,241,226,2,154,87,175,226,133,192,144,69,224,
-83,9,225,13,5,247,38,7,232,66,40,128,218,192,8,65,32,252,108,0,
-229,253,0,224,9,49,235,245,2,226,16,0,132,112,247,245,18,192,185,103,
-152,128,49,245,159,2,96,24,193,13,225,247,5,240,196,2,233,138,13,0,
-83,98,18,160,38,64,34,0,54,67,120,224,54,0,73,3,201,166,188,57,
-1,50,48,195,154,69,27,135,83,231,63,3,128,95,253,226,5,69,146,102,
-11,247,254,5,104,30,236,56,11,70,234,161,245,224,89,0,3,54,32,95,
-57,79,58,0,95,154,60,224,98,10,215,84,230,20,3,224,98,16,88,66,
-160,98,232,255,13,64,106,224,192,9,2,50,48,53,193,24,224,126,1,1,
-50,48,95,155,160,109,224,195,19,3,49,50,56,48,198,54,224,92,4,114,
-124,227,38,3,224,52,9,107,206,224,52,4,233,34,0,224,51,10,1,54,
-53,152,240,225,134,13,225,35,16,161,218,224,194,5,231,70,8,205,152,224,
-93,8,174,171,225,229,2,227,2,2,230,19,3,226,140,13,204,126,159,247,
-227,233,1,1,49,57,125,40,227,33,30,0,53,97,140,248,193,9,193,186,
-227,33,6,2,50,48,53,253,42,0,249,211,2,161,63,241,39,4,1,46,
-46,233,106,11,193,44,226,94,4,241,237,0,65,81,121,166,0,65,104,105,
-64,86,252,159,8,64,128,136,126,1,53,53,89,251,64,167,128,15,237,128,
-4,84,99,64,29,238,26,17,160,243,1,55,50,114,157,0,53,164,212,227,
-158,4,0,49,102,209,0,48,148,138,160,8,64,84,136,193,228,207,33,228,
-197,0,2,50,48,51,161,71,0,52,131,25,1,50,48,189,202,1,50,48,
-117,201,96,101,129,41,1,50,48,105,67,226,79,6,64,130,239,57,4,224,
-217,10,226,34,1,74,47,64,72,131,67,225,177,0,106,78,64,47,253,86,
-4,0,111,245,66,0,250,48,9,0,50,180,197,117,172,231,104,0,231,98,
-13,82,72,96,186,118,181,167,98,231,96,4,67,114,130,1,64,209,206,96,
-235,113,11,4,81,117,97,108,68,96,152,238,5,19,96,151,105,202,237,237,
-3,254,241,3,64,7,97,135,254,145,1,224,249,8,238,10,0,168,59,201,
-58,183,2,2,52,49,53,98,41,250,226,4,192,195,230,245,7,139,252,192,
-240,227,193,15,181,249,254,115,11,1,105,102,128,147,195,136,131,185,64,41,
-224,9,3,64,8,102,104,228,145,3,224,74,7,3,116,104,101,110,163,139,
-192,77,224,76,49,2,101,108,115,183,106,224,154,1,227,51,4,110,242,224,
-237,13,81,20,224,237,21,194,110,0,52,101,19,245,119,15,226,75,2,253,
-42,13,65,145,133,119,108,188,162,37,64,22,64,157,101,142,224,160,13,163,
-22,224,160,9,1,108,101,109,247,224,161,1,79,189,161,30,224,206,10,129,
-111,193,33,64,119,207,236,224,119,13,226,6,16,1,99,97,161,110,231,76,
-3,224,39,10,0,111,225,64,7,102,20,64,120,165,46,227,209,2,65,216,
-185,248,229,247,2,98,238,254,239,1,234,201,0,140,178,226,204,2,234,149,
-0,230,70,2,117,137,138,235,135,220,135,102,160,96,231,242,0,226,202,3,
-224,61,1,1,50,48,71,104,224,255,23,224,217,5,255,27,10,67,152,225,
-98,14,147,67,136,112,140,80,128,146,96,54,134,33,231,113,4,64,36,147,
-144,236,135,3,116,223,129,247,228,209,10,98,221,128,81,166,30,231,128,12,
-225,117,3,255,176,14,128,234,244,53,14,0,52,244,53,0,225,168,7,109,
-190,97,127,96,173,104,142,236,47,4,0,39,75,185,91,12,96,75,100,195,
-99,243,67,252,227,204,2,227,72,6,65,8,99,72,225,88,15,226,68,3,
-1,49,50,97,62,233,50,6,177,232,231,247,1,224,120,10,64,105,165,68,
-110,76,5,52,57,52,32,64,89,247,171,0,221,214,221,82,183,175,64,41,
-0,50,77,159,239,122,3,161,133,169,120,225,193,2,0,51,157,200,231,58,
-1,249,248,8,128,35,225,223,11,1,53,54,91,69,130,67,96,95,71,200,
-224,95,7,154,153,224,95,20,133,85,96,95,224,39,18,201,196,238,157,12,
-198,203,0,83,155,247,135,102,65,9,212,66,0,51,96,164,145,52,160,184,
-108,169,193,26,64,227,232,191,14,0,83,237,163,40,232,231,12,234,165,3,
-75,173,1,95,49,140,136,224,25,12,141,52,64,184,237,33,53,66,71,226,
-103,5,192,13,236,93,10,141,30,237,23,15,1,50,48,112,193,192,19,236,
-254,20,2,50,48,51,229,190,4,236,254,3,97,136,252,78,0,76,149,224,
-146,9,224,82,13,237,81,15,86,210,224,82,2,64,97,224,82,7,227,244,
-3,194,13,135,230,70,133,229,246,6,96,87,229,185,1,194,120,225,57,18,
-67,218,1,50,56,64,181,161,35,163,244,228,214,12,8,95,112,114,105,109,
-105,116,105,118,230,197,0,170,19,226,9,4,0,56,73,63,224,150,4,207,
-167,121,248,228,147,8,67,104,234,50,16,5,115,116,114,105,110,103,234,50,
-10,97,217,245,165,1,169,225,163,18,0,54,232,46,2,66,133,136,46,65,
-59,247,163,3,65,193,68,186,1,56,52,211,55,2,95,56,52,138,22,204,
-64,96,54,223,159,128,79,96,102,149,60,65,215,236,143,13,172,185,226,14,
-11,138,127,135,184,235,198,2,255,84,2,193,174,235,84,0,64,168,224,129,
-2,97,198,160,129,185,158,228,183,2,67,56,230,80,10,224,16,33,242,228,
-0,226,92,7,171,139,224,108,7,104,84,107,36,181,170,64,167,224,85,0,
-224,23,40,244,87,4,232,88,1,197,60,164,122,179,212,166,57,160,6,226,
-250,4,224,184,6,231,19,1,233,4,0,224,91,1,66,155,166,215,96,53,
-238,251,11,224,64,10,193,187,128,64,239,54,18,230,131,10,224,204,2,243,
-139,9,233,16,7,239,235,10,1,50,50,233,102,4,231,174,35,233,178,9,
-0,50,128,187,224,252,31,224,249,2,64,60,133,212,224,248,16,224,246,3,
-192,243,224,235,3,233,251,8,68,137,195,190,66,18,131,189,64,102,227,4,
-1,101,196,131,3,64,188,237,174,5,230,186,2,235,161,11,0,54,173,23,
-133,116,219,169,133,41,241,42,2,244,51,18,0,55,74,111,130,160,0,54,
-185,197,108,110,229,56,15,236,112,15,237,166,5,224,55,9,236,122,6,97,
-45,224,200,4,176,17,99,3,229,86,6,65,249,241,44,15,225,171,4,1,
-60,45,192,155,145,61,1,56,53,64,86,97,156,64,70,0,54,128,70,3,
-50,48,50,52,81,161,65,46,241,161,3,124,136,1,50,48,67,116,64,29,
-255,113,18,226,93,0,241,161,23,66,217,130,89,0,50,128,84,241,37,7,
-140,145,233,156,23,140,181,132,102,248,79,3,129,183,248,76,10,153,189,0,
-49,124,109,144,237,64,131,171,122,234,66,21,96,166,133,165,0,85,233,204,
-1,2,67,32,60,166,169,0,83,224,18,5,96,225,230,206,4,96,17,181,
-31,102,207,192,121,224,39,6,145,251,160,38,0,90,224,38,3,81,47,219,
-162,64,141,166,25,251,203,0,0,56,81,81,224,75,4,132,72,117,93,64,
-114,1,85,32,224,165,6,122,87,253,25,8,224,48,1,160,135,224,162,13,
-224,37,10,225,40,0,171,204,226,153,12,132,213,233,200,8,133,229,0,57,
-148,207,224,19,2,64,79,66,130,228,25,1,97,227,132,25,69,146,160,24,
-96,26,129,171,64,12,70,118,89,6,64,36,131,39,96,32,66,128,164,110,
-64,10,218,229,238,76,2,99,194,236,25,6,99,193,226,237,13,95,121,255,
-119,1,226,69,8,3,83,32,95,51,73,198,2,95,49,52,161,198,64,121,
-163,97,226,238,2,1,48,49,224,113,5,2,50,48,49,65,139,224,79,8,
-236,70,6,66,203,0,57,225,128,0,140,66,64,96,163,164,245,100,0,133,
-1,72,217,64,29,163,109,3,50,48,49,49,67,240,64,22,224,142,6,73,
-199,227,125,23,137,235,227,55,23,64,95,250,99,29,236,141,117,161,231,231,
-70,2,192,13,194,219,235,83,5,140,144,96,8,179,140,151,223,210,223,236,
-170,17,98,42,192,19,140,170,229,217,7,65,90,95,115,97,51,132,181,102,
-149,0,52,83,15,190,157,3,95,57,56,53,97,206,64,228,235,93,16,6,
-108,105,116,101,114,97,108,139,94,227,253,11,224,18,5,200,172,228,65,5,
-245,183,1,101,87,64,126,143,245,76,87,97,103,198,187,224,35,19,184,137,
-71,188,229,41,4,224,90,19,1,49,50,129,249,228,128,11,224,149,22,2,
-49,50,55,192,113,97,83,66,30,228,5,0,228,4,0,64,149,192,21,65,
-15,160,21,0,54,226,177,8,248,19,2,75,248,247,158,3,76,82,225,113,
-1,180,248,210,178,224,41,18,0,61,224,41,1,97,102,226,4,6,67,180,
-231,222,28,192,71,231,222,0,123,32,199,222,64,91,224,70,28,192,184,232,
-37,2,172,174,96,70,237,9,16,1,49,57,72,235,229,210,18,92,110,226,
-240,0,197,210,65,68,225,98,5,238,242,9,232,99,12,233,61,3,4,102,
-111,114,97,108,98,220,224,182,2,0,55,64,241,170,121,244,226,2,0,48,
-100,174,232,159,1,248,23,1,228,190,2,163,191,225,138,8,167,106,224,144,
-10,196,19,68,1,0,52,139,177,68,154,2,95,49,49,153,50,70,34,189,
-57,64,101,234,174,12,160,55,224,40,0,230,89,2,2,49,57,57,146,9,
-64,133,167,85,100,66,0,58,128,25,225,217,28,1,58,58,225,34,7,78,
-154,129,217,128,103,99,2,249,4,5,235,19,4,0,83,97,159,174,60,67,
-187,174,75,239,178,7,129,241,232,227,1,136,36,198,154,100,184,2,95,49,
-52,233,141,0,0,66,70,95,230,89,6,235,153,5,224,134,2,71,205,128,
-176,170,247,229,210,4,162,107,69,80,64,34,0,54,225,26,17,64,34,193,
-141,0,57,66,226,96,48,240,57,4,2,49,57,55,165,230,155,25,2,49,
-57,54,64,139,64,39,195,77,229,108,11,4,76,73,100,101,110,108,7,250,
-253,19,225,72,1,0,67,65,72,79,25,97,83,1,95,49,80,109,3,66,
-32,95,54,121,147,0,52,114,58,251,156,0,2,49,57,55,135,94,251,49,
-2,164,245,144,112,129,95,251,20,0,128,173,131,180,96,41,0,57,126,177,
-133,122,163,104,133,47,231,7,2,239,93,4,255,50,1,250,106,13,237,214,
-7,151,6,102,182,66,28,72,163,227,216,1,163,214,72,135,0,53,171,9,
-145,206,64,29,67,127,160,23,160,191,64,76,131,115,255,23,13,91,229,203,
-239,160,148,159,159,64,171,233,202,0,224,37,12,147,227,232,177,3,224,40,
-12,140,91,224,77,6,233,15,0,1,54,48,225,254,0,204,85,236,127,1,
-65,246,0,66,99,54,65,95,96,14,98,5,96,121,5,66,32,85,32,64,
-90,162,4,220,224,0,49,79,16,1,35,54,135,215,160,127,163,56,96,16,
-0,56,64,35,1,57,56,161,118,224,187,5,97,43,207,79,1,95,56,64,
-73,76,39,1,57,56,65,224,0,58,128,53,255,164,0,128,22,128,42,0,
-53,68,79,98,17,4,95,53,48,50,32,99,161,1,95,53,103,166,64,39,
-131,100,246,86,63,0,57,70,146,227,177,1,229,196,3,4,109,111,100,117,
-108,250,53,0,107,255,64,9,229,40,11,0,57,65,21,201,244,227,195,0,
-0,55,218,98,224,51,26,229,234,8,96,55,224,45,2,0,55,234,112,3,
-224,26,12,224,194,10,5,112,97,116,116,101,114,175,202,234,147,0,224,144,
-22,224,71,10,2,116,121,112,225,8,0,170,242,224,176,24,74,5,224,77,
-13,5,100,101,102,97,117,108,240,151,0,128,149,230,218,5,1,49,57,78,
-78,3,10,65,32,90,96,1,0,85,64,33,64,20,232,122,18,0,56,134,
-171,129,122,73,105,96,48,232,100,18,0,56,132,56,0,56,76,124,128,49,
-229,64,16,136,130,229,60,19,138,173,0,83,244,83,1,99,63,0,51,68,
-145,232,201,8,192,35,195,101,96,37,232,216,5,229,46,0,142,65,196,148,
-64,152,131,127,224,23,15,128,245,173,56,198,52,105,7,230,52,10,65,1,
-230,52,17,0,81,230,53,28,192,202,230,40,40,224,194,22,236,105,3,4,
-67,32,95,54,50,99,81,68,59,224,162,1,178,164,224,36,21,4,100,101,
-114,105,118,183,201,224,42,22,4,99,108,97,115,115,128,39,209,142,225,163,
-4,224,42,2,248,144,6,224,38,15,254,119,0,64,224,104,126,224,89,24,
-3,100,97,116,97,224,83,20,227,62,3,224,87,2,224,217,20,234,144,2,
-224,128,25,0,111,224,126,20,1,101,108,224,210,40,5,102,111,114,101,105,
-103,161,172,224,44,23,1,105,102,224,126,20,4,105,109,112,111,114,224,252,
-0,224,254,30,3,110,101,119,116,196,194,226,82,23,3,102,105,120,114,224,
-169,30,64,43,224,172,21,224,77,1,225,45,33,6,105,110,115,116,97,110,
-99,160,173,224,45,23,213,224,224,31,15,230,197,2,225,46,32,2,116,104,
-101,225,172,30,0,111,225,172,21,230,127,3,225,0,33,225,170,0,224,32,
-15,3,119,104,101,114,224,210,0,0,58,132,88,68,199,0,52,192,43,64,
-210,0,55,204,26,224,5,3,160,24,160,137,172,6,160,6,224,45,25,224,
-52,3,224,45,18,224,84,3,160,52,224,45,25,224,98,4,0,53,110,177,
-156,24,0,53,83,71,128,11,64,234,137,38,3,115,99,109,112,77,106,64,
-66,167,37,2,66,32,90,73,97,161,17,0,54,137,37,0,39,235,70,7,
-233,23,21,240,16,0,1,49,57,87,79,64,119,249,91,12,64,24,106,213,
-70,76,106,107,232,244,1,136,30,242,177,2,231,217,7,73,22,230,117,16,
-5,83,121,109,79,112,101,99,50,242,23,8,158,128,230,136,2,110,150,231,
-129,2,220,85,98,52,138,187,70,145,107,9,231,109,0,128,23,0,49,121,
-117,236,180,1,134,134,1,67,32,140,179,0,79,75,144,239,136,1,224,31,
-11,64,88,192,30,224,150,6,237,85,37,103,29,96,96,0,54,73,199,135,
-53,98,250,1,49,53,226,251,0,64,29,105,100,237,102,33,97,106,238,21,
-19,231,223,36,109,155,224,160,1,231,196,29,66,35,173,230,0,56,76,42,
-98,91,86,122,1,53,51,138,21,64,105,108,120,76,170,224,129,7,175,163,
-236,152,4,225,71,0,228,26,5,128,251,239,212,0,160,125,169,5,233,251,
-11,0,54,137,251,162,178,194,152,248,184,4,242,62,0,73,45,64,29,176,
-229,0,54,226,73,5,1,64,35,76,65,67,185,116,246,128,46,225,115,17,
-226,223,200,233,255,11,226,210,45,226,75,18,97,87,132,249,0,79,242,63,
-8,224,17,3,0,60,124,81,224,17,3,132,179,224,17,3,139,133,224,17,
-3,148,168,0,79,242,130,5,128,14,235,146,0,128,14,244,193,0,225,26,
-1,64,154,133,133,230,216,0,171,0,0,54,94,56,64,30,0,54,165,140,
-239,169,2,70,5,64,47,252,29,4,65,18,252,27,8,239,86,4,64,77,
-133,62,222,16,0,53,75,236,240,172,6,79,50,64,41,131,253,244,192,1,
-64,84,248,108,5,229,168,0,70,118,64,50,195,177,0,90,65,192,96,6,
-224,7,0,114,231,64,35,227,87,18,0,53,178,195,0,48,128,248,163,80,
-240,158,0,1,49,57,65,93,99,202,250,48,1,102,123,189,1,206,63,66,
-44,125,146,4,54,56,32,95,56,248,250,0,96,232,245,140,6,224,205,3,
-242,38,6,249,48,13,157,106,192,104,0,85,226,7,2,1,91,93,102,223,
-224,88,4,153,29,160,11,151,56,197,114,242,103,8,64,246,224,239,4,241,
-142,3,250,142,5,77,37,68,81,2,67,32,79,195,103,0,58,129,29,225,
-126,1,192,4,199,212,66,123,144,250,146,198,97,51,64,73,135,189,64,141,
-160,189,131,251,239,161,7,64,66,216,86,1,83,39,82,10,65,68,244,209,
-10,154,51,97,79,224,106,20,131,251,226,195,3,96,125,163,213,240,32,8,
-64,127,0,54,160,127,230,17,5,81,234,230,18,4,1,95,53,117,13,67,
-125,5,95,53,50,57,32,75,132,118,100,122,230,50,13,150,162,230,50,4,
-229,165,3,96,0,64,128,168,124,224,179,0,64,19,231,37,19,0,85,231,
-38,39,99,245,231,37,35,67,51,164,30,0,66,68,17,98,181,96,47,2,
-52,49,53,248,18,5,100,66,0,50,93,176,226,55,6,131,146,231,104,75,
-231,102,4,231,101,10,0,53,248,130,0,1,55,32,115,223,0,51,64,41,
-0,80,99,166,0,57,64,79,225,53,6,138,224,123,2,0,85,147,219,160,
-71,131,59,0,75,65,234,0,58,128,59,135,139,1,52,55,74,232,67,242,
-191,80,148,32,100,69,96,170,97,21,64,97,84,37,203,108,224,25,4,132,
-104,192,30,99,83,192,25,0,66,96,53,105,70,0,53,157,168,183,254,123,
-36,224,19,0,160,15,64,136,180,127,128,99,128,102,192,113,160,13,64,180,
-82,252,1,51,52,64,51,0,73,128,207,0,54,160,222,224,156,2,160,11,
-163,92,1,95,52,88,240,96,60,159,97,1,95,52,88,80,64,15,98,68,
-1,95,52,122,163,64,75,130,195,88,200,227,198,0,98,20,3,66,32,95,
-55,132,119,104,210,128,201,64,25,231,50,2,1,94,42,139,195,224,27,10,
-11,32,32,102,111,117,110,100,58,32,32,32,32,128,36,129,37,224,92,0,
-98,212,66,227,96,16,133,156,99,168,231,77,4,2,69,79,70,64,61,167,
-33,160,62,72,113,0,48,162,177,224,120,10,8,101,120,112,101,99,116,101,
-100,58,128,120,96,200,69,255,0,55,68,147,201,227,226,43,0,65,16,194,
-12,2,49,57,51,66,75,129,74,65,44,129,226,96,25,0,52,65,215,96,
-75,104,219,102,29,0,57,189,166,96,4,65,110,197,26,65,117,216,36,158,
-220,243,206,0,199,5,69,136,243,232,6,233,191,7,64,22,247,96,13,224,
-65,0,162,127,110,10,233,179,6,198,95,224,69,12,196,251,224,69,5,138,
-22,96,22,163,177,224,91,6,97,61,225,107,1,240,15,5,159,178,192,114,
-133,247,70,154,148,49,130,69,3,64,83,32,83,67,169,67,172,64,100,0,
-66,227,88,2,224,159,3,195,61,0,85,234,56,0,65,85,196,153,0,89,
-155,175,224,176,0,224,13,1,104,87,164,253,1,85,32,99,53,224,174,1,
-7,108,97,121,111,117,116,76,83,160,176,128,240,225,125,6,64,144,192,25,
-224,2,0,128,47,64,37,128,1,225,169,4,128,170,224,132,0,96,199,160,
-43,224,59,0,224,56,12,66,195,224,88,2,98,117,225,3,3,224,31,6,
-103,185,135,66,192,99,129,63,64,7,64,247,226,192,0,69,58,215,70,167,
-249,129,99,0,80,97,201,106,134,217,123,226,245,1,160,0,224,140,14,192,
-229,224,139,2,65,37,64,91,225,57,0,66,49,96,239,196,194,225,9,1,
-228,209,2,193,240,192,202,224,24,2,225,36,0,100,135,93,143,162,119,70,
-24,224,127,1,192,91,96,11,241,16,1,3,32,95,52,54,80,162,224,42,
-1,224,245,1,72,20,64,246,130,135,224,252,13,96,121,224,44,10,132,49,
-64,73,228,32,0,228,28,0,64,0,64,21,97,30,227,43,1,128,28,198,
-192,96,0,224,213,0,96,7,130,114,195,107,226,21,3,128,141,193,100,226,
-128,1,104,16,129,103,64,5,102,132,163,57,161,123,97,47,64,125,1,54,
-53,161,6,163,230,192,122,225,8,11,229,219,1,228,252,0,132,238,232,23,
-5,224,230,3,129,165,132,201,161,235,193,140,161,201,225,164,0,96,185,225,
-22,1,224,152,0,128,226,224,151,24,160,106,225,164,0,129,209,193,94,64,
-81,170,91,224,158,3,224,88,43,128,172,192,88,234,207,1,64,94,226,59,
-13,96,46,64,30,1,95,55,227,167,0,160,214,97,218,227,63,7,187,190,
-225,60,0,99,65,228,197,2,99,43,224,29,0,131,15,192,13,239,165,5,
-189,221,224,31,0,225,94,1,229,253,11,129,50,132,30,224,240,1,64,97,
-226,165,1,2,48,54,32,162,41,64,0,227,188,3,98,96,229,35,1,192,
-23,227,150,3,0,95,111,134,83,135,3,95,51,50,52,224,72,2,160,59,
-224,122,7,227,57,2,0,67,131,110,4,32,95,54,51,53,230,86,3,133,
-167,7,32,101,114,114,111,114,32,125,205,70,0,51,126,31,0,52,84,128,
-68,220,228,226,1,128,0,224,232,13,227,169,5,160,146,96,38,64,23,162,
-252,228,4,1,164,147,226,3,2,160,239,102,87,225,216,3,97,191,224,16,
-3,96,89,128,22,225,184,0,131,33,224,13,9,225,71,1,64,159,0,56,
-76,151,104,70,161,59,224,166,3,109,38,231,64,3,229,176,8,161,69,76,
-45,65,70,128,40,225,76,1,5,115,121,110,116,97,120,129,76,225,74,25,
-71,101,139,132,64,125,139,96,0,85,138,116,171,83,0,50,75,65,68,214,
-170,53,0,65,136,241,67,123,3,10,65,32,73,96,29,138,214,148,175,203,
-60,224,12,2,228,51,4,199,194,162,198,192,39,225,40,0,225,101,0,96,
-8,74,219,2,49,57,51,129,208,224,70,3,234,73,0,96,22,165,51,226,
-202,3,64,36,65,157,97,92,68,216,129,72,201,204,2,49,57,51,115,191,
-109,106,183,71,141,113,237,120,0,229,14,2,199,122,226,37,6,163,235,229,
-194,5,224,7,3,162,4,226,102,1,226,13,0,165,195,64,178,64,60,224,
-88,4,226,90,2,224,57,6,129,32,160,45,98,45,230,54,0,224,38,13,
-130,44,101,26,161,245,105,181,137,186,173,65,128,226,205,78,164,32,0,64,
-66,7,65,235,64,7,206,64,68,6,79,4,238,13,11,131,235,238,13,2,
-174,18,184,92,138,114,164,71,0,55,120,145,224,0,2,129,153,225,148,6,
-66,140,64,12,66,228,78,253,1,95,49,172,229,193,160,3,95,56,52,53,
-233,238,2,5,80,114,101,108,117,100,170,158,66,150,0,54,142,6,224,37,
-5,8,77,104,115,46,66,117,105,108,116,158,0,64,39,141,18,0,75,98,
-202,236,29,1,129,73,64,75,224,11,2,192,8,210,207,84,180,195,60,65,
-1,131,59,65,5,160,69,160,44,64,20,195,103,128,1,132,57,226,177,7,
-194,29,233,57,0,64,12,134,50,102,48,160,36,192,153,130,220,227,20,3,
-99,56,160,37,2,95,49,51,80,31,97,94,4,48,53,32,95,56,164,82,
-133,37,131,60,236,44,2,64,50,202,193,172,28,235,14,2,227,169,0,233,
-199,1,128,76,224,25,10,97,29,228,251,3,224,174,3,64,201,160,17,128,
-6,224,60,0,128,32,64,154,150,2,1,55,49,68,183,0,50,70,111,226,
-54,2,1,95,54,70,124,64,92,2,95,52,49,150,51,110,76,1,49,57,
-111,111,1,95,56,208,99,192,32,194,191,224,15,1,130,215,128,159,3,95,
-49,54,57,151,60,64,130,1,95,55,111,171,128,146,0,95,67,6,129,108,
-1,95,51,64,98,194,183,1,67,39,76,146,64,25,0,80,128,91,160,252,
-227,224,1,171,32,141,101,132,42,64,18,64,44,131,128,160,162,161,12,163,
-114,128,143,129,166,135,178,0,56,88,87,67,87,85,143,96,0,163,167,161,
-5,3,66,32,95,56,66,88,64,197,202,122,77,114,96,202,152,168,81,198,
-64,31,112,248,2,95,49,53,80,1,64,7,120,122,68,35,103,28,96,96,
-64,6,184,19,128,138,1,50,56,233,46,3,65,102,132,85,106,143,177,233,
-65,175,116,51,160,164,192,68,65,144,235,198,4,192,84,129,111,224,20,4,
-0,89,225,74,0,197,105,194,56,161,25,194,81,64,0,96,24,234,129,2,
-224,36,0,128,53,232,133,0,100,53,0,55,226,246,1,224,100,11,192,9,
-96,10,246,176,3,192,153,199,196,226,228,0,192,107,226,233,1,1,95,55,
-233,161,0,224,0,2,194,148,80,52,132,42,135,80,111,14,73,227,192,128,
-224,117,7,224,7,3,224,205,2,64,18,134,86,131,244,227,119,2,224,2,
-7,224,140,0,128,15,227,176,1,224,36,12,224,37,20,224,40,4,224,41,
-34,235,147,0,0,39,131,240,228,194,2,97,87,199,231,195,44,132,182,225,
-118,1,141,44,100,170,128,92,167,46,224,5,3,231,58,1,192,148,235,83,
-4,99,189,161,227,164,86,236,206,0,66,181,2,52,52,48,227,209,1,131,
-133,242,154,1,196,51,3,95,55,51,57,64,12,0,50,130,253,192,22,192,
-228,224,88,3,224,85,9,192,50,164,143,66,144,236,190,0,229,12,1,224,
-2,17,226,244,3,225,25,2,161,53,225,113,5,224,28,19,225,176,3,230,
-72,0,161,24,229,250,4,224,20,0,224,8,2,2,95,49,49,180,199,196,
-230,236,193,4,224,198,3,64,15,226,31,3,0,89,160,32,224,102,0,225,
-251,7,171,101,160,42,192,19,197,173,96,130,160,173,226,106,7,192,92,160,
-62,192,196,98,27,224,5,3,193,66,224,57,3,162,48,224,25,10,160,2,
-224,25,17,226,168,1,225,113,3,192,164,64,19,226,246,1,225,39,5,133,
-233,69,98,233,0,6,160,68,231,182,2,130,139,238,234,0,224,224,7,66,
-111,165,164,64,39,134,176,64,53,202,116,228,56,0,64,126,156,84,71,241,
-230,193,7,224,28,16,2,95,49,57,226,167,3,134,172,64,3,234,34,1,
-130,30,225,241,3,232,163,10,128,210,160,247,224,128,7,224,215,0,224,236,
-3,224,218,0,198,231,224,249,2,200,48,226,93,11,226,193,1,228,1,2,
-226,92,255,226,92,45,226,90,1,96,0,226,2,14,225,67,3,64,13,226,
-8,29,159,201,224,166,3,96,27,193,5,231,205,4,128,156,192,150,74,20,
-64,148,244,241,3,64,0,96,150,64,107,227,3,14,75,166,224,121,9,224,
-138,11,237,138,3,96,59,174,100,227,108,19,128,215,160,187,79,221,125,109,
-124,198,226,241,4,230,205,2,160,3,234,69,5,225,79,2,224,90,1,232,
-142,3,98,150,225,178,3,240,166,1,226,249,3,200,181,229,238,1,161,8,
-98,124,227,145,17,64,84,243,98,3,128,0,225,105,4,128,179,64,40,0,
-80,138,3,239,120,4,232,148,3,204,136,233,105,1,193,42,224,98,1,226,
-85,6,233,160,1,224,89,8,163,82,64,251,64,66,65,62,135,86,224,80,
-4,224,75,16,225,207,1,161,172,203,143,235,139,1,224,72,4,203,100,2,
-52,48,57,76,52,0,49,124,108,238,67,1,2,110,111,116,90,117,4,111,
-114,116,101,100,217,13,128,0,0,58,137,240,109,231,0,82,64,108,110,250,
-66,71,0,56,65,107,138,138,0,95,75,213,2,95,56,55,107,210,97,116,
-219,36,251,111,6,0,32,145,192,0,56,193,47,64,93,191,199,225,22,4,
-225,116,3,132,96,229,37,0,228,143,4,226,218,5,164,66,224,26,0,224,
-69,0,225,205,1,64,0,224,71,3,224,25,5,227,234,1,229,23,0,193,
-179,224,46,0,226,148,0,224,11,1,84,222,168,83,229,158,28,162,188,228,
-238,0,98,0,144,116,204,242,194,247,243,142,5,163,48,128,16,96,142,229,
-200,2,165,188,192,156,227,62,4,228,129,2,96,56,172,77,1,49,55,227,
-26,6,230,139,5,225,85,0,230,132,7,224,38,50,225,92,5,64,38,228,
-53,21,225,39,14,99,42,192,108,244,202,0,164,39,224,21,14,165,147,161,
-11,129,246,65,186,133,137,245,142,7,225,74,1,225,181,25,250,232,6,225,
-182,5,224,146,2,237,125,1,224,13,11,245,122,14,161,42,230,71,2,98,
-148,224,185,1,224,0,3,230,55,0,224,183,29,224,182,18,224,171,88,224,
-170,37,225,97,19,224,170,93,96,142,226,209,4,224,84,0,227,232,1,224,
-19,3,232,232,3,128,1,224,219,14,239,108,1,224,60,1,192,183,224,19,
-5,233,201,2,224,23,0,228,7,14,224,137,4,132,13,224,75,5,231,24,
-2,224,20,1,96,254,233,37,0,229,94,2,224,180,0,179,160,198,119,129,
-16,232,156,1,187,39,1,50,56,228,249,0,159,153,4,95,49,51,57,48,
-72,247,0,48,113,91,230,145,1,196,132,102,54,1,49,53,149,28,113,226,
-224,0,4,210,15,3,95,49,49,56,101,36,128,118,193,146,128,8,160,5,
-239,71,4,192,184,169,182,160,191,137,129,146,56,177,213,224,137,0,196,9,
-225,236,0,102,30,230,47,1,192,173,192,123,224,238,3,192,68,210,59,0,
-90,70,26,128,176,96,240,84,193,128,117,114,83,70,255,152,107,224,108,1,
-198,142,128,11,160,118,160,17,96,196,100,200,153,49,243,143,2,2,95,55,
-56,70,129,231,153,18,231,142,8,15,117,110,100,101,102,105,110,101,100,32,
-109,111,100,117,108,101,231,158,7,111,233,97,192,0,79,225,141,0,192,244,
-199,104,226,34,4,231,188,6,128,2,162,143,224,21,6,160,81,226,80,1,
-96,69,163,123,1,95,57,96,203,160,109,112,178,231,132,0,201,252,104,221,
-245,68,2,2,49,57,50,184,229,225,49,0,96,61,65,28,202,232,99,84,
-96,208,236,88,7,224,148,1,171,96,99,4,160,135,244,183,1,137,90,1,
-90,32,254,88,3,130,200,64,12,226,56,4,171,228,246,165,0,213,6,224,
-78,4,96,202,248,201,0,224,133,37,1,64,75,224,57,0,192,63,66,78,
-0,54,218,229,99,227,83,201,224,93,0,194,35,96,39,152,35,248,75,6,
-1,46,46,184,66,65,75,247,240,8,65,154,160,20,237,23,5,132,59,1,
-95,51,128,157,224,11,2,129,220,128,12,138,192,65,45,197,26,170,76,133,
-148,64,20,192,65,128,0,224,48,16,224,40,7,131,119,73,128,64,164,152,
-170,226,143,1,226,15,1,226,65,1,224,9,4,224,29,1,224,9,4,233,
-248,1,234,2,2,228,65,3,107,181,75,116,65,153,2,51,53,55,167,80,
-98,197,1,48,55,130,206,118,26,98,192,1,95,54,215,209,1,95,56,85,
-57,96,0,66,153,1,51,54,66,35,0,57,122,39,1,49,48,245,221,1,
-141,231,0,55,66,0,147,179,97,3,250,125,3,133,91,128,21,224,23,10,
-140,85,246,36,13,167,8,228,194,1,169,19,132,88,226,221,2,161,93,233,
-27,8,224,148,6,224,128,0,96,15,225,216,6,224,7,9,235,33,27,224,
-166,2,96,16,231,176,1,239,82,3,161,181,229,228,1,238,66,1,133,139,
-193,79,66,253,182,214,224,223,8,224,0,3,65,133,128,38,2,95,56,57,
-101,202,1,56,57,64,252,160,119,225,173,15,195,177,225,176,36,225,24,5,
-239,75,4,97,35,130,106,0,80,225,196,13,224,84,1,129,79,193,6,129,
-1,192,39,227,168,7,64,195,2,52,53,50,100,156,147,20,226,3,30,160,
-228,224,85,24,1,56,57,101,134,226,89,50,68,182,69,241,165,173,224,239,
-9,228,53,6,193,250,193,75,226,54,1,224,13,5,199,62,96,153,160,43,
-236,156,2,236,159,1,226,72,5,160,34,224,61,0,126,165,227,85,15,236,
-116,0,226,241,7,160,132,224,10,2,225,175,1,133,99,225,49,6,70,226,
-173,30,166,19,233,69,9,193,73,66,233,225,70,3,251,68,0,0,56,126,
-95,160,119,163,92,224,157,13,241,137,17,192,54,193,57,227,124,1,225,52,
-0,193,41,133,19,64,52,224,93,2,0,83,160,53,124,174,226,121,3,0,
-85,96,43,235,225,4,0,95,96,198,0,85,101,244,192,216,227,194,1,64,
-0,226,151,12,224,166,26,160,146,64,169,228,23,7,224,80,6,228,40,2,
-224,0,2,64,180,97,98,229,213,5,89,63,105,38,133,2,227,167,16,225,
-218,6,124,161,224,213,2,224,104,4,1,51,48,138,33,81,166,100,126,103,
-253,201,236,128,5,64,64,100,167,163,64,224,6,5,224,14,0,100,173,102,
-120,3,49,57,32,64,128,9,0,50,66,64,166,130,2,95,55,54,64,7,
-71,54,159,204,3,85,32,75,52,96,191,64,18,155,223,64,183,1,54,32,
-160,75,100,249,2,56,50,55,167,12,132,4,129,214,65,25,1,51,54,102,
-247,193,233,103,25,1,57,49,92,54,0,52,169,157,64,188,137,146,228,51,
-0,98,216,224,57,26,160,212,98,27,204,61,98,230,0,58,128,222,104,154,
-128,72,64,17,146,87,122,178,98,130,77,220,96,117,96,11,138,149,128,13,
-227,98,1,227,230,2,133,205,67,109,128,150,1,49,50,97,150,225,129,0,
-96,31,0,50,240,74,0,163,162,96,87,65,63,64,160,228,220,1,160,85,
-65,211,0,57,70,151,233,39,1,224,17,2,192,46,128,165,129,111,1,49,
-51,190,176,77,27,97,8,160,249,64,99,94,206,0,49,102,115,98,174,189,
-160,0,56,64,249,64,93,226,140,1,131,147,130,125,98,134,0,52,65,219,
-68,37,95,59,172,23,2,79,32,35,70,232,99,10,76,180,2,32,95,50,
-102,248,64,13,0,53,118,111,96,11,5,50,54,54,32,95,50,76,228,0,
-95,150,106,66,132,3,51,50,52,32,240,77,0,96,103,67,206,224,43,2,
-81,176,65,208,97,202,65,157,140,245,64,130,128,230,100,213,0,56,159,210,
-0,55,64,119,64,36,0,54,158,96,65,114,137,134,161,172,230,129,0,161,
-135,182,210,164,202,0,83,97,139,64,251,65,26,0,54,234,222,2,1,45,
-62,148,220,129,173,96,31,0,56,71,174,1,49,57,97,145,196,5,160,68,
-128,71,164,54,224,74,7,0,61,160,74,225,252,2,64,36,1,57,49,66,
-188,160,72,228,120,3,160,76,160,162,192,79,3,79,32,35,49,69,201,192,
-121,226,140,5,192,41,1,53,53,247,177,2,226,66,3,228,187,1,79,183,
-108,205,66,40,96,8,64,6,137,34,160,93,225,24,5,0,55,97,138,225,
-8,1,96,15,64,191,65,232,224,48,11,160,174,1,56,53,71,223,128,32,
-225,70,20,224,199,1,224,240,6,1,56,54,88,76,225,34,3,225,61,11,
-193,17,225,18,1,98,222,224,16,3,98,18,238,93,22,65,51,135,94,97,
-62,227,114,7,229,253,3,135,252,163,118,142,25,0,67,66,90,164,125,64,
-36,227,112,7,226,232,23,101,19,240,248,6,225,197,19,64,45,64,121,193,
-187,225,213,0,199,15,65,221,99,187,64,131,142,246,96,86,99,200,66,76,
-76,119,96,74,67,62,141,226,3,35,49,53,32,64,13,141,209,192,96,99,
-209,160,6,64,29,141,218,129,164,4,95,49,54,54,53,128,22,141,76,224,
-52,6,224,65,9,96,43,134,65,0,75,233,7,0,0,83,163,68,130,72,
-224,5,4,77,9,150,234,193,162,0,95,110,185,69,209,79,152,3,49,51,
-55,48,96,5,66,15,224,37,0,175,85,224,41,20,96,137,134,184,197,195,
-111,248,2,95,57,56,65,39,0,52,114,88,154,39,100,116,1,35,52,128,
-76,196,115,64,150,135,7,71,9,96,78,77,179,65,4,72,51,1,57,52,
-239,50,7,10,80,114,105,109,105,116,105,118,101,115,46,164,94,98,201,69,
-106,2,95,54,49,165,31,229,41,15,224,79,21,164,99,224,79,25,224,251,
-2,66,0,97,133,0,75,128,206,0,54,161,10,164,131,2,95,56,50,70,
-182,71,53,65,5,65,58,96,12,82,143,160,149,253,147,2,66,169,224,34,
-0,66,108,0,55,72,248,229,103,2,224,78,17,0,55,115,173,229,76,1,
-224,74,8,0,56,71,167,227,149,1,224,76,6,102,178,4,67,32,95,57,
-51,65,227,160,96,0,49,82,216,131,37,1,56,54,108,32,242,208,6,10,
-101,120,112,97,110,100,101,100,58,94,42,146,201,1,49,48,236,94,0,134,
-55,64,84,66,128,218,195,224,190,2,1,49,56,115,37,224,171,12,73,130,
-166,107,224,164,3,104,110,224,41,1,65,166,98,94,0,49,68,36,160,35,
-135,77,224,15,4,97,152,131,156,100,144,225,133,3,1,53,52,66,152,116,
-35,224,179,2,96,147,235,97,1,192,13,96,5,237,141,2,164,231,161,79,
-144,154,0,60,247,231,1,192,21,80,207,224,35,9,138,140,227,103,1,248,
-221,7,99,212,238,205,0,237,118,5,165,100,234,254,9,199,166,128,44,246,
-241,6,196,40,192,69,64,7,238,201,9,130,31,237,133,0,224,26,7,240,
-9,0,0,83,69,70,133,251,72,73,0,49,239,226,16,228,76,3,249,10,
-7,224,146,3,237,178,2,237,58,2,237,189,0,166,86,224,83,1,250,114,
-4,238,130,5,240,215,7,224,27,1,162,253,137,151,239,66,0,227,59,0,
-192,102,64,36,1,95,55,73,148,180,179,181,20,192,0,226,98,2,248,172,
-0,128,1,226,93,10,86,121,96,0,203,15,238,191,0,131,25,96,54,2,
-49,57,48,100,86,247,22,0,132,14,135,132,167,128,129,212,137,153,247,245,
-9,107,52,1,52,50,236,181,0,108,180,0,56,68,160,86,150,235,212,0,
-248,110,1,109,72,142,78,245,98,3,225,229,1,138,225,0,54,135,125,64,
-0,67,72,134,215,0,80,70,227,64,73,195,84,2,49,51,53,141,107,120,
-212,0,56,94,247,1,49,57,74,95,1,95,51,104,227,226,75,1,101,133,
-248,7,1,64,71,134,246,3,85,32,75,51,70,5,77,217,102,12,160,29,
-134,232,3,95,56,49,48,109,253,193,105,225,216,1,225,125,1,224,1,7,
-226,50,2,224,37,16,224,35,4,224,32,23,224,29,20,224,26,17,224,23,
-14,180,199,224,0,0,64,237,135,76,102,253,105,26,107,170,0,52,65,79,
-78,160,66,109,229,128,1,1,37,84,139,21,199,78,98,201,231,138,0,230,
-44,16,1,56,55,217,210,141,164,164,163,248,91,5,229,146,3,233,204,2,
-1,48,53,229,92,1,130,59,65,240,64,150,133,176,226,221,1,227,235,1,
-193,255,102,73,72,23,234,6,2,164,230,64,1,64,28,216,32,64,165,64,
-41,131,53,204,138,171,220,98,110,1,50,54,87,95,129,61,227,43,3,64,
-30,128,144,160,145,160,221,160,57,229,132,4,234,53,0,229,168,19,128,189,
-96,209,241,63,3,96,23,145,64,128,29,196,199,129,41,225,244,2,196,125,
-96,24,243,16,2,207,19,96,46,129,29,0,49,106,187,1,51,52,111,136,
-120,105,0,56,154,205,192,0,128,81,224,136,4,103,2,210,143,128,31,101,
-24,128,88,228,112,5,198,178,64,18,148,182,80,1,137,164,1,49,54,192,
-106,101,62,64,140,224,122,0,224,116,8,224,252,13,225,164,3,224,225,0,
-160,77,224,200,4,142,96,74,153,2,52,51,54,136,89,65,188,100,59,146,
-13,0,67,68,120,65,226,250,51,0,97,210,102,177,64,94,182,200,128,105,
-161,110,230,253,14,225,229,0,225,26,0,128,10,166,110,224,180,3,230,243,
-9,135,230,232,197,0,192,36,226,143,3,254,6,1,129,36,129,85,181,136,
-205,49,128,246,99,89,77,45,161,109,231,50,5,227,101,0,227,122,1,99,
-50,64,13,0,50,78,99,0,52,130,116,227,132,3,70,190,235,181,2,79,
-225,227,246,0,64,27,227,123,1,131,36,227,213,2,227,206,7,224,61,9,
-0,56,146,181,0,49,151,146,160,33,70,207,64,34,96,27,170,19,192,154,
-96,0,225,26,1,64,112,124,9,226,35,0,206,71,128,17,227,140,10,128,
-20,98,10,227,133,9,227,130,12,1,49,51,96,255,252,108,1,160,4,100,
-87,225,90,1,227,53,11,160,58,226,193,2,201,25,64,43,146,219,227,24,
-3,224,129,8,224,128,8,230,144,3,75,14,125,73,252,8,0,129,115,116,
-206,233,187,82,178,120,64,17,206,200,192,0,70,34,141,94,133,236,110,224,
-78,117,221,221,0,49,194,98,149,13,166,35,224,162,5,225,189,12,128,223,
-229,71,27,192,178,230,31,7,230,9,4,191,196,224,49,14,128,108,161,241,
-128,1,235,213,17,161,22,133,120,195,157,236,111,4,0,53,68,131,161,100,
-129,64,236,64,4,160,62,2,95,49,55,81,118,158,24,141,152,224,161,0,
-226,179,12,98,208,224,187,8,96,21,0,85,98,6,79,250,0,50,239,73,
-0,224,231,10,225,24,2,128,89,197,200,224,191,3,106,10,69,194,232,23,
-1,13,116,121,112,101,32,115,105,103,110,97,116,117,114,101,136,35,128,218,
-249,48,4,231,240,21,130,20,0,55,79,161,213,66,225,73,1,237,202,6,
-123,185,224,153,6,225,135,7,225,91,11,132,34,1,49,48,112,212,225,88,
-9,96,0,224,49,4,66,192,244,203,0,224,106,8,0,52,95,50,64,85,
-79,195,235,161,5,228,20,1,64,133,224,238,5,64,56,97,133,225,128,0,
-103,140,0,52,158,61,1,55,49,88,188,97,182,239,1,8,26,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,97,117,245,45,0,149,225,2,49,50,52,64,71,224,70,8,
-2,94,42,32,64,0,14,102,117,108,108,121,32,113,117,97,108,105,102,105,
-101,100,160,67,79,125,166,194,64,0,65,1,0,54,97,1,195,155,82,182,
-156,6,249,106,5,0,73,138,18,206,249,0,95,64,70,170,79,64,126,64,
-87,0,50,64,153,0,52,70,91,234,68,3,210,186,225,65,3,64,23,139,
-238,105,92,229,227,2,227,198,5,230,32,6,233,233,2,154,127,245,159,1,
-96,9,225,133,4,66,197,128,188,226,202,21,194,75,162,206,160,13,238,61,
-0,192,91,65,124,227,231,4,0,56,120,94,224,61,1,192,63,167,151,192,
-211,224,32,1,160,14,224,31,3,97,117,99,1,226,125,2,104,196,160,0,
-224,92,1,96,129,66,105,240,195,5,130,90,66,230,64,9,1,55,55,89,
-225,97,176,251,160,11,101,8,193,208,0,85,101,28,83,43,192,108,224,115,
-10,231,161,7,160,32,225,176,1,191,217,224,5,3,215,210,128,156,1,56,
-57,64,11,103,187,73,141,135,3,131,162,128,0,225,46,15,150,6,64,9,
-131,64,160,51,225,52,0,96,31,228,66,1,1,49,50,88,113,236,11,4,
-100,13,0,53,81,1,116,17,96,21,174,133,64,79,117,123,1,49,52,249,
-230,1,151,47,128,73,0,79,117,36,0,48,160,76,64,63,0,65,96,38,
-161,45,252,120,4,110,250,128,21,2,95,49,54,131,225,252,29,5,66,239,
-142,150,68,75,64,113,224,64,0,64,26,142,147,97,47,228,240,18,242,60,
-2,140,194,133,197,226,16,4,97,30,165,133,107,17,3,49,55,55,50,253,
-46,2,77,174,96,239,214,210,129,164,229,19,2,138,97,253,187,6,64,214,
-64,226,64,172,188,88,103,86,68,133,0,49,97,224,128,213,0,58,139,152,
-111,126,226,126,4,168,7,226,127,5,227,193,2,224,251,7,227,3,0,225,
-224,0,128,208,230,86,6,0,89,133,93,102,95,64,4,107,87,97,246,0,
-54,118,49,2,49,52,56,225,61,0,230,242,17,119,210,225,182,1,133,164,
-1,49,50,194,24,128,157,237,5,4,132,109,1,49,52,224,206,1,226,72,
-2,224,52,7,192,223,137,205,226,238,7,128,82,224,154,1,195,67,245,79,
-7,0,85,227,137,4,166,133,99,96,0,56,117,101,165,118,103,98,128,147,
-234,144,0,224,131,2,225,99,3,0,56,104,128,161,28,224,132,5,235,217,
-6,97,33,236,56,0,64,58,121,88,230,233,0,225,24,1,109,168,228,218,
-3,228,46,1,128,13,160,38,225,199,6,133,94,1,49,56,65,173,97,88,
-81,254,227,99,3,160,234,96,118,106,102,0,51,82,18,0,52,217,223,160,
-115,103,108,96,106,171,118,226,53,13,160,76,211,25,64,12,1,53,50,64,
-79,129,47,128,203,132,196,165,30,229,37,1,232,229,2,225,162,5,96,81,
-189,188,227,82,6,128,135,155,77,2,95,49,54,94,238,224,219,1,160,88,
-0,85,132,95,2,95,49,56,131,239,130,148,84,82,160,25,96,27,0,56,
-160,239,132,197,0,56,229,147,2,99,155,76,23,131,155,79,237,0,56,112,
-183,64,22,200,227,237,145,13,225,35,9,161,32,193,240,205,142,101,133,237,
-226,2,228,107,0,98,54,164,144,235,173,11,237,140,26,225,191,0,232,0,
-5,198,164,86,186,228,31,9,96,167,230,159,4,225,106,1,0,80,239,15,
-11,224,99,6,192,151,237,235,1,224,247,12,162,16,224,251,10,130,106,237,
-146,0,224,163,49,0,75,224,35,4,133,76,64,0,142,46,230,79,5,224,
-198,8,225,41,0,225,35,53,229,158,5,226,23,0,232,111,5,74,30,0,
-54,90,192,160,38,66,69,224,32,0,230,161,2,236,198,20,226,7,51,131,
-24,0,48,66,254,229,173,2,139,82,235,74,8,31,105,110,102,101,114,32,
-114,101,99,117,114,115,105,118,101,32,112,97,116,116,101,114,110,32,115,121,
-110,111,110,121,109,32,74,15,0,115,202,6,225,91,12,173,96,128,215,225,
-11,4,237,115,5,247,195,9,226,114,13,237,132,2,87,38,0,66,96,6,
-224,92,9,205,44,229,201,5,224,100,12,225,184,9,229,230,11,141,25,241,
-159,4,236,189,21,198,20,224,30,5,229,166,20,96,147,232,148,10,234,151,
-4,229,29,8,229,19,10,64,0,162,125,197,243,209,251,96,62,101,23,160,
-10,98,228,195,161,5,52,51,56,32,95,53,128,222,230,69,9,230,89,12,
-160,182,128,0,69,44,0,54,172,151,136,77,224,170,6,242,16,1,235,182,
-8,174,52,95,184,196,236,136,38,225,10,2,252,115,5,0,95,77,4,64,
-50,102,54,229,231,0,96,204,224,93,5,225,150,9,239,50,5,0,52,134,
-52,225,91,12,1,52,49,230,218,0,235,236,3,230,77,1,64,244,141,214,
-236,235,2,89,238,70,100,103,108,0,50,98,131,107,14,64,57,2,53,54,
-57,96,133,64,35,170,70,225,130,0,0,50,64,166,1,95,56,225,130,0,
-1,52,48,181,117,64,11,64,41,246,9,0,64,118,174,27,225,69,2,0,
-54,82,63,0,75,225,88,9,0,54,149,212,166,243,239,156,0,226,188,7,
-244,203,4,129,50,230,244,6,0,53,64,69,165,95,225,45,5,2,95,55,
-49,114,179,232,84,1,64,162,0,51,175,29,129,147,130,254,130,213,65,6,
-96,34,139,217,0,67,129,219,64,195,128,22,186,105,0,49,90,203,0,67,
-218,197,1,52,49,71,154,154,197,79,62,65,183,64,44,139,85,236,0,18,
-166,112,229,97,1,222,64,199,109,229,80,8,96,54,224,25,12,98,111,229,
-132,13,230,33,1,229,132,4,96,22,91,45,129,230,128,117,128,146,130,147,
-96,9,2,95,49,56,67,200,128,0,224,68,8,162,229,0,75,238,167,5,
-224,43,13,96,187,2,85,32,83,192,157,96,169,64,1,253,213,1,161,15,
-68,252,211,112,226,13,7,137,226,64,21,255,233,5,169,168,162,63,224,27,
-3,101,119,224,156,6,64,0,128,134,224,240,1,193,116,225,56,1,128,45,
-192,153,225,61,5,224,27,1,254,158,21,195,127,224,98,0,249,238,1,224,
-13,3,228,32,0,222,2,230,62,8,254,30,2,105,145,160,64,238,20,12,
-224,122,3,196,45,179,160,192,118,224,22,3,232,155,1,224,83,0,2,95,
-49,51,74,98,67,104,67,157,218,4,66,186,65,89,253,251,0,234,175,3,
-193,36,128,94,0,53,172,79,238,116,3,128,51,1,49,56,133,29,224,112,
-1,2,95,49,50,99,53,224,66,6,0,54,164,24,224,66,4,128,129,227,
-240,0,254,130,8,0,64,253,141,7,225,159,17,130,248,226,7,0,225,110,
-6,129,89,161,137,226,80,3,225,69,2,146,30,245,38,5,225,162,2,224,
-40,1,225,168,16,226,37,4,164,141,225,176,4,225,148,1,182,100,224,29,
-16,199,88,161,70,129,73,193,97,2,51,54,53,145,35,97,215,225,183,1,
-225,180,40,226,2,20,226,94,2,161,209,224,139,4,216,190,192,33,138,204,
-251,176,18,184,203,176,44,161,139,155,56,193,190,224,80,0,80,229,240,227,
-6,130,202,0,56,70,175,64,140,194,59,103,167,97,63,67,207,136,111,99,
-209,115,82,224,0,0,226,120,38,222,81,226,43,7,192,75,192,19,175,231,
-248,203,0,128,249,234,7,8,232,87,5,236,209,2,237,219,15,245,28,11,
-2,63,63,63,139,10,65,191,64,198,160,70,0,67,226,136,11,160,0,0,
-58,159,254,242,189,24,128,135,174,38,0,67,120,128,162,227,64,144,101,69,
-224,99,6,226,26,6,226,13,1,152,161,128,230,97,153,0,66,161,89,96,
-215,93,248,96,33,71,156,1,75,51,201,83,64,44,168,213,168,177,243,11,
-2,139,204,107,198,102,79,226,21,3,64,224,175,85,82,207,96,179,77,3,
-0,55,71,234,160,85,178,13,0,54,91,224,116,105,241,87,6,163,71,98,
-142,96,160,0,85,64,34,96,153,128,158,192,38,99,81,64,138,100,202,244,
-169,16,64,63,99,187,160,230,64,163,143,226,66,162,129,90,70,69,225,116,
-1,226,251,0,163,49,166,152,164,1,96,124,238,34,5,96,35,212,171,65,
-40,131,18,130,204,160,14,192,58,68,215,165,23,232,24,1,103,180,113,254,
-197,26,129,252,192,30,242,38,4,128,38,160,26,192,181,246,120,8,228,125,
-3,130,69,192,206,192,75,128,85,181,41,203,80,241,194,7,203,103,97,142,
-0,50,66,159,64,9,0,54,162,90,0,51,65,116,106,176,98,95,2,49,
-52,52,98,80,236,47,0,225,134,1,192,80,100,127,192,84,195,215,224,241,
-2,224,228,42,224,222,0,224,13,1,163,44,224,18,1,96,92,128,7,224,
-225,5,224,6,0,160,230,224,158,3,101,247,64,242,224,175,4,186,90,4,
-55,50,53,32,64,65,243,225,237,0,0,49,98,31,96,180,102,109,230,82,
-10,224,28,1,66,140,101,107,160,18,224,41,5,224,29,0,98,173,0,54,
-171,26,66,217,6,95,49,50,56,49,32,95,108,93,101,83,64,32,250,102,
-0,228,81,9,154,190,129,6,228,216,9,1,53,56,64,36,160,18,1,67,
-39,230,47,6,161,153,226,166,5,233,111,2,193,182,233,186,1,213,65,128,
-31,250,35,5,193,135,160,19,230,120,1,198,117,228,0,0,234,124,3,236,
-162,4,94,44,233,136,5,64,196,237,193,2,160,189,192,222,128,42,132,187,
-230,50,3,225,201,0,225,50,11,0,54,141,112,192,65,112,14,167,228,110,
-129,155,238,96,0,65,123,141,148,100,182,143,44,172,186,0,56,69,33,172,
-186,96,40,0,51,129,197,70,44,1,75,32,76,28,224,1,13,138,180,192,
-0,64,85,131,64,64,66,141,58,132,165,138,73,0,53,138,65,0,56,104,
-45,133,8,253,52,3,104,75,64,5,1,50,56,252,242,2,5,101,120,112,
-111,114,116,102,189,64,85,141,121,82,45,251,5,11,2,51,52,51,224,58,
-2,6,116,121,81,73,100,101,110,128,60,1,64,85,117,51,160,70,237,147,
-11,0,50,111,72,64,214,3,83,32,95,51,64,105,64,19,181,30,67,207,
-71,14,197,208,74,35,110,167,2,95,52,48,133,57,0,49,160,16,128,97,
-69,188,122,19,72,80,157,22,70,30,157,141,226,222,12,155,234,224,29,15,
-245,177,24,3,95,49,56,48,176,70,224,45,9,226,154,6,0,56,128,66,
-132,27,240,109,3,240,193,3,1,49,56,80,27,97,186,232,126,3,224,92,
-25,0,54,160,182,224,41,26,132,54,97,28,134,229,126,51,232,16,3,195,
-172,224,83,0,224,241,1,241,254,4,104,206,231,176,0,224,176,15,2,49,
-53,51,129,172,227,156,11,186,6,229,150,1,197,218,229,220,5,160,2,192,
-24,224,43,2,192,5,227,168,11,1,53,52,236,153,1,192,112,98,106,231,
-200,6,225,250,4,192,94,135,133,161,17,0,64,246,145,0,113,192,245,46,
-1,64,235,88,217,227,0,1,85,39,7,97,32,99,108,97,115,115,32,99,
-4,1,95,56,171,51,228,136,5,224,147,6,225,14,2,224,25,10,227,243,
-0,224,48,7,228,12,1,236,200,5,224,2,4,224,237,3,251,8,6,64,
-219,224,5,0,212,18,73,37,212,19,0,85,98,26,241,13,14,133,144,240,
-101,4,213,91,235,51,1,64,79,148,225,64,125,64,97,69,3,0,54,74,
-21,168,24,192,192,224,76,4,177,209,224,76,8,224,68,21,225,101,4,100,
-123,246,226,15,2,49,50,52,68,90,225,184,1,26,115,117,112,101,114,102,
-108,111,117,115,32,105,110,115,116,97,110,99,101,32,98,105,110,100,105,110,
-103,246,210,3,64,0,64,133,129,13,161,89,129,151,219,144,225,112,0,225,
-175,0,187,184,128,1,109,23,240,93,5,225,208,1,83,81,163,33,227,22,
-6,159,192,224,69,1,224,95,0,195,25,224,9,0,0,67,235,153,4,0,
-64,251,20,0,224,105,5,224,115,3,226,152,8,232,166,6,224,2,6,160,
-138,128,79,192,160,238,240,0,225,6,30,128,68,128,11,139,203,246,181,7,
-232,249,0,140,29,239,99,1,128,28,225,29,4,225,32,1,224,82,0,160,
-60,0,48,134,78,225,100,5,2,52,57,53,244,182,0,96,26,227,60,4,
-65,133,77,178,101,239,140,45,0,49,236,219,0,160,216,165,45,220,217,100,
-8,70,109,66,159,224,57,2,71,238,0,52,108,134,1,55,54,160,135,224,
-138,0,128,48,192,13,254,220,2,177,44,132,217,234,75,0,224,166,1,64,
-191,65,9,192,205,0,54,151,37,192,14,161,247,129,3,71,219,66,232,128,
-26,1,56,48,197,160,237,150,2,74,196,225,88,1,64,40,227,91,7,133,
-102,0,89,224,114,0,169,255,193,106,225,229,2,209,209,130,13,249,167,6,
-192,48,233,247,2,191,159,129,193,240,94,0,160,73,0,66,75,64,230,10,
-2,204,173,104,44,76,73,86,94,130,181,224,179,8,0,89,224,166,0,192,
-160,224,154,14,134,35,192,148,160,140,64,234,130,98,128,115,96,166,96,139,
-224,135,2,160,174,0,67,128,24,224,0,2,193,159,160,0,250,92,3,253,
-69,5,106,121,0,54,128,129,196,150,0,53,97,43,79,148,252,169,5,71,
-176,0,54,239,58,0,130,85,162,125,64,68,183,155,128,14,0,52,71,121,
-194,146,97,46,80,161,96,136,0,35,139,240,64,50,248,175,0,64,129,74,
-122,3,54,32,95,57,73,68,64,28,0,51,137,63,184,82,1,49,48,127,
-209,72,18,64,21,138,170,229,59,1,69,48,0,34,128,26,170,130,1,32,
-83,65,115,179,196,161,87,245,225,10,128,20,64,200,224,28,5,236,148,1,
-236,62,4,96,22,188,182,233,208,18,68,41,65,15,104,217,230,87,6,96,
-67,2,95,53,49,69,128,0,54,75,4,224,197,1,69,237,165,234,98,12,
-229,2,2,232,209,3,69,89,199,209,1,56,53,247,160,0,128,54,224,179,
-9,160,231,224,79,18,175,48,128,86,202,107,192,209,234,111,3,96,65,65,
-156,64,247,105,158,251,122,5,224,103,64,192,99,135,126,128,36,234,6,13,
-65,242,140,31,227,216,2,195,229,224,126,4,224,112,1,224,31,0,224,117,
-6,129,80,3,56,32,95,51,129,232,96,92,204,53,98,33,225,240,2,0,
-83,101,30,133,105,1,53,52,255,65,0,67,81,106,112,0,75,239,163,0,
-136,194,99,179,0,83,142,93,64,77,116,220,160,7,132,95,0,83,173,51,
-224,77,2,1,95,53,153,12,192,217,224,56,3,225,17,5,128,19,135,125,
-100,41,1,95,54,199,199,160,0,232,134,15,99,239,226,132,1,9,109,97,
-108,102,111,114,109,101,100,32,72,131,11,100,97,108,111,110,101,32,100,101,
-114,105,118,232,136,2,128,127,225,107,6,238,171,12,0,48,224,132,1,161,
-67,166,230,227,66,10,131,133,170,17,139,135,138,247,162,85,64,26,227,197,
-11,226,243,13,78,193,201,177,225,40,3,165,204,64,46,104,165,140,102,226,
-200,6,224,60,15,224,56,3,226,156,1,224,85,0,225,96,17,235,168,13,
-12,100,97,116,97,47,110,101,119,116,121,112,101,32,235,173,5,64,0,225,
-89,1,171,152,160,187,230,20,3,233,0,0,96,33,232,143,1,224,173,0,
-99,4,0,53,102,172,0,57,224,177,0,163,162,151,55,151,249,96,0,0,
-58,132,81,227,78,0,224,123,4,97,148,224,96,0,237,40,0,166,216,198,
-222,192,11,192,82,224,20,0,224,64,0,224,55,20,83,234,224,56,6,130,
-20,225,15,2,128,22,180,144,224,40,5,224,94,1,233,130,0,0,66,192,
-30,65,179,0,51,163,100,5,49,53,55,32,95,51,101,61,4,66,32,95,
-55,57,117,23,230,242,3,0,79,225,170,2,4,68,97,116,97,46,224,4,
-0,65,167,224,29,8,7,84,121,112,101,97,98,108,101,224,8,0,224,37,
-7,11,71,72,67,46,71,101,110,101,114,105,99,115,192,8,224,35,7,29,
-76,97,110,103,117,97,103,101,46,72,97,115,107,101,108,108,46,84,72,46,
-83,121,110,116,97,120,46,76,105,102,112,211,224,46,3,17,84,101,120,116,
-46,82,101,97,100,46,73,110,116,101,114,110,97,108,96,13,224,38,12,3,
-83,104,111,119,96,4,64,29,232,3,4,228,56,0,96,5,2,95,49,56,
-72,216,234,224,7,224,17,1,233,3,0,224,48,1,82,86,141,15,69,138,
-153,72,229,67,0,224,93,14,225,157,3,65,160,226,99,3,224,115,58,160,
-36,107,51,224,106,7,105,128,224,108,7,160,20,224,110,36,195,79,71,238,
-64,213,67,60,145,239,200,32,239,219,11,96,79,0,50,98,111,107,255,230,
-217,6,108,71,153,62,224,35,1,129,176,64,95,145,50,196,5,101,72,224,
-183,8,225,65,5,224,27,25,224,2,4,195,156,224,25,7,128,22,197,126,
-205,108,227,179,4,195,158,163,151,224,14,2,225,4,4,193,6,192,141,128,
-8,64,20,224,118,2,240,47,0,1,49,54,108,50,66,57,131,172,120,204,
-99,204,230,253,3,91,77,241,27,6,227,1,1,2,66,97,100,230,194,8,
-239,169,4,224,150,1,225,15,9,192,2,224,195,6,128,49,224,194,5,224,
-5,27,228,223,1,234,157,6,164,163,224,67,23,224,137,6,129,35,0,56,
-116,133,236,6,3,198,41,225,74,2,239,24,30,239,36,4,224,244,5,225,
-156,98,96,0,192,133,224,141,0,249,94,7,227,221,7,226,232,0,167,26,
-0,95,175,186,207,37,250,53,0,64,0,230,149,6,102,22,239,225,1,224,
-119,4,82,152,242,149,0,96,8,94,55,123,205,186,81,170,212,239,210,1,
-160,68,193,135,224,150,6,103,228,92,72,160,110,227,73,2,248,109,2,102,
-147,0,48,101,48,160,228,0,85,240,53,0,226,160,0,112,118,224,44,4,
-192,227,224,95,2,100,195,165,36,225,67,3,162,34,64,2,244,193,21,233,
-184,2,160,166,228,215,7,194,201,135,173,180,176,64,182,225,247,4,244,175,
-49,193,140,239,186,0,240,168,1,224,10,17,212,161,225,229,3,230,88,10,
-193,3,227,227,6,192,67,236,71,21,129,179,236,72,5,192,55,128,172,224,
-95,0,225,39,1,224,21,9,232,229,0,228,136,12,224,25,17,132,54,224,
-144,3,192,1,129,212,243,92,10,128,30,229,201,11,0,83,243,231,2,227,
-87,3,243,29,10,225,244,2,236,222,0,96,17,162,85,68,20,2,32,95,
-53,100,31,0,56,224,5,1,224,88,2,151,249,197,6,164,85,254,205,9,
-1,85,32,117,68,129,134,252,132,2,112,92,111,140,112,113,0,48,66,182,
-156,129,0,49,242,78,2,128,0,160,60,118,84,64,46,0,51,217,182,250,
-62,6,14,109,107,77,101,116,104,111,100,58,32,97,114,105,116,121,228,143,
-2,225,121,12,128,2,244,142,4,225,91,0,163,46,96,2,244,5,2,224,
-74,40,224,1,1,3,95,49,50,49,100,114,228,99,3,96,55,226,199,0,
-229,235,4,225,103,0,230,69,9,2,95,49,52,81,41,97,57,92,78,225,
-1,1,4,99,111,101,114,99,106,189,224,134,7,68,66,226,222,2,129,145,
-224,33,2,64,31,137,16,224,17,3,128,246,192,15,129,129,128,63,225,134,
-1,130,47,101,161,174,182,240,87,7,225,194,0,105,127,160,11,148,103,98,
-226,244,76,13,96,64,128,69,191,33,166,0,0,83,147,146,98,121,238,56,
-3,130,115,162,114,64,100,67,191,194,221,224,42,5,129,9,192,35,128,208,
-97,14,225,117,2,224,47,9,224,48,2,110,94,96,4,78,77,66,203,70,
-76,230,62,4,64,0,88,40,1,50,32,78,114,128,224,64,15,114,66,206,
-88,130,208,97,23,80,122,226,102,0,129,35,238,248,4,194,97,170,92,129,
-25,176,115,229,161,3,129,200,193,189,144,199,192,141,0,54,244,22,4,238,
-227,5,161,100,96,57,102,56,64,253,162,155,69,135,132,226,197,111,64,121,
-224,19,2,96,18,64,14,3,80,32,64,83,64,4,193,81,233,38,6,128,
-39,6,64,66,32,82,32,64,75,98,77,148,223,224,51,4,239,189,0,225,
-107,2,224,47,0,128,0,128,11,160,17,228,6,6,175,146,2,68,101,114,
-163,8,75,122,0,54,252,173,1,227,116,1,226,58,6,0,80,227,158,0,
-66,105,137,144,64,59,148,224,190,190,149,62,0,49,99,135,2,56,52,51,
-98,135,167,159,65,140,4,56,48,32,95,55,65,62,64,30,65,213,1,57,
-56,242,16,0,130,71,128,240,2,95,55,57,66,255,64,94,149,37,224,154,
-4,224,152,6,2,85,32,75,84,113,195,143,64,52,0,51,149,204,85,157,
-1,49,52,77,57,64,86,64,182,227,200,0,64,37,149,79,66,164,0,35,
-70,1,82,191,64,22,211,115,105,12,105,252,211,221,0,52,64,199,160,19,
-64,41,255,118,0,224,41,8,0,50,85,36,224,41,1,64,7,243,106,1,
-134,80,128,4,70,74,157,195,141,104,228,98,2,135,24,224,11,2,192,8,
-225,123,0,73,159,159,130,1,95,54,68,38,239,244,19,64,104,0,54,96,
-224,64,111,5,10,65,32,79,32,80,239,233,7,6,66,111,117,110,100,101,
-100,192,7,66,32,64,151,64,84,224,45,10,3,69,110,117,109,96,4,160,
-39,114,52,224,39,10,240,93,4,64,39,65,218,224,79,11,3,113,46,69,
-113,192,35,65,11,224,35,10,6,70,117,110,99,116,111,114,192,7,192,45,
-224,161,14,4,73,120,46,73,120,224,35,22,2,79,114,100,64,3,160,37,
-0,52,65,43,224,37,10,241,3,12,64,47,66,179,224,47,5,241,13,15,
-224,131,13,241,23,26,64,102,225,90,9,0,84,241,33,17,64,48,67,11,
-224,48,10,241,43,4,64,39,67,140,230,140,5,66,33,132,15,132,154,100,
-211,237,190,3,128,11,0,83,101,175,0,55,137,6,144,53,162,162,130,225,
-226,177,0,234,191,9,133,35,238,122,11,176,62,168,51,246,62,0,224,12,
-0,165,94,111,200,224,13,1,234,247,4,224,20,7,224,21,7,234,139,14,
-236,163,0,192,28,224,29,4,224,83,1,170,88,253,215,14,224,49,7,224,
-2,3,232,255,2,234,40,2,224,2,8,166,192,224,83,26,233,80,6,224,
-81,11,201,157,221,42,226,13,1,7,115,104,111,119,115,80,114,101,98,154,
-224,109,21,221,75,192,104,224,1,1,138,228,224,25,11,140,154,224,22,17,
-224,104,11,178,187,237,143,2,224,202,4,240,41,7,106,49,130,33,82,86,
-97,15,137,3,226,207,4,224,210,12,128,2,192,34,224,208,2,235,237,1,
-208,71,64,22,71,105,103,124,67,49,235,127,2,224,220,5,224,224,4,224,
-28,22,224,243,3,128,28,245,227,1,96,2,240,240,1,224,67,14,224,65,
-8,241,2,0,224,8,13,64,44,160,218,97,67,130,29,2,56,48,52,65,
-53,226,23,5,4,80,97,114,101,110,194,23,192,100,128,70,140,252,128,52,
-2,79,32,35,75,104,161,109,161,31,0,50,106,196,71,204,228,18,3,162,
-155,96,51,70,38,193,161,169,47,169,71,253,244,0,225,105,4,223,204,2,
-85,32,35,152,207,224,150,1,224,2,0,241,241,4,128,239,64,71,192,235,
-64,8,236,37,4,161,252,225,238,2,193,70,128,75,132,118,128,137,235,191,
-1,128,146,3,79,32,35,49,75,219,226,101,0,128,116,64,50,96,223,64,
-35,224,223,1,96,215,163,64,128,13,111,55,228,215,1,224,111,27,65,83,
-192,82,1,85,32,229,108,0,64,12,96,141,0,53,225,133,1,65,159,108,
-122,139,118,0,54,105,109,192,44,138,194,127,25,91,199,96,59,0,48,236,
-140,4,96,10,64,4,161,177,104,219,3,64,95,55,49,96,70,2,66,32,
-95,105,77,192,192,164,97,64,127,226,67,7,2,83,116,114,242,244,1,194,
-27,164,216,224,59,2,226,127,12,228,151,3,226,86,6,224,51,2,65,106,
-0,54,224,188,0,3,95,49,50,56,70,243,137,140,173,63,174,1,235,204,
-8,175,76,70,253,65,3,0,49,226,145,2,128,75,105,139,71,8,138,220,
-68,233,68,114,0,54,82,89,1,95,52,95,239,177,236,64,132,193,65,0,
-67,161,183,64,19,225,176,1,69,33,137,143,64,79,138,205,199,82,225,250,
-1,66,160,231,78,7,234,18,0,130,55,64,128,0,56,74,232,134,117,65,
-195,129,219,227,7,0,231,78,15,96,110,237,49,16,64,128,166,116,128,17,
-101,92,230,54,14,3,114,101,97,100,225,157,0,128,46,64,61,239,188,2,
-128,61,66,18,238,199,0,239,138,10,2,101,114,114,137,189,130,142,97,187,
-130,32,224,107,9,0,32,124,78,3,101,102,105,110,138,146,64,0,226,167,
-0,128,4,225,222,5,136,195,140,3,2,75,32,75,83,237,224,249,0,204,
-195,64,33,139,255,0,75,133,85,109,124,168,218,225,140,18,173,244,221,64,
-244,86,8,0,51,142,29,65,27,132,125,232,43,8,228,185,3,135,194,232,
-126,0,240,115,2,232,6,0,163,44,161,83,197,39,98,222,65,57,240,30,
-2,224,92,4,181,58,167,42,225,205,14,6,116,121,112,101,82,101,112,161,
-84,192,120,1,52,57,67,22,79,112,228,27,1,160,87,160,128,96,83,241,
-101,15,8,109,107,84,121,67,111,110,65,112,224,87,1,137,178,224,55,29,
-128,52,145,67,227,210,0,132,58,131,70,224,30,26,6,95,57,56,51,32,
-95,57,83,164,242,81,1,226,45,0,130,44,1,56,55,231,200,1,66,12,
-141,245,128,228,195,159,234,242,100,64,43,226,47,10,225,209,7,227,174,2,
-227,196,2,225,231,21,5,99,111,109,112,97,114,178,249,70,34,0,55,76,
-137,129,149,160,153,235,107,14,235,117,4,249,62,2,96,234,235,15,0,128,
-5,245,93,0,167,239,64,22,201,165,64,49,100,108,242,252,3,240,253,5,
-0,83,184,122,247,144,4,134,121,229,212,0,176,58,228,95,25,1,60,62,
-234,215,1,160,140,96,48,2,53,54,57,224,78,43,225,64,4,64,0,199,
-75,224,53,20,1,69,81,192,48,200,104,225,173,0,225,26,1,97,17,227,
-110,6,224,84,19,1,76,84,233,153,4,224,79,8,75,13,160,76,225,109,
-3,224,82,19,0,71,192,82,161,152,180,73,232,47,22,160,37,224,29,5,
-232,168,2,227,111,0,229,157,8,231,98,5,145,68,1,75,52,96,195,230,
-224,9,229,187,13,66,191,227,174,208,1,61,61,227,169,0,64,38,104,84,
-99,182,106,71,230,168,2,0,67,227,190,3,171,218,235,75,0,227,120,0,
-237,25,2,64,46,237,38,7,227,133,82,1,38,38,227,133,68,193,23,64,
-0,227,128,28,2,84,114,117,227,179,0,226,205,22,226,198,15,232,227,5,
-227,90,0,227,176,34,3,70,97,108,115,192,133,128,45,227,25,30,83,3,
-116,197,0,66,87,178,87,180,162,183,97,254,78,32,2,95,49,53,85,2,
-111,132,98,8,193,252,140,112,96,10,235,13,1,164,38,100,35,130,114,231,
-9,5,244,187,1,99,107,92,22,0,50,199,81,64,50,6,50,54,54,32,
-95,50,55,126,11,1,53,55,149,200,4,95,51,50,52,32,184,0,72,252,
-0,48,181,215,64,4,128,0,64,200,148,112,152,118,234,200,27,64,137,227,
-117,11,227,108,5,129,154,65,113,99,94,164,29,161,183,64,118,0,54,213,
-158,2,49,56,51,72,10,128,54,253,166,8,11,87,97,114,110,105,110,103,
-58,32,99,97,110,138,106,4,114,105,118,101,32,97,178,227,127,0,129,15,
-184,160,224,66,8,4,32,121,101,116,44,128,49,99,45,225,91,0,225,218,
-2,64,145,204,78,130,109,64,25,64,9,0,49,129,194,64,32,204,31,12,
-66,32,73,79,46,112,101,114,102,111,114,109,73,203,165,65,182,2,50,32,
-95,122,88,7,95,51,57,57,32,95,52,55,172,207,0,49,160,22,96,68,
-0,51,229,27,57,115,97,129,174,229,20,0,224,31,3,132,216,4,64,95,
-54,56,53,96,202,160,65,229,55,3,239,147,5,225,207,12,232,114,12,132,
-205,224,13,2,211,147,164,168,224,2,2,229,124,7,224,130,1,224,2,6,
-243,42,0,128,110,243,40,2,243,110,3,192,218,235,140,7,241,71,0,197,
-212,129,192,188,247,128,189,66,178,164,214,249,166,4,172,40,65,64,160,234,
-199,247,96,149,163,155,164,131,102,43,205,11,0,54,224,211,1,3,95,53,
-55,48,163,122,239,252,1,129,59,160,168,128,165,224,5,0,230,100,26,1,
-116,111,215,186,96,194,230,104,4,224,207,29,97,90,230,110,6,225,110,1,
-224,204,10,132,242,196,141,224,216,12,229,110,14,96,57,238,89,65,128,251,
-12,58,32,111,117,116,32,111,102,32,114,97,110,103,230,39,0,164,63,97,
-231,231,2,2,170,223,194,34,225,86,16,6,101,110,117,109,70,114,111,225,
-88,1,161,14,235,37,0,233,246,3,198,60,135,21,237,25,16,192,83,1,
-84,111,160,164,224,255,3,242,147,1,237,173,1,192,195,227,5,13,224,215,
-3,131,67,224,203,22,1,84,104,244,14,1,224,83,14,236,7,0,130,61,
-224,17,7,247,86,0,196,14,195,100,236,31,20,96,22,193,55,164,87,224,
-110,0,194,122,162,240,224,78,0,98,195,224,126,1,241,98,0,128,233,225,
-98,15,0,62,200,90,129,90,106,119,231,53,0,224,17,7,192,151,160,183,
-102,193,163,172,192,176,224,27,9,124,165,0,90,80,33,0,56,243,146,0,
-225,199,8,224,144,1,1,120,49,225,235,15,224,35,2,0,50,232,86,3,
-193,53,64,7,4,67,32,95,53,56,68,87,224,114,6,226,92,19,2,104,
-101,110,194,96,224,106,9,64,9,228,47,1,232,183,22,221,87,132,24,137,
-224,71,158,65,123,64,31,143,106,3,85,32,75,51,113,48,0,48,170,114,
-202,120,64,34,140,20,129,72,235,222,57,198,192,226,76,0,230,158,32,226,
-189,3,230,172,1,224,16,0,224,13,13,128,173,224,93,2,230,170,13,224,
-48,3,128,2,198,166,128,51,198,165,230,162,2,193,10,130,215,128,92,230,
-147,0,94,76,230,147,2,224,81,1,0,82,241,198,7,160,23,224,52,20,
-4,66,32,82,32,64,130,69,226,95,3,96,5,226,31,9,2,109,97,120,
-126,52,226,63,15,2,109,105,110,224,31,2,226,63,6,119,19,138,225,97,
-139,244,78,3,128,243,64,20,106,234,129,1,1,95,50,64,11,234,111,9,
-230,91,4,128,104,226,149,0,0,50,174,49,133,191,0,90,116,230,165,202,
-2,52,48,56,211,67,224,152,7,233,233,8,0,67,234,35,9,167,0,1,
-53,53,64,159,128,171,228,47,7,96,128,203,206,129,100,162,205,120,137,192,
-138,231,90,2,232,162,0,226,154,3,64,205,131,113,194,89,2,95,51,54,
-67,68,0,50,201,128,194,57,3,95,49,55,54,199,80,197,26,0,56,97,
-64,161,79,204,36,68,28,160,22,106,185,0,55,65,15,128,40,3,67,39,
-32,89,128,146,0,80,142,60,96,92,233,23,2,239,54,14,96,2,224,37,
-2,0,66,64,70,194,188,229,182,4,154,228,224,50,3,128,47,128,121,224,
-206,0,192,52,128,46,195,3,142,243,195,108,96,190,1,52,53,95,39,128,
-10,100,75,130,45,7,49,52,52,48,32,95,55,55,141,19,64,14,111,70,
-230,105,0,153,42,1,49,52,244,42,0,193,53,224,97,15,225,34,2,97,
-237,193,229,65,99,133,105,64,9,226,137,2,225,101,0,160,13,228,9,1,
-66,24,141,30,0,80,129,145,0,95,139,76,185,190,160,14,160,20,96,45,
-0,54,96,45,0,83,96,151,109,138,1,52,55,194,189,99,72,193,47,108,
-89,99,190,115,238,224,155,1,224,250,1,64,78,140,146,0,83,149,160,233,
-226,1,3,95,49,54,54,141,233,0,57,64,241,128,43,140,157,0,85,229,
-49,6,246,250,7,129,195,241,22,7,161,202,195,199,96,157,246,187,3,161,
-132,1,56,49,190,107,64,111,0,51,166,72,241,133,5,74,19,0,50,160,
-56,1,95,49,77,61,69,33,238,225,1,241,179,6,64,122,128,21,224,180,
-11,0,53,89,226,128,181,165,90,193,244,129,95,3,64,95,55,56,207,75,
-91,185,194,235,224,7,17,128,55,128,43,225,79,1,199,145,0,64,132,229,
-225,29,4,98,217,104,31,194,33,192,0,163,169,228,161,19,228,159,6,68,
-156,7,97,32,99,108,97,115,115,32,100,157,1,95,56,162,158,80,11,79,
-178,100,171,0,52,224,79,0,82,11,177,74,97,89,99,3,192,237,225,182,
-0,243,7,7,98,126,228,197,1,210,138,150,79,64,5,64,4,78,212,192,
-3,226,22,1,111,70,69,12,1,95,49,129,90,228,238,1,66,117,80,89,
-160,233,66,17,0,85,223,9,66,56,224,26,0,227,68,6,224,92,0,229,
-13,5,64,162,161,123,1,49,56,106,23,79,65,0,49,97,2,97,10,66,
-228,162,110,64,0,66,114,232,187,3,2,80,32,35,188,237,97,5,2,32,
-64,64,64,139,64,37,200,193,98,91,5,32,67,32,61,61,32,190,241,224,
-150,2,96,246,67,44,129,69,160,69,168,45,224,9,0,66,242,156,163,128,
-90,136,249,128,128,96,211,227,103,16,228,167,0,229,118,0,235,29,3,128,
-2,229,134,4,192,123,239,74,9,224,55,3,224,27,0,134,55,128,104,224,
-143,1,129,8,224,46,16,192,28,233,45,5,224,107,9,192,82,240,78,4,
-160,16,246,8,6,230,7,1,98,88,67,236,195,254,224,71,1,3,95,49,
-50,48,97,22,224,101,1,237,114,3,131,3,224,132,0,104,225,224,161,0,
-147,74,228,141,3,136,79,69,34,224,23,6,250,78,1,224,121,0,128,70,
-239,135,1,224,187,5,98,148,227,57,1,99,86,128,228,132,182,224,201,1,
-128,197,136,50,251,215,8,96,0,192,190,231,40,4,243,43,8,162,20,226,
-112,3,65,2,232,38,4,192,70,160,32,224,29,5,224,28,3,224,25,4,
-160,43,227,192,0,98,187,67,32,3,95,49,48,53,247,165,2,1,53,51,
-224,187,3,224,15,6,224,43,4,131,65,228,21,4,99,99,224,67,7,193,
-29,229,52,4,64,125,67,196,231,189,7,64,23,220,8,1,49,49,107,58,
-238,240,0,3,95,49,52,49,71,11,70,53,160,84,1,51,54,82,194,1,
-51,56,164,248,66,96,134,162,230,145,7,160,47,245,91,1,198,15,64,195,
-100,165,224,102,19,135,79,224,96,10,245,160,0,232,129,4,162,159,180,124,
-232,24,2,3,64,64,64,89,233,146,0,201,143,163,123,162,25,228,145,0,
-231,143,1,224,170,1,137,89,225,227,2,233,137,1,227,133,2,168,212,0,
-67,197,125,192,146,231,181,7,0,58,132,189,101,12,78,105,130,190,64,21,
-138,237,162,67,0,53,128,250,108,110,1,56,48,104,140,79,246,2,95,51,
-49,138,206,192,142,2,95,56,57,107,216,167,149,64,71,137,28,5,95,56,
-49,48,32,75,168,122,224,1,5,180,155,64,0,224,28,9,128,1,228,115,
-0,224,37,18,224,35,4,224,32,23,64,210,225,170,0,64,165,0,54,160,
-237,130,29,97,111,193,144,64,59,65,69,249,192,2,1,95,51,65,207,138,
-144,128,253,224,25,14,96,91,214,52,224,134,3,224,11,2,192,8,97,169,
-64,47,137,165,2,83,32,73,128,131,164,111,69,202,2,67,32,60,70,167,
-64,40,224,157,1,230,191,1,128,77,247,98,4,242,165,3,100,185,236,159,
-5,227,184,4,98,218,180,67,241,198,2,98,198,2,49,56,49,113,120,241,
-221,6,224,82,46,160,78,193,32,0,51,226,106,2,232,93,1,0,52,130,
-91,198,2,228,117,2,128,64,136,7,140,241,0,50,72,117,112,76,129,122,
-136,30,227,105,11,233,211,3,142,68,185,139,181,24,67,93,227,92,1,64,
-24,224,57,1,64,1,67,136,224,243,0,229,157,1,99,109,227,107,5,224,
-222,0,136,146,133,40,163,163,224,79,1,96,245,232,34,22,128,2,231,156,
-0,232,52,6,110,129,226,243,4,232,14,1,232,39,13,224,83,1,224,89,
-1,232,124,0,161,201,224,23,1,224,61,8,160,62,224,29,7,96,2,238,
-209,9,128,0,129,103,241,185,11,224,16,0,224,192,2,224,42,0,162,59,
-128,0,193,58,96,105,225,65,1,224,81,8,145,133,161,10,65,156,0,54,
-68,226,226,127,3,229,231,2,143,102,199,69,102,68,64,55,3,95,49,56,
-48,153,222,225,212,3,224,236,6,245,143,0,128,105,101,117,145,138,224,41,
-1,166,110,226,61,13,192,7,201,68,162,138,160,57,247,146,12,64,100,0,
-53,74,169,232,106,0,134,91,215,105,241,232,0,224,172,3,234,69,2,233,
-81,0,224,91,33,209,6,160,87,96,69,163,23,0,64,228,239,6,167,17,
-131,124,128,0,224,141,8,224,139,1,130,65,129,124,224,5,18,143,180,235,
-172,6,135,128,135,160,212,137,237,127,7,225,88,4,226,126,6,227,46,3,
-129,31,224,18,3,194,68,225,242,5,224,60,11,243,220,2,226,85,0,128,
-2,194,91,162,93,224,250,1,162,197,160,151,66,105,249,18,6,157,219,0,
-49,237,248,1,249,8,0,185,9,160,131,143,142,225,176,9,232,145,14,225,
-236,9,248,55,4,64,112,96,44,249,195,19,192,104,96,12,230,9,0,225,
-36,3,224,2,6,193,71,224,249,3,225,79,18,245,119,5,225,94,86,130,
-180,225,94,63,228,31,20,96,148,135,29,225,116,8,206,61,224,55,0,228,
-51,57,64,38,225,184,0,228,66,49,228,67,8,224,12,3,128,157,212,156,
-96,119,224,116,3,232,43,5,192,53,193,11,129,118,228,62,6,64,152,2,
-52,57,55,229,171,5,228,152,26,228,118,16,128,66,205,244,224,47,0,72,
-61,96,162,98,51,107,207,73,164,246,238,2,6,114,101,99,83,101,108,69,
-252,138,1,145,181,1,56,55,144,78,242,252,9,0,55,64,182,167,239,144,
-92,128,181,224,37,1,3,95,56,52,53,241,231,2,2,103,101,116,215,75,
-224,74,3,64,63,144,65,224,42,1,6,115,101,116,70,105,101,108,87,123,
-0,58,130,46,224,30,4,13,68,97,116,97,46,82,101,99,111,114,100,115,
-46,83,224,43,5,139,196,224,117,4,224,30,3,139,155,224,74,14,2,72,
-97,115,224,43,3,0,54,234,197,2,65,73,186,20,2,56,48,52,128,31,
-234,229,1,192,29,160,7,64,28,212,120,225,204,18,227,85,10,64,57,202,
-27,107,14,175,121,234,247,7,97,131,97,109,234,248,11,98,115,243,206,2,
-227,72,1,247,11,4,96,152,233,136,19,224,38,1,224,106,5,160,28,195,
-225,164,156,214,83,248,46,6,128,5,137,178,233,64,3,117,226,224,101,3,
-99,245,224,13,0,230,250,4,129,91,2,49,56,57,239,96,8,224,56,11,
-224,90,1,224,112,3,224,248,4,137,249,227,235,2,97,101,193,60,227,243,
-15,232,253,4,165,45,233,105,8,254,172,3,239,84,5,160,56,207,87,234,
-117,1,246,97,22,229,125,15,224,190,3,202,1,160,240,229,30,0,165,43,
-161,252,233,173,0,97,91,224,56,0,194,163,0,50,68,19,101,141,64,142,
-244,121,6,128,184,174,42,181,128,245,125,0,196,106,2,95,49,49,122,83,
-64,15,0,54,113,104,97,21,0,67,133,49,100,115,228,87,3,164,68,246,
-11,3,5,77,101,116,104,111,100,228,135,2,64,89,224,180,1,1,95,54,
-65,31,165,62,240,85,32,250,129,1,131,21,162,129,236,195,9,96,173,67,
-226,174,89,64,73,1,95,55,99,219,224,125,49,101,105,224,126,28,96,0,
-224,87,3,0,83,192,87,198,248,224,92,8,163,172,130,90,231,56,12,96,
-195,249,241,1,96,0,244,21,5,100,118,173,179,65,194,1,54,55,135,166,
-0,48,132,202,133,221,108,152,90,70,0,56,253,37,3,2,100,102,108,101,
-213,64,39,214,7,228,83,16,96,205,161,36,160,160,239,230,9,244,107,0,
-224,28,6,106,234,228,23,6,64,19,246,190,7,207,163,206,194,163,14,163,
-121,69,151,244,171,12,225,157,1,232,118,7,224,23,5,193,187,1,55,57,
-148,78,244,245,10,224,74,66,3,58,49,55,57,134,253,96,191,225,88,8,
-0,54,65,116,228,89,2,167,148,146,148,96,61,210,212,178,210,73,133,114,
-205,1,55,57,242,205,2,64,40,242,181,14,64,168,192,95,224,1,9,239,
-32,0,96,0,224,35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,
-20,11,224,17,8,243,25,4,96,0,65,14,0,54,231,220,2,0,52,119,
-167,169,247,225,131,0,64,57,2,55,54,57,227,152,0,247,69,5,64,15,
-247,70,3,75,214,101,25,160,43,224,70,2,99,158,241,235,2,65,156,64,
-7,96,124,227,75,9,0,54,196,205,130,217,96,7,252,64,8,97,225,144,
-149,128,74,125,102,128,206,247,13,3,1,51,57,194,110,97,17,224,196,5,
-64,108,166,169,224,162,6,232,157,1,199,40,228,239,3,96,82,241,21,6,
-163,149,131,192,171,89,232,62,2,128,123,225,20,18,224,193,16,0,52,90,
-127,192,0,225,220,1,241,148,8,160,223,97,244,131,121,128,189,123,212,64,
-36,229,136,6,224,105,6,65,79,0,52,128,245,192,242,228,134,1,100,221,
-71,21,71,16,129,158,128,66,224,212,5,64,172,132,178,88,43,192,37,66,
-109,202,74,0,89,220,141,230,82,5,159,214,229,45,7,133,250,224,33,18,
-159,241,225,164,2,240,75,5,225,84,0,128,28,136,172,224,184,1,224,49,
-5,230,196,0,97,198,64,201,133,173,224,44,13,224,43,1,234,189,1,203,
-36,133,165,160,248,139,38,64,185,69,25,231,64,5,175,28,233,77,1,65,
-165,128,13,130,27,96,35,160,55,194,132,65,208,64,39,162,93,70,29,225,
-218,2,224,96,34,2,55,57,50,224,103,0,234,73,2,224,57,41,226,231,
-1,128,140,2,64,95,57,173,196,97,1,203,238,149,136,128,160,192,100,66,
-172,199,252,0,80,141,183,68,9,1,55,53,97,167,224,245,23,0,95,119,
-136,160,188,232,64,7,160,193,224,8,10,160,205,224,244,0,142,195,99,46,
-160,5,224,68,8,224,50,19,224,44,18,225,25,1,225,31,4,98,82,134,
-170,185,108,64,0,65,43,214,87,96,30,195,39,97,152,0,64,227,44,2,
-181,216,96,113,227,16,5,179,179,225,14,2,227,89,13,225,242,4,224,33,
-12,147,120,226,250,11,192,25,228,174,0,212,127,248,35,3,70,13,127,205,
-64,210,228,41,0,247,241,5,128,216,229,22,6,193,51,155,146,105,167,1,
-55,55,98,77,227,96,0,239,244,0,255,236,7,66,18,1,53,49,69,222,
-0,54,70,138,233,196,1,2,98,105,110,78,243,228,195,0,237,233,6,75,
-167,0,50,92,113,4,52,57,57,32,95,112,235,224,59,1,2,78,117,109,
-171,167,228,79,7,64,251,253,140,6,229,81,7,146,121,64,161,69,18,99,
-53,130,185,192,212,233,221,3,128,0,226,95,2,225,188,0,129,97,193,154,
-233,17,1,164,26,131,162,162,136,130,133,64,96,206,125,226,133,5,225,168,
-4,0,85,97,168,229,170,0,228,3,8,129,181,230,103,4,224,159,3,224,
-29,8,225,26,34,102,146,96,8,132,51,225,7,4,231,28,12,97,234,195,
-12,98,113,224,96,17,101,16,110,15,226,113,3,224,18,13,232,93,9,66,
-65,0,51,226,65,4,5,102,117,110,100,101,112,98,8,93,83,226,64,8,
-224,176,9,136,63,227,137,0,163,201,230,221,7,192,216,231,247,10,1,55,
-56,99,58,233,78,9,226,78,4,119,33,199,149,231,119,3,227,186,1,227,
-34,2,177,225,225,106,5,224,129,16,111,250,224,129,49,225,27,1,228,68,
-8,212,28,160,122,226,52,3,224,128,1,97,3,156,48,224,111,16,128,0,
-193,101,133,50,228,205,9,132,131,232,72,18,199,251,224,168,8,232,20,4,
-225,35,18,224,161,21,224,88,10,229,69,2,195,81,163,179,227,88,0,229,
-79,5,0,51,68,210,65,17,208,126,1,55,56,242,199,0,160,218,197,201,
-226,103,5,160,104,228,45,4,228,42,12,228,41,4,228,38,8,224,205,1,
-225,175,3,227,134,7,224,189,11,64,170,181,164,0,55,123,141,235,110,9,
-72,83,199,96,224,171,118,1,54,54,175,136,224,161,8,128,187,224,188,22,
-227,95,7,3,95,51,52,54,114,161,71,222,144,104,106,248,130,75,167,3,
-227,97,9,128,156,224,132,7,192,21,241,6,8,96,42,224,62,0,2,95,
-49,52,195,132,128,26,130,30,237,64,8,66,174,182,201,134,150,66,195,113,
-252,230,21,3,192,95,162,253,224,68,1,229,209,6,115,59,236,2,0,224,
-58,4,160,177,224,16,3,143,118,232,3,1,230,119,0,197,144,64,16,192,
-230,206,128,133,247,165,253,238,140,3,129,199,64,121,193,221,6,67,32,95,
-52,54,32,95,122,79,0,35,97,157,96,242,1,52,48,89,22,112,130,147,
-167,2,49,50,53,66,43,229,233,1,11,66,97,100,32,100,101,114,105,118,
-105,110,103,231,248,1,224,168,0,231,26,4,192,163,226,103,4,234,72,6,
-224,171,8,225,196,4,162,197,213,32,97,97,245,19,15,0,67,82,162,225,
-91,0,234,92,0,96,250,239,153,6,143,54,202,67,160,5,64,4,70,147,
-192,3,242,89,9,128,127,226,190,3,0,67,255,44,0,128,238,238,193,5,
-64,44,226,68,7,226,58,0,95,123,149,32,224,103,9,138,33,2,52,32,
-95,121,223,117,134,224,6,0,224,222,3,224,111,3,0,83,161,110,224,211,
-20,226,147,5,65,68,1,55,56,96,9,154,72,133,53,246,126,1,231,9,
-6,224,252,8,64,47,219,203,67,192,148,1,2,80,32,58,128,23,3,10,
-65,32,90,160,1,130,224,64,23,210,144,133,217,169,155,96,2,64,79,0,
-52,75,63,64,8,1,50,55,96,13,135,52,0,51,115,33,64,0,236,145,
-11,74,152,100,208,233,159,27,228,241,3,224,29,8,224,20,0,228,241,5,
-96,92,233,138,1,240,89,5,151,97,129,28,225,90,1,0,52,147,136,228,
-161,7,231,41,16,233,144,0,0,53,162,212,65,135,231,196,3,224,96,9,
-235,245,1,224,96,9,131,62,163,132,232,59,11,160,129,0,54,138,10,130,
-196,224,126,19,96,0,65,190,148,38,129,93,1,80,32,231,62,2,67,233,
-165,200,70,206,3,10,65,32,83,64,66,86,119,160,86,64,25,251,51,1,
-1,80,32,135,228,0,80,128,24,240,8,1,96,26,201,1,224,87,5,239,
-43,1,64,122,98,178,160,62,142,25,225,13,7,237,37,8,64,42,252,172,
-1,192,72,162,26,128,16,229,85,0,192,120,96,52,214,219,241,149,0,138,
-182,239,170,1,244,23,5,0,54,134,96,192,100,130,253,128,11,101,217,236,
-149,7,226,194,0,197,18,192,86,230,151,6,199,23,129,176,224,94,5,230,
-40,7,192,29,231,58,8,229,172,9,79,151,236,60,0,88,27,65,50,253,
-255,3,64,19,97,110,0,67,83,88,0,53,133,127,103,10,0,85,154,9,
-64,0,235,249,12,65,61,72,147,86,91,3,49,51,56,55,68,27,64,55,
-225,199,2,96,45,129,199,64,120,96,41,122,76,0,56,254,63,4,19,80,
-114,105,109,105,116,105,118,101,115,46,67,111,110,115,116,114,97,105,110,158,
-81,64,56,0,54,224,82,4,226,89,2,64,183,161,186,237,31,2,164,43,
-235,14,45,238,98,0,193,69,239,99,1,192,25,3,85,32,64,90,129,236,
-167,201,234,228,22,160,37,138,165,194,4,234,162,3,163,216,224,80,0,224,
-15,7,230,174,10,224,34,1,237,195,9,64,211,2,95,51,52,68,17,105,
-12,225,185,5,2,67,32,95,101,168,100,245,1,55,51,248,149,2,65,80,
-227,170,3,233,85,3,254,63,6,171,116,98,101,64,70,0,50,132,134,99,
-163,144,160,99,99,152,247,192,91,227,225,1,224,93,22,226,222,0,247,35,
-19,236,251,4,232,126,10,227,180,5,237,154,0,224,90,1,64,172,183,3,
-226,18,1,131,157,227,57,2,229,100,2,65,181,96,237,105,100,98,99,93,
-97,183,104,158,34,230,130,6,255,26,0,132,17,64,60,133,201,225,28,4,
-224,75,14,161,54,132,254,0,75,96,177,218,98,192,102,212,110,186,20,96,
-47,133,3,224,47,7,1,66,32,224,43,11,132,250,132,120,233,172,6,65,
-30,3,52,48,57,32,222,168,132,35,233,11,12,231,7,39,0,55,75,46,
-198,136,0,51,157,113,160,72,236,90,3,0,54,87,58,253,140,35,129,77,
-224,247,1,160,171,253,139,7,0,58,153,218,70,197,162,64,71,43,232,161,
-25,96,207,69,28,154,51,66,10,93,77,96,79,132,245,225,232,0,224,76,
-19,137,84,64,60,135,55,64,67,101,23,2,55,54,53,69,65,64,22,181,
-9,132,163,224,9,1,161,166,213,19,161,7,230,79,2,160,39,226,230,1,
-228,219,11,226,236,2,224,47,22,195,143,224,47,0,165,53,224,47,15,202,
-47,160,89,224,47,23,184,169,225,207,1,224,47,23,237,151,5,229,115,9,
-224,31,5,174,42,129,62,103,250,70,234,162,109,224,64,13,160,144,192,61,
-231,202,16,227,230,5,234,147,1,231,140,4,161,226,224,27,0,206,30,249,
-140,2,224,136,15,249,172,1,194,203,133,233,100,54,77,200,237,181,6,15,
-116,121,112,101,32,97,112,112,108,105,99,97,116,105,111,110,103,58,96,0,
-225,183,0,232,55,2,247,66,15,0,49,189,42,225,142,0,238,133,2,230,
-181,5,225,68,2,161,103,224,194,0,128,56,184,118,144,183,97,5,132,96,
-1,49,52,75,60,0,67,68,236,100,228,5,67,32,95,53,54,55,64,47,
-246,225,0,1,53,48,232,203,0,106,100,0,50,224,236,3,1,36,120,192,
-218,225,26,1,194,249,237,160,9,235,82,2,152,109,228,171,7,64,95,225,
-106,2,128,248,230,57,6,119,85,1,53,49,130,91,225,26,1,108,26,226,
-10,5,224,237,2,137,73,1,49,53,129,200,226,9,0,225,53,2,225,243,
-9,230,253,5,97,85,237,69,4,224,155,7,128,227,254,192,0,225,1,6,
-243,150,17,244,168,3,227,121,3,98,33,160,125,171,43,224,13,0,128,30,
-64,57,162,35,192,24,128,1,200,167,234,168,3,160,85,255,155,9,182,204,
-224,49,12,224,131,5,69,247,96,36,225,115,0,128,83,234,243,6,227,227,
-12,84,159,98,166,0,75,99,116,128,5,225,230,0,133,246,224,70,1,145,
-33,0,50,70,238,241,27,3,0,79,74,194,0,53,231,144,1,225,236,5,
-225,242,5,197,167,64,73,1,50,49,100,73,195,54,71,218,96,97,117,50,
-226,253,1,231,249,2,65,20,2,95,49,48,161,160,1,52,57,121,147,97,
-107,96,41,233,87,0,192,0,227,215,0,227,204,16,160,240,227,204,11,224,
-40,5,169,79,228,38,1,129,162,160,7,224,42,4,222,90,229,30,0,160,
-128,128,49,228,98,0,199,156,165,129,128,1,160,31,225,39,2,225,181,2,
-225,243,3,226,29,2,224,42,4,224,123,0,224,36,5,225,147,2,224,181,
-1,160,29,225,155,0,226,4,3,194,10,192,56,160,36,67,76,0,50,72,
-128,2,57,56,51,64,4,74,108,210,126,97,163,0,80,100,163,172,187,2,
-79,32,35,72,158,162,24,233,176,0,160,159,227,188,6,226,52,6,227,167,
-7,129,98,162,176,64,134,0,54,95,128,226,136,4,0,64,242,62,0,131,
-82,194,242,244,22,3,64,26,160,33,235,22,32,0,48,227,206,8,142,112,
-224,68,20,224,74,21,224,75,2,224,77,0,226,92,5,244,32,4,227,241,
-5,227,220,9,65,132,130,118,224,67,11,194,69,228,55,7,228,33,8,129,
-48,128,170,192,80,226,58,5,224,70,0,160,67,97,76,224,79,0,244,198,
-5,2,95,49,52,117,242,192,32,237,98,5,70,116,192,121,64,0,195,14,
-224,182,4,232,42,6,0,54,70,252,232,88,32,160,45,224,124,26,64,32,
-236,53,4,225,182,6,1,54,53,106,20,230,161,2,228,7,27,128,96,224,
-91,25,160,8,224,91,0,128,176,230,218,10,0,80,109,15,180,112,228,219,
-0,232,179,3,234,25,7,130,89,225,90,2,96,170,164,82,229,22,2,176,
-26,195,245,192,140,136,125,233,81,13,19,98,97,100,32,102,105,110,97,108,
-32,100,111,32,115,116,97,116,101,109,101,176,142,226,100,4,166,245,224,16,
-8,231,84,3,192,138,229,177,3,228,203,9,163,185,224,74,2,230,163,10,
-65,80,238,251,0,229,25,4,224,2,0,224,29,3,241,7,0,169,139,97,
-5,224,8,40,230,224,3,160,90,224,158,1,160,32,128,47,226,172,0,192,
-66,96,68,169,214,227,131,1,224,16,0,128,34,240,48,5,74,155,112,186,
-160,15,239,35,1,160,0,128,52,160,129,234,77,8,224,33,5,109,123,162,
-170,96,79,161,38,227,85,2,163,42,225,64,0,71,137,128,168,136,121,128,
-161,0,54,102,247,65,126,100,55,231,186,0,0,80,106,238,0,79,64,182,
-70,27,0,53,118,53,224,48,0,97,213,129,195,128,242,224,236,0,110,29,
-78,7,255,100,2,2,97,105,108,162,96,64,160,2,95,49,50,85,16,78,
-59,101,85,226,155,2,2,105,110,100,160,40,64,135,230,162,0,102,73,224,
-86,8,2,62,62,61,128,44,235,74,11,0,98,194,209,193,21,226,77,0,
-226,2,5,226,11,13,229,189,1,160,34,225,236,69,225,109,0,224,213,12,
-225,42,0,230,159,9,224,161,0,226,2,1,180,230,160,80,224,0,2,228,
-234,5,196,98,128,171,233,35,4,242,246,6,224,39,16,237,64,4,195,231,
-224,39,10,173,63,224,79,0,237,104,15,236,155,2,238,207,0,224,10,0,
-228,80,1,224,101,14,233,216,4,224,141,18,161,22,224,39,11,224,141,4,
-161,5,224,130,2,225,128,11,226,40,9,96,17,177,21,0,54,83,228,225,
-202,1,9,70,114,111,109,84,104,101,110,84,111,226,253,2,0,66,203,49,
-0,66,64,7,227,222,5,224,125,23,224,119,0,160,72,224,115,18,163,25,
-224,101,83,160,213,224,99,13,225,151,24,164,186,225,151,24,236,218,2,224,
-179,12,192,173,64,18,224,169,14,96,167,224,159,4,224,77,2,196,199,228,
-31,0,233,93,5,229,61,0,0,89,224,44,3,192,127,64,53,147,249,224,
-147,1,234,58,12,96,23,232,202,3,136,21,1,52,52,242,85,11,231,86,
-4,224,21,1,96,18,128,185,231,86,13,224,124,5,183,32,160,0,226,204,
-17,96,77,96,97,224,249,7,160,25,107,188,128,196,189,251,90,156,231,172,
-0,160,143,160,95,97,130,85,230,224,66,5,101,101,229,71,0,97,175,96,
-40,233,204,1,162,108,172,81,236,69,17,0,55,64,177,236,69,20,98,9,
-128,115,128,107,64,104,237,22,0,224,101,2,98,60,174,33,224,52,10,1,
-55,48,192,227,198,136,128,234,237,248,4,137,169,194,37,232,38,14,235,95,
-5,128,44,234,1,1,96,135,0,54,90,107,225,97,12,97,213,226,58,5,
-86,239,71,66,149,129,0,50,212,249,224,46,0,226,218,1,134,137,96,112,
-173,71,64,242,230,181,2,226,49,14,195,13,232,78,1,247,65,6,224,199,
-40,227,72,0,226,101,4,199,72,242,182,2,240,220,0,224,246,5,192,243,
-110,188,160,235,224,83,75,128,65,129,65,229,231,1,225,85,5,231,87,0,
-162,151,116,117,65,88,167,155,227,195,1,168,11,96,144,87,42,108,52,1,
-95,56,224,5,1,224,196,18,130,232,1,55,49,87,97,128,22,241,246,0,
-224,198,5,1,95,57,94,158,64,0,236,119,1,227,207,7,99,51,111,246,
-192,74,206,211,194,7,226,201,5,161,251,224,29,0,226,198,9,225,255,8,
-226,246,0,226,8,2,162,189,0,53,118,124,64,82,73,252,99,185,160,69,
-224,201,15,160,205,164,247,160,129,230,21,1,225,149,1,64,182,229,150,4,
-195,211,227,147,8,238,103,7,129,219,128,160,226,42,4,169,84,224,96,2,
-196,200,229,225,18,224,43,5,164,98,236,224,5,95,140,229,21,3,225,243,
-7,160,18,226,185,5,67,226,0,55,182,147,224,171,12,193,142,225,50,2,
-160,2,224,51,0,64,1,231,124,4,165,13,193,97,128,2,224,46,17,197,
-7,230,158,1,230,142,8,224,46,3,225,61,3,193,21,192,13,110,69,192,
-24,253,2,13,192,156,228,132,0,224,160,4,226,161,3,160,2,167,44,224,
-158,4,199,152,224,47,6,96,18,224,39,4,224,245,7,133,41,224,79,2,
-224,2,7,192,157,224,196,1,160,57,225,47,9,224,67,6,224,153,0,224,
-67,27,227,7,2,224,35,3,96,199,247,89,3,224,39,14,129,115,64,19,
-240,139,5,226,195,12,192,44,128,128,236,50,2,225,120,4,224,132,2,224,
-193,0,224,114,11,224,239,2,228,66,4,226,52,0,224,53,2,224,242,4,
-226,201,0,224,49,3,224,236,4,224,33,8,224,117,0,224,16,1,245,138,
-0,224,70,3,228,30,1,224,75,0,231,53,1,224,59,1,225,55,3,224,
-79,77,225,81,1,104,213,130,109,1,95,49,87,26,103,204,3,55,32,95,
-55,183,226,0,55,132,134,224,22,8,231,239,2,64,13,240,66,4,225,24,
-17,128,117,153,56,224,78,5,239,99,1,161,240,64,239,160,89,64,6,173,
-207,230,94,20,133,218,101,9,64,8,240,9,16,8,114,111,109,83,116,114,
-105,110,103,251,196,0,224,174,5,224,97,5,239,128,2,229,187,6,1,52,
-55,128,9,224,238,16,146,173,225,111,0,194,122,229,200,2,217,75,64,166,
-207,217,224,0,1,224,88,1,227,113,8,227,221,1,224,125,10,224,192,2,
-227,106,19,227,105,12,224,209,4,227,99,0,224,100,10,128,1,227,29,8,
-226,23,0,224,50,16,226,4,14,1,56,52,89,145,0,55,235,211,1,226,
-10,11,104,140,0,50,90,68,2,49,55,51,64,209,0,55,243,176,1,226,
-27,63,0,82,125,224,0,97,210,45,226,29,144,224,89,2,226,32,10,231,
-145,2,224,39,3,229,146,114,224,17,1,226,52,17,224,56,12,230,187,6,
-224,121,1,224,45,4,0,83,228,85,9,242,142,2,230,246,0,224,67,40,
-228,218,1,230,83,15,225,10,11,224,73,11,228,227,0,224,56,5,229,14,
-10,0,53,228,238,0,229,92,1,227,13,21,0,53,75,160,1,55,52,192,
-172,136,144,226,89,0,128,49,0,49,128,49,1,50,54,104,233,64,49,0,
-55,130,83,64,127,1,51,56,133,105,80,185,224,110,18,224,60,9,128,0,
-227,121,60,6,73,110,116,101,103,101,114,227,120,152,193,148,7,80,32,75,
-32,95,51,54,51,96,126,4,48,32,64,95,51,222,149,2,95,49,56,64,
-20,70,182,1,95,49,111,247,3,95,49,52,50,138,84,227,63,5,128,146,
-0,83,167,223,226,98,0,160,2,224,184,5,232,170,6,224,151,0,192,29,
-193,176,233,151,9,225,9,5,225,6,2,226,189,0,226,49,0,170,126,193,
-3,183,40,226,35,3,0,51,172,67,224,122,20,233,37,8,224,122,62,228,
-215,2,250,207,0,81,115,250,220,1,192,100,96,112,192,109,66,217,245,235,
-2,64,27,233,65,1,226,68,10,0,54,115,20,205,159,225,153,0,131,15,
-160,242,192,95,96,66,234,65,8,224,132,10,192,7,225,254,1,64,96,112,
-161,248,100,1,224,55,2,228,177,1,224,106,1,0,83,77,124,1,55,57,
-67,237,0,54,246,126,1,161,60,224,38,4,0,57,178,111,232,13,4,238,
-54,6,0,54,145,107,224,171,6,160,210,224,42,2,2,83,32,73,184,189,
-129,50,193,229,131,27,242,25,6,0,85,65,204,64,67,0,95,112,53,105,
-187,1,95,55,96,42,2,95,49,52,144,159,192,235,227,9,2,195,116,64,
-0,128,19,252,55,8,29,95,32,99,97,110,110,111,116,32,98,101,32,117,
-115,101,100,32,97,115,32,97,32,118,97,114,105,97,98,108,101,164,55,224,
-189,9,110,208,0,52,101,40,115,172,0,56,126,158,225,65,1,128,132,242,
-92,8,194,211,96,209,0,90,65,119,130,97,82,162,64,56,240,54,6,217,
-122,224,220,1,3,95,51,52,51,100,245,91,5,224,197,1,6,116,99,69,
-120,112,114,58,192,203,7,104,97,110,100,108,101,58,32,96,190,64,132,123,
-51,96,92,100,68,0,52,96,93,244,101,4,160,82,4,79,32,35,51,50,
-182,80,224,45,0,230,243,0,224,50,4,8,58,49,55,54,53,32,64,10,
-65,97,220,86,71,226,92,12,130,199,228,139,6,230,236,2,224,49,2,226,
-42,1,228,150,6,239,58,6,228,204,30,230,241,0,225,117,1,192,33,240,
-67,19,193,113,128,27,228,133,8,224,31,6,226,225,0,226,115,1,0,55,
-239,234,0,224,64,12,160,150,192,60,231,231,4,224,109,9,224,108,9,99,
-8,163,122,228,101,15,192,85,128,56,196,150,163,207,160,104,228,94,7,224,
-144,0,118,50,182,243,118,211,224,130,3,224,134,0,230,117,2,232,253,4,
-224,38,1,228,87,10,224,52,1,228,244,2,192,58,224,55,2,196,104,228,
-105,2,228,108,19,224,58,0,230,17,3,160,91,228,114,89,225,80,2,226,
-218,3,175,96,96,209,225,214,7,166,237,224,180,2,192,38,233,188,10,76,
-198,227,234,1,8,68,97,116,97,46,70,117,110,99,76,82,1,46,36,232,
-217,0,0,82,192,8,160,141,226,140,8,64,25,67,205,0,50,137,197,64,
-104,89,171,163,223,248,110,1,224,38,31,225,157,1,227,93,1,225,157,5,
-244,65,2,227,40,21,68,74,0,52,100,74,100,132,69,13,72,251,1,49,
-52,65,117,64,28,0,51,228,103,0,132,105,230,129,6,150,146,226,213,0,
-228,93,7,227,80,4,243,197,30,192,56,226,81,8,169,86,224,112,3,162,
-203,250,122,1,250,194,12,224,57,1,192,59,245,80,0,237,49,3,232,238,
-1,200,123,224,74,9,163,128,228,11,1,237,114,7,245,130,13,195,252,140,
-73,0,52,65,10,134,98,2,95,49,49,204,216,227,212,0,224,63,6,66,
-20,0,54,73,42,2,95,49,52,118,204,2,95,49,53,131,124,251,144,4,
-224,144,1,105,118,225,240,0,103,46,0,53,65,238,128,13,94,43,0,80,
-220,184,64,141,1,55,54,249,238,4,192,77,161,97,98,48,225,243,5,96,
-95,251,234,1,226,121,5,0,55,76,83,64,0,225,51,8,128,12,228,115,
-0,161,24,192,2,98,91,225,109,7,162,114,96,0,228,243,5,129,208,224,
-39,1,224,20,2,224,68,5,252,214,1,224,114,8,224,138,0,199,30,197,
-25,231,38,4,251,120,1,128,36,225,157,4,64,26,224,73,2,224,87,0,
-97,155,138,246,1,52,51,203,184,229,81,4,226,52,3,253,57,4,237,110,
-7,109,103,247,191,2,4,66,32,95,56,57,90,98,1,49,54,165,61,253,
-243,1,227,67,8,224,92,6,224,98,10,224,94,7,64,176,250,186,2,96,
-206,226,218,1,192,2,161,105,225,104,2,227,120,6,225,170,0,233,133,5,
-205,28,225,201,7,160,52,230,22,5,192,22,230,30,4,129,112,3,95,49,
-53,56,68,225,128,71,226,210,4,233,225,2,225,168,4,224,59,0,193,172,
-128,113,225,169,0,96,0,163,68,2,95,53,54,70,122,174,45,0,67,169,
-197,128,0,2,95,54,49,143,46,236,27,5,64,1,197,148,192,75,225,46,
-5,225,26,5,225,70,3,225,72,4,225,7,4,225,137,13,255,99,0,194,
-176,226,164,2,239,63,14,224,97,0,131,140,160,231,255,68,9,184,226,225,
-69,0,160,28,227,226,4,0,52,230,135,2,236,236,1,255,58,6,70,59,
-0,50,102,59,2,75,32,89,96,121,67,202,128,131,104,13,226,92,11,226,
-11,12,161,3,199,164,136,221,0,52,111,156,96,240,232,60,5,71,49,227,
-16,0,192,240,131,71,233,86,6,224,225,29,160,224,64,206,0,49,135,39,
-2,49,53,50,73,89,91,38,64,21,0,48,167,32,161,82,251,162,14,224,
-31,3,240,78,1,64,93,0,57,128,223,98,139,101,142,0,48,114,3,76,
-11,129,70,78,234,96,119,1,51,55,70,47,0,55,65,16,64,22,0,56,
-224,22,6,0,51,128,22,0,55,224,22,5,82,2,64,22,0,54,96,22,
-232,204,1,15,80,114,105,109,105,116,105,118,101,115,46,87,111,114,100,34,
-128,37,140,85,224,83,1,160,60,168,33,1,54,57,106,82,82,152,85,178,
-67,216,1,55,52,114,171,102,95,64,20,0,52,96,33,97,62,0,95,96,
-66,65,7,245,223,1,96,38,64,81,136,86,224,81,0,103,15,1,55,52,
-101,48,192,67,102,178,243,123,2,5,57,48,52,32,95,53,73,29,96,105,
-0,53,65,88,224,31,19,65,128,224,31,16,67,196,8,54,57,51,32,80,
-32,95,53,57,64,162,0,53,224,194,0,96,56,109,187,224,221,4,114,248,
-147,152,137,142,0,48,80,197,224,22,11,131,16,224,61,4,96,111,128,34,
-2,38,49,46,64,185,1,38,48,96,6,224,39,6,128,28,224,27,14,96,
-21,192,27,65,68,131,95,9,95,49,49,48,32,95,51,50,52,32,100,145,
-128,9,64,35,64,34,194,179,224,34,0,64,24,224,34,5,130,192,67,84,
-64,108,67,148,96,209,3,64,95,54,57,64,5,224,88,0,64,44,67,88,
-66,70,1,47,32,64,12,130,129,4,85,32,75,32,75,65,33,64,18,162,
-125,0,52,96,238,66,33,0,56,97,248,142,200,226,52,1,224,19,8,0,
-52,224,38,5,88,62,225,50,1,224,18,1,0,57,224,38,9,1,50,49,
-225,125,1,226,115,4,225,149,2,96,154,0,54,163,168,65,177,96,34,0,
-64,106,23,2,95,57,48,69,229,64,33,162,253,160,188,103,99,0,55,71,
-12,64,6,0,53,128,6,3,54,32,64,83,130,83,0,52,96,106,111,207,
-161,147,114,185,224,181,3,68,195,108,83,0,54,128,245,224,43,2,226,16,
-9,192,25,160,14,64,28,131,209,64,35,97,102,200,13,96,140,1,80,32,
-128,40,128,162,162,27,160,73,0,64,69,112,0,80,160,20,196,122,192,211,
-96,8,67,5,0,95,174,26,192,82,128,22,64,21,2,95,50,48,236,186,
-1,96,130,131,174,3,105,116,111,102,97,248,162,120,66,155,0,57,100,174,
-0,55,142,108,144,221,2,49,55,51,66,56,2,49,55,51,131,207,0,51,
-153,226,0,52,64,173,0,53,68,251,160,39,0,53,224,51,1,64,84,130,
-170,2,102,62,61,96,98,130,149,1,102,62,64,12,64,64,64,12,0,60,
-96,26,64,85,96,13,96,12,130,112,3,102,110,101,103,96,14,129,228,1,
-102,42,96,12,129,207,1,102,45,96,12,129,69,1,102,43,96,12,236,213,
-3,194,13,230,142,0,226,22,3,226,29,1,69,144,3,10,65,32,73,96,
-63,128,171,0,85,66,247,0,65,160,30,198,7,1,80,32,112,58,0,85,
-97,187,0,50,128,185,96,21,68,45,160,21,229,186,7,0,50,128,22,128,
-203,241,41,3,135,45,103,22,241,122,1,241,68,20,200,201,167,69,224,210,
-0,241,2,5,160,30,238,25,0,212,208,230,189,3,236,93,1,184,111,224,
-87,19,212,241,224,87,48,130,167,192,220,192,25,204,47,205,195,225,25,6,
-224,248,3,135,70,241,16,1,224,32,8,138,83,224,32,18,208,208,224,220,
-8,192,24,136,47,249,95,2,184,4,224,27,0,102,52,1,51,56,100,50,
-0,53,71,144,224,44,3,238,85,1,224,73,10,224,28,0,224,159,18,129,
-42,224,32,18,128,141,224,192,10,192,24,224,192,9,200,231,224,27,11,202,
-124,224,27,11,249,70,1,245,73,0,66,193,0,54,131,100,232,101,11,2,
-73,110,116,136,100,64,59,224,36,4,113,87,186,46,4,95,84,121,112,101,
-192,12,160,47,163,185,224,84,11,5,70,108,111,97,116,87,160,39,131,212,
-224,87,6,9,66,121,116,101,83,116,114,105,110,103,96,85,3,114,110,97,
-108,224,19,2,160,57,131,218,138,9,65,89,139,200,140,24,2,95,56,55,
-133,143,152,191,64,46,199,84,163,190,65,187,64,22,164,178,224,167,11,2,
-67,104,97,160,205,64,44,164,122,67,37,225,172,1,1,95,49,70,221,235,
-20,5,239,90,6,1,48,55,192,141,128,29,234,249,3,139,184,64,96,132,
-92,202,110,141,43,135,28,1,53,54,128,169,0,49,132,104,154,241,107,72,
-139,161,139,42,66,80,226,127,18,131,254,235,160,2,101,203,187,44,96,29,
-244,202,1,235,114,6,96,26,128,57,3,95,49,50,48,68,11,160,55,179,
-127,163,235,137,175,105,135,1,95,56,224,94,2,187,125,130,117,203,150,84,
-15,224,204,5,135,41,224,159,11,0,85,132,70,224,192,6,137,18,219,237,
-224,162,0,244,11,6,1,49,55,128,131,160,40,224,139,2,128,134,235,58,
-5,0,53,66,36,64,22,130,188,238,27,1,65,230,1,51,32,167,161,78,
-177,228,218,5,97,250,160,128,96,156,132,23,226,46,1,64,1,113,20,226,
-39,2,110,15,98,0,174,20,130,29,97,119,116,67,224,0,3,207,119,100,
-172,239,156,2,89,159,128,108,128,137,206,91,242,144,7,160,91,240,50,2,
-210,163,76,201,128,8,0,53,224,224,34,132,73,224,224,3,210,13,224,225,
-47,238,222,0,109,83,3,95,49,54,53,181,12,237,153,4,224,193,2,65,
-219,137,56,96,10,170,203,0,49,172,163,72,126,64,22,161,208,132,43,2,
-85,32,83,227,28,5,66,20,226,85,4,130,176,98,165,1,85,32,80,142,
-2,54,56,57,227,190,0,160,163,224,44,0,109,47,224,44,1,0,67,80,
-210,176,206,96,116,132,113,74,119,0,66,119,71,0,83,65,1,230,254,9,
-229,248,8,96,21,0,85,97,147,66,149,1,50,55,162,179,224,40,8,102,
-7,0,85,226,165,1,238,195,4,1,51,54,228,119,4,129,167,0,90,131,
-71,226,31,7,206,194,128,48,238,199,0,228,175,8,2,95,49,48,123,119,
-192,0,224,28,3,64,241,201,78,240,55,5,145,48,128,117,226,197,0,130,
-82,160,100,128,1,230,249,1,198,196,135,55,208,108,228,222,5,208,78,192,
-102,252,111,20,1,49,50,107,249,109,28,0,64,252,206,2,4,102,99,110,
-83,34,225,219,0,198,76,128,154,192,150,244,59,5,171,152,110,104,69,12,
-227,91,12,64,27,137,180,164,154,193,253,0,85,64,183,242,226,3,64,60,
-254,152,3,160,114,224,35,4,224,152,0,83,50,224,33,0,1,50,49,75,
-253,177,200,245,235,2,64,25,152,140,0,79,131,127,160,36,221,29,130,161,
-97,80,220,233,2,95,49,54,153,160,224,102,1,161,233,162,206,194,213,161,
-1,64,1,106,45,225,211,3,164,156,226,131,3,0,53,76,3,224,51,2,
-128,116,225,83,6,66,123,97,169,225,149,4,0,68,193,149,228,24,4,194,
-10,245,235,1,100,43,1,53,54,170,201,225,191,3,96,110,243,98,14,244,
-74,0,225,106,21,195,88,97,186,80,149,161,55,128,124,224,249,1,224,77,
-1,0,67,64,15,224,179,0,203,4,183,123,129,179,161,153,161,142,193,96,
-99,112,128,5,224,240,2,224,49,17,230,153,1,225,237,26,225,214,23,227,
-35,11,64,0,193,231,230,4,5,97,10,96,229,195,145,64,25,83,20,96,
-190,215,157,0,58,147,20,233,54,2,194,39,64,70,67,33,187,50,225,176,
-4,230,182,7,97,223,73,67,227,104,0,227,102,4,97,30,160,108,137,66,
-224,108,2,195,17,128,67,70,25,226,33,10,231,39,24,64,126,99,28,224,
-126,8,104,107,102,120,160,129,206,10,231,21,3,64,51,0,55,110,142,224,
-123,23,67,133,64,231,224,103,8,234,37,0,64,135,74,37,161,128,70,34,
-131,255,224,104,1,69,17,224,118,5,130,137,65,249,137,209,64,71,136,246,
-66,192,134,77,64,77,128,174,227,192,6,234,188,2,226,13,0,195,195,180,
-250,139,0,224,103,0,128,18,128,209,160,153,224,83,3,109,108,64,231,160,
-86,64,167,0,54,100,131,246,137,4,118,106,143,210,1,49,54,169,179,64,
-113,129,199,192,146,160,32,1,55,48,96,51,64,216,137,184,2,90,32,90,
-96,169,64,17,208,52,0,89,228,57,0,163,148,98,194,104,134,247,14,1,
-160,216,228,102,9,225,172,8,129,203,96,58,224,188,8,228,239,2,101,37,
-226,9,0,160,90,225,53,3,224,114,0,162,23,67,61,64,9,96,13,246,
-248,3,64,203,172,241,160,188,65,71,64,111,0,67,224,153,3,239,179,5,
-0,54,98,157,224,188,5,3,95,49,51,53,83,202,0,52,174,70,225,247,
-9,99,204,0,53,82,13,1,50,54,77,74,81,37,224,41,17,247,23,0,
-1,95,52,96,142,233,164,7,0,48,224,61,2,229,110,9,100,232,66,224,
-249,173,3,96,236,137,61,224,185,5,0,50,104,152,132,142,230,108,7,1,
-54,57,103,113,229,193,0,165,149,224,15,0,113,126,160,132,77,76,65,1,
-236,254,1,106,48,229,86,1,236,215,2,4,67,32,95,55,56,140,76,86,
-248,64,7,195,116,96,56,2,50,50,50,181,106,160,72,98,141,129,41,0,
-54,125,250,96,11,3,66,32,95,54,90,128,224,244,0,1,95,51,101,110,
-0,51,130,51,128,163,251,119,4,129,46,1,53,54,64,123,128,30,69,193,
-64,21,69,229,190,129,100,174,79,156,197,240,133,212,226,4,8,0,75,226,
-1,16,225,147,5,0,95,254,156,2,192,0,226,162,0,65,167,224,168,10,
-73,137,116,52,130,110,166,198,224,85,2,225,49,3,0,95,78,235,0,95,
-141,158,160,89,163,154,140,120,199,86,229,64,0,164,156,225,112,0,73,37,
-227,95,10,131,218,235,30,4,194,79,224,44,11,231,197,0,224,61,2,238,
-100,0,224,66,1,203,247,224,53,0,192,69,224,70,15,227,230,4,202,206,
-241,119,0,224,67,5,128,219,228,100,5,130,181,230,181,0,239,82,0,96,
-32,239,151,4,224,0,0,155,150,227,208,1,67,60,139,136,3,85,32,75,
-52,160,2,84,240,64,26,98,194,227,87,8,130,15,0,53,87,75,161,165,
-230,231,5,98,191,139,210,128,174,226,9,1,161,171,230,21,0,171,157,68,
-149,0,51,68,61,161,233,128,86,209,162,128,196,225,43,3,166,138,163,106,
-0,66,67,29,150,246,68,22,234,25,1,16,103,101,116,83,117,112,101,114,
-67,108,97,115,115,101,115,58,32,106,38,82,205,88,180,200,184,193,98,172,
-239,235,97,9,64,7,128,125,64,121,171,4,68,1,79,0,65,101,1,53,
-52,242,67,0,160,217,89,106,112,253,237,230,2,96,72,164,57,224,0,5,
-97,147,230,87,0,65,118,182,61,2,56,55,50,88,20,170,20,230,55,0,
-97,103,0,90,64,30,230,71,4,64,56,246,95,2,237,229,10,100,96,162,
-59,98,85,194,70,130,149,161,149,98,79,232,122,6,255,226,6,163,215,1,
-52,50,128,22,135,95,97,34,67,222,96,120,0,52,123,20,164,32,224,15,
-7,97,72,2,49,52,48,243,123,1,224,203,3,225,193,1,30,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,83,236,4,32,98,105,110,100,147,231,160,0,
-224,189,1,96,144,231,136,2,103,75,232,78,1,226,190,11,225,73,0,0,
-54,129,130,2,49,51,54,78,233,80,24,112,244,190,8,98,128,226,134,8,
-227,36,2,128,232,224,94,8,176,199,229,36,0,224,157,3,161,62,105,135,
-138,253,224,187,5,98,106,70,211,175,114,64,13,135,67,0,53,161,85,224,
-110,13,64,185,136,234,90,215,194,231,162,236,227,216,9,0,51,94,141,224,
-163,0,242,66,6,160,98,0,51,94,108,96,11,0,67,67,74,81,61,0,
-51,94,173,1,95,51,139,56,131,208,4,53,32,95,56,57,73,128,191,0,
-160,84,224,213,2,162,51,224,96,2,224,93,0,224,88,14,239,17,6,193,
-173,137,184,0,90,131,173,137,205,0,54,74,9,171,97,227,202,3,65,19,
-64,29,177,112,241,105,5,226,242,1,230,32,8,197,221,128,30,230,32,5,
-226,16,0,162,230,1,49,49,126,57,231,191,1,129,236,114,167,234,143,0,
-231,165,0,106,87,164,37,166,48,229,33,0,227,192,5,0,54,224,57,2,
-168,213,243,223,12,224,149,0,224,62,4,233,106,2,96,141,233,140,0,65,
-19,249,179,1,224,62,0,224,176,6,226,182,14,68,87,140,137,152,67,148,
-41,0,56,229,18,1,96,0,243,28,6,65,128,209,255,0,89,237,217,0,
-230,39,1,231,208,1,68,249,239,65,2,160,2,224,229,2,225,187,0,182,
-194,199,63,229,4,1,160,48,224,42,8,170,67,178,101,224,33,12,234,245,
-1,0,83,161,115,192,25,147,200,0,75,241,85,1,129,179,231,205,7,192,
-64,81,203,229,251,0,236,87,0,224,81,4,105,8,96,41,98,10,224,9,
-1,64,0,167,60,224,170,0,224,253,15,224,139,1,243,13,3,225,79,2,
-224,112,2,129,138,64,23,66,117,70,100,168,157,225,123,1,233,33,4,160,
-91,192,48,228,67,1,128,216,128,50,97,204,0,80,96,185,176,137,0,53,
-67,11,128,200,250,73,0,160,72,102,216,224,189,2,66,128,225,84,5,162,
-85,128,48,225,208,23,132,102,226,34,1,224,32,8,136,93,241,136,1,224,
-32,8,195,62,227,253,8,247,164,9,206,221,228,38,12,225,240,6,163,215,
-165,82,225,250,8,170,239,224,50,3,224,87,8,181,231,0,75,67,238,226,
-113,0,226,23,3,128,67,226,17,9,128,42,226,60,0,224,39,15,176,153,
-225,249,12,224,27,2,64,199,234,253,4,169,117,160,30,226,10,0,226,83,
-9,160,225,226,150,1,160,55,138,145,128,28,0,82,224,220,4,233,216,16,
-7,112,97,116,86,97,114,115,32,169,207,0,50,64,36,102,116,160,209,112,
-55,72,135,165,136,1,95,57,112,21,170,74,96,112,0,58,100,143,198,31,
-234,224,13,228,245,0,227,72,0,176,249,231,17,6,2,95,51,54,229,102,
-3,1,53,54,132,130,101,9,230,235,19,64,42,64,144,230,210,6,64,154,
-170,0,2,49,53,50,64,64,0,54,64,196,64,22,201,222,229,50,0,66,
-229,229,24,1,64,63,229,64,5,129,246,130,111,133,70,239,16,1,204,75,
-162,13,227,86,0,224,17,2,229,91,15,160,68,224,121,5,224,54,16,239,
-171,1,224,54,3,228,200,0,224,54,16,167,241,230,119,1,241,105,1,239,
-159,2,224,51,5,166,194,128,47,226,198,7,224,28,2,228,192,2,0,90,
-64,34,2,95,49,54,91,213,170,141,227,97,3,224,75,14,160,156,192,75,
-228,201,0,225,106,1,161,137,66,139,1,50,55,96,46,128,176,84,252,3,
-52,32,95,53,177,41,96,48,77,46,96,229,65,147,0,80,245,162,1,84,
-51,2,54,32,79,105,249,0,48,165,69,64,170,64,158,204,86,225,23,0,
-219,45,96,113,69,75,250,100,4,236,103,0,0,54,205,100,232,100,0,230,
-140,20,64,34,234,169,8,120,167,192,206,226,189,4,225,43,1,160,89,138,
-132,95,92,232,13,1,225,54,1,164,150,244,229,14,99,209,65,79,129,89,
-233,200,1,232,218,7,244,123,14,228,169,1,232,178,6,83,136,224,47,4,
-128,49,227,235,3,224,149,5,237,0,4,130,46,251,235,3,225,8,8,252,
-176,2,224,213,5,233,103,0,226,30,1,224,241,4,96,21,76,166,233,64,
-1,2,95,49,51,169,97,239,107,8,224,102,0,225,170,0,224,236,8,128,
-78,101,6,1,49,52,206,1,225,191,43,130,195,192,0,227,254,9,192,80,
-228,50,5,195,72,195,244,235,97,2,128,138,160,178,226,123,2,225,83,2,
-161,150,224,88,0,238,212,10,252,186,2,224,132,2,160,56,224,16,1,136,
-67,162,241,139,144,224,76,7,224,46,3,128,61,192,44,224,2,3,224,126,
-6,226,213,1,193,125,230,42,3,247,42,2,239,66,7,101,124,192,49,241,
-254,5,137,38,226,93,5,168,110,97,197,117,104,235,92,2,224,182,1,225,
-204,33,237,146,0,192,64,228,226,8,161,186,199,181,161,231,224,139,1,251,
-192,8,227,131,2,224,37,1,227,179,1,192,15,224,239,5,64,100,224,239,
-15,129,81,135,72,1,49,53,94,48,65,72,0,50,85,137,64,118,116,70,
-197,70,224,199,0,241,192,7,163,81,227,254,4,2,53,49,50,79,212,224,
-61,1,117,36,255,189,5,224,78,0,225,24,9,167,6,224,212,3,227,118,
-7,228,160,7,1,54,56,196,112,131,133,207,188,175,189,224,119,2,225,177,
-3,239,125,7,96,28,64,66,0,54,64,21,192,51,100,142,100,33,192,0,
-231,221,1,160,69,231,166,27,255,71,5,192,64,160,45,227,229,21,198,80,
-228,128,0,128,167,224,60,3,235,98,6,192,152,225,89,5,224,27,2,227,
-249,4,224,10,0,225,139,8,227,33,8,64,1,229,109,10,225,86,24,160,
-238,229,218,7,112,143,0,56,98,112,0,53,167,243,226,80,9,101,98,252,
-7,3,193,143,117,131,1,53,48,197,108,248,207,7,227,154,5,129,60,79,
-138,185,27,128,6,64,130,2,57,56,51,74,197,64,135,224,0,5,196,166,
-228,118,6,237,240,13,195,207,225,42,1,249,22,8,0,56,74,249,161,57,
-180,46,225,130,3,161,217,229,196,2,97,229,192,22,160,25,160,26,231,53,
-7,225,101,2,128,168,231,70,8,129,35,0,53,121,105,131,244,1,50,56,
-64,138,64,4,128,31,225,65,3,66,61,100,153,0,80,101,199,97,45,109,
-32,128,41,192,15,152,40,161,70,0,53,128,18,150,224,64,0,161,159,160,
-0,226,96,10,217,245,1,85,32,255,113,0,230,252,5,226,237,2,224,250,
-2,161,93,231,8,2,224,100,4,230,86,0,192,59,224,47,8,128,107,224,
-144,10,192,24,103,239,226,137,7,3,95,49,54,52,228,197,8,192,143,130,
-44,192,13,199,16,64,1,227,171,0,143,187,229,163,6,64,75,180,115,200,
-58,126,205,0,55,249,154,1,106,212,1,57,32,245,186,2,5,110,101,103,
-97,116,101,245,149,1,235,98,19,224,158,2,225,83,1,192,146,119,77,141,
-192,161,120,195,197,226,227,1,243,118,6,224,107,15,193,119,231,194,12,161,
-150,232,93,18,192,164,227,184,4,231,217,11,103,163,234,144,4,226,183,3,
-73,181,128,146,236,103,5,206,33,224,155,9,84,215,224,65,28,96,106,239,
-51,13,5,116,99,80,97,116,58,119,68,7,104,97,110,100,108,101,100,32,
-97,156,68,2,111,136,96,98,116,18,79,57,254,165,6,160,78,2,79,32,
-35,66,6,172,134,160,45,245,220,4,103,174,100,87,170,48,133,27,72,214,
-108,160,77,131,226,45,10,1,61,61,162,41,236,158,1,224,128,5,78,253,
-0,54,207,20,0,48,193,148,239,26,2,151,155,170,34,131,23,92,103,100,
-80,128,40,101,83,1,49,50,135,40,133,175,96,57,151,27,3,85,32,75,
-51,128,15,0,51,246,24,0,96,2,105,49,195,36,137,124,228,241,4,234,
-65,6,192,41,130,194,65,159,70,60,109,176,93,87,225,197,1,144,247,64,
-112,150,167,234,221,0,193,33,93,31,195,103,0,49,223,46,1,52,49,194,
-102,96,41,216,47,102,158,66,251,64,79,150,217,66,34,1,53,48,87,131,
-163,4,226,63,1,64,36,149,125,163,110,195,73,100,127,224,237,9,224,16,
-4,64,201,0,58,101,183,64,64,225,212,19,2,84,114,117,132,0,64,46,
-144,209,224,46,19,3,70,97,108,115,224,47,1,208,234,156,74,229,103,1,
-232,135,7,253,82,2,232,231,1,232,172,34,224,46,2,224,43,10,240,79,
-36,66,187,234,26,2,224,47,8,252,219,0,133,136,224,37,0,225,132,1,
-224,130,11,226,87,3,224,81,7,224,27,2,203,47,79,45,104,118,215,204,
-225,5,1,229,255,3,129,71,64,40,248,170,13,230,83,5,219,197,224,231,
-8,101,108,168,100,155,208,228,56,13,225,229,1,2,66,97,100,251,186,0,
-253,143,2,228,71,1,65,252,0,54,97,252,206,50,129,26,161,252,224,13,
-4,224,2,0,64,56,225,254,4,128,18,128,233,161,82,178,255,193,13,234,
-124,8,108,138,96,0,192,34,225,169,0,192,14,128,139,132,20,68,46,232,
-17,0,224,49,1,225,221,5,192,126,198,47,96,133,233,22,6,225,122,2,
-192,2,164,215,224,69,3,97,149,165,83,90,9,128,60,192,23,109,28,164,
-115,96,16,0,54,240,224,1,64,12,64,167,233,9,0,160,0,64,87,129,
-42,233,146,1,64,19,244,221,6,65,31,0,66,245,183,1,225,46,1,97,
-175,96,238,0,90,123,121,200,144,224,36,9,101,91,228,250,8,192,0,65,
-251,1,50,32,102,211,165,212,130,11,254,218,2,225,77,5,231,193,9,240,
-154,0,225,133,8,224,16,1,99,28,224,151,4,0,95,110,6,1,49,54,
-69,161,226,160,1,94,79,232,182,1,224,81,17,233,63,3,128,95,65,74,
-227,56,5,0,52,233,135,0,224,39,1,227,254,11,240,10,3,225,242,2,
-230,89,5,242,204,2,229,176,1,70,17,161,136,236,95,6,101,177,200,39,
-224,111,0,139,249,225,70,13,0,53,184,123,192,167,240,76,8,224,123,0,
-128,133,167,28,130,131,252,200,6,64,97,167,247,165,241,224,0,2,225,10,
-8,192,241,160,149,225,17,2,226,140,4,98,136,0,89,105,250,66,66,64,
-31,251,150,13,64,49,229,109,0,194,148,225,254,2,161,158,226,119,24,96,
-160,182,33,99,86,3,55,52,32,95,132,251,235,208,2,160,0,193,19,228,
-151,3,225,193,5,234,58,4,242,32,5,129,71,0,89,192,13,160,212,132,
-181,225,137,6,179,243,225,51,2,96,16,228,104,10,224,5,10,226,160,8,
-245,7,2,224,85,1,128,1,226,167,1,228,159,5,224,100,0,239,4,5,
-240,133,6,224,73,11,224,254,16,226,247,1,69,184,160,6,224,49,6,225,
-200,0,224,91,1,141,117,224,249,5,130,147,250,149,0,224,10,3,98,138,
-230,185,1,96,0,192,70,129,85,192,172,224,182,2,193,203,224,161,7,227,
-162,11,248,5,2,193,190,224,193,7,236,45,14,243,209,2,227,118,5,227,
-115,0,138,74,225,172,2,128,131,224,45,7,224,205,3,224,0,6,231,62,
-1,253,72,0,80,108,3,54,32,95,54,96,83,161,71,133,198,107,51,0,
-53,160,26,229,187,8,100,120,0,48,224,180,0,236,102,2,16,111,111,32,
-109,97,110,121,32,97,114,103,117,109,101,110,116,115,165,75,224,49,20,2,
-102,101,119,224,48,8,232,71,5,112,3,72,26,139,231,2,95,53,49,70,
-81,96,145,140,240,64,27,139,201,100,28,227,244,10,134,139,225,47,4,190,
-107,163,238,64,66,139,252,105,23,74,233,76,240,0,55,140,240,64,29,139,
-169,0,75,161,70,232,156,1,162,155,224,11,8,194,59,138,95,224,13,1,
-165,69,234,214,4,192,37,224,39,6,224,75,0,224,25,3,230,37,4,224,
-34,8,170,79,224,69,2,160,88,226,2,0,224,23,0,224,105,3,226,50,
-1,224,31,3,252,37,0,227,116,0,232,53,3,224,24,6,64,1,226,122,
-0,224,154,1,192,92,228,70,2,160,23,162,177,192,8,72,216,72,170,147,
-6,0,57,93,6,192,98,224,77,3,70,107,227,88,6,129,120,192,85,64,
-71,0,51,69,180,0,83,96,82,0,52,64,10,219,10,231,16,0,192,95,
-82,43,0,57,79,75,2,50,54,56,109,53,144,233,128,97,0,79,201,79,
-0,54,66,111,239,114,2,128,61,96,57,192,81,137,94,240,109,8,229,55,
-3,96,73,66,122,128,237,0,50,109,188,129,31,109,234,107,181,241,27,6,
-224,71,1,71,236,0,57,66,154,196,110,224,25,15,129,18,64,107,142,236,
-0,51,67,201,186,69,224,57,4,224,146,41,64,57,224,109,4,224,12,3,
-224,38,1,225,176,2,97,173,160,112,136,47,96,105,1,56,48,167,74,147,
-222,67,166,161,171,103,90,213,217,161,131,98,16,1,49,53,82,114,72,82,
-3,51,50,52,32,160,33,170,212,106,99,128,11,160,211,0,56,115,235,0,
-51,147,236,232,148,2,116,95,97,236,111,64,104,156,2,95,49,52,192,185,
-2,85,32,75,202,180,0,50,180,77,64,228,1,54,54,105,28,228,25,3,
-78,163,160,113,224,21,3,0,56,192,21,74,90,64,163,68,57,143,147,224,
-39,3,80,119,196,87,175,140,235,105,27,234,5,0,129,158,233,253,2,230,
-183,6,241,10,0,167,26,224,78,6,224,43,4,64,8,74,207,227,160,4,
-224,96,4,224,46,8,195,117,192,13,96,11,192,8,230,126,9,233,108,24,
-0,58,129,97,97,36,67,181,0,49,80,161,234,190,1,0,85,131,6,66,
-197,113,80,142,223,161,230,128,61,144,97,234,16,0,134,224,225,75,7,211,
-144,128,201,194,230,98,232,244,206,0,150,118,159,160,194,134,162,3,146,108,
-65,193,176,204,184,27,64,6,64,5,66,80,0,51,98,161,2,49,54,54,
-104,105,64,46,0,54,96,46,230,242,1,13,80,114,105,109,105,116,105,118,
-101,115,46,61,62,34,128,82,134,215,128,230,245,121,11,0,85,224,164,26,
-64,71,135,3,225,147,14,64,32,134,225,128,32,0,80,195,68,224,36,7,
-134,232,160,34,139,189,0,80,128,167,130,200,2,83,32,83,162,170,166,93,
-64,42,240,182,5,137,103,224,33,18,201,159,134,108,224,33,12,135,151,129,
-249,0,83,98,245,224,30,4,98,25,163,23,236,172,6,230,29,0,226,246,
-1,96,76,0,85,97,181,112,112,0,50,124,63,1,54,53,129,77,249,190,
-2,65,187,225,246,0,233,210,0,160,115,161,139,162,140,224,72,0,97,143,
-129,174,192,60,224,37,14,239,193,0,233,199,1,128,255,225,64,7,160,221,
-236,225,7,64,54,224,90,15,131,81,224,90,0,225,3,8,128,83,0,85,
-228,68,0,224,63,3,69,53,101,9,2,54,53,57,250,131,0,96,35,250,
-217,5,1,53,48,187,165,160,96,225,150,8,0,49,178,44,225,150,11,227,
-198,2,96,22,64,168,225,144,6,0,52,98,23,224,197,0,1,95,51,103,
-121,128,42,128,0,226,83,18,132,171,128,20,225,81,8,100,41,192,178,224,
-25,4,96,209,228,43,8,96,21,174,2,240,220,11,96,145,226,80,7,0,
-54,251,173,6,226,89,17,142,168,224,16,0,130,227,225,73,4,142,204,224,
-95,5,0,57,123,149,224,85,17,167,120,224,167,3,193,20,177,169,227,41,
-7,224,52,0,226,130,9,225,48,16,103,22,227,98,9,129,16,225,226,25,
-123,114,225,226,1,224,204,3,226,218,11,68,149,225,58,5,224,100,26,141,
-233,224,100,2,227,113,3,228,50,12,96,66,249,61,13,9,100,115,69,70,
-105,101,108,100,115,32,244,179,11,69,23,135,194,165,49,131,103,133,49,67,
-77,96,25,69,73,67,83,0,85,128,22,215,16,96,198,238,69,0,3,95,
-49,51,53,102,74,69,167,64,0,193,100,239,193,2,238,65,3,67,174,154,
-243,72,219,238,140,1,161,30,224,42,2,64,83,135,51,224,245,4,64,138,
-230,206,0,1,51,54,224,65,1,64,61,0,57,66,200,1,49,52,107,39,
-64,40,0,54,224,179,0,212,114,128,11,145,224,96,130,151,213,225,62,6,
-3,101,110,117,109,173,214,64,70,134,235,193,43,97,149,161,43,134,189,72,
-1,199,190,229,24,10,102,89,224,26,12,134,82,226,177,13,226,178,14,194,
-179,140,60,97,79,133,160,227,94,2,203,111,174,47,128,33,229,156,18,224,
-36,4,229,132,9,96,191,0,85,99,137,224,37,0,228,181,17,98,74,224,
-210,12,228,207,0,224,94,4,96,21,100,89,160,91,228,161,8,100,152,228,
-65,7,224,136,1,238,214,3,228,16,11,228,98,11,192,24,228,98,0,1,
-54,53,66,121,236,199,1,227,114,0,224,24,7,225,105,5,104,234,66,8,
-200,165,0,89,222,229,192,143,185,239,239,26,5,131,69,224,170,10,230,155,
-0,232,163,19,224,207,11,192,25,96,181,224,73,1,224,245,16,96,154,242,
-14,4,225,83,0,205,100,94,162,249,154,9,166,88,161,220,254,200,5,224,
-82,10,254,143,2,160,119,0,90,164,21,245,251,5,159,165,246,242,4,65,
-114,255,198,4,128,119,149,197,160,71,96,4,239,3,0,0,90,64,127,77,
-120,98,50,0,75,65,184,239,27,0,129,231,130,75,0,64,89,12,224,27,
-3,64,0,227,65,13,225,237,9,97,238,189,2,65,219,208,162,247,19,0,
-230,93,4,224,235,9,97,92,246,104,6,96,222,226,199,1,226,41,1,160,
-9,130,4,226,55,2,253,195,7,101,62,97,181,1,52,57,255,199,3,100,
-226,148,78,128,71,78,220,90,12,224,56,1,169,17,182,193,232,84,8,194,
-51,236,128,1,165,221,162,225,141,118,0,57,88,153,243,234,0,230,168,8,
-243,76,16,91,93,13,115,101,99,116,105,111,110,32,102,105,120,105,116,121,
-243,126,2,2,53,48,50,248,232,3,1,36,120,128,27,147,104,0,56,106,
-60,161,142,139,228,215,103,195,107,225,145,14,128,30,225,149,6,195,108,70,
-15,0,55,64,210,209,126,195,14,135,158,134,60,225,187,4,96,29,96,170,
-224,152,3,224,182,9,225,228,57,128,203,225,227,6,162,96,99,163,214,19,
-227,160,0,161,212,225,214,16,160,84,239,36,2,100,60,224,21,6,224,60,
-30,64,58,249,243,8,85,151,226,28,4,128,174,227,251,4,225,115,9,224,
-0,1,226,57,87,233,6,1,232,213,12,73,12,64,0,224,215,3,225,152,
-6,194,31,236,116,2,96,228,65,23,246,183,0,148,125,224,100,5,197,31,
-225,73,0,161,75,224,13,0,251,177,7,227,86,7,128,21,132,242,160,14,
-100,7,146,123,228,91,1,100,4,1,49,54,122,97,64,7,237,15,1,199,
-143,193,172,96,8,66,96,64,42,96,142,191,36,227,211,7,0,58,98,132,
-104,251,96,51,226,204,10,102,232,224,13,5,160,174,128,2,160,14,227,9,
-13,0,89,225,21,3,103,85,225,10,3,129,78,241,55,0,64,5,71,47,
-128,58,131,97,129,18,245,96,0,128,36,96,117,166,100,73,59,1,52,57,
-65,34,147,51,96,5,255,31,0,224,184,2,224,2,3,192,29,192,130,199,
-159,224,2,0,214,99,225,154,0,238,110,3,99,222,129,142,0,85,81,22,
-129,32,161,5,169,155,128,58,65,249,224,7,7,101,161,227,35,6,224,9,
-0,224,165,2,250,112,2,160,252,96,86,224,210,6,96,17,194,47,64,92,
-65,225,182,22,161,4,225,107,0,226,189,2,224,229,3,160,99,183,172,224,
-113,2,97,24,1,85,32,71,100,224,72,2,162,15,96,35,232,86,7,225,
-235,3,193,91,248,3,0,224,26,3,224,143,4,219,115,225,173,15,129,10,
-224,66,9,226,132,0,224,127,14,224,106,0,96,170,224,35,21,128,1,169,
-114,192,0,233,236,1,96,2,128,178,226,154,0,160,14,224,50,4,224,88,
-15,0,67,98,56,224,0,3,224,234,14,224,2,3,224,246,0,64,0,228,
-130,9,253,106,16,193,217,128,122,225,231,0,130,35,128,181,2,95,49,51,
-97,212,227,129,0,147,226,71,128,0,64,155,106,224,227,0,85,138,224,42,
-6,116,116,1,54,52,102,8,64,44,190,164,64,65,192,22,64,8,232,54,
-0,224,125,1,162,84,253,127,1,226,232,5,224,173,2,225,74,2,161,98,
-192,44,224,62,4,128,166,225,32,6,224,181,12,252,111,1,96,223,225,13,
-0,96,186,225,13,23,224,225,13,91,162,224,220,2,227,13,8,160,190,227,
-166,13,96,16,154,1,170,237,252,120,3,8,95,52,48,57,32,95,52,49,
-49,105,9,231,2,1,28,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,167,57,226,92,
-10,161,83,96,127,64,228,129,57,96,21,224,244,1,88,229,225,33,2,224,
-213,10,224,176,42,9,98,97,100,32,112,114,101,102,105,120,224,168,11,228,
-251,2,3,95,51,50,50,239,186,2,14,92,34,115,114,99,47,77,105,99,
-114,111,72,115,47,70,104,25,9,46,104,115,92,34,44,54,53,58,55,192,
-64,219,20,250,38,4,97,214,171,45,170,236,1,95,55,71,45,204,158,163,
-65,129,28,247,210,1,0,52,76,104,0,54,81,135,192,0,0,80,89,136,
-79,87,96,167,165,234,1,64,89,100,83,64,230,229,40,3,233,85,1,177,
-23,69,226,64,79,185,111,64,45,138,56,128,113,96,122,192,115,202,147,1,
-54,52,85,10,254,129,5,1,49,54,238,181,2,208,47,64,229,169,168,171,
-247,100,96,64,139,198,147,64,34,0,80,192,180,130,138,193,200,96,183,242,
-170,1,128,7,193,62,224,63,3,225,28,0,224,34,1,225,7,1,161,29,
-186,231,160,21,72,81,146,98,77,206,99,34,0,35,152,189,64,197,184,189,
-104,211,106,18,81,180,225,244,1,5,110,101,103,97,116,101,97,220,64,48,
-0,54,96,48,1,65,32,64,11,145,187,0,90,65,66,64,14,145,176,0,
-75,96,26,207,179,193,19,132,27,171,71,64,32,223,62,0,65,128,59,140,
-101,2,95,52,56,99,6,139,15,143,156,64,178,156,79,110,34,206,41,128,
-24,64,11,252,123,0,224,24,9,160,49,142,113,1,95,51,74,235,164,42,
-64,115,202,159,0,89,165,162,98,62,227,167,2,225,163,1,240,77,11,227,
-183,0,248,140,20,79,190,162,41,226,152,13,128,41,244,106,14,10,103,101,
-116,65,112,112,67,111,110,58,32,244,107,11,160,99,167,33,0,85,128,191,
-64,218,67,88,211,156,2,55,50,53,225,246,1,253,54,7,202,174,3,67,
-32,95,55,211,217,74,203,65,154,0,50,65,200,64,52,192,73,235,194,9,
-127,160,193,50,101,125,123,1,1,54,51,66,152,64,61,0,54,138,199,123,
-236,224,214,1,3,118,97,108,117,98,81,224,18,1,2,116,121,112,130,99,
-224,18,1,3,107,105,110,100,224,18,6,3,115,111,114,116,64,18,64,90,
-244,56,1,245,51,25,102,83,129,105,224,12,1,2,95,49,54,184,236,109,
-38,75,138,236,196,5,164,154,131,115,238,207,7,66,199,139,250,85,23,236,
-252,5,128,160,180,191,228,12,0,68,224,170,204,233,241,4,162,52,128,59,
-231,49,0,226,84,19,128,145,159,157,64,129,234,84,0,194,96,226,94,0,
-247,238,4,90,150,197,72,224,43,10,206,67,224,96,0,140,229,65,38,194,
-38,98,166,225,142,2,9,101,116,83,76,111,99,69,120,112,114,196,31,65,
-13,81,189,96,245,210,78,129,97,0,50,197,211,96,78,128,98,0,54,119,
-173,224,98,0,192,20,131,207,128,20,64,84,252,130,1,235,189,7,196,82,
-96,38,208,170,179,6,64,35,164,110,64,102,96,26,129,8,0,56,104,136,
-0,58,128,97,160,89,241,130,0,96,83,200,134,237,76,1,64,8,3,95,
-54,55,54,221,116,193,204,228,41,1,224,12,1,224,25,0,3,95,53,50,
-50,67,130,129,64,96,19,177,225,224,25,4,163,124,160,6,67,180,64,8,
-65,1,199,227,199,229,128,10,228,37,5,9,117,110,100,101,102,105,110,101,
-100,32,135,130,97,110,103,106,224,42,8,196,71,0,56,233,18,0,98,135,
-140,105,96,228,72,67,237,187,3,128,33,224,126,0,192,13,224,86,5,233,
-1,1,168,4,165,28,167,240,224,49,10,160,136,168,27,128,39,160,149,160,
-14,2,79,32,35,65,247,103,166,98,21,73,232,128,33,71,236,0,80,104,
-1,232,56,1,194,18,232,61,0,95,124,234,237,4,128,0,160,220,65,251,
-217,117,228,154,3,1,91,93,96,151,224,229,2,4,79,32,35,57,49,238,
-24,0,225,194,1,224,219,0,166,62,1,80,32,233,110,5,64,55,0,51,
-244,13,2,224,82,2,224,40,8,232,143,1,163,154,224,97,3,128,0,64,
-176,133,139,0,83,66,91,3,95,54,53,57,68,230,5,48,32,64,95,55,
-57,75,2,1,52,57,144,75,64,13,106,44,0,83,65,203,192,175,71,216,
-107,41,64,49,0,35,71,197,97,85,0,56,64,121,1,95,56,126,135,128,
-99,0,54,195,191,203,184,241,84,5,1,52,55,66,21,128,203,113,81,238,
-195,4,236,3,1,241,198,7,98,205,0,49,131,55,231,97,18,1,95,52,
-145,180,225,47,0,229,219,5,1,54,50,230,248,1,129,38,103,129,224,111,
-6,96,53,1,49,52,191,92,226,233,0,231,125,1,161,97,224,17,6,251,
-76,5,96,20,64,254,1,51,54,70,79,156,86,192,158,229,59,0,134,58,
-127,36,234,32,4,226,239,8,21,110,111,116,32,112,111,108,121,109,111,114,
-112,104,105,99,32,101,110,111,117,103,104,163,5,67,240,74,161,2,95,50,
-54,83,141,236,174,1,230,118,5,107,51,1,48,51,97,204,0,51,64,41,
-196,136,224,42,9,97,202,135,33,167,17,1,54,32,128,93,1,49,54,122,
-230,64,15,1,49,54,92,131,231,43,0,64,50,134,179,90,143,0,90,160,
-47,0,56,191,108,64,29,133,219,106,93,64,14,133,149,66,89,0,51,88,
-162,130,218,1,49,54,90,248,224,248,1,3,66,111,111,108,198,28,66,206,
-1,10,65,225,21,2,4,68,97,116,97,46,64,33,6,95,84,121,112,101,
-46,34,128,87,253,62,4,106,226,156,17,0,49,133,172,135,64,226,50,1,
-2,49,52,49,66,21,65,137,0,53,64,59,2,95,49,55,124,220,226,165,
-22,221,65,226,222,4,0,53,226,126,0,194,92,194,95,226,27,3,130,189,
-226,25,4,64,134,65,61,203,135,64,66,163,68,64,5,224,101,2,96,167,
-73,160,226,49,5,227,23,4,143,46,227,66,3,232,25,1,226,177,1,164,
-255,64,182,0,54,128,117,227,104,0,229,170,0,246,14,14,173,8,103,225,
-228,120,0,97,163,67,163,168,182,128,229,227,200,5,128,83,1,54,49,205,
-6,99,210,0,85,102,237,97,147,0,32,163,34,224,123,8,143,171,65,169,
-64,53,129,101,244,247,8,64,183,2,10,65,32,229,223,11,160,141,131,206,
-131,119,0,48,105,122,1,49,54,187,160,128,65,0,54,192,190,0,79,101,
-66,3,49,50,49,53,220,99,64,42,66,41,0,75,130,77,131,30,160,151,
-0,50,193,20,75,42,96,45,64,126,128,10,64,44,131,24,234,105,11,0,
-52,127,200,128,240,226,36,1,65,147,67,109,174,38,96,176,226,3,3,228,
-215,6,64,127,225,94,0,224,98,15,231,86,0,226,145,9,129,110,64,114,
-107,203,230,56,0,225,134,8,149,187,161,43,131,207,224,111,15,72,19,129,
-205,224,217,8,137,192,224,56,9,0,53,124,215,195,31,226,57,2,129,186,
-247,198,2,234,102,0,224,40,5,64,123,225,10,3,235,118,6,64,255,64,
-193,76,198,132,150,128,90,224,64,1,111,139,98,161,96,150,240,137,3,160,
-6,0,85,230,55,1,225,66,3,193,61,239,189,0,226,202,2,225,109,6,
-2,95,51,54,224,112,0,95,92,1,52,54,72,153,192,144,96,234,255,97,
-0,225,141,1,225,229,0,251,194,9,224,19,5,194,52,65,161,197,98,172,
-9,100,83,64,161,225,32,15,235,16,2,160,33,154,167,228,92,5,164,98,
-225,64,1,224,28,10,228,181,5,225,224,0,0,54,224,180,3,204,206,192,
-49,235,50,0,64,2,224,39,1,128,136,128,1,226,193,1,64,205,233,58,
-0,169,229,195,238,64,147,229,178,1,160,64,136,45,160,59,165,110,164,243,
-246,240,6,224,117,6,224,150,0,228,203,4,96,137,64,74,129,10,129,229,
-0,52,77,181,153,35,224,152,22,136,65,64,143,142,9,224,132,4,65,235,
-134,21,238,24,3,111,158,177,155,96,0,225,62,6,245,100,8,163,172,129,
-55,201,45,160,9,128,147,162,232,155,153,235,211,4,128,1,154,244,129,226,
-232,232,1,192,2,244,129,3,224,32,0,201,195,237,14,0,192,99,228,87,
-3,224,26,0,96,115,218,16,234,176,3,224,131,1,176,158,224,84,1,224,
-133,1,224,219,0,128,192,160,203,224,92,5,163,243,251,116,1,97,68,97,
-151,3,95,49,53,52,252,190,0,131,48,136,97,0,79,75,141,0,54,73,
-74,102,33,1,50,48,163,225,108,16,64,28,203,14,137,65,2,95,56,52,
-102,36,137,7,64,39,65,175,224,39,16,0,53,81,63,96,39,108,74,224,
-39,17,141,49,64,8,64,21,224,39,18,142,4,1,49,54,76,22,160,205,
-96,194,68,70,178,220,1,53,57,64,116,199,171,64,234,137,38,227,115,1,
-64,26,129,113,250,55,5,130,89,161,163,225,249,2,160,43,96,17,226,105,
-2,128,1,227,250,10,67,26,128,0,224,38,1,230,25,6,0,54,112,146,
-96,0,232,252,2,236,31,8,233,115,13,230,221,0,224,51,35,224,139,0,
-229,212,14,0,54,66,1,224,145,0,227,112,3,164,160,224,63,1,169,59,
-195,69,64,10,65,191,228,212,3,225,86,3,225,102,1,225,15,2,164,37,
-229,85,6,134,82,224,41,6,131,0,251,5,0,64,19,229,66,4,224,106,
-0,227,52,13,185,31,117,176,165,9,224,11,3,224,191,1,207,199,128,60,
-225,70,3,105,67,231,147,7,234,180,13,2,95,49,52,192,51,128,1,230,
-195,6,192,253,130,71,64,122,204,153,224,42,5,64,13,0,57,137,107,0,
-67,105,107,1,57,56,233,158,0,248,49,2,192,0,160,186,84,246,0,57,
-105,135,0,48,209,175,67,173,64,71,206,194,163,68,64,34,138,192,225,237,
-3,229,247,4,229,12,3,108,62,131,89,64,18,0,79,64,80,254,4,0,
-225,193,4,225,141,0,64,1,133,85,224,71,13,65,5,0,79,97,152,254,
-77,1,0,90,76,43,0,51,96,131,228,169,0,65,155,244,30,0,64,166,
-230,211,0,111,223,135,237,226,179,2,225,124,1,160,29,180,21,163,112,226,
-30,0,243,209,3,224,28,3,64,179,243,25,0,129,132,160,225,64,173,0,
-80,240,127,4,224,74,10,168,220,224,73,37,160,215,200,132,224,204,182,99,
-219,132,104,247,190,4,1,95,51,108,85,131,62,131,168,160,118,224,40,14,
-224,120,0,195,213,160,48,2,95,49,51,84,17,99,57,128,15,79,227,81,
-245,199,88,228,158,1,228,168,2,128,0,96,187,163,65,66,94,0,54,235,
-219,14,1,54,48,64,253,88,113,234,196,3,171,142,224,178,9,227,187,1,
-152,92,235,183,0,179,109,165,165,97,64,224,12,4,192,4,193,124,64,121,
-99,168,2,51,53,48,135,155,114,187,105,112,112,141,128,15,224,24,6,224,
-0,6,1,95,56,99,196,64,223,215,254,131,64,64,93,132,95,97,56,230,
-188,17,128,32,65,91,198,25,166,56,2,95,56,57,96,137,2,49,52,49,
-83,88,168,137,96,106,237,251,0,2,49,51,53,155,35,0,56,71,168,3,
-49,54,48,50,89,71,143,11,64,40,173,79,5,56,49,48,32,75,32,65,
-84,193,40,224,118,0,224,1,7,235,37,2,224,37,16,224,35,4,224,32,
-23,224,29,20,224,26,17,224,23,14,224,20,11,224,17,8,224,14,5,65,
-36,229,197,6,65,26,215,193,0,89,165,77,97,184,108,204,232,137,1,167,
-59,192,79,138,55,231,217,2,96,13,230,159,2,227,212,5,161,176,224,62,
-0,133,164,224,173,1,171,10,224,65,3,224,68,9,206,84,224,55,9,195,
-171,64,62,96,233,166,27,132,215,164,25,199,149,233,228,3,176,172,155,120,
-96,17,102,189,93,144,230,35,3,224,0,3,138,240,1,52,52,152,53,128,
-8,65,68,138,220,74,252,1,75,52,115,162,64,1,0,75,227,39,0,64,
-34,138,20,243,97,6,5,67,111,101,114,99,101,128,6,2,105,98,108,91,
-104,0,58,135,48,231,40,1,161,134,168,211,128,250,206,59,96,11,225,119,
-15,234,21,10,225,106,0,128,1,193,200,224,30,10,224,85,16,234,71,0,
-224,85,22,231,132,2,65,127,104,127,75,161,69,27,216,192,128,0,167,160,
-64,248,136,33,225,36,6,84,129,13,76,105,116,115,46,75,110,111,119,110,
-83,121,109,98,116,184,64,47,183,119,225,40,140,194,246,225,40,76,0,54,
-163,181,64,1,241,237,11,169,228,192,105,224,34,2,224,44,2,0,50,89,
-198,0,83,163,58,242,181,10,0,50,138,200,67,37,133,87,0,52,71,234,
-165,87,101,108,158,177,2,64,35,49,102,187,230,149,4,101,177,238,24,1,
-225,40,0,161,37,134,28,187,77,241,97,1,199,136,224,185,0,129,50,225,
-225,5,233,133,0,224,5,7,209,56,192,60,192,1,235,252,1,224,28,8,
-224,149,5,228,109,8,224,77,11,225,199,0,64,0,164,108,224,2,4,192,
-108,224,52,5,229,187,12,64,22,236,105,0,224,77,13,224,56,9,226,114,
-3,102,245,156,157,224,36,1,224,58,7,224,17,8,224,14,5,192,157,133,
-15,0,53,91,28,64,6,227,22,2,236,41,17,108,89,243,199,5,96,0,
-226,185,0,224,143,74,101,81,99,10,115,130,86,24,72,21,0,75,66,192,
-159,114,101,135,192,12,64,43,255,242,1,192,2,241,214,11,162,63,224,38,
-3,128,2,67,143,237,55,1,192,159,224,168,0,64,157,162,242,226,202,9,
-192,47,128,109,225,187,5,193,8,128,8,64,120,128,126,166,202,161,236,66,
-218,0,95,250,224,0,239,138,1,238,6,11,224,205,0,238,7,12,235,73,
-0,225,151,1,224,84,0,64,102,68,124,129,117,0,48,99,234,209,218,128,
-165,75,120,64,182,181,232,96,72,231,36,1,224,116,8,224,110,2,162,168,
-226,42,1,224,51,2,138,175,128,7,160,221,3,95,49,52,48,242,62,1,
-96,71,251,180,5,31,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,0,114,
-222,197,128,131,1,53,53,138,65,0,53,239,131,0,130,21,138,22,255,100,
-1,96,217,130,185,69,17,128,47,101,9,4,56,49,32,95,53,156,105,0,
-56,64,220,75,115,64,65,201,61,225,150,3,0,83,100,72,129,215,141,66,
-160,93,173,106,228,111,10,173,66,64,173,236,247,2,248,241,1,230,6,1,
-139,236,226,85,0,117,16,226,195,4,181,25,224,19,4,228,255,1,227,121,
-3,160,2,160,26,227,24,3,227,27,18,96,12,246,230,1,163,6,162,72,
-160,244,66,27,0,48,76,188,245,80,0,192,68,201,250,227,91,5,173,47,
-96,101,161,30,66,41,97,104,224,104,4,161,101,181,215,0,39,157,8,64,
-110,0,56,152,63,233,177,4,165,164,65,165,137,158,195,75,198,70,141,232,
-96,71,67,72,1,53,56,98,109,139,7,227,127,1,193,200,128,232,160,15,
-131,194,224,202,1,231,190,0,141,103,64,1,224,83,3,96,162,224,205,1,
-97,42,128,157,144,126,174,90,161,237,110,2,224,21,0,227,53,7,128,93,
-236,187,2,236,198,4,64,104,96,58,138,161,192,139,97,39,128,134,160,24,
-65,22,253,206,1,161,153,193,33,192,197,209,161,192,198,224,99,1,104,101,
-224,21,0,134,133,3,49,53,56,53,98,179,64,235,226,185,1,238,255,3,
-192,0,192,174,224,98,7,64,7,244,63,5,132,154,225,97,0,224,142,3,
-192,139,64,48,64,11,252,156,9,128,205,193,149,131,89,248,147,6,70,36,
-244,136,0,224,151,2,225,132,5,224,28,4,64,79,181,150,227,246,3,163,
-139,128,35,195,133,160,49,163,78,64,11,224,147,5,227,76,0,234,26,1,
-215,230,227,28,9,227,5,9,194,250,224,0,0,225,139,2,232,18,1,65,
-236,65,247,79,2,97,164,192,74,64,66,64,27,139,118,121,245,129,253,100,
-176,229,154,7,195,229,96,197,128,209,228,46,0,163,86,225,36,1,166,182,
-146,62,197,117,228,96,3,224,46,18,229,165,0,193,252,192,121,160,46,224,
-44,5,242,154,37,64,31,1,95,55,96,23,8,67,32,95,54,55,54,32,
-95,53,235,169,0,210,41,128,69,144,113,160,23,224,90,8,199,220,0,85,
-104,120,224,174,6,227,63,1,224,168,1,195,255,224,73,8,192,24,149,227,
-162,234,167,129,229,239,2,64,104,128,12,149,117,252,216,1,97,195,255,160,
-1,135,199,231,121,1,228,160,2,228,232,5,224,42,8,226,169,0,227,119,
-1,98,132,228,3,3,128,222,229,35,1,197,177,85,38,225,78,2,129,169,
-200,109,128,11,250,146,5,228,38,3,129,62,224,8,4,128,25,64,217,0,
-54,226,157,1,128,147,98,254,125,223,160,59,224,22,2,224,25,6,224,26,
-6,224,29,7,199,136,192,37,192,183,128,11,224,196,0,243,208,4,64,146,
-202,122,151,166,82,228,128,170,210,144,227,72,0,134,201,2,49,53,56,193,
-139,66,87,0,53,159,73,64,48,136,129,112,56,68,133,64,18,136,82,65,
-157,96,71,192,145,228,66,0,227,112,5,128,29,227,109,11,252,189,0,245,
-212,27,128,154,227,55,5,237,140,7,100,162,130,23,225,251,9,227,76,6,
-161,57,229,66,4,228,209,4,216,145,225,246,0,224,131,8,105,178,245,152,
-7,169,25,212,208,224,50,35,194,183,116,148,82,5,0,57,155,192,160,47,
-229,238,8,160,157,242,93,7,225,72,10,235,98,4,224,144,4,224,96,3,
-225,70,4,192,41,226,102,2,224,58,20,224,35,0,233,65,4,226,185,8,
-227,169,4,160,101,232,108,1,224,19,0,199,9,225,68,12,103,135,225,68,
-9,225,63,9,189,42,225,63,19,66,207,137,124,1,95,49,160,28,1,85,
-32,160,49,77,83,80,84,167,249,224,62,2,64,53,136,155,229,138,0,86,
-120,0,56,99,99,0,55,179,28,227,200,1,83,107,96,151,0,67,193,150,
-96,245,2,83,32,95,205,51,64,232,202,141,202,37,4,95,49,50,53,53,
-99,121,0,85,115,173,0,85,225,5,10,150,108,86,47,2,95,56,54,110,
-80,64,135,76,138,86,184,106,122,0,52,169,186,0,55,158,82,192,0,0,
-83,104,12,65,61,168,9,129,138,231,52,5,196,101,238,12,1,76,106,0,
-55,229,66,1,65,34,3,55,32,95,54,96,140,73,195,1,95,54,158,225,
-130,2,228,153,3,166,39,65,32,199,205,5,80,32,95,51,52,51,237,53,
-2,18,109,105,110,105,109,117,109,58,32,101,109,112,116,121,32,108,105,115,
-116,205,37,2,95,51,54,77,239,0,54,104,77,64,68,134,78,130,115,238,
-74,5,192,19,133,217,131,212,166,243,224,13,1,99,220,194,226,166,203,128,
-8,0,54,65,53,0,49,64,95,160,226,96,27,96,249,69,13,8,95,49,
-49,50,52,32,79,32,35,64,232,203,207,240,95,6,64,159,0,54,96,159,
-244,41,20,1,78,97,64,222,64,44,133,174,162,37,97,57,140,3,132,191,
-206,244,163,84,128,187,229,98,1,68,222,183,18,64,174,0,52,101,239,1,
-53,55,64,253,192,7,193,19,67,125,243,136,6,168,26,192,91,99,141,224,
-9,0,97,246,103,10,0,55,106,131,240,62,11,128,45,253,40,3,97,52,
-254,29,77,1,52,54,228,111,1,254,29,45,226,49,25,224,115,1,224,69,
-3,224,68,1,226,67,0,80,110,228,194,0,111,153,192,101,254,125,4,201,
-7,65,232,241,230,4,129,106,0,83,169,85,97,192,133,36,191,139,65,118,
-172,116,96,7,192,220,252,79,74,225,126,1,177,125,194,111,160,65,188,210,
-192,252,252,225,8,128,237,252,71,3,98,49,104,58,224,125,4,135,184,146,
-248,68,219,251,47,0,64,49,136,89,131,6,226,82,21,163,183,226,72,9,
-225,220,8,231,199,0,226,48,19,138,102,0,66,129,240,196,201,228,13,0,
-196,211,68,194,226,6,1,64,176,198,58,3,52,53,50,32,64,15,134,20,
-227,102,10,67,148,64,95,246,195,1,64,20,95,216,162,162,253,83,2,4,
-95,49,53,54,53,235,61,1,3,58,49,53,54,134,82,64,179,252,71,5,
-0,52,65,71,252,71,1,0,53,79,69,229,21,0,227,239,12,0,52,199,
-122,194,197,237,230,6,96,54,247,105,3,242,242,1,64,149,235,30,0,76,
-165,225,125,1,161,142,224,55,2,64,46,69,250,227,207,6,64,163,197,185,
-224,204,7,1,53,52,224,204,6,0,54,160,40,190,55,226,18,5,67,36,
-98,170,229,8,3,143,174,103,85,99,70,128,95,251,42,1,64,100,163,89,
-132,72,64,102,133,124,234,181,0,226,118,3,180,107,1,53,53,71,86,180,
-107,129,35,224,140,5,143,217,229,29,3,161,215,128,153,201,159,0,64,193,
-108,238,183,3,224,7,3,241,44,4,233,135,0,199,137,237,144,6,224,38,
-7,231,191,0,192,52,243,199,10,160,57,160,47,233,173,1,224,63,5,224,
-64,3,144,57,252,233,29,96,67,172,203,134,57,200,48,169,138,1,49,53,
-238,203,1,198,113,226,109,4,102,107,65,181,224,0,9,162,99,1,49,56,
-64,45,104,212,236,247,5,160,194,224,80,5,65,232,128,175,64,9,226,89,
-0,133,134,0,75,227,36,15,0,54,128,164,128,81,64,15,238,35,13,64,
-73,132,228,227,106,18,226,190,0,243,8,8,98,253,225,125,4,227,8,11,
-232,194,8,128,42,192,131,160,134,133,57,97,61,64,118,1,75,50,106,76,
-64,25,132,162,227,59,7,229,75,2,74,61,233,238,3,196,21,224,103,3,
-64,86,246,239,1,231,203,3,134,186,134,198,224,170,1,162,206,128,13,129,
-233,64,52,224,33,16,128,27,128,113,236,113,0,232,252,1,226,160,64,224,
-219,4,237,47,4,250,229,0,192,49,232,136,10,64,58,202,55,177,133,2,
-32,95,57,124,89,130,183,232,39,5,247,22,4,128,10,160,16,224,149,5,
-224,165,1,224,117,8,224,249,2,243,211,1,192,16,128,123,1,95,55,162,
-224,226,38,2,168,154,243,253,2,234,238,0,161,42,207,36,138,90,246,167,
-0,70,199,128,73,224,17,6,135,39,0,95,70,137,128,59,149,243,201,25,
-0,51,135,32,0,95,71,1,1,95,50,126,25,64,237,224,253,0,64,123,
-234,124,11,108,154,128,247,1,53,53,82,202,0,67,139,232,3,95,56,57,
-51,67,199,111,4,201,241,98,206,214,18,227,111,21,0,90,225,80,2,227,
-102,32,192,30,193,237,227,99,6,64,159,227,99,4,0,51,107,187,64,195,
-71,243,2,56,49,53,72,2,66,3,167,129,235,109,17,192,154,1,53,53,
-171,85,1,53,53,65,64,64,62,0,54,195,174,162,158,128,9,207,219,160,
-10,160,13,227,123,0,202,60,224,228,3,192,13,241,101,9,131,236,99,234,
-162,82,195,254,192,23,224,71,1,245,4,5,230,197,2,226,183,4,230,160,
-8,227,129,0,226,220,4,163,132,199,177,160,186,224,112,5,224,98,62,230,
-135,2,160,217,225,48,4,64,32,2,95,49,51,65,125,174,151,192,95,192,
-131,225,44,3,92,220,0,54,94,196,131,216,242,84,0,225,161,1,65,226,
-66,182,192,34,164,27,242,73,8,224,22,13,224,174,0,192,121,193,235,224,
-44,13,224,198,0,233,186,10,243,74,2,232,12,3,225,63,18,225,57,5,
-224,136,37,224,102,2,232,112,22,224,99,2,128,94,64,5,225,167,5,224,
-55,12,224,56,5,192,155,118,251,131,51,225,126,0,160,14,224,0,2,160,
-199,163,208,128,59,148,8,173,95,229,32,1,2,32,95,56,75,242,134,223,
-2,95,56,55,101,132,131,156,96,70,253,221,6,1,105,110,93,214,19,105,
-115,116,101,110,32,116,121,112,101,32,101,113,117,97,108,105,116,121,32,208,
-174,101,65,0,50,139,204,125,219,224,67,8,1,32,126,128,44,192,32,160,
-0,64,233,141,144,1,83,32,66,154,194,129,195,182,211,209,224,251,0,225,
-53,5,96,22,252,103,0,225,246,16,193,83,164,62,96,103,143,233,0,54,
-85,35,137,173,227,27,0,1,64,64,77,12,102,9,78,209,66,6,68,170,
-139,55,64,26,0,57,76,160,2,95,49,48,68,235,64,25,214,101,233,20,
-25,234,248,1,229,170,47,224,194,1,229,172,4,137,151,233,16,3,65,19,
-64,25,137,42,2,95,49,51,64,233,1,49,52,73,193,64,22,169,39,160,
-50,96,207,239,247,2,64,33,198,122,0,89,199,251,224,2,0,133,37,224,
-21,7,224,24,1,229,169,4,224,28,8,224,55,10,64,2,224,29,21,229,
-241,0,64,0,193,47,225,55,1,192,25,96,42,232,240,2,192,57,224,99,
-6,224,39,9,233,133,0,224,57,4,224,148,3,229,194,2,192,23,224,129,
-1,162,172,96,8,160,5,3,95,49,50,48,232,214,0,224,178,8,226,44,
-13,227,210,4,229,119,3,192,126,230,39,11,165,151,224,24,4,234,43,3,
-3,32,64,95,55,252,124,1,228,83,2,224,8,0,128,54,239,16,15,160,
-79,0,95,78,127,64,21,100,51,163,23,228,81,2,1,49,50,66,180,129,
-28,101,53,3,95,55,50,54,110,37,0,50,78,131,2,95,56,48,134,43,
-64,15,108,211,164,111,226,199,1,225,25,0,234,20,5,226,4,3,201,231,
-225,162,7,225,179,0,193,198,227,32,0,162,214,233,155,0,192,100,192,1,
-199,65,225,162,11,108,192,224,28,26,128,123,193,158,128,30,224,19,0,231,
-247,5,224,75,13,239,131,4,224,36,16,238,10,1,1,95,52,228,26,0,
-64,0,225,15,2,226,199,9,226,50,8,97,232,224,97,6,242,109,5,224,
-30,8,232,102,8,224,89,2,192,234,221,32,194,67,176,62,118,92,248,131,
-1,192,28,95,228,235,62,2,231,55,3,139,138,128,10,171,143,96,94,64,
-50,178,171,171,137,224,84,5,192,90,224,199,16,239,63,1,192,17,226,60,
-23,224,0,1,192,49,129,245,224,83,3,225,148,11,225,252,0,225,26,0,
-225,93,6,224,64,1,237,169,0,225,87,6,225,84,5,102,27,2,49,53,
-52,64,191,1,95,56,160,69,225,69,9,234,36,1,145,201,103,146,124,204,
-224,152,0,224,21,2,173,173,185,136,167,69,142,250,128,14,153,160,89,90,
-180,227,70,39,242,59,0,191,181,227,250,12,131,243,121,211,203,242,166,86,
-64,92,112,139,253,80,7,97,8,225,53,1,193,139,232,8,7,128,179,64,
-23,134,82,224,31,6,173,97,64,231,232,3,0,251,21,3,241,185,6,233,
-127,4,246,37,8,96,33,96,90,241,122,3,231,204,0,182,60,234,34,2,
-246,13,1,64,7,172,216,199,62,65,50,1,49,52,154,150,227,177,0,247,
-83,0,213,140,229,161,1,225,27,2,186,179,224,182,0,224,50,0,160,150,
-224,13,0,131,114,136,220,161,142,250,193,3,2,95,49,49,233,124,2,99,
-106,0,54,162,59,87,116,1,32,95,85,249,4,95,51,50,52,32,162,74,
-64,62,1,55,52,128,23,225,124,0,64,139,192,107,3,95,56,52,53,233,
-229,2,1,36,120,105,228,65,0,0,54,97,0,98,102,1,75,52,96,2,
-131,29,64,27,137,74,242,143,16,118,61,224,213,1,1,53,52,96,57,224,
-240,2,129,112,64,73,233,122,31,126,114,192,80,239,34,51,236,16,3,64,
-128,137,120,3,95,56,49,48,124,185,192,82,224,1,3,230,41,2,224,114,
-0,224,1,7,232,154,1,224,37,17,224,35,4,64,197,197,3,64,135,243,
-17,7,131,222,64,25,137,233,0,85,65,127,161,136,131,248,64,27,189,213,
-108,34,106,3,125,69,3,58,49,53,51,131,233,225,217,1,3,97,100,105,
-99,187,190,64,34,125,241,0,73,162,218,141,7,195,74,140,107,91,210,91,
-156,0,52,132,18,131,25,242,44,0,65,40,96,171,100,89,224,222,2,130,
-223,65,98,227,114,3,68,140,224,48,16,160,46,100,213,225,15,0,64,38,
-240,151,17,0,51,131,4,233,97,0,227,162,3,232,251,8,67,134,233,249,
-5,192,126,238,112,1,175,226,160,154,228,145,4,205,121,224,32,16,173,155,
-134,133,228,208,8,135,83,193,102,225,100,1,236,249,0,230,240,2,236,191,
-0,98,244,161,230,224,58,8,165,7,0,75,64,231,224,58,9,162,233,224,
-236,0,224,174,8,193,24,224,87,8,192,24,156,252,162,21,225,78,4,224,
-159,2,133,96,197,196,228,171,0,138,168,224,151,8,99,67,116,178,69,142,
-3,95,49,52,48,71,111,110,183,0,56,92,99,1,64,64,226,168,1,14,
-98,97,100,32,115,121,110,111,110,121,109,32,117,115,101,142,161,96,0,156,
-158,128,8,225,227,4,143,80,147,212,66,59,0,54,229,187,0,133,132,160,
-158,194,34,225,34,0,148,80,0,85,250,213,0,236,248,8,172,242,130,47,
-97,73,203,193,226,53,3,224,2,0,224,45,8,225,119,4,236,28,0,134,
-32,236,22,1,160,197,224,51,10,162,90,64,29,224,46,0,231,89,15,130,
-81,225,254,2,226,110,9,225,184,3,97,144,3,95,49,53,49,246,125,6,
-240,186,0,194,1,74,110,128,5,0,95,122,168,226,146,2,68,31,97,144,
-224,119,16,192,244,224,119,4,224,48,5,225,62,0,162,176,225,65,18,224,
-169,5,227,146,18,195,145,240,78,8,232,31,5,230,86,0,64,12,225,195,
-1,224,78,8,128,196,224,222,10,192,24,0,85,219,177,227,86,21,254,127,
-5,224,197,0,224,47,11,192,30,242,73,2,116,7,242,217,1,224,69,4,
-224,42,0,192,44,192,193,97,81,96,16,174,75,227,164,0,184,4,193,255,
-224,69,5,192,49,242,232,0,230,31,8,227,140,0,224,169,6,129,225,195,
-65,232,234,1,160,136,227,91,7,129,196,192,38,160,28,161,49,249,182,3,
-128,129,148,181,152,64,235,70,0,224,66,4,65,179,233,245,1,0,52,81,
-4,193,150,236,140,0,204,139,128,61,225,4,1,160,81,236,162,12,64,67,
-235,39,26,235,141,7,0,75,135,112,137,47,0,85,71,188,0,90,224,1,
-0,0,75,233,201,0,64,34,137,8,137,150,233,148,6,13,80,114,105,109,
-105,116,105,118,101,115,46,84,121,112,133,17,64,50,136,186,129,237,195,172,
-4,32,95,51,52,55,229,28,1,3,95,49,53,50,96,198,69,31,146,237,
-95,130,103,89,147,176,164,84,225,169,0,225,230,6,128,83,231,129,2,237,
-46,1,1,49,53,128,6,135,147,0,51,156,173,193,238,229,162,5,101,250,
-67,79,129,153,64,58,66,59,96,40,65,109,136,192,126,180,0,53,112,159,
-129,110,1,52,52,90,47,110,125,128,14,0,56,65,119,255,30,1,198,144,
-98,124,129,84,238,62,8,64,241,137,65,161,91,139,66,64,22,211,32,0,
-83,227,245,0,254,223,3,228,220,0,0,58,128,173,97,192,96,98,98,31,
-0,54,107,82,128,29,137,79,106,234,160,196,75,91,64,25,136,197,226,200,
-0,96,231,0,49,66,67,171,214,0,49,142,115,3,95,49,51,57,163,147,
-229,90,0,1,55,54,139,213,101,186,64,75,0,54,169,181,102,131,228,173,
-18,128,72,224,32,18,165,148,232,210,25,224,33,19,203,129,228,191,8,224,
-25,0,0,85,232,194,17,128,95,0,85,224,60,0,161,107,192,237,224,51,
-12,214,43,98,9,182,170,224,45,5,232,239,13,132,164,230,11,10,192,24,
-198,11,192,7,224,40,8,246,131,5,66,47,74,176,195,119,224,12,2,4,
-95,49,51,56,52,105,53,1,49,53,112,236,247,153,5,224,176,0,253,103,
-2,104,125,224,199,0,167,228,225,112,12,225,145,23,235,18,8,199,33,160,
-31,100,6,96,194,128,22,64,118,64,51,192,186,0,50,68,253,224,177,5,
-133,16,165,15,225,108,1,231,87,148,226,107,9,64,28,66,106,128,230,102,
-18,192,205,80,195,143,155,204,14,198,131,218,62,140,204,224,253,3,128,0,
-101,40,227,84,4,113,115,192,101,113,245,192,53,224,61,2,224,174,4,134,
-79,109,93,121,201,230,77,8,67,245,134,58,98,82,70,165,66,98,0,53,
-132,91,166,49,68,210,96,19,64,102,0,50,128,26,166,25,70,72,85,186,
-1,49,53,67,47,64,24,184,76,77,107,86,223,1,55,32,235,120,2,1,
-91,93,70,89,64,37,216,91,131,153,192,111,174,107,235,75,0,235,81,4,
-96,44,224,251,2,64,27,160,10,0,83,98,109,95,38,67,25,64,174,211,
-19,160,9,128,8,0,54,96,79,81,97,68,9,162,135,92,199,236,33,8,
-8,99,111,109,112,111,115,101,83,101,78,207,161,86,65,30,78,160,0,53,
-150,214,166,87,64,21,108,144,0,54,136,51,176,252,70,54,136,191,187,66,
-2,58,49,53,68,127,133,170,224,149,23,128,143,224,142,1,7,104,97,115,
-70,105,101,108,100,128,140,4,95,49,53,48,48,97,48,64,121,224,81,45,
-2,115,101,116,224,81,13,178,148,163,190,69,17,224,64,3,1,95,55,114,
-156,224,71,1,10,114,101,99,67,111,110,69,114,114,111,114,161,218,1,49,
-54,230,144,3,162,232,161,175,132,4,0,51,164,191,70,151,252,2,6,26,
-67,111,110,116,114,111,108,46,69,120,99,101,112,116,105,111,110,46,73,110,
-116,101,114,110,97,108,46,193,136,128,88,64,62,101,7,0,67,180,172,252,
-78,9,4,44,32,97,116,32,188,80,136,83,178,52,96,165,130,244,133,13,
-165,237,224,160,3,71,59,144,70,1,95,57,160,176,0,57,69,120,147,143,
-225,102,1,193,101,224,194,2,1,104,97,97,10,216,80,64,108,210,130,1,
-80,32,103,58,0,85,129,106,131,66,234,132,0,247,226,3,65,144,0,55,
-194,58,132,214,234,254,2,172,226,224,21,8,64,191,228,148,1,64,190,232,
-171,2,0,95,212,186,224,56,4,196,203,96,62,235,85,2,139,59,224,29,
-7,128,100,64,2,139,51,239,186,3,132,172,89,211,1,48,51,67,131,235,
-74,4,244,58,7,129,136,67,169,102,18,200,233,165,213,211,142,107,0,0,
-90,161,161,0,48,254,141,6,226,209,7,7,78,101,115,116,101,100,32,102,
-66,213,11,115,32,110,111,116,32,97,108,108,111,119,101,162,226,96,0,241,
-8,13,198,50,240,136,4,96,22,0,32,71,58,224,50,5,160,162,224,147,
-19,226,138,9,4,101,120,116,114,97,128,154,2,40,115,41,130,148,3,66,
-32,95,55,67,43,132,69,131,87,192,145,234,151,4,234,12,5,193,189,64,
-36,234,135,4,224,22,1,118,114,64,16,102,42,131,199,180,232,249,58,0,
-64,26,247,160,1,254,229,7,160,0,66,133,224,129,1,1,49,51,85,230,
-0,52,179,24,231,179,0,0,49,235,7,0,98,212,212,100,230,187,0,0,
-85,104,189,229,19,16,171,56,1,53,54,74,170,100,39,64,21,203,55,64,
-71,108,68,75,21,224,242,5,235,165,4,224,26,6,99,164,84,92,1,53,
-48,164,108,99,173,197,186,160,53,64,255,227,114,14,226,131,1,200,206,163,
-7,227,94,5,165,102,226,6,7,167,92,229,37,4,11,111,114,100,32,119,
-105,108,100,99,97,114,100,226,157,9,138,115,224,193,1,84,82,200,55,231,
-240,0,0,54,107,147,160,212,224,254,0,160,219,225,176,4,225,143,1,0,
-48,134,115,67,73,153,172,64,3,1,75,51,64,181,184,134,64,48,107,244,
-64,60,108,15,108,22,64,25,245,32,1,237,160,5,0,52,128,252,232,201,
-0,225,72,5,164,10,96,140,98,43,228,69,3,224,39,3,64,32,135,165,
-226,204,6,247,187,0,64,143,184,5,245,162,9,0,52,139,174,136,39,144,
-135,3,95,49,50,57,161,240,224,78,1,2,95,49,52,147,183,227,48,5,
-64,94,200,249,0,90,66,166,96,17,197,169,237,168,5,64,144,64,29,197,
-177,168,98,184,221,141,235,0,48,130,249,231,139,42,0,103,231,139,14,0,
-48,131,27,0,83,161,98,119,44,150,193,64,151,69,95,253,78,0,109,236,
-70,167,96,117,102,186,228,82,0,230,172,19,4,80,114,111,120,121,165,32,
-224,156,3,64,125,195,131,97,77,68,29,98,226,64,66,98,98,192,248,96,
-81,120,223,240,81,4,1,66,64,136,15,96,45,111,26,4,52,57,54,32,
-95,111,18,64,21,218,252,164,161,1,52,57,138,150,1,52,57,100,1,64,
-43,128,31,64,2,91,1,2,95,49,50,69,45,112,237,96,36,160,155,2,
-80,32,35,106,200,0,80,128,24,129,191,239,13,13,0,52,69,222,0,52,
-97,37,239,13,1,226,221,9,208,108,173,65,130,228,231,26,3,85,239,229,
-93,1,101,71,109,160,104,151,0,52,93,0,224,88,1,203,244,237,121,1,
-224,2,3,128,24,242,135,4,96,2,165,58,65,121,81,130,239,202,15,64,
-205,199,211,247,79,1,245,77,1,224,5,0,102,174,227,161,3,64,19,0,
-83,128,154,238,139,13,228,246,0,128,24,128,127,166,143,220,33,67,88,252,
-242,2,130,41,0,52,99,210,169,74,100,73,96,21,75,225,64,72,0,80,
-64,69,97,101,160,75,0,51,67,176,0,64,96,20,224,0,0,193,89,161,
-92,65,38,64,66,129,88,133,14,115,125,180,173,237,75,1,177,226,224,68,
-7,148,98,225,1,4,224,172,3,224,11,3,64,234,177,22,64,179,192,159,
-224,152,0,130,2,244,115,0,215,233,135,76,1,49,52,71,122,230,152,3,
-64,42,254,30,7,224,164,3,248,22,0,66,187,196,93,226,142,13,129,232,
-226,116,0,232,172,3,96,190,0,57,64,45,71,147,135,112,192,44,224,244,
-2,166,72,224,56,2,64,87,161,210,226,28,2,96,140,173,198,1,51,54,
-224,138,1,1,56,57,102,55,0,57,135,186,96,112,224,175,24,194,22,128,
-103,235,188,0,1,52,56,196,79,130,228,64,83,230,200,1,64,92,228,125,
-1,224,96,15,193,151,225,148,18,251,169,5,64,118,96,133,225,23,28,130,
-79,225,23,7,66,132,132,151,182,249,64,84,98,208,96,188,64,33,211,170,
-224,185,25,192,35,129,32,162,30,231,45,2,154,200,104,179,118,81,97,121,
-128,134,133,62,159,30,210,91,76,163,129,65,128,82,255,7,4,96,70,3,
-10,65,32,90,64,46,64,14,173,0,253,161,14,96,105,131,249,1,49,56,
-144,20,69,15,240,228,2,136,9,100,127,228,135,2,0,85,228,44,7,0,
-56,230,21,4,2,75,105,110,235,143,0,64,132,176,96,118,79,100,220,131,
-238,168,86,227,222,0,96,9,66,57,164,66,0,53,95,83,0,95,127,218,
-224,6,6,106,100,64,3,100,223,192,76,0,83,123,130,1,53,52,67,225,
-192,32,224,106,19,109,71,224,108,1,80,224,96,114,224,108,31,0,82,224,
-108,26,65,70,96,100,0,83,172,89,224,110,6,160,103,224,117,2,224,106,
-9,224,63,3,224,113,2,173,139,151,12,192,147,224,40,0,224,108,18,224,
-115,2,128,67,224,61,13,160,106,3,95,51,50,50,225,219,2,31,92,34,
-115,114,99,47,77,105,99,114,111,72,115,47,84,67,77,111,110,97,100,46,
-104,115,92,34,44,50,51,55,58,50,0,51,237,136,2,132,249,0,57,231,
-143,2,1,52,56,67,40,224,13,1,67,120,224,13,1,231,185,2,0,53,
-121,57,160,11,224,65,1,66,77,197,64,74,9,1,53,55,130,230,172,143,
-132,35,231,197,1,96,61,99,183,108,191,130,222,64,47,178,152,224,47,10,
-224,57,2,72,27,224,57,0,224,64,6,242,195,1,224,54,7,224,152,1,
-224,53,8,0,55,242,26,0,224,2,0,131,184,241,70,2,228,225,2,231,
-204,5,84,113,98,31,128,27,239,215,1,224,50,4,71,0,229,14,4,64,
-55,229,253,11,65,153,129,60,67,193,164,202,72,243,196,172,254,161,0,232,
-203,4,133,17,96,112,64,0,192,44,130,230,249,240,5,160,59,196,230,233,
-10,0,160,94,130,186,68,16,128,46,224,96,4,96,17,224,137,1,164,158,
-224,38,4,96,35,224,75,6,192,37,193,20,96,150,97,35,225,20,10,241,
-57,6,224,112,2,156,186,128,85,252,81,1,230,121,11,225,160,6,0,55,
-224,71,5,192,73,96,26,201,67,224,100,80,192,14,162,135,224,17,0,224,
-15,0,224,133,3,224,47,2,159,72,164,170,226,128,31,64,115,224,104,1,
-224,141,3,224,143,0,224,19,2,191,171,226,13,6,98,68,128,32,226,24,
-2,129,175,131,12,0,64,162,103,224,73,1,234,199,8,226,108,2,224,37,
-1,224,131,18,224,70,0,195,112,192,136,224,119,0,134,216,0,53,99,185,
-68,40,254,32,1,226,87,10,226,93,12,231,222,7,231,228,0,98,115,242,
-87,0,126,68,64,74,248,61,11,236,82,0,224,189,2,224,21,15,160,132,
-248,105,6,240,48,1,128,0,254,172,2,252,220,8,226,0,57,101,155,68,
-81,228,224,0,226,212,10,196,57,128,12,224,94,6,160,222,192,86,66,173,
-120,115,0,52,243,19,8,129,202,164,193,96,119,0,54,136,97,254,244,11,
-12,99,97,110,110,111,116,45,104,97,112,112,101,110,102,156,64,48,246,24,
-0,237,144,1,64,13,224,144,3,64,95,211,99,192,1,162,86,197,6,226,
-60,0,192,34,67,181,224,46,0,237,142,7,224,178,1,161,23,226,35,6,
-236,186,11,0,55,65,177,64,38,0,79,236,114,5,229,252,30,224,103,0,
-75,227,74,150,0,50,159,21,96,93,141,215,64,27,85,204,74,124,75,191,
-0,95,244,30,2,225,137,0,0,53,240,79,4,5,83,117,98,115,117,109,
-119,185,11,32,99,104,101,99,107,32,102,97,105,108,101,201,243,226,93,7,
-65,111,138,2,225,17,5,3,95,49,48,53,224,41,0,77,47,131,15,241,
-213,6,95,171,96,66,135,247,2,75,32,89,97,120,65,49,134,162,252,169,
-0,134,95,64,218,166,16,254,131,4,225,112,1,228,59,7,97,214,84,120,
-161,41,226,3,6,244,41,0,64,60,238,96,8,116,65,129,172,230,74,7,
-71,219,184,182,224,0,1,225,249,3,224,136,0,225,173,2,188,233,0,67,
-232,14,0,197,10,230,221,0,229,69,1,226,47,7,195,147,226,85,3,226,
-129,4,192,36,128,177,224,179,7,228,2,0,164,225,224,191,3,242,133,0,
-160,168,225,14,40,164,150,68,133,76,214,224,0,1,224,42,5,0,80,98,
-244,128,31,65,244,137,216,64,80,232,155,1,108,205,229,141,11,228,91,2,
-230,31,8,163,45,194,32,232,82,1,160,174,224,197,0,240,239,1,225,37,
-0,224,27,10,227,125,0,162,107,230,1,7,227,156,8,68,25,232,117,1,
-129,3,225,39,8,207,210,225,151,6,226,160,31,228,27,0,65,57,180,86,
-163,28,227,118,16,84,227,1,52,54,84,181,1,49,52,161,120,225,192,13,
-65,52,96,159,129,245,166,190,130,50,166,90,184,44,160,71,160,13,230,134,
-1,64,149,207,240,225,83,4,118,104,224,115,8,224,186,0,158,123,249,122,
-3,160,117,98,155,181,1,160,14,2,79,32,35,86,6,97,9,156,16,0,
-50,249,115,0,0,58,128,232,239,182,20,182,110,227,168,1,170,105,228,100,
-0,64,42,118,126,225,38,0,1,52,53,182,119,0,51,69,69,224,58,0,
-225,239,2,96,121,245,32,0,2,54,54,32,64,15,247,118,1,66,217,230,
-81,1,129,98,97,111,132,197,134,96,226,111,0,226,114,0,199,122,192,204,
-224,50,2,132,248,228,120,1,227,41,6,171,67,224,172,1,224,60,10,227,
-237,1,192,30,228,181,8,224,34,9,135,30,160,77,167,25,232,12,5,192,
-231,231,53,4,227,173,2,225,125,4,161,66,226,129,1,224,101,3,235,58,
-8,225,61,0,225,62,2,85,170,0,54,188,157,224,24,3,142,241,102,219,
-0,54,252,189,1,226,124,0,132,95,224,133,11,224,18,11,224,23,0,234,
-156,8,224,51,2,160,182,133,8,104,110,224,13,5,224,56,12,224,57,3,
-235,60,3,228,87,1,228,119,6,192,184,160,58,134,16,64,9,226,192,0,
-224,103,5,129,23,224,42,1,197,35,193,28,241,226,1,225,30,11,225,235,
-2,128,18,162,88,228,251,2,225,183,1,225,227,13,96,195,227,133,8,247,
-150,0,167,214,226,239,1,227,6,4,96,35,224,17,9,225,52,2,65,165,
-241,161,4,227,9,2,139,146,72,217,129,73,253,204,5,138,54,6,32,117,
-110,105,102,121,32,136,216,228,117,4,1,49,50,113,64,224,55,8,3,32,
-97,110,100,128,47,192,34,224,236,3,162,3,226,66,9,68,17,0,54,234,
-147,6,229,180,5,0,52,129,227,193,76,64,16,128,93,64,70,69,21,64,
-66,217,49,64,19,153,15,133,60,1,49,52,116,142,64,34,137,137,250,28,
-3,10,105,109,105,116,105,118,101,115,46,126,34,112,16,64,42,250,19,0,
-135,246,224,9,0,197,207,64,38,231,155,1,230,101,12,0,52,89,201,235,
-44,6,134,224,64,142,0,48,162,201,229,38,7,246,110,1,226,86,10,228,
-58,32,235,204,7,133,167,0,55,235,67,6,160,39,229,226,6,66,248,107,
-8,110,2,96,200,139,16,226,59,33,4,121,99,108,105,99,226,53,10,110,
-92,116,213,220,173,226,63,9,0,61,226,61,17,229,96,5,233,125,7,225,
-113,1,192,216,0,67,129,112,224,193,0,192,192,161,112,224,132,0,161,122,
-247,140,3,227,147,18,225,6,8,126,140,128,141,163,27,1,52,53,114,113,
-224,217,6,5,101,114,114,111,114,58,161,22,64,113,65,63,126,182,2,67,
-32,80,224,40,2,3,116,121,112,101,64,36,224,17,1,0,107,214,80,224,
-18,1,3,115,111,114,116,224,18,6,4,114,101,97,108,109,188,143,64,128,
-236,112,46,0,53,162,223,66,46,153,28,0,53,140,115,235,147,5,226,150,
-3,129,201,226,78,1,167,67,234,122,1,224,39,21,202,163,193,180,234,165,
-0,224,36,4,129,170,231,135,17,98,29,130,203,128,107,205,208,130,199,250,
-156,1,230,221,3,140,13,0,90,64,208,0,90,64,49,192,25,224,100,8,
-237,42,2,0,75,226,8,1,224,175,1,224,215,11,231,50,3,224,79,7,
-224,27,2,172,242,64,29,128,34,160,25,64,106,128,11,73,201,0,57,218,
-74,97,164,148,186,65,170,164,239,0,51,64,11,68,239,0,48,118,45,0,
-49,66,223,0,51,125,72,96,40,133,24,0,75,113,106,228,88,0,228,153,
-0,164,84,163,85,236,58,7,200,49,140,54,148,175,99,35,235,186,9,225,
-82,1,231,174,3,237,34,5,67,118,234,208,0,2,49,50,53,163,229,64,
-45,141,231,237,105,1,225,161,6,130,123,235,254,6,192,63,160,232,175,104,
-193,136,0,95,108,176,236,5,24,107,182,236,246,4,237,191,9,242,178,2,
-235,239,12,64,0,224,53,3,64,141,134,73,4,83,32,85,32,95,100,155,
-1,90,32,76,198,0,89,249,35,3,129,143,97,127,229,231,3,231,202,3,
-226,86,6,192,109,226,127,0,224,46,21,235,209,0,133,137,224,47,2,224,
-44,10,225,243,1,168,84,227,138,49,162,187,96,11,160,238,227,42,0,160,
-92,160,135,224,13,0,232,194,0,225,6,0,224,53,2,224,175,2,140,138,
-0,39,241,194,0,97,189,241,186,9,96,59,226,217,3,226,230,4,127,187,
-129,209,193,75,64,30,129,37,98,59,2,49,52,49,70,225,3,95,53,54,
-57,148,119,0,90,64,49,222,214,226,19,4,224,35,1,194,171,166,122,244,
-133,4,128,121,66,49,0,48,160,172,64,11,194,118,96,145,144,111,104,225,
-192,10,178,4,242,254,11,230,134,3,96,171,97,10,160,211,224,57,0,130,
-167,0,56,146,250,96,57,0,89,131,152,149,116,226,130,3,128,161,247,20,
-1,193,21,161,19,129,190,107,175,100,109,2,49,49,53,235,33,1,162,98,
-197,102,96,0,227,34,9,229,11,11,226,53,2,96,180,242,51,0,230,15,
-18,128,114,224,77,10,192,24,192,76,0,52,65,23,224,17,1,94,63,94,
-22,128,154,192,147,226,109,1,225,5,1,226,243,5,192,68,227,63,1,224,
-35,8,243,104,16,230,60,10,227,60,11,224,37,1,229,61,1,65,206,144,
-224,128,175,64,15,193,29,128,69,98,204,165,30,227,245,2,128,199,224,75,
-6,133,90,231,0,9,97,183,0,55,96,28,5,67,32,95,54,55,54,227,
-75,4,96,125,0,51,73,142,233,174,8,3,115,117,98,115,108,37,8,109,
-112,108,101,109,101,110,116,101,235,253,0,80,124,1,49,50,157,211,96,0,
-69,16,203,51,179,63,67,35,64,22,234,245,1,1,80,32,129,7,0,80,
-134,224,201,147,1,80,32,97,215,159,213,65,209,232,153,1,98,150,129,188,
-64,78,228,73,5,129,201,128,16,176,73,245,47,3,225,203,0,192,41,225,
-209,6,162,58,228,143,1,227,36,2,226,41,16,165,111,228,243,7,224,40,
-9,234,173,6,225,195,8,114,23,229,76,6,193,179,160,10,217,1,160,167,
-224,43,3,224,223,1,224,226,20,230,30,0,224,227,22,224,153,5,230,38,
-0,224,143,4,64,141,160,43,174,173,64,13,65,9,171,25,228,13,8,224,
-93,2,228,19,12,224,242,25,225,89,1,224,64,5,193,186,128,30,160,65,
-224,13,12,224,58,8,165,39,224,44,13,173,195,194,102,197,28,96,194,201,
-4,96,155,195,233,160,0,225,142,4,193,145,224,98,0,228,73,12,231,26,
-3,193,151,224,49,0,232,32,28,224,26,1,226,132,2,225,201,4,163,228,
-128,25,161,101,231,110,4,224,19,5,228,221,30,224,179,0,229,192,1,224,
-236,17,228,206,0,231,239,0,224,53,27,225,93,0,192,29,229,79,14,225,
-199,8,225,21,0,129,186,129,194,64,53,132,36,231,45,7,225,7,4,227,
-32,1,192,56,225,25,3,128,36,227,244,1,160,105,64,146,250,90,5,128,
-31,130,5,224,27,6,196,8,151,161,200,221,236,184,2,224,4,1,128,116,
-229,152,14,9,102,114,101,101,84,121,86,97,114,115,174,113,229,144,7,97,
-50,134,88,69,71,96,19,2,85,32,65,101,100,100,65,0,75,102,108,151,
-175,172,111,72,76,2,10,65,32,96,32,64,14,142,33,157,190,253,196,1,
-128,246,128,180,118,190,0,53,166,124,2,54,32,35,118,140,246,152,7,7,
-64,95,53,55,48,32,95,50,92,198,162,13,224,67,11,233,0,4,2,95,
-50,54,119,186,64,24,96,85,1,35,49,110,206,64,150,0,54,134,30,75,
-134,3,95,50,51,51,192,38,4,64,95,50,51,53,224,12,2,0,57,76,
-133,1,50,56,183,251,1,50,32,121,123,64,27,64,6,108,85,64,8,0,
-52,224,23,11,2,50,55,55,224,72,2,0,55,132,212,64,12,64,126,253,
-91,0,98,33,227,126,1,227,251,5,194,208,143,137,245,163,0,242,254,1,
-64,8,135,243,64,7,66,142,161,152,193,188,96,85,74,39,1,54,55,161,
-60,224,64,2,64,50,0,50,224,50,0,137,8,145,129,0,50,90,84,129,
-233,128,0,224,114,90,88,119,224,114,3,224,43,6,224,15,7,65,69,141,
-200,1,95,50,98,25,2,57,52,32,101,149,128,9,5,49,49,49,52,49,
-49,173,99,65,145,109,99,132,52,180,57,224,196,13,196,66,130,60,160,191,
-64,206,64,123,195,18,224,13,1,224,192,17,128,81,64,125,136,208,1,95,
-56,88,211,64,44,212,126,0,51,98,86,71,193,64,24,249,246,0,0,53,
-82,120,99,180,5,54,32,64,95,57,48,160,196,64,45,224,57,0,114,154,
-160,57,0,51,131,113,196,175,78,71,135,60,64,171,199,110,192,7,142,103,
-250,197,2,224,32,5,254,233,0,103,144,0,51,148,115,96,0,64,104,177,
-237,132,36,0,50,138,105,83,30,186,159,64,34,0,54,233,140,1,104,228,
-137,141,64,36,96,22,243,142,8,178,95,250,103,12,79,63,230,223,1,96,
-39,196,250,1,95,54,90,229,101,76,0,90,149,233,200,110,196,22,224,101,
-4,96,7,133,116,248,13,4,246,35,1,65,86,242,226,3,237,147,0,0,
-85,111,142,224,28,14,96,219,130,133,132,139,113,98,161,104,209,103,66,42,
-209,103,237,146,3,197,179,180,127,128,237,64,80,130,173,7,95,56,49,48,
-32,75,32,85,230,218,0,224,1,5,141,125,160,0,224,34,13,233,0,2,
-96,0,64,158,161,208,64,102,130,150,129,60,132,224,67,8,64,25,130,163,
-230,40,1,2,100,105,99,84,72,64,26,245,0,1,252,158,9,160,134,241,
-22,5,97,142,65,118,102,84,64,13,245,231,0,64,7,64,59,117,8,252,
-136,9,64,148,1,10,65,124,174,0,54,101,212,64,19,188,34,224,123,2,
-99,138,0,83,82,146,135,250,130,100,225,229,3,128,148,69,229,98,66,2,
-32,95,51,93,249,0,64,193,159,119,179,193,159,254,87,5,115,44,2,32,
-95,55,101,195,142,199,96,44,0,50,68,97,192,47,0,52,215,237,65,4,
-166,250,81,196,224,1,3,0,75,236,226,1,128,42,0,54,225,227,5,66,
-99,225,194,27,224,35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,
-20,11,224,17,8,224,14,5,224,11,2,192,8,96,5,226,158,2,224,0,
-2,65,44,132,61,3,95,57,49,50,180,224,64,20,131,118,0,85,65,90,
-160,2,96,59,64,26,131,64,0,67,144,176,231,79,1,64,109,234,85,5,
-136,211,239,174,18,164,85,228,130,3,224,33,7,208,152,234,91,9,240,178,
-4,249,108,5,216,136,132,172,0,80,64,252,226,118,2,229,39,15,228,193,
-10,184,184,227,115,5,96,0,0,85,224,145,0,64,98,1,95,49,72,227,
-102,234,233,57,1,229,199,0,96,70,114,199,244,242,3,64,65,224,40,10,
-114,220,192,146,64,0,224,11,2,225,4,8,129,98,68,196,115,9,224,72,
-2,70,222,64,57,192,198,224,78,0,235,217,1,225,176,9,225,175,23,204,
-103,237,175,8,192,24,139,127,179,128,128,12,226,32,18,225,219,16,225,218,
-2,83,240,225,124,5,238,170,11,224,47,19,96,0,224,50,13,225,130,0,
-226,12,11,224,24,14,129,178,224,98,2,247,46,3,224,132,17,248,64,4,
-67,69,252,187,1,1,80,32,161,199,145,113,65,178,3,10,65,32,80,72,
-207,66,12,251,17,0,71,244,225,104,1,65,193,177,188,66,91,231,35,20,
-248,139,3,225,10,0,2,95,49,51,72,138,64,30,96,125,64,72,165,255,
-231,27,13,231,19,0,224,22,5,224,1,1,229,76,127,228,234,6,64,216,
-134,59,129,31,0,52,145,15,73,254,2,49,50,57,225,2,2,64,40,0,
-54,228,247,4,230,90,0,64,26,133,39,130,51,226,71,4,1,95,51,121,
-145,0,85,214,126,224,32,15,196,172,96,38,129,196,224,41,3,99,248,160,
-41,227,75,2,128,33,68,153,0,49,74,222,4,95,49,49,55,57,232,61,
-2,1,61,62,206,92,224,22,4,255,84,2,160,33,224,91,5,2,95,49,
-57,98,230,177,49,225,43,3,171,247,1,52,56,103,243,97,44,111,37,96,
-132,96,7,77,143,75,253,89,133,99,26,224,6,3,224,33,0,105,153,140,
-37,224,33,20,160,26,224,40,3,224,33,13,224,40,3,3,64,95,51,48,
-109,244,98,213,64,182,134,150,0,75,98,11,254,60,17,98,39,0,83,64,
-208,96,39,111,186,128,10,239,189,5,22,97,115,115,101,114,116,84,67,77,
-111,100,101,58,32,101,120,112,101,99,116,101,100,61,255,81,13,133,120,101,
-112,0,49,134,2,171,231,0,79,96,18,0,49,128,8,2,51,57,56,192,
-8,0,57,248,71,2,224,122,8,4,44,32,103,111,116,128,105,160,90,160,
-85,225,162,1,132,60,1,75,51,68,35,64,94,108,55,3,49,57,32,75,
-190,202,2,95,51,48,224,81,3,5,84,67,69,120,112,114,128,81,224,25,
-7,0,84,190,235,224,26,10,0,75,222,244,224,26,9,0,83,222,252,64,
-163,0,50,111,224,96,163,92,78,224,12,0,64,156,132,192,122,41,0,50,
-135,88,166,223,0,48,73,238,0,56,67,166,135,189,127,197,165,31,0,95,
-124,153,0,56,76,132,225,30,9,15,77,117,108,116,105,112,108,121,32,100,
-101,102,105,110,101,100,209,93,0,56,145,162,0,95,108,50,64,123,0,48,
-182,164,1,56,54,110,27,0,48,205,200,64,106,67,252,68,35,64,23,132,
-27,64,131,112,234,249,153,0,194,139,132,94,141,218,128,17,228,124,1,249,
-165,0,224,2,1,194,102,200,27,64,16,96,20,194,185,163,173,0,49,128,
-125,0,54,192,149,226,178,15,226,207,15,133,205,128,134,224,31,11,242,101,
-2,235,180,8,64,31,141,100,179,43,232,250,8,101,42,79,194,162,80,0,
-55,111,19,1,51,57,160,61,81,185,0,64,96,20,224,100,20,0,57,192,
-100,140,165,231,77,1,224,183,18,172,41,129,65,0,66,112,75,224,185,12,
-224,214,14,115,195,163,160,224,140,10,232,29,9,64,25,114,75,0,48,204,
-69,65,150,171,20,64,40,228,139,0,67,191,163,189,98,193,133,176,1,52,
-51,249,141,4,2,99,99,32,227,30,3,210,241,96,92,129,69,129,74,1,
-52,48,109,158,128,23,2,49,52,48,99,67,128,13,178,219,192,12,100,1,
-96,12,64,152,133,157,242,49,1,218,149,170,124,201,154,96,255,3,49,52,
-48,50,241,101,0,177,85,160,6,64,74,133,49,77,80,70,237,98,108,64,
-22,132,92,242,82,1,224,94,2,96,85,244,42,1,224,77,4,132,134,1,
-75,50,81,163,64,15,131,249,1,75,50,148,170,97,53,101,159,64,104,64,
-15,212,201,237,194,4,64,24,231,171,3,0,54,114,236,136,198,1,51,57,
-238,74,2,64,40,0,54,163,223,239,201,14,239,195,1,224,25,7,192,1,
-232,176,101,232,150,5,64,192,244,167,0,3,95,49,51,55,72,136,153,157,
-2,51,55,52,93,34,98,201,0,73,70,50,98,125,92,18,1,49,51,103,
-181,0,79,129,29,1,57,48,134,126,113,48,128,33,130,206,135,52,72,218,
-134,102,147,42,99,180,102,41,64,48,117,209,232,47,12,226,188,0,64,50,
-130,35,224,39,12,166,30,64,37,202,204,224,202,23,66,158,0,79,64,180,
-224,209,2,132,68,0,67,96,24,128,22,132,106,119,141,96,190,224,52,11,
-122,92,224,52,3,113,99,224,52,21,0,56,173,158,224,52,0,64,16,224,
-52,24,100,41,224,52,3,132,173,224,52,1,128,27,160,52,0,56,65,116,
-224,45,3,129,139,86,227,225,139,1,130,42,225,193,15,97,81,236,4,1,
-96,36,97,182,1,51,56,129,82,132,134,224,12,4,96,141,0,58,128,103,
-160,43,0,55,64,59,65,121,195,76,0,56,87,109,96,6,64,5,129,70,
-116,94,96,164,128,62,227,123,0,128,251,113,153,114,91,64,28,0,54,226,
-62,2,64,15,165,35,108,255,64,15,194,94,193,57,131,232,65,17,226,66,
-15,0,45,74,154,64,35,130,64,224,35,12,1,78,97,147,29,97,120,224,
-36,15,5,83,121,109,98,111,108,160,39,129,47,224,39,12,8,67,111,110,
-115,116,114,97,105,110,160,83,66,54,227,18,26,233,9,0,64,50,129,82,
-224,39,12,169,76,64,37,181,205,65,60,161,104,64,21,161,66,1,53,50,
-235,171,3,6,98,117,105,108,116,105,110,64,96,76,4,64,3,64,43,213,
-213,108,51,141,234,67,78,64,20,166,223,0,57,64,180,218,33,1,51,54,
-101,36,69,156,1,49,51,88,97,132,114,224,21,9,64,70,181,4,75,227,
-133,230,0,90,69,104,224,9,0,176,152,0,50,73,163,98,90,64,60,167,
-70,96,7,96,92,139,129,128,85,64,84,129,196,77,6,240,86,8,0,83,
-168,98,255,87,3,73,79,2,49,56,55,201,244,135,181,237,55,6,231,92,
-4,5,103,101,116,73,100,101,97,186,182,58,224,142,3,1,85,32,123,147,
-64,136,248,5,0,0,57,70,204,215,202,65,4,129,60,187,112,72,33,109,
-255,0,56,96,143,1,95,55,90,1,0,58,97,50,160,63,230,129,7,87,
-177,230,129,2,71,25,230,129,7,215,241,224,1,11,239,32,127,224,23,14,
-224,20,11,224,17,8,224,14,5,224,11,2,244,96,11,65,35,231,206,16,
-65,130,225,76,3,0,54,225,76,9,128,1,167,200,224,16,1,224,1,5,
-225,85,170,225,43,8,64,255,208,95,1,75,51,246,220,15,64,37,245,152,
-0,0,50,144,160,224,34,4,64,32,233,213,5,96,2,192,26,227,160,0,
-227,104,3,138,205,235,21,0,99,68,129,125,235,157,10,0,53,243,179,2,
-2,95,51,54,235,208,2,140,253,65,214,141,224,0,49,70,4,195,217,160,
-127,195,151,242,167,14,1,51,53,70,204,242,167,8,0,56,126,38,2,49,
-51,53,103,243,64,71,131,199,97,3,248,8,17,0,58,128,49,226,82,5,
-180,152,224,1,11,226,70,170,224,17,8,224,14,5,224,11,2,192,8,227,
-164,11,97,41,200,39,224,1,15,225,29,5,225,68,245,243,50,7,97,82,
-164,227,0,50,91,87,71,174,198,140,66,230,236,231,2,226,173,15,96,42,
-199,241,160,70,103,71,64,108,64,75,64,31,201,96,0,50,137,128,0,53,
-131,234,99,65,1,49,49,80,238,96,162,171,122,0,49,143,10,96,17,1,
-49,49,113,75,175,230,0,55,94,236,156,44,2,49,51,53,67,222,0,56,
-64,110,0,64,88,158,131,223,64,92,246,160,1,148,135,151,197,248,17,11,
-148,32,224,25,6,175,135,224,25,10,146,204,245,38,7,178,22,188,233,104,
-243,231,76,1,149,49,161,139,102,14,238,231,3,65,147,240,199,1,160,119,
-241,144,6,206,206,128,7,96,54,128,148,190,38,228,111,1,112,116,96,32,
-65,122,129,37,228,204,2,64,12,131,65,128,74,2,95,49,49,65,42,161,
-132,65,77,165,29,1,49,49,69,138,2,95,49,49,146,241,161,148,143,165,
-96,0,224,164,3,159,121,64,0,226,125,0,133,79,0,53,72,140,128,229,
-0,39,128,145,224,196,0,224,110,3,161,229,88,85,224,100,0,160,186,64,
-157,224,120,5,160,99,148,191,128,39,96,111,0,89,232,186,0,0,80,187,
-238,192,119,224,50,0,161,44,96,50,96,227,229,229,2,64,13,243,194,0,
-160,103,3,95,50,54,54,176,44,253,225,13,0,95,141,95,130,227,76,107,
-235,129,3,1,36,102,137,234,64,122,0,89,224,150,0,192,237,64,138,73,
-194,0,52,137,202,244,37,5,1,36,120,245,64,2,254,248,1,195,16,224,
-150,23,242,65,0,254,159,0,96,167,224,173,0,244,39,3,97,42,97,41,
-194,165,130,89,193,56,226,227,0,186,37,129,74,67,84,226,208,3,128,10,
-65,130,250,225,2,225,241,0,226,235,0,161,129,231,95,9,224,0,3,227,
-89,4,188,87,139,113,195,198,226,120,0,0,79,64,63,161,206,98,239,162,
-141,0,64,65,111,93,227,65,65,0,48,220,173,235,157,5,149,13,68,217,
-224,29,6,131,39,160,29,0,67,236,72,5,225,225,5,237,59,2,1,73,
-79,182,80,192,0,97,35,130,135,130,218,64,5,83,38,2,49,50,52,224,
-66,2,9,73,79,46,112,101,114,102,111,114,109,224,65,1,98,76,225,151,
-0,131,26,104,85,227,228,2,96,217,64,199,67,102,0,55,91,194,3,66,
-32,95,55,66,41,208,176,98,61,141,72,64,0,224,226,4,179,182,129,85,
-131,143,96,232,82,246,160,23,193,218,100,160,137,27,1,52,50,128,38,0,
-49,75,21,226,172,2,0,103,224,250,5,228,16,1,64,67,237,76,8,194,
-157,101,90,237,87,4,96,227,97,55,225,224,5,196,50,132,209,229,4,1,
-64,146,137,92,67,68,128,16,121,114,247,128,2,240,179,1,229,178,7,229,
-177,7,0,90,201,96,96,11,160,13,224,133,1,128,9,64,130,229,80,7,
-225,213,0,2,79,32,35,78,154,160,111,209,42,128,0,224,98,3,133,231,
-229,34,8,227,85,2,65,120,162,214,64,2,225,245,1,224,127,8,64,0,
-229,251,7,65,163,1,51,52,103,19,209,255,98,49,101,49,65,0,3,95,
-52,51,54,185,204,0,50,160,175,225,10,1,133,235,0,54,132,55,2,49,
-51,53,75,37,68,105,96,22,0,56,229,136,3,245,75,2,99,52,130,184,
-64,0,71,129,242,3,2,0,53,238,186,0,0,67,166,197,1,67,39,90,
-199,1,95,49,81,206,102,6,96,58,231,164,8,88,229,0,95,171,146,0,
-50,96,7,97,237,176,50,0,52,98,231,118,145,0,58,128,240,160,100,135,
-71,230,161,1,193,86,230,123,3,131,25,64,19,226,82,1,100,53,0,39,
-98,154,223,249,224,61,4,156,67,130,75,192,51,225,175,2,231,4,1,224,
-29,5,230,226,2,0,51,76,135,228,7,11,2,115,101,113,250,145,0,230,
-237,0,224,82,1,192,13,194,7,103,250,160,196,128,92,66,75,118,236,227,
-177,0,64,5,164,189,97,98,96,246,131,19,230,67,4,97,187,64,41,84,
-237,97,246,198,70,232,10,28,230,245,16,230,243,1,198,92,193,42,160,87,
-231,2,46,101,156,0,51,247,201,3,130,125,98,4,140,9,0,90,161,212,
-136,213,97,37,129,231,166,25,225,227,143,128,65,1,51,52,71,36,128,79,
-117,155,166,0,67,3,163,207,192,23,96,42,225,146,5,228,238,0,225,127,
-104,97,128,140,76,97,107,201,226,226,68,10,226,51,6,247,177,0,64,206,
-239,255,4,236,113,19,64,183,180,78,100,54,104,211,229,92,3,65,227,136,
-142,132,247,65,217,65,15,154,45,64,55,192,162,199,110,170,133,225,114,0,
-129,99,64,185,103,91,224,121,0,140,203,65,95,139,251,0,85,132,130,0,
-51,96,22,203,173,225,100,0,96,106,0,80,134,169,193,192,0,83,234,177,
-35,64,11,0,83,201,77,194,36,229,218,1,64,111,2,95,49,50,93,160,
-183,141,196,253,134,185,96,124,128,34,97,132,160,34,230,161,1,167,250,96,
-195,187,64,1,32,83,128,196,229,147,8,71,169,96,62,224,25,12,112,229,
-224,25,12,145,24,64,199,231,244,4,181,76,97,156,64,134,96,195,245,88,
-2,131,82,104,151,245,110,4,133,3,82,119,236,73,1,64,63,71,255,227,
-15,4,70,89,235,128,30,5,79,32,35,49,50,48,231,17,0,226,249,7,
-235,119,25,96,0,197,167,232,106,1,96,249,74,101,160,24,214,160,93,14,
-193,201,224,7,7,64,0,203,134,242,237,4,206,95,169,38,225,103,9,225,
-253,0,224,131,4,128,130,226,59,3,128,61,79,143,65,51,2,57,56,51,
-90,235,68,187,136,9,96,0,64,49,64,33,64,232,187,19,224,157,0,192,
-235,224,129,8,96,62,224,129,8,96,21,128,79,65,175,230,54,16,2,95,
-53,54,94,64,238,13,2,224,42,14,224,145,10,139,201,74,6,225,89,2,
-160,168,131,67,224,171,7,235,87,0,224,25,8,208,28,96,25,226,178,4,
-109,9,161,133,64,107,0,53,234,12,0,106,120,1,49,50,80,218,192,142,
-170,231,101,127,198,148,163,208,224,109,8,224,32,19,139,211,132,205,225,87,
-4,192,24,176,116,229,98,2,165,46,224,49,8,96,23,161,137,196,228,102,
-89,1,95,50,94,215,128,0,227,168,8,64,211,88,244,1,51,52,131,128,
-226,98,15,65,17,98,167,131,67,140,185,192,24,172,143,226,184,41,224,140,
-0,196,148,224,37,10,96,255,145,238,193,113,236,59,0,165,87,237,228,4,
-229,77,0,235,119,0,224,52,22,160,214,224,52,6,224,10,0,224,52,13,
-162,130,224,41,4,192,229,139,177,107,146,238,101,17,9,68,97,116,97,46,
-76,105,115,116,95,91,160,2,46,43,43,237,110,0,128,83,230,85,3,227,
-208,1,224,0,6,196,115,163,86,228,107,9,122,207,233,212,1,5,49,50,
-52,50,32,67,94,21,98,218,64,15,142,52,162,220,70,41,139,225,138,138,
-231,53,1,110,233,227,181,9,96,197,4,82,97,116,105,111,128,198,2,95,
-109,107,96,13,1,110,97,92,248,64,0,131,76,127,9,0,48,93,173,224,
-17,6,68,63,64,117,140,75,70,159,159,175,70,209,69,140,0,53,114,42,
-1,54,49,72,152,127,131,96,20,191,142,1,51,55,69,220,0,48,76,244,
-160,5,204,248,129,29,140,105,96,66,165,209,7,50,49,52,55,52,56,51,
-54,165,12,224,219,25,11,73,110,116,101,103,101,114,46,95,105,110,116,65,
-173,1,84,111,160,17,224,222,2,101,72,237,98,0,195,127,233,215,0,64,
-168,163,128,224,111,32,161,77,1,105,110,224,112,12,227,223,6,230,181,0,
-64,0,0,58,129,91,73,65,129,76,131,138,2,95,52,54,225,9,5,98,
-19,195,86,103,55,97,101,64,70,227,119,0,0,85,225,122,3,64,0,0,
-89,169,118,148,89,108,131,72,89,225,149,3,224,92,1,229,158,0,234,149,
-2,224,170,1,2,85,32,65,96,36,99,156,74,25,161,177,0,50,71,159,
-1,53,57,162,200,78,209,97,66,129,176,64,220,140,11,3,83,32,85,32,
-224,107,2,128,150,99,128,64,2,163,141,160,250,237,44,1,224,226,7,224,
-255,0,224,229,2,99,204,104,130,137,235,83,110,128,26,65,69,224,12,0,
-224,156,0,3,95,49,57,55,64,138,142,182,224,254,2,64,172,191,113,96,
-21,2,51,50,55,77,201,64,22,0,54,195,99,128,174,246,31,0,234,226,
-0,128,194,96,128,99,158,0,55,247,72,0,2,49,49,57,151,23,106,24,
-96,54,0,79,227,251,0,202,239,110,50,241,115,1,240,102,2,128,95,74,
-64,4,95,49,50,56,53,233,21,0,0,51,164,36,64,157,139,128,134,178,
-98,66,234,186,1,165,74,96,13,229,24,13,203,205,128,47,165,27,224,13,
-0,192,63,224,64,3,241,10,0,224,67,0,228,233,1,192,55,192,71,193,
-20,129,44,224,88,4,97,42,231,109,0,192,178,225,93,3,193,7,210,196,
-107,201,65,90,231,232,13,128,32,113,94,72,220,143,132,161,127,98,85,0,
-49,72,142,1,57,56,74,171,233,92,1,225,143,9,226,150,1,178,247,96,
-88,0,80,97,155,96,42,65,135,160,130,236,48,1,0,95,64,111,113,243,
-72,245,235,215,4,64,0,142,222,160,247,135,65,181,252,181,176,99,123,114,
-104,236,96,0,224,51,1,226,95,0,131,0,198,98,0,49,132,176,192,130,
-232,183,5,68,78,225,112,0,193,199,225,86,14,65,139,129,143,224,16,1,
-217,253,96,142,132,151,160,93,128,156,192,200,1,95,51,69,70,167,51,1,
-49,49,125,146,224,164,11,224,17,3,226,47,0,142,3,96,29,226,158,0,
-165,42,85,63,0,80,67,138,0,50,229,115,2,7,92,34,92,34,44,48,
-58,48,101,92,161,97,96,219,224,41,21,132,186,96,0,66,7,0,57,234,
-199,3,0,109,229,168,0,102,232,4,50,54,32,95,55,102,230,128,17,67,
-154,0,83,91,137,225,58,7,180,4,160,239,160,62,155,35,96,11,0,52,
-108,112,212,92,66,23,64,15,224,126,8,0,112,232,71,0,83,68,0,51,
-128,41,97,49,67,218,206,225,132,25,251,59,14,131,142,227,209,4,245,83,
-4,66,220,129,103,224,39,4,128,142,182,126,226,240,1,129,135,174,170,245,
-201,10,161,117,64,157,0,51,228,120,2,160,105,0,50,98,7,65,0,219,
-119,197,179,177,185,248,56,3,194,73,227,114,2,238,78,7,230,149,0,164,
-65,99,63,64,58,97,8,165,106,206,142,186,141,243,28,6,96,14,140,147,
-143,255,128,30,227,197,2,229,80,3,149,3,169,168,141,148,117,190,225,184,
-8,210,69,129,38,143,244,1,51,51,136,36,227,251,1,65,38,143,203,119,
-179,0,57,64,79,97,115,64,24,137,186,76,3,66,38,110,208,132,61,66,
-135,70,53,64,36,181,181,236,193,3,194,4,193,57,133,213,97,22,100,41,
-194,170,96,45,202,94,131,106,128,5,225,80,1,161,117,229,125,4,152,93,
-129,14,64,21,96,225,138,162,98,250,152,135,80,50,240,196,0,161,6,71,
-84,197,123,136,30,160,200,129,9,64,10,71,94,0,54,86,251,110,27,225,
-83,6,0,118,210,129,64,72,98,248,165,36,164,204,164,225,224,179,0,253,
-147,4,228,207,0,133,46,160,186,64,15,231,124,0,131,43,160,2,229,221,
-1,133,114,128,21,64,43,65,35,224,35,1,128,30,65,210,230,55,0,211,
-250,0,80,73,41,68,49,213,211,177,220,229,252,0,225,169,0,229,57,2,
-229,141,1,128,13,237,70,8,203,254,192,192,231,146,3,161,181,100,106,225,
-58,3,0,68,74,140,13,66,111,111,108,46,111,116,104,101,114,119,105,115,
-101,228,88,0,212,217,224,249,0,245,104,4,75,15,129,28,245,84,0,225,
-53,1,175,16,96,5,65,150,137,31,64,31,99,69,1,80,32,91,185,0,
-90,99,77,129,230,101,186,1,57,48,149,225,244,247,15,250,211,1,255,57,
-0,192,0,130,70,80,232,0,53,172,106,66,96,96,115,106,66,228,215,0,
-122,36,96,4,161,252,164,60,215,125,64,47,216,206,229,183,1,167,93,226,
-65,1,194,243,107,33,102,201,215,165,1,50,57,165,92,224,220,0,96,246,
-128,221,132,135,66,29,161,233,224,144,5,224,37,0,163,156,226,197,0,97,
-247,199,234,192,151,225,4,0,100,249,96,8,232,160,2,65,15,96,146,139,
-116,203,135,64,22,129,157,65,35,234,2,3,163,210,232,72,2,97,84,90,
-62,194,3,180,246,226,97,0,212,249,224,16,0,233,247,4,192,1,169,210,
-224,19,2,126,117,224,16,15,197,223,232,80,1,193,235,192,21,138,226,224,
-163,2,138,72,229,240,5,194,180,224,176,4,169,52,226,211,3,226,220,4,
-224,42,2,228,33,0,68,111,70,89,164,217,224,60,5,248,66,2,194,18,
-128,33,224,191,1,161,58,128,24,196,134,235,106,2,227,229,1,229,129,1,
-220,12,220,18,96,27,64,42,67,194,76,169,249,233,4,224,100,1,192,198,
-224,71,8,167,4,96,70,100,51,250,48,9,0,95,102,101,194,186,66,197,
-225,255,0,227,148,13,241,69,2,195,159,161,201,225,186,6,129,173,224,0,
-0,129,89,224,198,1,224,43,0,237,95,1,224,159,4,245,175,8,234,6,
-0,1,95,51,132,105,238,28,0,224,53,2,103,126,245,218,4,167,163,224,
-222,0,226,220,0,64,183,249,22,8,224,116,7,229,93,1,69,67,0,49,
-129,151,129,10,163,189,196,156,224,20,2,162,215,64,0,67,110,137,150,105,
-216,0,80,103,202,79,224,230,175,3,70,24,131,194,225,205,1,128,9,128,
-90,227,11,1,64,60,215,236,4,95,49,51,48,55,97,174,0,52,93,71,
-129,182,64,184,1,49,51,87,16,128,44,241,239,2,1,51,49,145,87,152,
-79,2,51,49,57,128,139,136,49,250,122,13,225,207,4,166,248,64,0,64,
-62,142,236,64,69,128,96,224,203,0,100,28,194,225,195,138,195,26,98,157,
-164,106,229,104,0,226,48,5,229,76,0,160,171,64,101,199,224,100,243,246,
-49,0,1,48,50,173,193,1,64,67,69,93,228,149,0,161,226,101,221,96,
-181,229,33,0,64,75,207,181,67,221,1,56,57,91,242,1,51,48,138,221,
-2,51,48,53,128,110,0,54,137,69,97,53,0,48,114,203,98,114,233,139,
-0,65,102,225,131,3,224,169,2,161,236,3,49,51,49,50,95,70,64,22,
-168,196,146,64,223,163,72,98,64,31,201,238,132,223,128,97,129,118,70,47,
-0,80,160,213,240,76,0,228,123,6,64,72,130,162,192,33,227,166,1,224,
-27,0,230,211,3,192,20,129,143,134,255,0,85,162,230,160,149,224,28,8,
-166,226,160,28,224,29,7,99,150,224,29,16,111,108,224,29,1,100,60,130,
-38,131,185,228,14,1,145,126,161,30,227,132,5,208,117,97,48,130,209,99,
-59,132,82,103,143,232,44,5,229,197,2,236,80,3,192,7,236,22,2,107,
-5,225,50,0,123,63,230,56,4,230,162,0,225,68,2,64,56,234,51,4,
-224,56,1,224,19,3,224,62,2,161,22,111,176,230,32,3,160,108,192,28,
-64,16,115,202,198,116,130,231,232,244,0,128,41,227,142,0,225,252,1,128,
-0,238,211,8,27,115,114,99,47,77,105,99,114,111,72,115,47,73,110,116,
-77,97,112,46,104,115,92,34,44,55,51,58,49,238,72,2,97,86,132,6,
-131,21,64,129,98,212,0,48,143,166,0,54,98,170,67,8,236,128,8,64,
-20,75,216,64,145,64,35,195,168,80,226,109,35,132,0,129,13,231,148,0,
-193,159,81,38,227,159,4,160,40,234,114,0,235,15,0,128,239,1,50,57,
-136,241,231,167,4,193,80,235,62,0,0,80,244,114,2,226,250,4,253,215,
-0,64,73,0,54,64,37,137,29,192,7,167,108,192,60,97,112,192,92,64,
-131,97,114,92,0,228,165,3,128,12,0,51,225,1,0,164,94,0,49,92,
-133,228,82,1,64,30,132,23,1,48,48,68,23,64,22,193,40,96,42,161,
-208,68,137,70,175,64,34,228,74,0,68,231,133,110,64,30,96,54,165,87,
-194,103,136,223,224,237,3,164,15,225,46,1,243,54,2,99,124,96,119,218,
-136,224,47,3,131,193,193,118,245,95,2,160,25,96,237,237,32,2,128,193,
-218,132,229,246,0,226,226,3,233,25,10,160,24,236,240,1,232,199,2,227,
-88,3,128,134,224,133,1,231,160,15,224,75,59,232,54,2,224,75,23,167,
-158,224,75,17,232,173,0,129,36,128,2,229,156,0,161,89,117,236,137,160,
-160,36,236,122,1,224,32,7,224,124,0,228,53,4,96,41,224,40,6,224,
-41,8,224,11,0,160,48,224,47,7,96,64,64,252,64,7,128,184,66,107,
-168,104,161,174,111,40,225,139,27,224,40,26,206,65,225,69,30,128,175,131,
-59,98,125,224,6,1,194,200,224,30,7,224,31,1,219,170,224,34,1,224,
-35,14,192,37,224,30,8,224,38,1,170,69,112,183,225,49,4,65,46,134,
-152,0,75,103,246,64,47,163,222,235,28,0,224,10,6,225,144,1,0,32,
-200,250,0,58,128,127,96,56,234,93,2,64,28,64,26,133,91,1,73,32,
-64,11,132,101,0,80,96,11,0,54,96,11,131,83,128,5,64,149,137,229,
-65,64,0,75,74,187,64,172,64,44,132,119,224,44,3,128,247,105,1,2,
-51,52,51,250,178,10,70,55,0,33,134,47,0,73,64,234,100,248,162,25,
-133,197,171,145,194,193,224,132,0,249,153,0,128,31,204,107,228,32,9,228,
-27,11,231,40,7,129,54,228,16,33,224,63,0,163,116,227,254,32,128,56,
-166,88,227,229,28,225,66,1,224,11,5,224,12,17,227,113,7,65,85,133,
-219,123,37,0,50,205,19,72,251,64,27,244,21,1,237,47,1,192,27,130,
-120,0,90,73,90,64,14,194,122,0,90,104,252,0,58,144,143,97,243,162,
-109,129,22,72,245,234,52,3,64,5,128,25,245,45,0,151,122,169,179,2,
-95,49,50,68,17,231,43,0,251,93,0,168,50,136,39,134,0,192,99,108,
-243,226,240,1,247,222,9,128,21,0,50,126,58,149,57,64,118,149,92,237,
-149,2,129,212,109,199,231,157,0,64,54,107,141,119,251,130,142,245,175,0,
-171,102,96,11,136,135,64,39,131,52,225,7,0,198,188,127,8,166,184,246,
-78,5,96,223,160,143,3,67,32,95,54,128,189,128,135,237,49,3,128,82,
-253,7,0,1,56,52,190,50,1,50,49,94,194,0,49,77,99,96,180,1,
-95,49,92,255,135,238,128,0,2,95,50,54,76,26,238,122,11,162,142,64,
-184,0,54,161,210,105,73,193,57,138,115,230,165,1,192,176,226,233,0,151,
-244,129,149,224,40,26,179,215,227,157,2,224,40,15,162,245,198,130,201,131,
-224,33,2,248,78,1,237,148,0,194,104,252,7,7,184,174,98,96,0,56,
-195,188,224,20,3,0,55,195,62,203,37,224,111,10,96,55,224,52,4,201,
-155,224,120,10,161,17,224,158,3,225,29,25,160,79,224,39,24,161,218,246,
-105,2,204,94,224,38,4,212,255,204,86,224,156,0,192,24,249,10,1,251,
-197,1,224,40,4,129,42,128,243,105,149,203,186,1,49,48,117,17,96,6,
-85,149,131,76,1,49,50,78,248,224,0,0,64,88,224,82,8,235,131,2,
-64,116,129,221,195,24,1,53,54,74,207,96,91,226,240,1,2,50,56,50,
-217,241,221,89,131,198,131,35,224,104,15,161,76,224,229,3,242,86,0,254,
-120,13,139,247,224,41,5,226,125,0,104,72,237,56,1,146,3,197,154,128,
-196,96,174,1,57,56,64,161,160,10,64,131,206,168,236,207,0,0,50,64,
-33,64,6,235,218,0,160,0,128,70,230,77,9,163,99,161,139,226,106,9,
-225,164,1,238,64,1,193,69,193,35,226,136,4,100,35,153,205,127,193,99,
-247,0,80,143,3,165,206,219,230,224,23,0,72,33,64,24,204,28,97,66,
-69,175,211,103,225,196,0,1,49,50,173,3,64,170,248,174,5,64,141,205,
-135,65,1,112,159,97,223,231,234,2,80,241,199,11,130,129,228,141,1,224,
-25,2,96,246,99,137,2,56,52,52,129,94,0,50,83,6,69,236,244,128,
-5,0,35,64,31,110,187,232,122,4,10,116,117,112,108,101,67,111,110,115,
-116,114,174,168,85,1,64,43,224,35,1,1,40,41,185,255,96,171,225,17,
-1,132,87,161,18,187,15,225,123,0,198,227,88,199,130,238,96,19,225,19,
-0,242,175,1,224,52,0,227,229,1,137,165,224,40,0,160,226,0,49,165,
-189,156,204,147,140,194,247,98,107,2,49,50,51,99,144,99,36,157,173,128,
-58,181,217,239,224,0,239,6,0,250,234,8,0,120,192,234,0,55,243,111,
-0,166,183,230,160,0,225,32,9,16,67,111,110,116,114,111,108,46,69,120,
-99,101,112,116,105,111,110,73,204,8,101,114,110,97,108,46,112,97,116,64,
-9,8,77,97,116,99,104,70,97,105,108,129,100,135,12,0,51,128,84,1,
-50,55,114,216,70,176,1,49,50,155,207,96,128,207,225,1,80,32,99,148,
-130,147,64,43,193,103,161,53,2,95,49,50,71,252,221,63,97,242,64,41,
-0,54,96,41,176,69,207,173,100,193,0,75,133,232,228,2,1,188,224,212,
-225,90,61,71,253,227,42,0,193,68,167,180,0,50,157,158,224,46,7,255,
-206,5,1,55,49,103,183,143,50,224,106,1,225,214,2,230,246,5,242,38,
-1,192,5,128,74,230,8,1,224,55,0,230,23,1,96,0,128,66,224,1,
-1,231,67,5,202,108,64,0,226,158,9,224,140,5,224,77,9,224,75,5,
-164,234,128,38,224,76,2,248,76,2,216,16,253,187,3,231,174,6,96,23,
-69,90,124,234,224,116,4,192,83,231,187,7,224,34,2,153,238,161,3,129,
-21,224,84,0,96,66,96,111,128,17,231,68,12,243,122,6,231,24,8,235,
-215,2,224,115,5,224,165,3,138,121,7,95,52,53,50,32,64,95,57,174,
-203,192,33,219,207,225,111,3,249,39,2,221,214,131,143,234,134,0,128,0,
-99,202,241,65,1,237,179,1,233,46,6,225,187,3,228,49,0,193,113,225,
-207,0,192,77,64,80,115,3,249,221,15,242,179,5,0,55,64,213,255,68,
-1,192,10,234,113,11,0,54,234,113,16,96,142,169,40,196,213,171,83,192,
-102,0,51,235,230,2,192,173,226,161,5,64,27,129,84,231,7,10,243,158,
-10,233,170,16,224,129,14,0,52,224,129,5,225,64,1,231,92,9,226,182,
-0,97,77,226,128,0,224,83,5,231,116,0,160,85,243,241,16,224,81,4,
-163,8,135,145,1,95,56,132,94,96,52,87,169,235,173,10,165,192,248,110,
-2,100,247,230,155,2,96,66,134,155,64,228,224,25,2,96,64,160,25,199,
-200,231,225,7,66,0,236,8,1,193,59,245,66,5,226,169,0,225,10,19,
-244,252,1,225,9,17,64,111,199,88,166,108,128,6,134,36,64,5,0,52,
-230,163,2,2,115,101,113,167,170,64,56,250,85,1,192,168,226,15,1,0,
-85,231,12,8,227,194,0,151,47,224,13,9,132,43,228,69,0,128,197,224,
-66,2,185,205,227,177,0,192,65,160,119,2,39,32,85,79,52,247,29,17,
-6,68,101,115,117,103,97,114,151,30,5,52,49,49,58,49,48,247,32,2,
-227,212,3,129,85,227,204,3,64,0,240,209,4,224,2,6,224,71,1,230,
-51,3,229,38,1,192,83,230,57,1,224,191,1,224,197,6,192,10,111,124,
-224,85,11,229,67,8,224,96,4,224,102,8,224,103,6,224,55,5,230,169,
-11,224,50,14,96,98,230,31,4,224,52,26,224,195,3,224,31,11,253,69,
-2,225,95,12,249,113,13,224,23,1,205,93,233,197,3,194,60,224,8,10,
-96,242,224,11,2,169,182,195,25,128,68,228,148,8,225,154,1,131,114,230,
-85,4,192,66,128,11,226,174,2,101,217,163,81,0,51,169,91,192,83,229,
-109,5,231,188,4,138,166,198,74,146,80,250,28,0,230,214,4,224,243,3,
-172,227,228,25,2,76,235,120,218,64,187,199,104,187,152,157,250,228,69,3,
-225,215,11,64,41,141,185,0,90,209,235,216,84,224,144,2,236,204,1,194,
-177,64,77,196,126,229,114,1,192,209,2,95,54,52,96,168,96,15,64,164,
-224,103,2,128,137,224,136,5,180,223,224,38,5,66,54,1,95,57,93,87,
-224,0,3,129,9,224,1,3,226,179,8,231,237,2,224,48,12,226,175,2,
-224,26,7,226,170,1,226,159,7,192,33,226,180,9,226,155,26,226,134,27,
-226,48,13,130,42,128,35,224,122,3,128,86,226,16,1,196,51,96,21,129,
-112,64,43,130,30,128,24,226,31,2,160,62,162,34,192,122,226,37,9,229,
-133,5,175,173,128,36,255,250,0,128,110,115,253,0,51,226,49,12,96,54,
-226,37,1,226,30,0,3,95,54,32,85,226,11,5,111,243,130,10,64,47,
-182,236,224,0,2,225,148,9,228,79,3,224,168,0,224,11,15,228,24,39,
-128,86,228,178,6,64,56,0,48,230,243,4,196,214,227,177,10,226,60,9,
-3,95,49,48,53,231,50,5,226,63,8,160,101,224,104,5,132,132,109,201,
-1,50,51,219,163,230,208,6,193,205,192,1,224,170,10,226,192,5,97,125,
-161,59,143,219,87,26,141,232,235,53,0,194,102,169,234,192,232,135,252,97,
-226,128,66,66,17,170,185,96,164,132,46,224,145,1,232,42,5,64,17,64,
-49,78,147,160,104,162,132,82,128,120,132,66,157,1,95,52,78,56,128,0,
-194,164,100,249,2,49,50,53,149,163,1,49,50,73,191,112,178,2,49,50,
-53,164,118,101,3,0,90,101,19,105,82,96,167,96,17,192,93,224,83,0,
-225,184,1,163,77,66,175,226,174,0,224,186,13,153,20,131,123,226,209,7,
-0,83,161,187,231,117,3,226,229,4,164,241,98,219,0,85,90,102,228,253,
-0,224,39,5,131,13,192,38,224,37,2,160,152,192,227,129,122,160,227,0,
-90,111,20,1,83,32,82,4,161,219,229,246,4,129,106,96,60,235,41,3,
-233,223,0,192,59,192,249,228,52,3,226,90,3,196,58,192,19,193,155,224,
-111,13,224,59,5,165,127,225,122,2,238,223,9,106,193,224,55,0,96,93,
-194,99,230,155,3,228,128,19,160,0,0,58,144,190,145,107,169,54,97,101,
-227,112,0,160,203,224,216,5,234,30,9,233,190,4,195,53,129,73,182,216,
-192,224,234,252,13,224,61,0,206,159,228,88,3,174,95,160,232,101,182,128,
-97,160,101,187,222,0,49,117,23,3,64,64,64,75,66,11,96,4,96,13,
-160,128,66,148,153,74,66,155,160,242,64,76,194,146,85,254,0,55,213,93,
-2,49,50,53,125,36,0,50,128,84,64,8,121,108,0,49,88,202,96,68,
-146,12,192,186,2,85,32,95,82,30,192,217,253,2,2,230,25,0,224,21,
-20,224,236,0,239,96,5,166,73,224,60,6,160,49,195,241,64,250,96,228,
-64,27,163,168,192,99,128,48,82,45,164,43,224,90,0,180,1,64,28,227,
-229,0,98,66,96,29,117,54,96,90,80,101,91,174,84,218,64,14,96,70,
-131,31,161,167,194,42,129,71,229,212,5,195,10,224,118,0,226,56,6,224,
-25,1,229,226,4,241,86,7,134,169,224,17,1,226,69,5,232,155,0,230,
-28,0,224,132,1,232,103,1,143,207,98,160,97,217,78,217,116,205,128,74,
-128,135,208,139,192,249,192,0,130,83,130,74,247,246,0,128,23,161,248,1,
-75,51,192,9,96,0,66,34,0,54,244,47,3,96,85,128,11,128,109,192,
-5,235,38,0,224,209,0,86,102,187,156,96,17,128,208,251,176,2,160,79,
-161,75,228,206,0,134,130,160,88,66,170,0,50,96,53,102,172,192,7,136,
-183,162,223,134,35,1,54,51,129,167,97,70,133,54,224,14,5,2,95,54,
-50,163,23,160,0,252,20,1,233,66,1,228,43,2,225,236,0,196,140,225,
-2,1,98,99,64,115,248,123,7,0,64,113,222,246,13,2,0,110,142,155,
-224,22,7,1,116,116,214,37,67,144,126,46,0,80,130,0,64,130,153,151,
-100,247,85,226,165,0,65,205,0,56,87,145,129,238,189,56,225,189,13,64,
-88,255,249,0,64,60,239,222,1,79,95,208,128,194,82,132,155,194,130,224,
-7,1,193,21,160,59,81,74,128,57,161,207,112,209,0,79,198,104,161,50,
-227,2,1,193,56,230,123,2,99,175,226,13,1,244,85,2,229,84,15,229,
-86,0,68,231,230,164,5,224,48,11,225,164,3,229,98,0,130,163,143,78,
-128,44,233,206,0,131,146,228,65,6,227,123,4,196,204,160,79,130,174,224,
-28,6,160,104,96,97,131,88,64,47,237,97,2,192,94,226,75,0,128,23,
-240,233,8,12,108,105,98,47,68,97,116,97,47,76,105,115,116,144,227,4,
-53,51,54,58,53,240,226,2,224,0,5,225,156,21,101,2,225,162,0,228,
-239,3,208,94,128,215,240,114,0,224,215,26,233,78,2,128,204,64,44,154,
-160,226,10,0,224,39,12,64,15,224,142,3,160,0,66,171,0,51,243,69,
-0,66,32,227,121,0,224,2,1,225,70,2,128,1,105,132,200,161,224,23,
-2,192,189,224,26,0,235,186,5,229,88,2,224,52,0,228,128,1,224,74,
-7,226,62,4,197,189,230,50,1,160,52,224,41,1,167,202,96,82,224,23,
-0,224,17,6,96,8,128,43,251,134,1,133,171,251,111,0,245,48,0,224,
-93,2,96,36,233,131,1,224,89,1,224,8,0,92,50,107,86,98,103,2,
-49,51,52,243,254,14,1,61,61,162,77,96,38,68,97,68,202,224,113,0,
-131,99,233,155,2,128,1,166,156,224,16,16,64,117,126,124,74,164,133,53,
-0,55,83,201,123,105,68,208,125,230,253,72,1,224,1,1,132,146,245,184,
-6,225,212,8,160,110,224,22,7,239,234,0,224,45,28,224,22,0,193,193,
-228,172,1,224,14,0,224,51,3,179,129,193,119,172,154,189,158,225,107,17,
-2,79,32,35,70,104,162,228,225,102,13,64,94,226,65,1,226,125,3,226,
-87,4,99,87,160,50,192,0,160,142,199,112,231,228,0,67,73,214,118,1,
-80,32,103,35,155,243,64,117,1,10,65,92,5,64,12,149,240,0,80,134,
-42,91,120,128,3,70,6,2,90,32,90,166,125,232,19,20,71,117,5,10,
-65,32,95,52,56,64,172,159,214,98,216,0,90,129,99,128,193,64,20,66,
-156,160,20,232,172,6,237,22,2,64,96,236,251,1,128,65,194,226,1,85,
-32,224,29,2,224,71,10,224,59,4,96,31,160,129,103,219,224,28,0,224,
-109,2,224,36,1,233,62,7,69,143,0,48,125,2,110,101,64,232,139,100,
-226,45,5,66,196,64,27,203,59,229,128,8,229,83,0,134,134,64,79,99,
-213,96,210,229,19,5,230,34,1,64,81,0,54,192,109,119,36,96,39,66,
-223,161,99,229,163,1,228,78,0,128,230,224,70,1,128,135,224,86,2,192,
-148,160,154,64,100,216,229,96,182,128,90,197,48,237,63,3,197,43,250,12,
-4,128,23,161,15,252,146,3,0,85,174,83,232,4,2,238,146,19,224,37,
-10,202,40,0,85,66,48,129,141,97,58,0,52,75,185,162,79,137,117,95,
-58,105,251,138,200,64,211,136,235,3,95,56,55,50,239,159,9,0,49,64,
-46,239,179,11,224,19,7,224,39,11,139,70,224,239,11,2,95,56,55,112,
-50,91,206,101,47,67,57,128,18,160,152,224,57,9,159,133,3,75,32,95,
-53,177,122,64,12,0,83,163,38,224,61,5,131,137,160,98,0,54,96,5,
-227,130,1,96,90,224,168,5,66,218,224,110,7,64,72,224,168,2,96,69,
-192,155,96,134,224,175,7,224,196,12,225,19,7,0,49,64,135,224,19,7,
-114,36,224,126,6,132,127,192,81,0,56,91,68,128,100,224,98,7,224,56,
-6,0,49,145,163,224,183,3,224,60,2,224,161,11,225,12,6,0,49,65,
-103,224,84,7,65,201,224,122,8,224,78,12,224,37,2,229,173,0,224,239,
-6,225,2,11,64,238,224,19,7,225,149,10,0,49,129,149,225,223,3,225,
-127,10,224,240,0,224,62,8,146,45,224,60,9,0,85,114,87,226,72,3,
-161,240,130,105,224,86,7,225,51,7,65,115,224,106,6,65,211,225,11,2,
-133,99,225,189,9,226,97,15,225,13,8,64,23,224,18,6,225,168,10,129,
-167,226,252,8,212,107,227,103,27,64,227,179,223,243,230,0,226,34,7,226,
-175,10,225,88,16,226,35,18,225,80,2,100,136,0,51,228,136,18,64,59,
-224,134,6,104,66,224,134,5,132,35,226,30,22,224,20,23,224,237,31,224,
-56,6,227,14,22,225,223,7,64,240,136,111,160,240,225,181,8,103,76,226,
-135,4,160,54,136,144,96,54,0,67,104,119,224,118,5,224,13,13,226,10,
-4,64,69,136,201,160,69,219,34,243,14,4,225,82,0,224,25,13,96,74,
-230,209,8,100,63,227,139,12,230,180,7,184,254,229,74,1,228,172,4,224,
-49,11,96,139,225,41,7,224,49,3,224,141,8,130,205,225,228,11,224,91,
-7,96,24,224,183,11,72,216,1,52,51,236,2,2,25,72,97,115,76,111,
-99,32,69,68,101,102,58,32,117,110,105,109,112,108,101,109,101,110,116,101,
-100,140,26,0,58,129,102,104,39,97,94,246,141,2,96,92,160,35,137,30,
-225,253,6,192,119,64,32,201,35,192,68,0,80,198,251,224,74,8,0,54,
-226,17,5,0,75,224,78,8,224,15,9,224,232,8,64,71,136,222,7,95,
-49,49,57,32,95,50,57,74,0,232,48,0,0,52,139,131,0,53,224,19,
-0,64,47,168,58,3,54,32,95,57,86,69,2,95,49,48,64,159,64,25,
-131,203,105,172,65,61,136,252,120,253,225,72,1,11,105,109,112,111,115,115,
-105,98,108,101,58,32,129,58,130,95,153,36,169,233,0,49,131,6,96,234,
-97,10,0,49,157,84,186,135,224,86,0,2,79,32,35,74,162,209,77,96,
-56,96,40,239,45,0,64,150,163,113,224,224,4,134,20,204,166,249,162,0,
-128,120,4,54,32,95,51,48,235,33,0,224,107,1,64,250,208,18,224,23,
-0,160,53,1,50,57,176,74,192,44,75,9,96,44,224,31,4,64,0,225,
-81,0,64,132,64,160,131,219,0,80,76,107,89,248,114,221,227,156,17,97,
-186,234,84,15,89,20,200,247,226,238,8,96,57,185,95,233,28,0,234,87,
-13,161,27,250,187,6,240,137,5,238,130,4,0,58,128,34,243,153,8,0,
-55,64,235,227,75,5,7,99,111,110,65,114,105,116,121,175,84,5,67,32,
-95,54,55,54,236,232,5,128,132,129,199,64,89,131,54,0,66,251,187,2,
-64,6,65,162,162,61,0,56,64,211,186,141,130,67,1,50,51,66,129,1,
-95,52,101,70,162,86,224,35,1,1,95,50,149,122,64,92,131,114,102,1,
-144,188,129,85,236,236,3,247,1,0,64,8,65,9,140,209,89,92,108,127,
-224,153,3,225,181,1,117,207,227,7,0,224,186,4,96,76,236,246,0,252,
-146,3,155,227,220,107,64,32,224,186,6,248,245,5,112,32,64,138,163,198,
-225,32,7,225,28,6,225,25,0,1,95,51,99,208,224,91,5,216,46,64,
-79,131,230,96,47,0,50,124,41,4,95,56,32,64,80,140,181,64,31,167,
-184,96,29,0,83,76,104,192,136,195,110,96,85,0,48,162,6,128,68,212,
-20,96,157,108,42,128,26,141,122,224,40,20,0,90,224,40,2,2,95,51,
-54,99,197,97,34,64,114,167,28,96,230,81,63,224,71,0,189,78,224,224,
-1,0,49,125,19,183,26,0,57,224,11,1,0,50,129,55,192,80,131,133,
-0,73,67,145,64,70,64,92,0,51,96,143,225,169,3,69,2,225,152,4,
-0,95,96,80,113,192,64,56,226,180,0,0,54,66,225,186,71,64,194,64,
-28,130,116,128,97,130,69,110,194,209,26,0,50,108,139,64,7,0,52,128,
-47,229,165,0,241,51,3,64,84,99,142,64,33,165,151,224,33,6,0,57,
-224,33,2,197,159,0,89,98,22,214,34,64,214,66,241,97,53,0,48,64,
-104,128,6,2,95,49,50,107,162,132,35,131,28,160,5,224,21,10,225,193,
-0,129,183,96,80,132,167,192,105,96,39,131,27,224,42,4,180,120,192,16,
-208,55,232,50,5,224,33,3,242,195,0,224,16,16,224,67,8,233,74,0,
-224,50,17,252,111,1,64,210,197,21,224,168,2,252,145,0,224,17,0,97,
-34,129,250,225,12,1,187,69,192,38,69,13,224,13,1,64,48,104,116,97,
-47,128,42,145,8,0,48,70,117,228,101,1,128,38,165,106,252,212,0,160,
-126,228,55,0,160,168,96,29,224,183,2,224,17,11,134,43,224,137,1,128,
-155,96,16,224,39,6,225,224,1,225,11,19,128,80,64,168,233,51,0,224,
-71,9,225,11,0,224,118,5,151,214,101,159,128,25,199,135,180,46,0,79,
-99,246,3,49,54,32,79,96,96,0,55,246,253,3,224,163,1,96,2,160,
-94,160,148,182,169,193,105,151,67,192,133,226,222,15,204,239,160,229,88,224,
-127,79,112,124,224,64,3,194,201,160,90,128,21,192,76,224,82,2,225,204,
-6,128,96,224,82,2,193,213,224,22,6,128,54,96,204,133,135,64,78,0,
-57,251,4,3,0,104,167,49,128,201,122,164,224,41,14,1,118,115,160,42,
-226,121,2,1,49,57,171,188,96,14,1,57,56,97,126,97,54,68,102,231,
-37,0,1,57,56,110,99,248,122,13,226,230,2,224,75,1,99,7,105,189,
-130,215,102,34,224,26,2,162,33,130,109,68,135,213,114,64,1,1,80,32,
-143,224,161,195,0,32,83,129,128,37,133,212,192,35,64,34,0,80,133,10,
-133,156,129,135,105,175,244,147,1,158,224,128,51,96,182,130,91,162,17,185,
-124,70,202,114,132,98,136,233,195,9,64,0,8,95,53,55,48,32,95,50,
-55,54,201,16,0,58,97,98,160,120,2,53,54,55,97,124,0,51,75,132,
-65,232,64,77,64,33,171,222,2,49,50,48,98,13,0,48,66,194,67,221,
-2,50,48,56,164,133,192,15,0,57,174,82,96,165,160,32,244,115,1,66,
-243,200,88,1,49,50,77,94,129,166,81,31,130,119,245,60,0,64,64,224,
-56,2,0,54,96,56,106,75,64,54,225,65,1,98,90,129,65,65,144,181,
-54,224,82,22,64,44,134,53,128,81,225,185,1,0,80,87,28,224,81,1,
-167,129,224,248,43,108,67,224,191,0,206,161,1,52,53,129,154,64,33,2,
-55,32,64,235,80,3,0,58,128,52,224,38,11,227,2,1,1,91,93,99,
-1,64,43,129,148,224,26,1,4,68,97,116,97,46,92,46,6,95,84,121,
-112,101,46,34,96,193,64,61,226,148,0,117,79,224,10,6,194,154,96,44,
-129,101,97,5,171,120,96,22,199,164,2,50,48,51,65,46,88,240,96,38,
-104,199,71,216,96,37,169,57,132,34,77,141,254,234,5,0,102,131,186,98,
-100,184,177,138,14,224,40,14,96,83,193,152,0,67,106,117,67,17,0,51,
-74,167,224,45,1,1,40,41,96,45,3,80,32,95,51,65,254,66,89,202,
-226,106,106,108,220,0,64,128,28,100,96,0,57,130,23,2,95,56,48,187,
-99,250,147,1,96,158,64,32,135,87,1,95,55,67,55,64,133,162,5,75,
-204,1,48,51,134,31,69,229,68,166,80,247,1,95,57,64,84,224,14,0,
-100,148,0,56,67,65,1,57,56,171,250,164,165,64,75,205,8,64,18,227,
-27,0,0,58,128,31,1,10,65,246,181,96,196,55,64,170,0,55,204,236,
-208,53,128,154,64,0,246,184,16,102,132,128,11,135,182,0,95,133,183,132,
-118,3,50,54,56,32,243,113,0,224,78,2,242,144,8,246,174,19,2,49,
-49,56,69,6,192,60,128,118,224,74,0,237,201,0,128,196,96,22,224,105,
-3,246,172,53,224,91,3,185,159,224,135,5,128,254,224,61,7,182,177,225,
-31,3,224,165,12,1,56,56,176,219,192,19,225,142,0,0,53,66,56,128,
-35,253,6,7,246,220,34,192,172,225,205,6,128,25,135,255,246,202,74,200,
-238,224,237,4,208,83,225,166,13,225,105,20,224,102,8,66,246,66,186,67,
-191,225,154,13,224,77,2,0,51,116,116,224,38,1,161,119,64,45,201,161,
-246,251,32,0,83,78,31,233,73,0,112,198,235,127,1,64,81,225,119,0,
-226,178,4,225,114,0,192,158,224,32,9,247,26,50,225,88,4,160,86,100,
-198,225,16,14,226,126,4,64,13,241,42,0,224,93,5,68,72,177,77,227,
-228,1,224,53,1,172,24,226,143,9,246,91,15,224,130,15,225,251,21,224,
-57,16,226,204,3,221,51,101,64,135,15,224,53,7,143,18,130,245,64,37,
-135,15,247,147,52,226,231,56,224,30,39,247,197,32,192,50,225,247,21,194,
-254,226,143,10,65,33,0,54,225,71,11,160,38,210,44,226,110,3,64,51,
-136,33,224,51,13,96,110,192,99,64,44,169,166,1,32,80,225,170,14,224,
-253,3,224,107,5,64,61,0,51,160,61,247,230,75,226,80,0,195,235,247,
-224,8,227,21,1,224,36,10,96,120,96,72,204,55,224,109,10,131,94,224,
-249,17,224,88,11,97,66,227,47,13,227,149,7,96,19,244,190,2,97,56,
-225,155,16,228,192,0,195,30,202,240,64,139,64,15,136,174,0,75,244,235,
-7,246,238,1,170,142,64,115,137,170,236,168,0,161,40,236,170,0,64,121,
-160,43,131,170,0,75,167,4,72,39,96,3,161,226,0,56,131,163,101,116,
-0,90,239,1,0,1,95,49,86,80,1,95,57,103,32,148,94,96,17,233,
-238,4,0,64,107,78,237,255,0,224,31,10,106,15,116,62,224,29,4,1,
-55,55,69,13,1,95,56,224,229,4,171,108,224,45,30,170,138,224,36,21,
-1,45,62,238,193,1,97,135,98,51,64,244,0,54,161,166,133,107,64,165,
-64,21,131,88,138,254,0,49,78,219,3,104,101,97,100,96,74,249,203,8,
-0,68,75,255,4,84,101,120,116,46,64,35,4,58,32,101,109,112,182,140,
-64,72,237,27,3,2,55,32,95,126,209,1,95,49,65,13,70,197,64,33,
-131,88,83,186,1,49,56,237,16,4,98,251,109,16,0,49,75,43,226,76,
-0,247,90,4,171,98,94,125,135,35,224,32,14,218,64,147,32,64,97,224,
-41,4,99,9,160,41,96,29,82,207,96,37,147,125,162,5,2,49,49,55,
-240,24,3,161,85,224,22,7,10,80,114,105,109,105,116,105,118,101,115,46,
-193,119,224,91,4,140,13,0,64,66,133,225,147,0,161,46,207,140,0,85,
-130,130,225,209,8,128,38,84,134,130,200,110,209,0,49,175,63,250,26,5,
-5,36,115,117,112,101,114,192,160,239,143,2,64,64,131,9,150,250,237,232,
-4,1,36,67,64,49,64,34,131,13,67,44,0,66,64,140,225,95,2,1,
-95,56,121,107,64,246,169,212,64,47,130,72,4,98,115,43,43,46,65,203,
-64,26,133,48,0,39,163,53,5,49,55,51,32,95,55,67,101,64,172,76,
-210,64,127,1,56,52,248,21,9,75,199,181,227,112,254,110,55,116,82,64,
-76,0,80,64,142,0,90,96,83,0,56,64,40,132,114,251,138,3,225,11,
-8,20,100,117,112,108,105,99,97,116,101,32,100,101,102,105,110,105,116,105,
-111,110,32,129,26,0,56,231,204,0,97,166,249,90,5,6,104,101,99,107,
-68,117,112,194,205,64,92,246,131,0,64,192,1,95,54,96,195,3,54,53,
-32,95,120,65,2,95,49,53,65,175,83,21,2,51,50,52,177,103,141,234,
-162,39,0,50,98,207,0,55,130,244,64,194,140,191,1,49,49,64,196,0,
-95,145,220,128,15,66,111,0,53,143,199,96,54,224,47,3,164,236,1,83,
-32,71,75,186,123,64,16,66,175,245,32,1,79,108,224,7,1,194,249,229,
-40,2,128,57,96,73,117,142,242,159,2,180,149,195,44,241,239,0,224,64,
-1,96,8,224,61,0,71,20,192,14,192,115,224,13,11,247,41,2,150,50,
-224,48,19,180,157,227,176,0,64,2,128,153,128,108,160,46,214,159,84,107,
-233,17,0,165,253,192,113,192,43,182,41,197,221,64,74,178,185,233,213,1,
-192,62,192,18,181,216,3,95,51,50,50,226,28,2,13,92,34,115,114,99,
-47,77,105,99,114,111,72,115,47,81,0,9,46,104,115,92,34,44,51,51,
-58,53,229,108,2,224,0,5,225,126,21,114,55,225,132,0,129,136,128,167,
-136,86,128,169,160,14,160,185,224,232,1,243,145,0,96,65,244,108,5,224,
-39,10,64,15,244,147,10,66,109,212,43,68,29,114,79,79,189,64,24,196,
-158,224,196,10,128,167,130,47,199,57,224,103,0,128,10,207,154,98,137,0,
-85,254,126,1,1,95,54,95,200,128,123,64,111,199,132,245,26,1,226,53,
-2,129,42,1,75,32,183,198,194,44,192,7,161,214,128,9,128,2,161,56,
-160,13,160,81,225,18,5,224,23,8,224,17,17,193,121,226,171,1,162,84,
-224,123,0,224,119,4,224,61,8,224,64,2,224,65,2,96,218,224,46,14,
-160,93,130,215,247,214,0,65,17,194,6,96,23,105,182,228,139,2,249,165,
-1,225,63,0,224,60,3,96,2,230,128,0,224,137,3,221,106,97,95,160,
-121,64,132,193,215,163,129,224,5,15,66,52,224,58,0,225,35,2,138,6,
-128,87,225,252,0,227,151,1,225,108,14,100,99,227,36,0,160,196,160,136,
-225,216,8,129,67,227,31,0,224,83,0,160,98,102,140,226,236,0,227,72,
-2,224,72,14,225,129,5,224,31,4,129,193,128,87,100,199,164,82,152,129,
-132,72,98,160,128,4,192,33,196,150,64,62,228,181,0,129,22,114,146,229,
-206,1,229,216,2,224,58,9,196,158,84,239,224,42,5,195,200,225,119,1,
-128,222,96,249,101,55,64,163,224,18,1,64,14,109,143,106,165,224,177,6,
-251,40,1,224,245,0,224,8,0,226,174,18,224,28,1,224,29,41,224,190,
-8,117,131,195,47,227,2,0,160,138,225,227,3,224,51,0,194,70,227,44,
-0,64,35,149,57,235,35,2,172,242,130,179,181,226,1,48,57,224,25,1,
-0,95,121,87,128,116,160,156,64,175,3,64,95,52,53,163,87,225,44,5,
-121,165,215,121,168,182,176,195,128,67,1,95,53,76,170,96,112,177,211,98,
-219,129,216,193,81,225,35,5,252,146,5,128,219,226,194,3,225,4,0,226,
-191,91,226,174,3,240,24,0,235,212,1,100,109,133,121,132,63,224,24,4,
-2,64,95,54,85,238,100,151,129,26,96,4,226,238,13,0,90,232,213,3,
-128,233,226,200,31,0,75,183,67,226,200,13,225,15,15,224,13,4,101,18,
-226,103,0,161,171,237,130,3,98,31,165,92,64,151,137,221,96,9,2,54,
-50,51,206,126,65,240,1,54,57,226,110,8,64,138,224,162,0,160,8,160,
-7,226,61,3,165,31,194,61,0,89,161,211,161,188,199,99,96,150,131,30,
-64,39,128,229,132,43,135,37,160,63,132,44,135,129,197,119,64,24,106,43,
-224,116,1,64,237,69,188,67,40,139,130,164,22,106,185,96,9,236,48,0,
-4,79,32,35,54,52,232,55,2,64,8,71,189,204,87,236,43,7,192,91,
-112,61,236,200,1,64,74,173,240,2,95,56,52,64,191,64,36,0,53,104,
-108,64,43,144,19,1,54,52,76,80,64,22,172,96,96,14,139,139,249,215,
-3,64,21,0,51,203,40,0,66,134,137,0,49,229,96,3,64,5,65,161,
-6,49,50,52,32,79,32,35,67,144,192,193,197,76,64,67,139,108,64,61,
-0,48,96,105,137,14,130,127,231,116,0,64,48,243,189,0,134,253,98,146,
-225,242,4,236,210,0,230,103,1,227,131,1,129,154,224,13,10,196,22,163,
-166,231,28,0,98,142,226,81,6,227,164,8,201,39,227,21,0,173,107,228,
-251,8,64,155,65,142,254,95,0,73,62,231,18,0,99,6,64,34,0,57,
-129,64,236,75,6,109,207,101,33,193,56,160,0,96,77,160,55,65,59,202,
-49,140,45,224,238,5,231,127,10,228,96,0,163,243,74,6,225,1,7,229,
-196,9,228,156,2,192,150,255,53,4,233,1,4,193,175,225,73,6,232,14,
-0,170,178,233,93,3,3,67,32,95,51,67,15,160,43,193,57,163,88,192,
-255,96,107,128,221,64,70,224,24,1,228,77,0,193,0,193,32,227,96,1,
-160,170,1,95,52,92,213,225,39,2,237,98,0,64,1,191,132,228,186,3,
-109,160,224,32,0,200,237,224,191,3,97,91,196,203,163,134,110,164,224,203,
-1,231,11,4,224,53,39,224,50,13,239,217,5,228,92,0,239,107,1,99,
-240,0,53,97,177,79,170,2,79,32,35,80,157,96,223,240,173,5,93,186,
-4,55,48,32,95,50,80,96,234,211,3,164,114,65,71,181,152,0,80,140,
-249,100,218,138,109,156,22,160,172,224,180,0,229,15,1,224,18,0,82,253,
-191,52,96,17,254,187,0,157,91,77,252,68,219,64,29,132,178,224,111,22,
-100,231,226,38,7,127,203,225,68,5,96,31,224,124,4,0,54,227,48,4,
-193,248,229,165,0,226,96,0,230,181,1,131,241,162,172,224,220,2,163,4,
-64,84,191,73,65,113,65,105,0,53,128,180,64,25,215,20,149,18,1,95,
-49,122,236,118,110,0,51,96,247,224,10,3,192,30,64,55,133,103,99,24,
-64,214,229,60,0,65,45,96,191,0,90,64,149,96,4,132,52,191,236,96,
-40,255,175,0,78,87,3,95,49,49,52,132,44,73,89,109,251,102,213,67,
-250,225,90,2,255,186,0,64,44,224,7,0,96,8,65,77,0,75,96,65,
-64,19,206,160,228,104,1,225,48,1,128,75,143,106,135,218,0,83,229,81,
-5,128,104,227,154,3,64,8,99,198,228,99,4,97,141,97,94,128,82,224,
-135,0,0,64,124,249,64,65,96,237,64,19,149,72,227,248,0,81,226,247,
-155,0,101,170,64,20,65,97,164,62,119,129,160,40,251,150,2,160,37,233,
-123,2,0,49,88,65,96,42,0,51,98,28,160,143,128,107,244,230,0,224,
-74,1,224,42,2,193,82,161,75,234,235,0,64,198,98,58,160,246,64,194,
-183,22,97,43,174,27,96,174,64,43,65,25,202,166,224,113,10,192,34,64,
-7,183,234,64,94,129,228,225,1,12,192,187,128,68,96,150,235,235,1,192,
-185,231,132,3,185,22,196,244,166,40,234,38,0,64,230,75,250,64,41,64,
-249,161,53,99,74,97,14,0,52,96,5,186,155,162,22,97,225,225,18,3,
-0,52,129,9,163,70,192,53,72,198,64,22,168,137,232,92,5,72,218,100,
-206,64,33,131,45,64,56,105,85,224,39,0,242,77,1,1,67,39,146,51,
-64,45,179,236,225,33,33,224,252,1,224,23,0,129,21,224,207,2,0,51,
-98,146,161,217,128,190,66,223,64,111,249,124,0,233,28,4,0,51,224,191,
-2,131,152,224,191,19,0,83,224,191,1,64,105,229,63,1,194,92,128,118,
-96,31,131,19,224,223,13,230,218,1,160,216,102,126,225,203,9,96,223,168,
-136,192,19,66,114,64,102,129,185,224,207,6,87,51,167,62,96,36,0,54,
-128,139,226,220,5,196,16,128,139,130,100,232,139,0,227,134,4,224,169,7,
-224,162,0,226,116,11,228,195,0,226,137,12,226,127,0,226,191,2,224,79,
-16,0,50,230,81,0,225,13,7,193,1,192,224,139,69,64,231,196,128,228,
-53,2,226,4,0,226,178,4,0,54,225,34,1,0,73,128,61,130,241,225,
-200,3,160,7,64,28,226,247,12,88,194,194,55,64,158,128,33,1,49,51,
-224,27,3,64,26,235,100,0,225,164,4,226,116,2,68,126,230,73,6,0,
-90,182,52,64,29,226,146,0,171,215,135,157,68,208,224,86,10,166,240,96,
-33,229,145,0,96,151,1,50,32,184,97,97,120,129,125,226,153,2,226,92,
-8,97,178,224,38,18,225,137,3,224,38,18,226,0,3,224,77,26,64,7,
-224,77,26,64,7,224,38,18,169,4,224,77,23,166,19,224,194,23,198,58,
-110,23,224,38,25,166,41,230,67,9,0,50,65,3,139,158,226,244,0,226,
-238,5,192,140,192,44,128,9,228,131,9,1,75,52,215,119,224,31,14,0,
-51,224,31,22,0,50,224,31,21,2,67,39,66,224,32,11,66,216,0,50,
-228,92,4,224,59,10,0,66,165,31,224,58,9,194,155,224,26,9,95,5,
-224,26,14,79,12,224,26,3,162,1,96,7,66,228,132,214,65,56,131,120,
-164,252,64,26,132,16,229,125,5,132,247,240,76,8,144,81,67,253,157,14,
-230,122,1,189,54,138,147,224,32,5,237,160,1,0,51,75,155,227,126,3,
-98,40,224,110,12,192,89,128,64,247,227,5,96,4,192,99,206,225,224,135,
-19,128,35,0,80,96,71,224,44,3,128,149,100,58,96,147,233,45,1,238,
-110,0,224,186,4,160,180,224,35,21,2,79,32,35,74,183,224,223,0,101,
-196,128,154,224,38,7,0,49,224,38,0,65,170,240,142,5,226,197,11,224,
-38,21,226,204,0,224,38,21,226,211,0,160,0,243,21,1,224,58,1,98,
-23,197,234,1,80,32,97,78,0,85,128,21,133,227,93,111,83,150,165,66,
-133,214,235,222,4,192,7,203,230,64,85,226,129,0,224,181,7,64,31,232,
-116,0,224,31,5,96,174,64,31,229,223,0,130,193,195,11,0,58,132,82,
-224,58,10,137,65,64,31,133,225,224,58,0,201,137,64,26,227,23,6,198,
-241,64,26,131,23,224,26,0,198,138,64,26,233,247,0,160,26,237,63,1,
-68,151,97,10,237,65,1,104,126,237,65,13,0,64,98,159,130,143,226,187,
-4,192,32,96,31,226,54,3,129,76,0,49,129,112,237,165,3,69,117,64,
-7,237,174,0,128,18,173,164,169,217,69,98,3,10,65,32,79,82,197,64,
-41,127,207,64,11,129,92,179,166,192,1,157,115,165,132,160,2,96,18,3,
-95,49,49,48,108,219,3,58,49,49,48,233,220,3,162,235,128,217,224,14,
-3,224,11,2,192,8,154,106,64,65,169,254,94,203,0,56,79,131,72,21,
-67,44,79,89,159,54,96,201,64,42,207,107,132,25,209,192,224,109,1,224,
-182,2,224,19,20,99,150,0,39,86,87,0,55,132,42,224,47,6,80,141,
-87,253,0,57,72,116,1,95,51,65,111,160,0,225,13,2,241,106,5,100,
-20,128,53,3,49,49,48,52,224,54,5,160,111,224,2,0,128,39,0,56,
-65,131,224,38,2,160,73,224,86,1,4,67,32,95,56,57,137,195,64,84,
-204,167,0,39,243,193,2,241,84,4,96,0,65,39,0,54,225,148,2,96,
-251,192,88,65,117,64,32,208,0,7,49,48,32,75,32,85,32,90,192,197,
-224,43,3,96,5,1,95,55,242,14,0,96,56,169,227,3,54,32,95,55,
-64,183,214,23,0,48,66,174,64,31,130,153,0,85,172,128,177,0,0,56,
-190,136,96,14,227,161,1,2,32,61,32,100,140,145,224,2,49,49,48,147,
-30,64,70,228,45,0,0,57,81,249,100,198,96,29,64,120,0,57,158,131,
-1,49,48,130,243,0,50,112,111,96,29,64,57,130,214,131,26,1,95,57,
-66,75,96,136,0,57,71,146,203,39,0,57,65,48,224,65,1,128,7,128,
-248,224,40,10,65,111,0,57,87,212,96,29,0,49,64,21,0,57,100,130,
-231,228,0,128,103,0,64,192,24,78,210,229,216,1,224,92,0,96,30,3,
-64,95,49,48,69,47,96,171,131,118,3,80,32,35,51,106,117,3,58,49,
-48,57,196,203,2,48,53,56,192,196,1,49,48,83,105,1,49,48,71,227,
-192,152,1,51,55,114,88,160,25,0,57,178,63,224,14,4,224,42,13,96,
-68,224,42,8,224,15,1,97,130,64,136,210,244,128,138,228,169,1,224,2,
-3,99,1,227,56,2,128,107,128,123,227,38,13,224,33,0,224,29,3,224,
-26,5,192,22,224,19,2,224,201,27,0,53,67,120,2,48,54,54,129,49,
-64,28,224,14,3,114,87,0,48,254,135,1,224,56,8,83,3,224,22,11,
-173,65,225,32,1,82,167,192,28,224,78,0,128,30,161,57,216,195,0,89,
-160,195,129,64,232,124,1,64,4,0,80,118,200,164,136,224,217,13,224,84,
-1,225,119,4,225,61,4,224,2,1,96,134,225,137,1,68,139,225,140,0,
-224,63,2,225,110,1,66,213,225,140,4,215,106,224,23,1,128,156,224,16,
-1,68,111,160,146,224,171,1,129,3,224,187,7,224,188,1,224,52,2,161,
-31,0,54,226,226,2,68,40,225,238,44,0,57,133,52,225,174,14,64,102,
-199,164,192,102,224,83,32,64,60,206,202,224,60,18,129,253,224,14,6,96,
-60,133,3,192,60,243,176,0,5,67,32,60,32,64,35,108,185,224,19,6,
-141,12,224,19,6,224,39,11,109,169,65,50,224,19,2,137,156,224,211,1,
-131,209,224,180,36,224,84,9,65,24,224,84,3,128,39,225,173,34,181,140,
-225,157,4,0,55,183,173,224,126,9,244,197,1,160,127,101,131,224,147,6,
-65,157,224,147,2,227,131,5,225,225,15,224,135,5,224,112,0,225,30,38,
-225,136,7,111,89,224,19,7,64,106,224,179,7,64,241,226,124,30,224,200,
-0,224,18,8,224,84,6,111,183,225,8,8,195,120,224,217,29,161,144,196,
-32,225,128,8,144,136,224,119,6,66,125,224,158,9,225,74,38,224,64,2,
-84,82,128,0,225,74,6,225,93,11,65,73,224,19,7,226,37,10,105,76,
-226,167,33,224,165,13,225,148,10,225,194,35,224,147,8,64,126,225,38,29,
-225,197,22,0,55,73,9,230,31,5,225,204,0,0,56,226,172,0,225,204,
-7,66,47,224,146,6,66,171,225,137,3,133,55,226,123,10,227,112,16,225,
-141,8,65,120,224,18,6,226,68,10,130,67,224,220,12,160,198,130,147,225,
-130,31,226,215,12,199,246,64,28,226,103,4,224,142,8,64,247,225,220,15,
-96,53,224,104,1,163,43,224,45,29,163,95,213,127,227,95,9,228,43,10,
-226,36,32,232,234,12,225,151,1,227,145,50,194,126,166,200,203,133,230,200,
-12,64,42,224,18,6,130,104,224,18,4,229,20,10,99,202,228,191,9,225,
-95,21,224,36,4,224,21,0,83,44,224,195,7,224,78,5,224,143,7,231,
-65,10,231,64,6,224,142,7,224,88,15,224,25,17,231,182,8,225,22,9,
-66,45,226,138,12,225,138,1,128,77,227,164,3,77,36,0,48,83,186,224,
-127,7,81,12,128,235,225,104,5,227,228,6,128,57,224,99,3,226,51,0,
-65,237,209,129,65,237,64,28,0,48,224,90,0,64,29,209,127,108,152,202,
-18,210,211,0,53,123,29,239,172,2,74,221,0,58,128,114,236,69,3,161,
-218,96,127,117,214,66,197,1,64,83,83,221,124,172,179,233,64,172,127,141,
-1,48,56,203,85,0,56,140,143,2,85,32,65,109,39,64,23,96,14,125,
-231,96,45,224,187,3,226,225,2,64,29,234,10,5,228,183,10,225,157,6,
-118,233,225,75,5,137,16,230,86,93,227,168,17,224,46,36,228,114,31,224,
-57,7,228,132,35,230,116,1,230,40,18,65,130,235,80,26,228,214,5,224,
-95,2,224,76,3,224,127,7,163,115,64,98,0,51,239,58,4,0,80,225,
-44,34,224,227,22,128,99,64,98,229,16,20,109,228,225,115,6,64,79,224,
-19,7,226,93,10,105,110,232,100,37,226,140,33,0,55,224,212,5,237,177,
-7,226,47,2,233,73,51,230,142,6,167,0,164,152,224,109,8,224,156,1,
-104,209,231,46,7,232,254,42,226,110,1,234,58,12,233,146,49,226,104,5,
-193,17,129,20,240,186,46,224,177,4,225,65,30,224,61,7,227,39,5,97,
-19,224,13,5,224,53,12,224,198,0,234,16,13,225,217,21,241,68,5,224,
-143,7,231,138,1,226,152,32,225,251,2,199,60,224,117,1,225,229,6,225,
-223,17,239,40,10,231,229,25,181,247,227,115,37,230,20,15,225,226,16,224,
-196,15,229,201,38,232,80,13,224,138,4,195,172,224,204,25,227,107,6,225,
-244,23,227,206,28,232,122,14,228,59,70,85,62,226,210,10,192,39,224,111,
-72,160,23,169,112,224,118,15,64,0,70,27,233,62,3,228,191,15,228,89,
-11,224,140,0,140,172,225,244,1,64,84,233,117,3,228,121,65,160,234,224,
-21,6,192,121,225,38,1,226,189,6,1,55,56,228,114,4,192,183,150,212,
-228,205,2,224,30,5,245,137,6,224,45,4,224,233,1,65,101,234,41,3,
-138,8,234,43,0,105,232,119,68,192,15,0,65,96,64,64,57,219,222,225,
-35,5,161,38,245,19,0,193,41,246,121,58,158,43,225,38,1,226,150,6,
-225,54,8,230,181,3,224,22,8,225,23,5,161,159,68,191,225,26,1,220,
-164,232,216,20,227,229,12,224,138,7,224,36,6,128,14,64,98,0,54,224,
-98,4,128,90,171,195,64,237,233,186,29,230,208,7,175,119,64,67,221,22,
-128,69,247,0,0,128,42,128,34,233,190,5,65,139,121,122,0,83,224,5,
-0,64,4,64,52,192,3,224,103,0,128,119,192,174,233,163,3,225,45,16,
-229,158,19,224,36,13,192,94,227,230,26,230,61,13,64,60,227,206,3,64,
-40,0,48,96,5,66,63,0,58,128,7,224,185,6,227,212,35,227,112,7,
-195,97,224,150,6,224,222,14,226,83,40,249,167,47,248,48,8,241,171,5,
-228,24,0,65,16,227,217,3,226,149,6,72,140,250,159,8,0,83,224,146,
-9,228,65,7,228,66,9,96,77,0,54,225,213,26,241,225,5,0,54,135,
-64,64,60,227,32,3,224,166,7,236,247,7,225,209,36,132,176,225,58,17,
-226,88,0,64,155,226,88,10,64,31,64,29,227,18,3,224,29,1,64,93,
-64,29,130,209,0,75,224,186,8,130,172,250,199,8,64,11,131,189,160,187,
-224,209,7,161,95,224,8,2,64,78,0,53,130,221,1,85,32,64,11,207,
-204,156,244,64,36,190,174,254,33,6,7,84,109,111,100,117,108,101,32,126,
-38,0,64,154,214,126,82,127,160,80,34,1,56,50,101,125,224,59,0,1,
-79,32,107,239,129,235,133,234,128,49,1,64,67,91,126,64,146,66,143,224,
-38,4,96,131,130,1,3,85,32,75,52,98,23,64,18,129,215,1,80,32,
-73,111,160,169,129,206,95,151,127,192,98,180,159,192,64,29,161,133,2,57,
-49,56,96,229,129,118,64,154,0,89,251,255,1,64,5,0,80,68,205,0,
-95,127,253,1,49,52,129,33,226,186,3,96,8,64,41,0,95,103,167,96,
-26,224,20,6,97,121,0,39,128,67,64,212,166,48,64,117,129,206,0,80,
-190,59,64,94,160,100,160,6,97,7,160,63,96,66,1,48,53,96,102,226,
-155,3,231,62,9,220,119,225,240,4,0,80,224,124,2,224,132,0,224,8,
-0,64,140,222,225,1,95,49,64,169,4,75,32,95,49,51,162,148,0,52,
-196,237,255,226,1,1,48,52,152,217,0,90,226,10,11,226,9,4,163,52,
-97,216,130,8,66,17,224,48,5,12,40,46,46,46,41,32,119,104,101,114,
-101,94,42,96,54,64,97,220,136,3,95,49,50,53,224,114,0,64,142,164,
-107,3,54,32,95,57,167,139,95,198,64,25,228,105,0,0,57,71,10,3,
-95,50,54,56,79,249,65,69,139,148,0,83,163,20,235,162,4,128,103,225,
-73,1,95,203,1,61,61,224,24,2,3,85,32,64,90,96,128,165,78,224,
-42,10,128,25,160,42,224,44,4,97,173,4,95,49,48,48,48,128,169,64,
-151,2,57,55,57,164,226,96,181,0,54,162,207,240,164,79,0,57,73,119,
-64,133,96,8,160,16,96,132,225,130,1,6,100,101,102,97,117,108,116,129,
-179,1,95,57,107,50,224,34,6,1,58,58,128,29,64,198,0,51,132,239,
-3,85,32,75,50,192,97,224,80,8,14,114,105,118,105,110,103,32,105,110,
-115,116,97,110,99,101,160,90,224,59,0,240,197,15,223,124,162,207,0,90,
-64,44,226,240,2,0,39,164,192,96,203,194,93,224,225,27,6,112,97,116,
-116,101,114,110,224,134,1,65,75,96,35,2,79,32,35,69,89,161,145,64,
-26,139,116,117,59,0,52,96,72,65,99,0,66,98,114,3,49,48,48,51,
-128,90,2,79,32,35,69,41,160,54,96,29,127,65,117,14,130,189,64,75,
-248,209,2,225,145,5,225,136,27,224,126,1,161,147,96,104,2,57,56,50,
-128,62,86,8,96,7,67,11,224,70,4,0,44,163,126,99,3,225,116,3,
-64,0,241,117,33,102,75,1,48,51,224,172,15,225,219,16,64,57,96,233,
-128,61,232,130,6,225,187,9,224,94,13,4,99,108,97,115,115,224,91,1,
-103,198,193,185,96,8,195,99,241,33,13,130,71,166,89,224,115,14,0,57,
-96,7,228,142,5,4,105,110,102,105,120,96,118,101,152,0,52,70,63,2,
-52,49,49,103,72,102,141,0,56,161,245,224,26,9,67,140,130,16,224,27,
-5,162,36,224,115,0,3,95,49,49,56,69,75,164,227,225,203,35,194,7,
-129,102,225,87,12,224,240,19,225,100,8,19,102,111,114,101,105,103,110,32,
-105,109,112,111,114,116,32,99,99,97,108,108,226,125,9,160,148,160,184,6,
-49,50,54,32,95,51,48,202,0,228,48,33,242,18,53,238,50,18,0,57,
-179,46,224,29,3,224,26,5,226,129,44,129,20,166,201,76,235,185,69,2,
-49,48,51,64,165,64,7,103,175,132,33,224,60,6,13,123,45,35,32,83,
-79,85,82,67,69,32,35,45,125,161,11,1,64,80,193,82,224,44,5,8,
-113,117,97,108,105,102,105,101,100,192,39,193,232,226,50,0,65,141,0,75,
-129,138,226,175,5,2,32,97,115,130,33,1,95,55,194,80,224,101,0,228,
-114,1,65,5,192,75,0,80,64,72,224,64,2,5,104,105,100,105,110,103,
-160,121,96,44,228,96,14,3,79,32,35,52,226,226,1,196,91,218,231,128,
-0,230,119,36,2,116,121,112,196,61,226,67,22,1,57,57,165,73,243,217,
-19,224,114,9,224,193,26,195,81,226,190,25,224,103,14,68,229,193,209,230,
-76,15,244,25,35,65,84,0,50,229,243,0,224,86,10,225,99,48,230,246,
-21,163,163,244,32,25,227,62,9,224,130,22,2,110,101,119,224,133,31,124,
-159,96,8,141,182,104,17,0,83,64,88,123,37,227,181,27,3,100,97,116,
-97,224,106,5,224,79,1,64,59,72,83,192,7,224,215,53,224,105,9,224,
-212,10,226,134,11,227,124,2,1,92,124,160,65,163,78,129,0,225,3,4,
-128,0,74,43,174,192,104,136,73,229,224,52,0,172,216,64,48,138,76,230,
-5,37,201,174,228,234,3,0,80,64,36,228,169,9,4,115,116,111,99,107,
-195,179,225,229,18,224,27,5,2,97,110,121,231,206,2,0,75,160,90,64,
-0,64,144,228,111,34,96,250,67,84,1,95,56,227,90,0,224,176,9,165,
-142,224,6,2,224,247,13,1,118,105,225,191,2,130,255,65,69,142,30,230,
-111,1,230,78,3,97,81,226,55,23,2,95,57,57,68,152,232,182,1,164,
-100,0,80,96,33,64,230,225,185,0,197,229,2,49,48,52,192,253,192,30,
-192,128,166,195,228,124,13,228,36,1,228,187,13,96,96,225,77,9,128,0,
-64,236,142,252,224,102,0,96,5,192,47,2,49,50,51,225,126,0,224,18,
-0,0,53,160,18,64,60,142,195,73,109,131,158,193,71,97,213,224,71,1,
-75,6,160,70,193,104,64,61,142,116,65,185,195,228,0,85,234,234,0,99,
-159,96,4,230,194,3,224,28,0,226,52,0,2,49,48,51,65,6,233,28,
-8,224,208,3,225,33,9,3,40,46,46,41,230,90,0,64,31,0,58,134,
-200,206,89,97,131,226,135,13,64,41,142,131,0,65,80,60,72,1,64,53,
-0,52,117,12,97,4,0,80,175,69,175,67,96,15,64,9,128,21,73,89,
-0,48,97,251,104,68,64,66,0,54,96,66,2,83,32,85,195,23,78,69,
-226,177,3,97,119,224,129,0,227,42,29,231,21,22,225,49,4,224,66,0,
-193,219,224,100,1,225,89,9,161,3,132,139,224,180,6,224,102,3,129,233,
-2,95,57,56,99,10,225,127,5,1,61,62,161,125,96,74,214,116,80,168,
-103,6,1,64,80,129,145,195,136,128,199,64,142,194,13,141,104,168,52,128,
-162,0,57,243,232,0,65,108,147,71,1,51,48,97,163,246,11,0,0,50,
-83,175,64,30,64,21,162,126,0,39,81,245,246,192,1,118,207,241,64,0,
-160,12,167,19,160,15,113,234,128,2,0,67,120,254,234,139,2,2,66,32,
-83,147,115,98,131,192,68,224,61,0,138,184,224,46,3,240,69,0,235,35,
-0,151,84,110,234,66,78,128,5,102,252,160,81,240,203,2,108,230,128,10,
-210,153,224,80,0,161,178,128,102,0,85,128,62,224,132,1,192,11,96,74,
-160,208,196,232,160,96,160,58,128,35,1,95,54,80,170,96,20,64,64,241,
-76,2,0,66,66,242,229,20,6,128,90,225,26,5,131,179,235,166,14,197,
-87,96,58,160,14,98,52,164,52,128,204,0,75,199,29,224,175,44,224,160,
-6,96,157,224,154,5,224,127,13,224,118,0,225,243,0,226,8,0,193,0,
-129,126,193,148,73,195,66,188,236,48,0,96,190,99,161,160,144,160,24,84,
-4,99,155,3,56,48,32,95,122,174,0,95,68,179,130,11,96,10,193,64,
-128,94,236,131,1,0,51,80,125,235,197,2,1,91,93,195,81,224,43,0,
-224,100,4,224,87,2,175,26,1,95,57,89,247,2,95,57,56,200,101,149,
-120,131,175,64,126,0,52,102,188,1,66,32,140,88,2,95,57,56,97,162,
-128,41,192,4,96,155,66,91,161,57,96,242,212,229,161,92,195,16,160,198,
-129,45,161,50,234,104,2,96,134,198,8,235,44,5,96,182,224,26,13,96,
-53,129,241,224,26,7,96,133,99,96,224,22,4,142,77,2,95,57,56,129,
-219,96,190,226,5,5,248,158,4,167,124,130,22,96,11,231,109,8,199,110,
-227,247,0,224,113,6,140,164,98,229,240,113,11,0,95,136,132,240,21,6,
-121,8,224,149,2,164,248,232,95,7,228,53,0,96,181,225,4,9,224,208,
-0,64,26,224,150,5,101,105,224,254,0,160,102,128,10,101,106,160,10,230,
-97,1,242,240,2,101,115,128,119,249,209,0,96,97,96,96,231,255,17,224,
-26,8,80,76,232,147,3,225,142,24,137,108,227,165,7,225,77,1,0,45,
-198,90,193,141,226,56,13,0,49,97,102,224,26,13,98,24,225,51,13,169,
-174,0,85,232,150,5,232,108,11,76,5,233,110,4,160,217,224,253,4,224,
-33,7,237,124,7,64,223,130,57,65,10,97,142,67,138,65,124,224,73,6,
-68,236,201,169,231,172,2,160,170,100,176,225,49,0,229,8,4,225,81,5,
-226,224,1,233,254,5,232,116,30,2,95,57,57,162,22,224,67,1,232,83,
-1,160,121,225,112,9,100,113,225,112,12,0,49,163,196,161,58,233,16,2,
-232,171,2,226,53,12,224,227,17,226,53,11,242,173,12,163,179,242,23,9,
-0,102,236,53,0,83,230,226,127,14,192,0,64,128,228,246,17,226,134,18,
-97,197,224,26,13,227,213,17,119,71,225,15,3,225,17,1,224,16,1,142,
-61,227,90,5,183,90,0,79,237,44,16,192,245,227,145,6,224,48,17,2,
-116,104,101,183,112,199,242,224,43,17,2,101,108,115,174,57,227,49,9,225,
-213,5,225,207,1,226,232,3,194,87,225,11,5,97,200,226,27,20,226,13,
-0,192,74,235,54,0,2,49,48,48,79,97,83,119,224,171,6,1,100,111,
-96,169,236,97,21,0,46,160,37,131,58,3,49,48,48,49,124,158,128,114,
-239,186,2,231,43,0,229,193,15,99,79,228,25,8,150,228,65,200,131,111,
-228,92,1,168,170,229,215,35,238,22,2,229,215,2,160,70,226,188,19,215,
-220,224,25,9,227,209,17,227,208,3,225,106,4,192,8,225,72,6,1,108,
-101,181,129,225,70,21,160,246,226,95,15,0,105,226,137,0,160,124,228,30,
-4,128,128,162,164,162,18,224,71,13,1,99,97,226,167,0,224,25,6,0,
-111,195,30,224,167,20,134,91,96,0,225,209,6,72,200,135,242,96,88,68,
-92,135,161,224,22,1,65,200,96,7,229,246,1,94,216,165,127,116,53,0,
-95,241,179,11,228,146,8,249,24,0,202,199,131,30,228,99,5,192,205,129,
-164,231,11,10,225,200,0,128,33,4,64,95,53,54,55,138,13,161,84,104,
-248,106,134,96,10,64,6,226,237,2,96,37,74,58,239,234,1,66,209,253,
-249,0,192,92,192,117,96,131,225,52,1,128,3,194,121,139,237,234,178,0,
-193,68,162,130,64,121,65,126,114,56,249,154,4,226,33,3,2,115,116,36,
-129,39,202,174,129,113,160,73,236,14,1,235,17,7,247,120,2,225,74,0,
-195,136,192,13,99,120,129,40,1,39,32,163,100,235,40,2,65,225,0,65,
-96,11,64,9,129,208,125,94,101,15,64,15,0,58,110,188,174,176,226,185,
-1,1,51,54,120,129,0,56,72,72,96,230,0,55,110,219,0,50,144,161,
-79,157,0,79,161,83,96,84,79,161,239,61,0,128,45,128,90,223,59,1,
-80,32,110,54,0,85,128,69,0,54,239,152,3,96,193,143,152,65,205,160,
-24,154,27,99,238,96,14,128,218,225,218,1,161,0,230,113,0,162,77,230,
-61,3,96,146,99,116,193,41,227,213,0,236,154,0,230,62,0,135,115,230,
-36,0,64,140,244,244,0,228,130,9,255,84,10,106,161,229,72,5,233,117,
-7,129,1,97,37,106,186,97,140,113,145,96,18,112,104,4,66,32,95,53,
-56,65,69,1,54,54,220,135,1,64,85,172,232,224,98,6,250,209,16,96,
-45,64,104,251,85,10,224,22,14,248,71,13,229,148,8,228,91,12,128,80,
-192,75,189,222,64,226,98,66,96,28,5,53,51,53,32,95,53,68,84,192,
-133,224,36,0,130,177,96,146,0,48,140,85,228,195,9,66,34,224,50,2,
-65,24,224,12,4,160,100,224,95,0,224,43,6,237,1,7,97,221,0,51,
-177,187,1,49,57,64,107,0,95,98,184,1,50,49,96,133,138,171,101,186,
-0,95,74,171,192,153,0,95,74,116,192,12,64,67,210,15,1,49,57,64,
-94,128,40,96,60,1,49,48,75,209,224,47,0,64,19,64,47,146,47,4,
-102,115,104,111,119,82,63,64,35,182,16,163,219,115,221,130,158,234,4,21,
-0,58,133,242,226,159,11,129,167,224,18,4,64,79,225,82,6,206,59,195,
-69,100,49,234,219,5,142,160,166,187,160,12,224,25,1,232,166,1,183,56,
-231,244,10,177,95,224,196,6,1,46,46,235,19,2,233,30,0,224,136,3,
-224,116,83,224,108,10,224,95,22,224,185,21,225,107,7,96,178,230,209,9,
-162,146,64,113,224,100,31,224,168,15,68,209,232,79,0,225,8,6,245,206,
-2,228,245,0,96,7,253,106,19,234,43,3,137,252,158,140,160,225,66,107,
-133,247,224,141,3,128,139,233,248,32,64,68,134,12,234,223,3,232,112,2,
-250,217,0,224,17,0,206,36,64,58,0,54,213,105,1,49,52,183,5,64,
-21,198,46,0,80,168,159,129,120,71,194,64,41,114,133,0,54,65,124,102,
-123,64,48,214,17,149,153,232,168,11,178,107,1,51,55,247,104,2,128,30,
-168,141,64,12,129,240,64,2,224,59,4,227,112,5,224,25,1,224,27,5,
-229,182,16,6,75,51,32,95,51,52,51,226,10,2,8,115,101,112,49,32,
-65,98,111,118,202,27,224,37,17,4,66,101,115,105,100,224,38,0,224,124,
-1,227,246,12,1,95,57,154,31,224,37,0,213,197,128,168,100,3,231,100,
-2,1,57,53,134,172,128,79,64,189,231,112,1,64,88,0,67,64,34,101,
-64,161,47,64,51,65,120,0,95,167,193,128,0,129,93,225,56,2,224,97,
-0,230,122,8,128,28,224,144,1,224,142,1,224,205,4,170,199,224,195,2,
-224,79,0,116,114,79,203,225,189,0,128,69,169,42,64,11,3,95,49,55,
-52,181,29,192,113,224,71,15,134,57,224,71,10,97,1,66,108,96,181,104,
-113,224,85,1,245,104,0,96,59,224,202,1,224,199,8,128,38,192,124,128,
-123,2,95,57,52,106,21,225,103,39,224,196,4,137,2,0,53,166,79,149,
-10,96,0,1,95,55,64,210,67,18,135,7,99,18,161,160,224,161,5,96,
-184,0,64,152,94,225,146,2,225,195,21,161,152,225,179,1,98,82,248,65,
-0,224,30,5,225,112,0,223,65,226,99,0,224,66,18,226,191,12,160,135,
-64,234,64,31,64,14,64,11,65,94,193,202,1,54,48,198,222,100,25,252,
-96,0,115,0,64,6,193,178,161,58,71,192,97,109,226,211,12,164,102,97,
-72,136,12,231,142,8,65,115,228,1,49,7,111,110,101,76,105,110,101,114,
-228,5,25,224,41,0,228,9,6,228,0,20,74,126,193,33,64,0,234,5,
-12,227,114,8,136,176,131,94,224,61,1,224,21,0,76,194,224,83,1,233,
-202,12,95,169,164,130,64,140,0,53,230,105,2,137,35,0,83,65,173,197,
-162,217,142,225,252,6,164,151,224,64,1,64,62,137,82,238,45,3,0,48,
-64,36,64,7,70,135,0,58,139,230,64,97,98,192,118,89,224,94,0,98,
-229,128,174,230,24,5,96,196,96,205,195,141,224,19,0,128,17,210,57,207,
-217,239,59,0,250,96,4,185,239,160,48,170,198,103,32,64,159,205,52,64,
-168,192,195,233,145,5,148,109,199,250,160,17,232,62,6,2,32,92,124,240,
-215,0,231,254,39,192,175,64,132,167,172,1,32,80,234,157,0,232,119,7,
-74,166,224,124,6,1,60,45,233,32,6,192,7,129,137,241,132,54,64,150,
-0,54,160,150,2,95,57,57,112,204,189,116,75,172,253,154,3,64,155,225,
-228,0,98,11,255,246,6,3,49,48,48,48,66,147,225,184,0,224,150,3,
-3,119,104,101,114,195,65,224,153,28,128,155,133,74,4,95,49,48,52,53,
-96,131,132,17,229,131,1,132,64,64,25,130,228,224,197,1,168,208,64,146,
-169,102,186,220,162,137,231,147,6,229,5,7,211,73,163,49,231,194,7,224,
-46,7,2,95,57,55,64,183,101,52,96,5,0,58,96,134,225,238,19,98,
-68,0,55,226,76,9,248,29,1,151,166,180,238,192,31,0,54,233,213,0,
-226,9,3,224,73,35,235,29,14,1,58,57,88,16,65,109,3,54,32,95,
-56,107,1,64,75,0,57,64,8,2,51,54,53,97,90,0,55,231,42,1,
-170,30,64,54,240,145,1,178,19,102,250,97,114,125,186,0,67,80,14,128,
-137,240,79,1,182,196,177,89,64,92,231,218,1,0,58,64,198,129,232,227,
-152,20,5,102,111,114,97,108,108,227,155,5,160,235,111,249,225,53,1,225,
-11,0,1,58,57,91,143,134,85,228,174,0,133,13,193,227,225,219,6,64,
-165,136,67,132,192,98,98,98,164,225,81,1,129,222,0,56,101,220,236,251,
-12,246,119,11,248,200,1,0,57,75,152,128,156,131,100,65,217,2,49,32,
-58,96,23,96,171,0,75,254,77,0,0,55,104,102,3,95,56,52,51,107,
-209,249,90,1,0,58,96,149,225,191,27,102,71,225,191,2,198,31,0,73,
-229,28,3,225,5,0,100,202,108,14,166,223,224,35,1,2,95,57,55,108,
-110,140,188,160,116,96,113,96,212,129,28,0,58,96,8,163,9,0,75,71,
-29,161,54,224,9,3,224,11,1,0,58,125,237,239,195,0,2,95,56,52,
-133,112,64,240,96,114,4,56,55,32,95,56,96,139,1,95,55,66,38,128,
-51,130,186,2,75,32,89,99,232,65,48,233,1,4,138,38,98,101,207,150,
-161,251,119,45,255,168,2,160,56,0,80,65,105,161,206,193,122,116,148,98,
-74,169,236,97,188,2,52,53,49,96,33,0,56,77,70,99,143,128,34,128,
-0,0,58,64,175,128,253,192,102,128,70,2,56,54,53,178,227,224,22,5,
-0,53,98,185,1,95,54,84,66,234,150,0,165,148,96,188,211,252,136,223,
-64,20,237,179,1,244,17,0,1,57,56,205,151,1,80,32,184,129,64,20,
-130,78,238,46,13,72,60,238,46,5,65,121,163,52,66,218,165,94,64,249,
-224,143,0,130,58,247,12,4,161,148,0,58,97,207,160,51,117,241,104,82,
-0,58,96,36,224,74,4,101,169,99,229,229,168,93,64,158,229,168,3,64,
-133,160,121,97,46,129,188,128,60,117,70,64,35,129,120,227,90,5,0,55,
-79,14,227,90,0,0,50,229,26,10,70,216,64,54,64,250,0,58,96,21,
-227,104,18,98,81,227,104,21,167,48,163,104,64,127,96,109,196,61,64,8,
-224,201,3,237,99,2,224,201,1,129,201,205,137,65,42,193,101,225,60,2,
-161,61,225,63,9,224,24,0,224,168,1,192,19,97,83,192,85,96,71,129,
-101,225,103,0,130,44,0,65,65,9,130,26,2,95,57,54,65,71,73,173,
-2,58,57,54,130,23,6,95,57,54,55,32,35,49,71,183,1,80,32,75,
-27,104,37,0,58,96,36,5,10,65,32,80,32,58,64,32,130,65,76,152,
-1,57,54,144,148,136,12,74,0,0,75,96,77,129,176,0,85,87,171,0,
-58,96,23,162,167,64,13,195,27,133,171,226,105,1,203,21,70,156,253,57,
-4,138,207,78,151,1,57,51,238,66,5,2,95,57,53,133,77,108,251,166,
-37,2,95,49,48,68,78,87,218,68,32,0,48,239,18,0,0,58,96,173,
-194,3,64,87,236,178,10,192,138,2,95,57,53,120,186,160,89,226,50,0,
-229,153,5,224,47,3,72,27,224,47,1,0,58,96,9,137,178,227,34,0,
-238,103,2,129,181,237,89,8,240,182,3,224,39,15,164,223,238,183,0,240,
-77,15,165,36,226,31,2,64,8,206,148,224,7,5,224,190,7,224,54,4,
-224,145,0,227,218,2,192,13,133,222,163,75,69,227,101,78,0,57,101,94,
-96,29,224,89,6,160,165,225,220,0,1,95,57,69,247,161,62,129,194,134,
-42,160,15,224,51,0,224,219,5,241,247,7,192,171,161,17,226,76,1,241,
-237,0,224,88,7,224,104,11,225,119,1,160,226,238,58,5,224,94,0,160,
-32,224,145,4,242,82,1,208,243,130,166,128,224,142,92,224,118,12,224,50,
-7,133,176,160,130,229,140,0,227,37,3,160,217,228,29,7,224,225,9,128,
-88,144,36,160,0,164,104,224,193,11,224,53,5,225,61,0,87,180,145,186,
-224,188,10,132,100,0,58,96,16,209,118,128,86,130,17,164,225,225,85,15,
-193,52,227,93,8,192,24,0,85,199,22,224,33,8,165,166,239,108,1,103,
-205,65,104,0,55,71,62,70,11,233,155,0,64,255,99,247,0,95,70,255,
-0,58,97,145,68,237,1,52,56,97,68,64,143,2,95,52,53,65,226,65,
-110,2,95,51,48,74,196,98,194,0,58,96,6,227,198,3,192,193,192,207,
-227,114,10,225,209,5,228,79,3,225,66,2,128,14,64,0,227,200,1,225,
-221,12,163,238,225,0,0,157,169,115,56,97,4,195,90,128,54,227,231,20,
-224,67,5,97,221,104,27,246,84,1,228,1,3,64,252,246,226,0,128,50,
-193,193,246,85,12,98,239,132,22,224,210,0,228,235,22,160,25,224,27,5,
-242,78,34,0,97,82,69,3,78,101,115,116,242,79,25,224,42,1,246,90,
-58,225,178,13,228,108,1,129,250,97,47,193,238,161,198,224,24,16,64,0,
-225,54,24,161,155,224,126,1,224,39,1,228,140,10,226,18,7,197,170,228,
-140,2,205,87,225,189,2,224,151,5,246,84,7,224,82,2,132,223,131,235,
-224,74,0,78,89,72,24,171,133,96,116,134,41,193,48,225,54,2,225,55,
-0,232,232,10,160,151,224,138,2,224,205,4,131,3,224,150,0,101,56,246,
-169,11,230,187,0,225,42,15,160,40,224,92,4,128,1,228,246,2,225,179,
-16,192,52,182,148,96,0,108,158,0,58,96,36,249,156,6,227,64,22,192,
-153,225,79,0,243,192,0,224,23,1,225,200,1,225,237,12,229,72,14,224,
-167,0,129,179,2,64,95,56,233,22,1,229,91,29,96,125,225,76,0,192,
-72,1,95,49,95,247,165,59,71,252,3,54,53,32,95,102,109,128,67,225,
-70,2,193,33,96,16,0,55,96,253,0,50,91,220,101,169,225,55,1,65,
-56,138,47,128,240,230,68,34,192,48,224,28,4,96,227,224,224,8,96,21,
-232,63,5,225,57,14,97,54,128,198,152,118,225,57,4,225,58,26,253,78,
-0,137,25,74,176,165,105,99,132,70,112,0,58,96,90,140,170,2,50,32,
-58,100,67,172,73,1,80,32,133,42,0,80,98,81,206,7,1,67,39,98,
-84,194,200,98,151,228,19,0,76,105,226,195,0,135,159,128,39,201,19,226,
-73,25,227,52,11,224,39,4,229,190,4,254,48,6,64,213,65,19,225,108,
-4,229,140,6,0,98,69,135,0,103,213,44,229,101,4,160,84,164,97,192,
-135,197,102,160,198,110,214,96,172,105,31,226,223,1,160,169,228,228,2,194,
-241,251,28,7,163,146,224,227,17,228,24,0,164,178,231,239,11,234,211,1,
-224,124,8,103,222,65,162,99,110,233,236,11,228,95,0,226,48,5,128,138,
-225,3,0,192,193,225,223,0,97,187,224,37,0,225,190,11,225,55,1,193,
-194,224,46,13,196,177,192,28,225,200,50,0,49,225,201,11,224,88,0,226,
-133,3,225,208,4,227,173,0,132,232,64,61,97,82,225,213,2,229,148,0,
-72,192,160,70,225,187,5,224,220,13,225,113,1,230,2,24,164,128,224,109,
-4,160,79,225,203,2,227,235,0,78,160,64,8,228,10,1,253,24,2,224,
-68,8,225,231,2,226,138,14,229,104,4,0,64,111,52,104,194,64,6,64,
-4,0,58,110,229,111,126,68,57,0,73,100,10,207,195,3,52,56,32,58,
-96,95,210,111,64,137,114,111,0,52,182,80,71,138,0,58,96,195,228,83,
-1,96,241,100,83,71,167,128,37,0,52,64,37,210,205,96,37,98,78,128,
-37,132,159,129,113,129,164,64,138,0,58,99,132,234,32,1,226,112,8,1,
-95,57,82,198,128,13,224,246,3,1,95,54,84,72,172,150,96,208,64,82,
-208,86,167,28,1,52,54,230,75,3,128,123,230,14,2,134,146,96,90,225,
-248,4,195,147,131,42,230,14,36,199,136,230,14,11,192,86,230,14,0,96,
-217,98,7,255,33,12,252,39,15,150,0,128,110,220,83,227,84,6,3,102,
-105,116,115,250,119,0,147,235,64,108,130,1,0,53,162,1,67,102,85,116,
-0,50,230,15,1,96,240,225,132,1,233,109,0,225,148,0,193,166,239,29,
-1,230,44,10,227,48,2,230,38,15,225,37,3,229,26,2,224,35,4,235,
-7,2,228,67,3,64,22,224,238,6,10,100,105,115,112,108,97,121,32,108,
-97,121,203,148,192,141,195,49,231,116,5,192,29,65,79,173,227,225,178,0,
-229,167,13,129,103,192,55,97,191,2,50,50,49,78,39,93,96,224,67,0,
-211,51,195,250,0,66,64,5,96,41,232,174,9,160,240,64,157,96,32,224,
-172,0,228,26,15,225,101,7,233,237,7,225,97,10,225,187,1,225,94,61,
-0,50,225,95,7,133,83,225,23,3,224,210,36,225,118,70,65,207,100,252,
-64,9,97,1,96,5,99,254,0,58,115,251,229,4,5,0,51,132,225,128,
-164,224,131,3,96,7,128,16,128,143,1,95,49,99,173,1,95,51,122,158,
-0,51,105,200,224,11,1,2,95,57,51,130,91,74,193,0,49,96,92,64,
-0,3,95,57,51,54,96,102,133,58,96,147,1,75,52,224,2,1,128,170,
-96,154,0,54,192,154,0,54,192,154,182,123,112,97,0,66,137,157,228,140,
-8,97,195,228,166,17,129,250,225,82,6,178,26,0,85,85,223,225,249,4,
-64,24,164,192,228,90,3,224,43,12,97,197,224,43,10,224,114,13,171,182,
-224,70,9,97,70,224,114,30,98,152,224,114,11,224,115,0,225,0,4,96,
-30,224,141,12,98,23,224,97,11,64,24,224,141,31,98,12,224,141,11,224,
-44,11,107,173,224,186,12,178,41,98,79,0,58,96,6,185,224,3,48,32,
-95,50,64,241,102,197,86,71,0,52,87,65,88,95,1,49,49,128,26,2,
-95,51,49,64,53,66,155,192,44,1,95,56,95,71,130,205,2,95,56,50,
-192,21,0,52,90,77,77,54,192,58,2,64,95,49,157,2,96,116,231,128,
-0,0,83,98,101,167,21,210,174,83,17,98,232,0,55,89,226,131,22,99,
-203,83,213,0,51,78,124,1,51,49,98,134,190,10,131,164,68,64,227,175,
-2,228,75,1,17,114,101,99,117,114,115,105,118,101,32,109,111,100,117,108,
-101,58,32,132,81,160,180,100,53,1,95,56,96,73,224,59,8,13,44,32,
-105,109,112,111,114,116,32,99,104,97,105,110,160,57,4,66,32,95,55,49,
-82,131,126,56,128,57,161,91,0,56,83,165,1,58,57,65,119,67,73,4,
-56,49,48,32,75,186,236,195,228,227,237,3,101,162,0,55,214,119,129,27,
-212,148,0,66,97,100,0,55,88,248,6,95,55,57,49,32,95,52,152,72,
-237,156,1,98,100,130,132,224,42,0,161,1,64,48,128,168,65,117,1,95,
-56,93,33,64,0,128,57,167,74,191,80,71,78,200,168,193,130,1,95,56,
-96,218,157,52,0,56,90,74,0,56,154,161,96,49,225,38,8,0,77,97,
-88,9,32,110,111,116,32,102,111,117,110,100,193,98,161,186,225,101,0,1,
-49,49,97,48,244,113,1,224,71,6,13,94,42,115,101,97,114,99,104,32,
-112,97,116,104,61,128,67,128,178,165,220,65,51,96,69,125,203,225,240,14,
-8,94,42,112,97,99,107,97,103,101,224,70,3,224,57,3,225,14,0,98,
-67,1,50,54,88,0,4,54,32,95,51,48,162,161,160,228,230,246,3,161,
-191,225,105,3,193,102,1,95,52,125,128,96,0,96,237,114,144,135,38,0,
-39,131,20,161,154,224,31,1,82,109,71,153,235,160,2,225,37,0,197,254,
-1,50,50,64,142,128,116,233,173,7,128,5,101,243,2,95,52,52,67,207,
-0,50,200,105,192,171,226,61,2,81,176,224,157,7,169,108,217,4,2,95,
-56,48,64,64,96,56,227,73,16,193,86,3,100,111,101,115,97,236,6,99,
-111,110,116,97,105,110,163,88,161,244,97,105,193,174,199,59,246,218,0,227,
-47,4,224,169,8,226,231,3,224,201,1,68,68,225,66,0,162,82,240,51,
-0,130,96,99,74,0,80,71,22,155,67,103,22,239,61,6,128,0,65,78,
-2,55,57,53,96,109,0,56,96,48,96,110,1,58,57,93,34,1,10,65,
-224,238,2,2,46,116,120,79,236,0,58,96,33,103,42,2,95,57,50,123,
-96,64,5,0,58,96,105,108,134,98,65,76,172,1,95,55,75,251,128,5,
-0,58,96,37,163,202,65,109,108,148,1,50,54,224,100,6,161,83,75,59,
-0,58,97,196,165,24,226,57,5,163,69,1,52,50,64,18,92,247,101,132,
-104,32,1,95,55,92,157,69,180,105,234,129,37,194,155,64,51,67,110,225,
-200,6,7,76,111,97,100,105,110,103,32,193,208,201,98,228,73,4,226,223,
-0,0,55,116,178,226,206,9,132,121,224,147,2,98,169,4,56,52,32,95,
-51,155,31,1,56,57,65,13,1,52,50,228,151,1,226,90,16,0,80,160,
-137,29,99,111,109,112,105,108,101,32,118,101,114,115,105,111,110,32,109,105,
-115,109,97,116,99,104,58,32,102,105,108,101,163,203,102,14,98,97,229,176,
-10,160,211,128,42,64,145,165,224,96,139,224,44,7,160,110,0,114,96,45,
-192,169,96,0,96,163,1,56,48,100,47,0,57,102,193,66,35,65,98,223,
-11,97,13,70,147,0,56,97,37,166,147,224,24,4,71,118,192,24,70,215,
-192,47,69,147,160,22,161,217,0,57,102,80,1,57,49,69,26,1,95,57,
-100,166,163,250,2,51,54,53,128,81,68,101,1,95,56,66,139,2,95,57,
-49,98,179,1,95,55,100,200,229,30,0,1,95,57,64,192,1,95,57,139,
-7,228,91,6,135,43,67,52,1,95,57,100,89,0,58,96,214,138,36,0,
-51,108,147,0,58,96,24,128,17,0,52,138,205,0,58,96,76,224,36,0,
-64,178,0,58,96,101,3,10,65,32,90,69,31,0,58,96,139,192,32,74,
-94,0,58,96,190,191,60,64,71,64,140,0,58,96,218,245,33,0,224,5,
-1,67,141,123,153,200,67,99,154,1,56,57,106,26,128,6,224,25,6,97,
-34,128,6,224,26,7,133,221,96,6,224,26,1,72,53,104,183,2,95,57,
-49,101,65,128,6,0,58,97,114,203,35,160,184,163,127,204,63,0,66,244,
-128,1,64,1,236,121,1,67,207,164,120,143,250,129,99,1,57,48,131,56,
-87,37,1,54,53,64,124,0,51,67,49,0,55,152,78,229,110,0,239,163,
-4,195,176,204,111,144,43,224,43,27,133,197,129,74,149,168,137,48,192,249,
-231,194,14,231,189,9,16,117,108,116,105,112,108,101,32,105,110,115,116,97,
-110,99,101,115,232,232,3,98,117,232,1,3,224,0,4,1,95,56,72,176,
-108,120,1,48,50,65,104,131,41,97,76,170,90,128,200,0,90,64,198,192,
-9,3,95,57,49,50,192,155,128,43,130,137,2,75,32,89,97,92,129,116,
-236,101,12,96,131,224,25,12,135,1,129,50,235,96,1,236,54,2,139,40,
-160,133,224,37,22,246,248,1,160,0,224,49,6,236,70,2,128,48,0,90,
-192,232,224,38,23,128,89,0,57,235,145,2,64,0,240,148,18,128,40,130,
-107,224,90,2,104,6,209,252,226,62,2,97,252,128,17,224,49,19,160,32,
-104,225,212,219,192,49,128,28,153,39,244,216,1,225,64,19,98,100,225,63,
-9,171,192,160,0,0,58,65,245,65,230,238,97,21,206,71,224,25,9,96,
-76,237,122,12,101,14,237,122,12,79,180,224,184,18,96,30,224,185,10,134,
-193,224,244,2,129,86,225,83,8,102,231,225,133,7,128,44,225,82,0,161,
-72,224,88,5,162,6,0,48,195,47,224,164,19,100,214,224,163,20,225,21,
-13,105,104,225,21,12,191,214,224,111,14,101,97,225,19,26,224,58,10,239,
-209,2,224,170,15,224,59,16,227,132,14,224,59,3,227,249,14,224,231,3,
-224,25,4,199,146,240,32,19,227,183,28,128,138,0,49,74,35,224,197,22,
-129,234,224,58,8,5,57,48,52,32,95,53,152,41,224,65,22,64,35,224,
-65,11,130,202,193,6,226,234,10,224,210,20,227,253,3,224,85,2,224,146,
-2,224,58,16,227,35,14,229,29,2,240,86,0,100,214,0,58,96,6,163,
-232,2,95,57,48,109,96,97,3,136,182,128,17,74,40,160,17,0,58,96,
-219,224,48,1,107,100,73,123,0,58,96,32,75,48,3,47,61,32,58,96,
-18,64,12,0,61,96,12,136,80,200,228,96,184,1,95,57,108,198,128,6,
-0,58,64,103,64,34,0,73,64,45,216,37,118,116,99,150,88,108,64,229,
-132,240,163,225,229,12,14,229,14,1,96,202,224,7,2,160,250,64,196,0,
-48,189,17,1,52,56,72,82,177,117,161,24,99,232,0,58,96,6,202,64,
-244,179,1,145,3,71,111,0,53,81,121,107,40,106,15,81,92,73,231,106,
-23,0,58,71,98,128,61,96,198,160,152,81,160,249,237,3,205,221,233,254,
-2,163,19,171,57,177,53,101,214,0,58,96,98,236,165,7,72,198,193,44,
-194,100,149,242,0,83,194,114,64,171,217,14,1,95,56,69,216,192,6,0,
-64,160,124,160,81,64,204,1,54,53,96,7,73,14,74,194,128,172,200,58,
-0,58,73,162,64,110,148,172,64,232,105,194,202,65,64,83,0,58,105,239,
-202,101,64,14,129,217,128,151,224,148,26,0,67,170,36,97,233,233,157,4,
-175,188,160,141,0,58,96,37,113,187,66,177,66,130,96,33,96,122,0,58,
-96,192,241,216,3,129,129,106,23,1,95,55,177,199,0,58,107,223,224,37,
-7,64,35,128,45,97,30,224,45,0,64,46,235,97,0,117,171,96,18,129,
-128,139,135,224,2,0,166,43,0,58,112,191,128,253,161,235,129,245,247,149,
-6,2,95,56,54,198,1,128,2,124,176,162,205,211,192,113,72,173,188,160,
-69,175,90,224,55,23,98,75,96,59,207,239,2,79,32,35,64,14,183,35,
-226,140,1,192,80,192,14,227,84,2,224,78,11,208,51,0,49,67,86,160,
-76,130,230,244,135,5,164,176,227,175,2,3,95,51,52,55,192,80,122,97,
-0,95,140,70,67,84,77,223,209,168,97,106,1,95,55,163,191,224,70,6,
-224,68,3,241,219,2,161,88,245,38,15,194,241,161,61,164,98,235,131,32,
-0,70,78,244,243,63,7,147,47,242,155,6,224,168,23,196,90,225,92,2,
-1,95,56,145,5,163,147,97,133,225,121,2,129,228,236,210,2,133,22,216,
-127,1,56,55,98,69,245,202,1,83,64,168,64,245,225,3,160,14,117,230,
-129,239,66,169,131,200,225,235,3,3,95,56,56,48,224,249,2,6,109,104,
-115,105,110,46,104,220,60,64,41,217,120,96,171,246,85,8,64,27,241,33,
-2,193,237,1,95,56,158,143,224,106,21,2,111,117,116,224,107,9,164,224,
-226,232,5,224,91,1,64,70,64,120,192,144,225,86,0,161,115,97,53,64,
-60,224,170,2,1,56,56,97,52,194,6,224,23,6,225,52,2,192,0,0,
-58,97,83,247,138,9,0,49,78,147,2,95,56,56,65,192,64,26,113,110,
-148,38,167,67,103,134,135,163,251,68,5,5,114,101,109,111,118,101,98,89,
-5,102,97,105,108,101,100,128,246,0,58,96,131,11,10,65,32,94,117,110,
-108,105,110,107,32,58,96,93,161,165,225,60,2,2,51,53,54,238,37,3,
-6,72,83,67,80,80,72,83,210,43,128,44,224,46,4,163,79,252,135,1,
-96,2,225,171,9,167,126,224,201,3,146,188,168,193,146,179,227,35,8,7,
-82,117,110,32,99,112,112,104,206,158,227,30,12,2,95,56,56,160,10,194,
-65,96,108,145,31,2,55,50,53,64,92,6,57,32,95,52,49,49,32,71,
-0,224,93,1,96,89,192,220,224,222,2,224,131,5,7,32,45,45,115,116,
-114,105,112,128,129,225,252,3,242,106,0,130,129,120,33,128,10,64,21,2,
-95,56,56,163,35,224,39,0,3,67,39,32,79,224,229,0,224,149,15,1,
-45,73,178,242,0,32,117,231,224,25,2,10,115,114,99,47,114,117,110,116,
-105,109,101,128,34,101,41,64,78,1,54,56,192,117,85,120,197,144,229,164,
-2,224,19,0,69,252,95,147,224,242,1,224,54,0,213,175,133,151,129,62,
-225,10,7,0,79,225,46,1,98,86,135,39,0,79,224,35,2,8,45,68,
-95,95,77,72,83,95,95,64,41,0,75,71,76,65,6,134,186,226,229,11,
-129,62,244,86,0,226,231,14,128,169,244,75,16,8,99,97,108,108,67,111,
-109,109,97,69,72,130,249,161,174,225,125,2,130,60,0,50,146,70,244,70,
-10,226,97,17,96,234,135,225,6,94,115,121,115,116,101,109,67,65,201,69,
-227,190,3,117,163,64,217,72,199,131,190,0,54,97,241,160,20,125,140,1,
-95,56,134,135,225,17,3,1,95,51,85,114,228,60,9,64,40,230,131,7,
-69,97,1,95,56,111,104,96,46,228,90,1,165,132,64,29,90,149,69,11,
-193,122,0,54,111,129,129,87,140,212,0,35,74,112,120,77,0,57,169,243,
-141,77,171,186,109,132,226,164,5,130,30,103,152,2,51,50,50,225,60,2,
-6,92,34,108,105,98,47,83,97,26,13,47,73,79,46,104,115,92,34,44,
-51,48,48,58,56,129,133,0,90,129,38,87,173,96,109,97,17,2,48,54,
-32,128,130,160,19,96,0,0,67,64,36,148,63,96,195,82,34,115,171,0,
-58,96,240,65,129,8,116,109,112,110,97,109,101,32,58,97,70,233,70,2,
-3,75,52,32,90,224,1,0,105,86,225,189,0,70,208,97,172,0,95,97,
-222,85,51,2,54,32,89,135,4,134,8,65,58,131,255,72,118,239,222,0,
-235,9,3,192,13,97,36,238,31,3,1,35,49,197,217,96,36,96,46,96,
-10,204,89,65,120,224,45,1,0,52,184,160,96,33,248,212,1,224,42,11,
-191,241,128,0,109,159,224,129,15,141,86,96,123,224,117,13,190,17,96,112,
-224,33,14,116,203,224,33,20,108,149,224,67,21,145,178,64,33,148,2,98,
-86,224,36,7,140,228,242,153,0,224,0,3,225,132,8,131,20,225,133,26,
-193,44,225,132,71,0,49,251,105,0,64,0,239,136,6,224,133,9,192,181,
-163,81,74,140,227,115,0,255,151,4,132,14,132,41,66,243,230,153,4,132,
-141,126,111,1,54,53,128,82,1,95,52,76,169,0,58,105,218,108,108,0,
-55,117,82,109,29,74,100,173,62,64,13,133,114,76,191,0,55,215,223,0,
-73,96,24,175,165,2,56,54,57,64,27,132,30,2,73,32,58,64,15,99,
-107,135,1,133,104,231,72,5,151,80,229,52,5,253,245,0,0,58,74,246,
-96,89,0,54,71,8,72,28,227,95,14,68,59,232,179,4,72,146,1,116,
-58,89,246,0,115,90,160,10,92,92,101,110,100,123,99,111,100,101,125,160,
-91,128,134,241,233,3,228,160,16,228,145,2,224,70,12,207,8,165,55,1,
-48,54,129,123,0,85,226,108,1,226,126,2,239,97,1,237,117,1,160,30,
-192,135,6,54,56,53,32,95,54,51,235,135,0,225,244,1,224,37,3,224,
-173,27,4,98,101,103,105,110,224,175,4,176,34,224,76,6,98,213,171,190,
-96,5,106,192,160,150,98,139,224,13,2,227,40,23,224,41,2,160,57,224,
-16,0,216,250,224,75,3,227,199,8,182,45,160,250,225,94,2,224,56,1,
-227,81,13,0,54,195,247,128,55,3,66,39,32,85,226,22,22,13,98,108,
-97,110,107,32,98,101,102,111,114,101,32,62,234,145,3,71,99,96,119,134,
-81,161,199,65,210,227,106,1,225,224,5,96,40,230,217,11,224,54,6,227,
-159,4,0,65,104,64,109,30,0,54,71,128,66,242,221,237,0,83,71,89,
-2,56,54,53,160,222,225,229,15,236,134,0,174,205,173,57,1,95,55,72,
-146,0,58,111,186,242,221,3,65,80,68,58,199,31,128,6,0,58,64,103,
-128,118,113,170,129,65,224,183,2,192,18,129,84,224,246,2,96,85,192,29,
-193,159,242,227,7,131,203,220,243,72,118,159,167,0,56,89,235,0,56,113,
-102,131,60,126,40,128,10,0,56,97,206,233,103,1,100,180,0,56,225,138,
-0,96,81,132,144,3,95,51,57,56,65,121,0,54,96,199,210,218,224,101,
-29,108,33,224,101,22,196,221,0,53,68,221,64,70,209,81,1,64,58,64,
-19,96,28,1,50,57,67,221,0,56,73,110,2,95,56,53,66,175,0,73,
-65,218,65,138,0,85,64,23,115,119,0,56,81,171,252,41,4,96,24,64,
-63,2,49,49,57,142,68,98,120,64,138,64,13,64,35,1,95,51,135,30,
-65,76,82,103,96,92,0,95,70,61,160,11,0,58,96,6,97,7,82,38,
-3,95,51,51,56,64,10,226,246,3,25,67,111,110,116,114,111,108,46,69,
-120,99,101,112,116,105,111,110,46,73,110,116,101,114,110,97,108,66,58,224,
-39,1,3,83,111,109,101,224,35,0,98,85,169,52,64,215,123,131,132,139,
-64,227,69,141,67,122,98,154,125,95,69,157,234,54,1,1,95,52,107,19,
-2,58,56,53,193,247,130,123,107,126,101,121,68,72,96,74,0,50,97,120,
-160,105,198,100,243,195,0,64,30,3,10,65,32,99,95,190,1,32,58,96,
-63,98,208,97,191,234,193,9,137,245,132,164,239,216,5,66,38,239,253,0,
-0,58,111,230,102,156,84,25,0,58,96,55,244,42,5,77,39,97,248,0,
-52,65,107,74,84,1,58,56,69,190,86,57,225,50,0,97,72,4,97,99,
-116,105,118,77,62,0,58,96,38,128,52,76,106,67,184,0,58,64,63,128,
-178,107,183,1,95,56,81,15,1,95,56,71,13,0,58,64,38,129,29,1,
-95,56,87,65,1,116,111,96,86,64,24,129,8,71,70,64,24,3,10,65,
-32,80,64,10,204,31,1,95,56,73,19,107,88,0,56,68,24,1,56,51,
-64,253,0,51,157,55,150,195,0,56,77,159,96,200,226,179,0,193,83,64,
-25,244,89,5,0,90,163,197,104,90,0,51,163,181,0,58,96,85,239,209,
-0,230,171,0,64,8,71,122,0,58,96,41,128,90,96,205,0,51,128,253,
-103,158,1,95,52,97,216,0,55,64,253,239,222,2,1,55,53,71,204,99,
-16,243,141,6,0,55,67,207,239,246,0,225,188,2,240,175,5,109,13,97,
-66,0,55,68,82,239,244,0,99,223,99,208,232,79,6,3,76,111,97,100,
-69,237,11,115,97,118,101,100,32,99,97,99,104,101,32,66,220,237,149,8,
-192,150,108,235,199,127,224,159,7,1,58,56,70,232,129,206,203,22,170,68,
-131,28,1,95,55,149,46,134,68,1,51,54,196,135,201,189,116,75,165,39,
-228,163,0,0,55,73,67,161,93,138,11,135,26,1,95,55,85,194,96,131,
-96,40,189,67,130,253,167,168,224,73,4,228,226,4,0,67,181,9,230,45,
-10,199,239,128,64,236,167,1,125,200,64,8,246,104,1,174,41,128,94,192,
-91,1,95,56,139,110,192,36,163,143,65,179,224,40,6,211,109,225,33,2,
-97,204,0,55,74,29,239,150,1,0,51,250,150,2,96,0,1,95,54,148,
-109,96,96,248,166,1,224,141,7,69,221,64,7,0,54,64,10,142,222,121,
-187,192,57,96,156,224,114,5,193,64,64,253,196,37,225,162,0,96,198,224,
-45,2,242,84,8,96,213,242,92,16,9,105,110,118,97,108,105,100,97,116,
-101,130,105,176,50,130,107,0,56,102,109,224,155,1,224,124,5,195,212,1,
-95,56,133,12,200,255,226,66,3,96,157,114,126,170,73,96,220,0,55,104,
-59,2,95,56,50,255,38,3,1,95,56,71,132,0,58,98,200,167,217,65,
-232,68,0,236,109,0,105,201,161,38,105,154,225,162,0,137,116,98,25,2,
-95,56,50,193,54,137,190,64,168,71,32,1,95,55,88,64,64,98,167,136,
-0,54,146,53,1,95,56,140,150,121,10,0,58,96,42,100,20,64,128,131,
-44,106,25,224,105,4,144,100,192,135,196,3,200,93,74,111,122,120,130,106,
-232,117,1,224,61,4,100,159,97,108,65,27,0,58,96,126,100,156,111,233,
-64,147,96,13,175,198,0,58,96,214,103,55,1,54,53,155,190,131,176,100,
-175,73,123,74,90,104,22,64,90,0,79,242,235,2,72,4,0,58,97,109,
-229,27,0,66,160,236,75,0,183,6,128,225,160,169,64,162,1,95,56,81,
-176,162,100,195,225,2,56,49,51,69,16,0,57,221,91,96,10,193,12,225,
-152,0,205,250,192,95,160,2,193,239,247,173,1,172,89,128,126,226,228,1,
-225,232,0,96,8,1,95,54,66,117,151,125,129,207,0,50,168,240,128,155,
-96,181,65,2,116,125,224,125,2,68,46,224,44,1,0,58,123,131,170,173,
-166,135,74,48,230,135,0,103,241,78,232,226,42,0,66,218,202,103,224,178,
-0,134,200,0,85,161,6,226,6,1,160,117,200,48,139,236,0,55,114,163,
-225,39,6,160,45,225,27,10,225,52,0,225,18,8,72,200,225,18,25,128,
-73,128,134,241,41,0,0,64,104,34,210,15,224,34,4,192,110,75,227,224,
-38,11,252,100,3,1,49,54,77,233,131,43,252,101,4,95,53,163,40,160,
-45,129,138,103,194,154,120,140,64,96,9,115,255,65,150,97,116,65,42,67,
-95,100,92,160,52,128,34,224,61,9,96,53,197,158,225,227,16,201,252,0,
-80,154,235,225,149,1,68,28,161,134,0,90,225,120,6,226,174,0,227,8,
-1,160,2,97,27,194,221,102,110,224,80,4,225,91,6,128,38,99,141,217,
-180,130,160,227,89,1,224,56,0,224,182,6,132,247,224,182,70,226,64,0,
-164,139,224,180,12,192,36,101,222,161,148,224,181,18,192,14,96,5,96,234,
-160,196,128,199,133,92,128,65,100,102,224,178,0,168,121,229,47,0,153,42,
-229,91,2,254,197,0,198,216,0,56,70,74,68,131,226,112,5,134,220,224,
-89,2,250,193,2,225,23,6,192,114,224,227,1,234,22,1,224,11,0,160,
-9,160,133,128,207,128,19,228,238,17,225,61,0,225,44,1,224,200,0,137,
-95,0,82,214,203,224,75,23,245,168,2,225,222,5,225,39,1,64,15,137,
-161,227,132,8,103,219,129,38,1,95,56,143,83,128,24,224,78,17,227,210,
-18,224,77,18,165,94,225,188,3,162,171,254,86,5,128,1,199,123,224,13,
-17,224,156,1,226,194,1,224,35,1,128,17,128,243,1,52,54,224,164,19,
-64,120,224,242,1,96,11,136,95,0,49,193,170,226,27,1,224,176,10,224,
-177,65,162,112,96,158,224,177,38,0,50,128,43,135,189,224,21,0,97,111,
-0,58,98,143,236,213,2,224,195,17,169,19,128,1,231,13,0,192,8,0,
-58,96,94,224,72,33,224,234,1,224,86,1,226,57,0,224,5,1,71,7,
-234,39,0,195,117,241,92,0,233,176,0,233,185,1,225,57,0,224,167,5,
-160,58,129,26,78,120,227,106,1,96,16,224,15,0,192,224,224,168,0,224,
-119,34,192,35,225,39,19,128,26,228,225,4,192,24,129,69,137,153,228,81,
-1,227,5,16,225,143,2,224,124,3,224,79,0,224,103,17,0,58,98,188,
-224,101,34,226,154,3,225,181,2,225,46,6,160,67,224,24,3,192,152,225,
-150,76,224,98,10,225,129,59,67,223,7,10,65,32,35,50,32,58,56,67,
-76,0,10,123,222,228,233,2,224,110,3,165,255,160,13,132,81,160,5,135,
-36,224,225,1,224,51,1,235,189,0,71,241,171,7,231,51,4,231,65,7,
-224,108,3,192,188,169,180,101,247,230,209,8,102,105,230,222,5,134,214,228,
-24,0,79,60,0,58,96,248,99,179,176,242,65,90,144,204,64,148,225,5,
-0,205,53,225,127,3,224,13,13,225,228,3,227,217,0,64,8,167,222,0,
-58,96,174,168,138,80,166,2,75,50,32,128,153,0,75,113,54,64,32,132,
-144,241,143,9,224,81,6,1,95,55,84,66,192,85,204,222,0,58,64,54,
-128,10,121,143,91,181,146,36,0,55,86,77,64,60,253,206,2,66,180,144,
-70,0,58,110,110,212,126,2,95,50,57,84,95,110,162,1,95,56,150,251,
-116,101,96,17,0,58,96,6,179,32,1,95,55,115,240,0,58,96,37,161,
-37,125,3,0,55,76,15,2,95,56,48,233,5,0,142,154,235,253,0,79,
-153,114,201,65,236,128,171,129,103,219,153,0,75,214,114,0,58,111,204,224,
-197,17,110,186,65,96,96,202,0,58,112,5,97,98,1,95,52,64,107,78,
-138,0,51,78,249,1,95,56,124,127,0,58,112,174,93,232,9,109,100,53,
-66,70,73,76,69,32,58,96,25,228,17,2,64,214,0,50,113,114,172,188,
-64,16,108,187,116,56,0,58,113,74,128,145,78,229,75,99,248,128,4,190,
-251,64,144,1,95,52,156,9,183,133,96,64,225,59,6,96,25,244,74,3,
-0,58,96,24,65,141,2,55,57,52,64,13,129,43,207,171,255,65,4,107,
-189,173,51,255,52,7,3,109,104,115,47,191,52,7,70,105,108,101,80,97,
-116,104,159,58,5,49,49,56,58,49,52,177,254,194,198,228,218,1,130,99,
-1,95,52,85,175,161,188,151,19,152,216,85,152,64,209,175,16,96,231,0,
-58,64,169,160,216,0,51,255,38,2,224,1,5,233,139,0,192,0,0,58,
-97,97,161,121,120,100,179,97,152,193,201,16,164,55,245,227,4,66,9,1,
-95,52,92,22,196,36,239,94,2,114,238,99,234,226,242,8,64,14,96,26,
-163,147,64,75,85,223,96,140,248,50,0,98,104,96,249,192,115,226,117,8,
-128,63,0,58,114,4,226,249,9,0,55,93,24,226,249,11,115,198,245,131,
-0,64,36,0,58,96,25,239,10,12,92,205,97,9,192,224,133,77,238,254,
-3,249,236,5,225,206,1,129,50,230,22,5,229,187,2,139,214,64,107,64,
-79,238,241,3,160,73,164,24,96,187,66,138,0,52,192,113,113,31,0,90,
-145,38,1,90,32,160,58,198,66,224,28,6,73,171,224,28,16,76,146,224,
-28,16,107,61,224,29,17,0,52,224,117,4,1,95,53,65,119,96,191,2,
-95,53,57,192,10,0,58,96,6,224,187,1,129,150,96,30,64,56,3,95,
-55,55,51,192,161,163,162,64,16,128,149,224,16,2,160,137,224,17,3,128,
-125,128,17,128,122,96,80,128,122,131,211,64,6,224,122,1,103,220,0,56,
-117,222,0,56,118,175,0,56,100,94,0,56,118,76,85,21,160,70,102,176,
-128,70,64,10,0,58,96,6,8,10,65,32,98,115,62,61,32,58,96,41,
-128,13,64,12,131,57,2,98,115,60,96,26,130,186,2,98,115,60,64,12,
-130,146,4,98,115,99,109,112,64,14,196,221,96,2,227,234,0,141,74,155,
-153,1,95,50,226,102,1,231,175,3,96,143,64,31,0,53,100,198,1,95,
-53,88,165,96,7,84,81,65,77,128,229,69,4,225,161,5,130,161,201,17,
-2,95,51,48,64,224,98,177,0,58,96,6,160,54,161,81,128,45,97,207,
-160,17,86,9,160,17,0,58,96,71,224,48,1,65,47,0,55,71,220,0,
-58,96,32,96,233,0,47,65,4,64,19,96,13,0,61,96,13,129,45,0,
-73,64,10,129,43,84,243,80,255,69,123,130,33,67,165,101,104,1,54,55,
-227,223,4,0,83,67,222,134,80,119,144,103,26,182,8,99,233,100,32,243,
-35,0,228,38,1,84,19,65,41,104,222,96,39,182,130,224,53,33,0,90,
-224,53,2,2,95,51,54,78,216,118,127,0,58,117,249,64,137,66,126,68,
-249,231,17,14,100,153,1,95,49,106,205,108,252,0,49,65,93,96,67,0,
-95,71,222,160,10,0,50,73,34,160,89,64,6,117,0,132,199,128,167,202,
-94,224,220,15,224,118,6,184,61,96,182,96,101,129,236,64,6,161,134,190,
-209,224,85,13,103,18,224,77,2,0,58,121,61,192,57,129,217,114,175,0,
-52,230,91,28,0,58,122,19,97,219,67,91,118,8,160,5,117,181,224,11,
-0,91,243,121,208,130,7,97,229,99,169,224,5,7,0,58,96,43,237,228,
-2,233,224,6,0,58,64,60,160,113,0,57,64,179,188,86,2,50,32,58,
-107,200,234,68,2,234,40,21,0,58,105,219,252,92,4,3,46,109,104,115,
-120,69,92,90,122,156,136,16,231,18,15,102,58,231,77,7,130,115,251,76,
-0,185,143,166,182,125,190,133,250,1,95,55,93,229,128,136,129,130,225,174,
-3,71,91,72,222,160,105,224,132,3,1,95,55,93,74,225,222,7,248,99,
-1,233,36,6,0,49,146,221,225,244,2,253,169,4,1,95,55,71,151,2,
-95,55,53,65,146,92,65,160,32,224,109,2,91,245,171,252,224,213,6,226,
-73,3,96,200,212,186,170,21,0,55,72,197,0,58,96,65,66,98,12,79,
-46,100,101,115,101,114,105,97,108,105,122,101,65,175,130,15,21,94,97,100,
-100,95,108,122,55,55,95,100,101,99,111,109,112,114,101,115,115,111,114,64,
-31,194,9,0,83,107,65,171,165,241,191,0,1,95,51,231,254,1,0,66,
-147,26,225,17,3,129,138,202,107,224,207,0,0,51,66,95,224,53,4,224,
-216,5,133,13,65,120,194,235,0,58,65,28,98,10,160,215,161,13,225,34,
-1,104,218,169,62,255,3,2,74,209,94,231,1,95,50,159,10,227,119,4,
-191,15,8,94,117,110,103,101,116,98,32,58,96,41,224,100,2,228,187,5,
-1,95,52,72,209,225,229,0,235,10,1,127,223,0,95,99,80,0,53,205,
-129,98,6,118,248,224,35,2,95,145,67,58,5,35,50,48,57,53,49,108,
-50,3,35,53,53,50,107,29,228,97,3,1,95,52,168,227,98,73,0,51,
-107,145,0,51,96,37,227,40,1,17,104,71,101,116,67,104,97,114,58,32,
-115,117,114,114,111,103,97,116,67,50,224,52,6,0,55,123,49,224,52,9,
-160,41,0,58,97,53,102,47,1,35,52,140,157,96,49,239,11,0,228,186,
-2,0,52,67,170,201,179,86,78,1,52,56,75,35,72,121,224,95,1,9,
-111,112,101,110,66,105,110,97,114,121,75,135,128,101,230,2,7,1,95,52,
-245,158,3,73,148,129,230,1,95,52,158,68,64,131,0,54,96,131,107,98,
-229,5,10,229,1,5,0,58,127,110,102,183,71,74,65,104,1,95,55,71,
-181,78,119,1,58,55,71,199,130,248,18,112,101,114,102,111,114,109,73,79,
-32,94,119,97,110,116,95,103,109,112,96,32,205,116,226,80,3,2,95,52,
-51,240,145,5,224,24,0,2,51,53,54,228,174,2,4,77,72,83,67,67,
-222,94,226,26,1,99,6,240,38,4,227,1,5,83,202,0,52,65,237,126,
-45,104,106,156,70,0,52,224,93,4,5,105,110,99,108,117,100,193,215,96,
-0,227,79,1,224,2,0,224,86,40,3,99,98,105,116,255,19,0,192,184,
-247,76,3,96,13,64,250,96,190,224,96,2,2,64,95,55,100,209,128,137,
-224,1,3,120,213,224,22,7,241,194,5,224,1,5,225,80,0,229,147,0,
-125,227,0,52,91,81,2,52,49,49,100,109,109,243,225,113,9,11,69,88,
-84,82,65,67,67,70,76,65,71,83,224,198,4,237,72,4,141,37,128,193,
-224,5,24,192,54,228,61,7,96,169,127,26,110,3,255,25,0,190,153,255,
-17,14,8,69,120,101,99,117,116,101,58,32,255,8,2,1,49,50,79,159,
-79,179,225,19,1,229,228,5,79,187,227,46,0,230,192,4,164,136,224,135,
-4,138,55,0,51,106,172,0,55,94,141,96,143,0,51,66,205,224,141,6,
-13,99,111,109,109,97,110,100,32,102,97,105,108,101,100,160,148,192,130,226,
-240,7,229,173,1,224,245,15,128,54,96,248,128,10,224,109,5,1,67,32,
-70,63,7,105,108,97,116,105,111,110,32,192,0,128,115,160,215,143,79,96,
-59,4,55,51,54,32,35,99,246,96,14,97,41,0,50,80,38,128,227,0,
-55,64,227,170,33,224,98,1,0,109,226,188,5,160,0,227,25,10,192,2,
-2,95,55,51,199,140,226,96,5,224,83,1,2,36,73,78,224,84,5,227,
-18,4,224,2,6,224,80,3,224,66,2,2,79,85,84,129,240,1,55,51,
-210,178,193,187,224,2,9,98,238,224,35,1,128,1,224,193,1,240,116,1,
-224,29,1,128,1,225,111,6,15,32,45,119,32,45,87,97,108,108,32,45,
-79,51,32,45,73,224,197,2,231,167,2,225,10,1,224,87,1,224,86,20,
-11,47,115,114,99,47,114,117,110,116,105,109,101,226,49,1,224,169,8,224,
-78,14,96,22,2,79,32,35,146,223,224,59,3,231,242,4,96,60,65,77,
-118,20,100,169,224,133,5,224,206,4,224,97,2,224,95,12,224,30,6,225,
-233,15,8,45,68,95,95,77,72,83,95,95,224,90,1,224,88,30,0,67,
-224,238,2,224,48,19,229,77,5,224,229,1,1,51,57,224,155,13,64,62,
-210,225,66,246,96,48,224,190,15,0,39,225,141,0,2,95,55,52,165,139,
-225,142,8,224,155,2,225,210,13,5,47,101,118,97,108,45,160,73,224,219,
-5,224,57,10,1,46,99,160,116,165,16,225,183,5,1,52,51,131,175,192,
-126,225,208,4,192,87,224,134,2,2,42,46,99,160,120,226,197,2,10,36,
-73,78,32,45,108,109,32,45,111,32,227,71,0,224,0,19,2,95,55,52,
-96,173,2,58,55,52,138,161,114,102,237,45,9,232,51,13,64,0,0,58,
-96,65,232,102,2,232,105,2,224,45,2,0,58,97,101,210,180,64,254,76,
-112,105,87,230,102,1,226,23,0,0,58,65,228,160,84,237,190,13,237,192,
-11,68,46,232,130,0,126,239,194,94,116,238,160,109,197,64,179,254,217,158,
-224,19,3,132,90,224,63,0,128,11,1,95,54,153,93,64,37,116,217,64,
-73,227,187,3,0,58,68,205,64,128,171,62,128,23,229,172,0,145,47,64,
-59,229,142,0,1,95,56,64,33,98,244,138,53,1,51,54,137,130,113,31,
-118,168,0,64,109,151,0,49,150,223,96,40,128,69,64,207,96,14,235,23,
-2,241,54,0,102,206,0,58,96,6,237,140,9,0,49,88,172,2,95,55,
-51,134,60,235,45,1,246,149,3,96,78,102,167,1,95,55,128,101,167,27,
-0,58,103,94,78,165,1,32,58,96,18,3,10,65,32,90,72,181,0,58,
-96,39,76,5,0,115,118,65,64,30,172,106,236,204,6,1,95,55,130,221,
-234,12,16,234,9,0,163,126,234,50,18,232,187,4,193,236,224,48,18,2,
-79,78,70,227,18,0,230,72,4,96,20,130,10,128,175,122,118,162,31,224,
-8,13,1,95,55,78,142,1,95,55,128,213,237,133,4,100,175,232,118,0,
-66,11,232,5,2,76,202,84,34,158,147,0,52,64,34,97,105,233,6,2,
-99,247,2,66,32,79,225,20,3,12,111,117,108,100,32,110,111,116,32,102,
-105,110,100,96,196,3,67,39,32,79,192,128,224,42,3,3,105,110,32,102,
-172,54,230,52,1,225,31,3,238,234,3,226,246,2,0,39,238,14,0,2,
-55,50,52,224,79,2,6,100,101,102,97,117,108,116,167,147,1,50,53,233,
-19,3,164,130,96,22,229,120,0,231,146,1,192,114,234,216,0,232,91,8,
-234,42,24,225,46,15,234,54,17,11,70,111,117,110,100,32,116,97,114,103,
-101,116,234,59,9,2,55,50,54,100,122,64,11,138,71,234,83,8,160,0,
-224,188,1,225,51,6,225,53,7,64,32,220,112,128,192,144,191,130,69,97,
-77,128,77,225,61,14,100,21,0,53,64,242,1,55,50,115,105,1,54,55,
-64,144,68,110,230,190,15,192,58,192,167,225,128,1,224,76,44,3,102,108,
-97,103,234,13,3,133,145,161,200,224,81,43,2,111,110,102,230,123,4,231,
-174,10,224,45,1,3,117,110,105,120,135,68,234,185,2,0,95,85,70,128,
-0,0,58,109,45,69,23,0,53,65,134,1,55,50,81,230,114,163,68,177,
-98,228,1,95,53,64,95,160,159,1,53,50,69,96,96,11,0,58,96,6,
-213,3,118,185,114,179,165,66,217,44,224,12,2,249,239,0,213,7,64,109,
-181,7,128,10,117,7,96,10,0,58,96,6,213,7,249,124,0,224,66,1,
-116,215,64,117,64,42,134,28,102,153,127,2,66,28,98,89,0,57,85,195,
-245,35,3,0,52,114,244,124,205,190,186,166,152,0,95,208,226,68,122,84,
-220,129,172,96,24,3,95,51,48,49,73,66,78,175,163,247,224,41,1,86,
-197,193,138,0,49,98,199,125,162,96,151,0,54,134,37,182,193,0,58,97,
-244,244,181,19,66,206,250,144,0,103,239,160,2,160,99,0,58,100,145,231,
-234,6,244,82,0,64,73,122,76,229,124,0,175,39,250,94,1,198,133,98,
-98,224,225,0,180,107,0,53,167,4,64,102,189,185,99,114,238,4,4,0,
-52,121,14,229,219,1,128,118,1,95,52,148,21,224,44,7,81,227,165,246,
-128,44,134,8,2,95,55,50,133,151,164,148,228,165,0,196,121,228,119,6,
-2,67,97,110,69,159,3,112,97,114,115,235,235,1,167,254,228,225,44,174,
-29,245,151,1,232,193,0,243,160,10,224,85,32,229,55,16,2,82,101,97,
-197,54,0,115,102,65,9,46,32,80,111,115,115,105,98,108,101,192,22,165,
-78,206,98,101,56,229,61,4,0,89,97,237,66,9,193,231,64,151,80,192,
-97,128,201,54,160,0,229,85,5,224,231,9,221,107,224,163,1,160,135,0,
-46,228,96,0,0,58,104,77,184,36,246,75,0,2,52,57,56,64,249,110,
-62,103,79,67,242,64,128,0,53,68,14,116,90,148,95,65,12,164,109,98,
-107,1,95,52,84,31,0,58,97,249,184,63,97,88,1,55,49,167,201,99,
-136,0,79,96,104,235,166,2,90,97,0,54,121,59,224,170,1,2,58,94,
-42,229,222,1,96,51,225,113,8,2,32,32,102,70,171,225,85,1,0,52,
-73,93,141,193,0,53,94,233,128,62,224,59,14,5,101,120,112,101,99,116,
-240,138,0,236,47,0,0,55,65,154,195,59,227,148,1,64,224,190,172,0,
-49,101,7,68,144,0,58,64,44,227,171,7,235,150,0,206,249,193,183,195,
-10,128,27,2,95,55,48,163,13,127,229,231,62,0,0,58,96,95,117,255,
-235,117,0,75,176,3,95,55,49,53,134,87,97,56,96,84,138,251,160,53,
-0,54,228,53,9,1,52,51,224,242,2,16,102,111,108,100,114,49,58,32,
-101,109,112,116,121,32,108,105,115,136,147,224,169,0,0,83,68,233,160,14,
-179,53,224,10,2,101,68,160,105,218,29,107,98,244,93,1,1,95,52,75,
-128,232,164,0,224,168,0,242,120,9,96,255,225,144,5,210,17,224,83,0,
-235,76,9,224,26,13,246,242,6,224,90,10,2,108,105,110,196,81,163,232,
-224,152,2,177,231,224,52,8,4,44,32,99,111,108,128,53,224,40,4,238,
-48,4,6,101,110,100,45,111,102,45,202,47,224,26,3,5,110,111,32,108,
-111,99,114,127,196,204,224,28,17,0,58,99,3,119,2,129,241,225,231,1,
-173,45,0,35,84,156,66,156,98,214,0,58,96,7,193,237,244,54,0,64,
-4,0,85,99,92,74,217,0,53,71,93,130,192,165,157,171,169,129,213,151,
-91,173,0,114,68,226,77,0,224,46,30,96,146,162,215,230,39,0,224,39,
-11,131,138,230,34,3,224,39,12,131,114,224,205,4,231,231,0,0,83,224,
-82,6,164,246,152,223,192,130,66,162,250,244,4,0,35,127,70,97,221,0,
-54,79,103,3,67,32,95,54,66,163,0,35,227,109,0,224,109,28,224,69,
-0,192,108,200,84,224,108,12,128,228,224,77,5,1,67,39,156,33,0,49,
-136,171,131,239,1,95,54,88,98,1,64,64,232,96,1,96,52,1,95,54,
-99,243,98,2,96,173,71,60,73,52,66,227,64,184,64,15,0,49,232,192,
-1,111,92,110,242,224,140,2,224,141,0,160,228,171,96,225,121,3,0,54,
-90,103,96,28,175,196,160,28,99,202,0,54,105,255,225,30,30,148,103,193,
-30,224,109,12,103,80,224,157,1,1,95,54,65,0,1,35,49,104,34,224,
-50,37,169,215,192,142,68,149,106,15,224,43,10,123,108,154,138,65,249,93,
-93,4,95,51,50,52,32,129,254,72,2,0,49,162,21,225,56,4,123,195,
-224,19,6,169,74,224,76,11,96,100,2,95,54,53,200,92,224,32,8,69,
-153,96,33,245,143,0,248,31,0,97,77,161,114,1,50,57,64,100,133,136,
-225,108,18,177,57,1,32,83,225,47,0,229,172,2,167,198,66,67,227,77,
-5,134,131,71,194,0,57,87,67,128,69,231,219,1,163,22,236,51,0,224,
-134,24,113,35,197,79,221,144,221,149,234,132,2,69,162,160,86,128,155,114,
-7,128,68,236,208,15,229,175,3,64,201,130,218,88,105,161,141,132,120,65,
-62,118,194,128,194,65,206,104,159,120,128,0,52,96,7,0,54,73,190,64,
-67,0,54,224,134,4,242,67,2,96,36,0,51,224,36,2,96,90,128,42,
-160,48,2,95,54,54,227,74,1,225,24,25,228,152,29,165,106,225,158,7,
-96,134,66,56,135,247,85,147,0,51,197,196,225,173,8,228,196,3,128,150,
-131,62,96,9,162,25,218,254,200,139,229,171,0,133,224,96,122,64,98,2,
-95,54,54,64,112,228,154,8,160,91,232,180,0,136,202,130,69,96,76,129,
-9,227,68,8,140,109,0,54,159,151,226,103,26,228,148,1,64,95,224,21,
-8,0,55,170,63,195,48,96,21,225,78,3,109,30,197,150,65,3,224,29,
-4,180,121,64,170,0,79,229,90,1,0,53,96,254,231,246,5,16,85,110,
-114,101,99,111,103,110,105,122,101,100,32,105,110,112,117,241,3,5,200,193,
-144,43,97,227,3,83,32,95,54,69,142,224,220,5,192,171,130,5,131,38,
-102,4,65,21,0,56,64,68,0,75,96,73,96,53,0,53,235,163,3,7,
-73,108,108,101,103,97,108,32,95,33,7,32,108,105,116,101,114,97,108,168,
-65,206,8,0,90,132,98,224,225,7,174,37,109,234,2,95,49,53,79,125,
-127,179,100,131,225,113,0,0,95,132,142,226,200,1,162,56,230,211,13,129,
-88,97,81,64,187,226,206,16,128,38,225,17,14,99,18,2,95,54,56,64,
-7,192,195,98,57,224,67,9,160,195,224,37,37,225,15,10,224,37,2,225,
-15,12,205,53,161,19,1,54,56,197,224,225,212,19,224,194,6,224,118,42,
-225,134,9,226,180,2,227,94,9,227,54,14,98,76,133,25,227,168,0,167,
-66,131,170,163,252,204,120,98,126,66,144,228,92,4,236,151,2,192,105,232,
-116,14,107,102,65,14,224,0,3,96,130,1,55,48,207,252,229,19,2,64,
-3,196,217,64,5,101,113,128,216,1,54,53,101,74,224,113,2,128,109,229,
-10,1,224,48,6,0,55,224,162,8,224,48,0,64,0,65,171,3,95,55,
-48,57,113,123,238,249,1,225,32,3,0,55,112,5,225,32,7,225,18,1,
-0,55,78,231,225,18,6,225,17,42,192,48,1,95,54,154,136,224,180,1,
-64,37,224,29,2,168,4,225,220,15,0,58,96,21,109,254,101,200,197,194,
-64,7,77,158,227,129,3,5,67,32,61,61,32,64,136,128,139,250,202,17,
-104,219,64,202,96,102,71,107,143,95,65,37,0,58,96,146,108,60,0,80,
-136,189,120,128,64,37,242,183,2,225,60,5,198,98,230,104,0,194,98,196,
-63,224,16,2,235,28,14,225,180,0,224,39,2,206,114,224,20,1,64,1,
-134,177,224,115,5,129,186,152,104,224,123,2,246,46,1,234,184,5,203,131,
-230,86,1,192,21,160,153,131,54,0,85,227,63,1,0,85,224,236,2,64,
-0,192,43,96,169,193,119,130,106,226,19,27,64,252,218,228,224,172,0,233,
-155,0,202,8,161,204,160,166,143,96,162,153,130,151,130,67,0,52,128,189,
-242,0,2,128,81,162,162,224,50,0,131,25,129,20,224,151,0,224,163,15,
-227,208,6,224,138,2,228,65,14,164,60,128,140,160,153,227,35,7,224,84,
-0,0,58,97,41,162,79,170,18,136,39,192,237,227,241,0,235,133,1,0,
-51,81,185,145,122,249,145,3,1,108,101,112,169,224,18,3,3,119,104,101,
-114,111,114,224,20,3,1,100,111,224,17,7,0,111,114,229,237,38,0,161,
-25,104,240,194,157,128,110,224,50,1,0,105,183,121,77,174,73,164,91,158,
-64,55,227,109,0,65,82,188,60,77,129,230,2,7,0,49,120,174,252,93,
-0,172,173,160,127,225,79,0,134,213,165,19,215,170,129,96,0,58,97,248,
-155,249,129,25,130,189,224,14,2,66,226,224,14,1,108,55,233,126,6,136,
-241,64,75,215,54,99,236,103,165,0,80,96,99,0,54,147,246,97,242,193,
-149,141,75,0,80,70,172,242,57,4,2,105,109,112,180,201,8,58,32,102,
-105,114,115,116,32,99,72,156,8,105,115,32,97,32,100,105,103,105,178,72,
-64,100,67,206,225,226,0,228,43,8,170,154,227,238,3,228,45,23,224,42,
-5,228,48,1,228,49,4,228,51,1,224,22,2,228,28,0,95,253,109,91,
-128,0,128,23,228,86,1,96,24,163,66,102,18,160,69,143,18,65,13,0,
-52,209,250,192,90,128,131,160,96,164,37,186,201,196,165,225,4,0,160,13,
-96,33,194,249,128,95,224,107,3,106,26,149,62,227,177,4,64,188,224,11,
-0,232,0,4,160,133,224,239,2,224,163,1,228,188,3,137,182,117,169,196,
-29,7,95,52,48,32,95,54,57,51,80,147,1,53,57,66,67,0,53,180,
-127,2,95,54,57,77,109,0,80,68,126,0,49,224,30,8,128,13,192,14,
-136,219,224,70,11,168,235,178,30,192,148,224,199,1,224,224,25,96,0,98,
-156,244,94,1,192,5,170,181,64,53,104,32,4,50,32,95,53,55,229,81,
-3,161,12,96,36,0,52,224,36,10,96,140,224,232,21,0,51,154,171,151,
-253,224,231,30,128,86,180,140,192,242,135,252,181,237,194,134,66,144,89,125,
-160,0,225,138,13,192,0,226,72,13,160,86,226,163,9,194,24,226,21,5,
-226,170,5,226,19,11,226,21,20,225,63,3,226,34,78,226,29,2,224,247,
-0,182,201,64,175,219,1,227,189,1,244,72,19,128,70,128,59,119,70,192,
-61,232,83,1,230,228,2,239,46,2,239,213,15,243,76,0,192,49,228,215,
-5,228,127,0,128,67,160,73,239,102,10,242,211,14,0,48,135,145,228,165,
-0,192,68,251,183,0,232,254,1,96,240,0,80,96,81,66,107,1,53,55,
-65,246,124,76,225,29,1,227,92,13,236,139,7,162,102,70,196,167,33,64,
-10,220,234,98,178,161,52,225,55,28,227,156,0,225,55,4,205,103,225,55,
-128,193,42,225,41,19,129,26,225,24,29,224,185,2,107,146,224,183,41,226,
-156,1,224,190,63,96,93,224,190,29,0,64,124,102,226,38,19,229,146,0,
-224,24,7,163,187,4,95,54,53,52,32,227,206,2,160,213,0,58,110,26,
-152,210,250,135,6,15,114,111,109,74,117,115,116,58,32,78,111,116,104,105,
-110,103,104,61,127,59,64,152,251,77,13,165,5,225,19,0,129,1,235,16,
-0,0,58,123,76,122,148,0,65,96,72,237,67,2,75,24,64,146,100,135,
-102,21,146,205,129,66,206,24,160,2,96,77,231,62,2,118,135,162,151,129,
-132,99,121,65,157,195,135,151,189,82,73,91,24,96,7,0,54,247,157,2,
-247,166,1,200,140,102,147,224,15,9,64,73,157,250,224,73,14,192,36,99,
-140,235,73,7,102,240,0,95,73,55,224,145,24,130,149,0,53,126,196,224,
-114,22,225,233,3,73,161,245,121,0,160,112,128,131,160,23,76,218,98,45,
-224,8,0,224,211,37,254,128,0,65,107,229,232,1,70,126,160,94,96,180,
-224,9,3,224,95,26,0,58,70,166,130,85,225,183,43,0,58,96,124,239,
-24,2,195,243,114,8,2,64,64,58,98,91,139,174,228,187,1,162,171,204,
-225,225,167,8,2,49,52,50,224,130,21,224,190,0,225,171,28,192,45,227,
-152,4,241,80,1,64,8,1,95,54,82,83,230,40,0,233,40,3,65,174,
-138,120,64,84,65,185,224,107,27,160,68,224,62,4,128,223,230,160,1,72,
-147,192,114,224,59,1,224,247,28,0,58,72,102,131,209,2,75,51,32,64,
-14,223,21,227,172,5,242,54,2,0,83,194,69,227,8,26,225,95,58,98,
-6,0,89,228,64,12,225,122,5,224,151,3,70,12,128,90,120,161,224,160,
-26,224,161,51,160,154,167,188,224,154,13,97,167,0,53,224,116,6,98,178,
-194,186,69,36,164,164,199,233,101,30,229,75,0,141,69,96,34,82,96,226,
-231,3,78,127,224,89,1,224,202,42,162,174,225,101,1,224,120,9,138,186,
-226,104,0,96,130,224,129,75,224,59,0,160,105,231,31,5,230,229,6,31,
-68,97,116,97,46,73,110,116,101,103,114,97,108,46,92,94,58,32,110,101,
-103,97,116,105,118,101,32,101,120,112,111,110,1,101,110,175,53,160,76,0,
-58,99,67,134,179,133,1,226,45,23,128,175,193,26,96,15,84,79,224,224,
-15,192,46,224,212,4,224,45,30,97,251,0,58,98,38,131,145,0,50,96,
-44,0,58,100,83,244,171,0,199,109,80,149,231,102,28,160,13,231,87,0,
-224,11,3,231,105,52,166,61,66,186,175,225,102,75,174,51,231,136,8,102,
-118,231,154,55,224,241,142,92,234,224,242,79,224,243,20,64,37,195,176,169,
-64,103,215,224,168,1,224,240,52,233,76,64,107,71,136,192,230,253,26,224,
-59,20,1,57,48,224,60,37,0,90,134,24,233,64,0,96,43,233,150,27,
-233,193,40,235,196,0,224,111,7,224,68,29,224,111,46,0,58,107,113,203,
-208,230,139,1,64,28,231,183,14,0,49,95,107,160,76,224,116,26,172,213,
-230,245,5,233,117,3,233,132,2,136,153,232,30,1,224,101,53,225,184,38,
-205,126,224,211,47,203,114,228,80,0,131,71,67,66,235,118,36,192,135,227,
-169,0,96,37,242,96,1,235,117,0,235,214,1,107,110,153,26,224,9,1,
-64,82,0,54,81,208,192,82,192,7,1,58,54,67,206,171,15,235,208,14,
-98,14,128,22,160,118,226,14,16,231,0,29,230,198,35,161,76,144,190,135,
-51,168,51,138,201,192,242,160,9,224,81,15,0,58,96,253,135,13,0,52,
-231,194,0,140,42,1,95,54,103,11,0,73,137,14,97,104,246,225,8,111,
-223,1,64,83,68,245,248,64,6,243,20,0,1,95,54,71,75,0,53,232,
-84,2,2,92,92,110,104,52,64,25,1,50,54,83,134,126,168,0,53,89,
-125,69,230,125,4,2,52,48,57,64,55,0,49,64,127,184,251,1,95,54,
-239,74,0,64,138,143,54,65,225,64,68,64,218,1,52,53,124,35,1,56,
-54,163,52,196,158,160,4,220,14,128,101,161,172,101,175,192,35,96,86,1,
-54,56,83,237,64,190,250,92,4,97,154,240,81,3,0,48,96,0,128,32,
-129,121,192,208,0,89,242,38,0,161,60,96,108,226,170,1,210,71,141,79,
-225,79,4,128,78,230,105,0,225,112,8,121,144,224,65,0,97,2,192,19,
-241,3,8,247,104,2,130,181,2,95,50,50,90,162,65,49,89,223,64,63,
-1,55,52,128,44,125,65,85,209,1,49,50,81,6,64,13,157,145,192,93,
-0,85,226,120,0,128,7,2,95,54,56,182,136,2,58,54,56,174,59,84,
-163,144,233,2,90,32,90,97,110,1,54,52,250,88,5,82,53,161,123,98,
-50,0,79,157,236,0,90,96,160,129,208,224,88,1,96,90,237,62,0,0,
-50,66,161,99,157,0,58,65,161,229,144,0,129,106,78,196,232,60,6,1,
-95,51,154,146,136,180,64,53,0,54,239,65,0,65,229,122,225,98,58,0,
-58,66,124,98,242,2,51,54,53,178,243,154,244,0,58,96,38,250,122,1,
-96,80,90,122,1,54,56,198,19,96,23,97,35,128,23,132,55,228,49,0,
-193,242,164,251,232,82,3,160,2,77,124,224,17,5,217,204,224,17,2,192,
-69,224,21,3,244,196,2,197,88,224,104,4,226,114,0,224,26,0,224,61,
-1,226,143,0,97,56,226,35,2,224,33,6,186,233,225,90,0,192,2,160,
-23,224,42,4,224,21,0,192,147,67,114,192,64,224,19,2,160,187,228,73,
-11,224,84,1,169,111,224,87,3,224,84,8,229,242,0,225,99,1,128,1,
-195,89,163,233,227,112,2,224,121,11,212,71,160,36,161,18,224,172,28,224,
-30,1,191,144,94,62,0,35,118,46,195,157,96,43,224,12,0,157,86,224,
-23,0,224,0,1,224,73,13,149,97,224,47,5,132,80,225,37,4,130,11,
-96,177,70,163,128,186,254,245,3,160,39,1,95,54,108,58,96,99,255,2,
-0,224,34,0,69,74,159,10,223,131,165,82,224,110,0,226,77,4,193,108,
-225,142,2,226,88,3,225,145,13,225,68,11,226,62,0,224,53,27,230,87,
-0,224,53,36,192,233,224,106,37,247,246,5,226,10,13,197,144,225,184,11,
-161,171,225,218,4,2,95,54,51,69,32,161,211,225,91,2,224,32,2,123,
-181,96,32,224,237,0,224,93,12,239,172,6,13,98,97,100,32,115,116,114,
-105,110,103,32,103,97,112,143,151,227,185,4,101,115,0,39,69,116,96,73,
-2,53,32,64,224,60,1,18,117,110,116,101,114,109,105,110,97,116,101,100,
-32,67,104,97,114,47,83,128,74,6,108,105,116,101,114,97,108,96,78,171,
-29,225,69,1,64,15,225,170,24,224,46,30,161,12,224,92,31,161,156,227,
-6,2,106,69,225,38,9,105,238,137,98,225,142,64,107,118,202,50,209,106,
-209,186,128,5,135,9,1,58,54,72,67,152,64,136,185,224,250,12,64,49,
-64,115,231,2,0,167,99,0,55,120,132,96,14,199,96,225,243,5,12,66,
-97,100,32,92,92,32,101,115,99,97,112,101,129,242,130,218,225,52,13,171,
-10,224,33,17,157,127,224,32,19,103,156,224,99,19,88,181,224,133,22,101,
-113,224,33,20,164,185,224,33,18,224,135,23,97,182,224,66,20,0,50,225,
-12,23,104,2,66,131,117,174,64,29,252,26,8,134,60,101,2,128,34,115,
-208,64,8,168,70,74,52,6,49,51,57,32,64,35,54,64,42,0,67,92,
-236,160,17,253,226,0,133,126,129,251,126,206,211,1,201,157,90,142,0,56,
-75,181,2,57,56,32,128,71,137,129,194,142,101,132,100,212,186,184,64,204,
-64,75,133,155,238,74,6,100,204,133,180,98,234,228,217,0,192,26,224,23,
-2,7,95,54,55,54,32,95,51,53,131,26,164,75,0,79,162,173,100,72,
-169,194,98,173,184,205,227,113,0,224,162,1,224,101,3,144,228,224,94,9,
-224,82,8,224,81,22,227,46,7,96,48,0,56,131,165,251,215,1,64,17,
-0,56,224,16,0,160,33,68,29,192,16,211,77,163,226,65,242,224,81,0,
-231,183,0,224,20,11,100,130,224,21,9,135,64,224,21,6,100,67,224,20,
-7,100,121,224,63,8,64,14,192,21,0,58,100,1,202,234,129,51,161,197,
-198,149,234,45,11,96,17,238,140,2,224,25,0,229,81,1,128,10,98,249,
-160,26,64,128,98,178,1,54,53,131,58,112,96,141,9,128,0,136,104,96,
-70,98,176,236,105,0,96,43,224,12,0,97,85,0,53,101,159,226,217,3,
-130,215,224,218,3,139,219,2,79,32,80,228,208,2,2,78,85,76,68,198,
-97,157,224,25,5,2,83,79,72,96,25,65,160,224,25,6,1,84,88,96,
-25,64,94,224,25,5,0,69,160,25,64,140,224,25,6,1,79,84,96,25,
-67,76,224,25,6,1,78,81,96,25,64,203,224,25,5,2,65,67,75,96,
-25,66,136,224,25,5,1,66,69,128,181,65,209,224,25,6,0,83,96,24,
-65,81,224,24,5,0,72,128,127,66,89,224,24,5,1,76,70,128,230,225,
-1,9,0,86,128,50,98,162,224,25,5,0,70,160,51,225,1,9,1,67,
-82,128,25,225,1,9,1,83,79,128,25,225,1,9,1,83,73,128,25,225,
-1,9,2,68,76,69,128,26,225,2,9,2,68,67,49,128,26,225,3,9,
-2,68,67,50,128,26,225,5,9,2,68,67,51,128,26,225,7,9,2,68,
-67,52,96,26,101,166,224,26,5,1,78,65,129,136,78,206,224,187,7,1,
-89,78,128,26,226,12,11,0,66,128,26,225,11,9,1,67,65,160,53,226,
-14,10,0,77,128,25,225,12,9,1,83,85,160,79,225,12,9,2,69,83,
-67,128,26,225,12,9,0,70,130,16,111,98,224,25,5,0,71,160,25,225,
-10,9,0,82,128,25,70,113,224,25,6,0,85,160,25,225,8,10,0,80,
-128,25,225,7,9,0,68,162,172,70,198,233,211,0,224,0,20,0,58,101,
-136,238,214,1,230,33,1,196,10,0,54,119,160,197,212,105,48,64,93,1,
-95,54,132,18,1,95,51,98,102,73,43,1,95,49,139,248,0,58,69,250,
-64,83,114,153,0,58,96,40,239,211,3,1,80,32,160,52,196,246,224,95,
-0,64,92,224,67,0,143,158,114,66,231,150,2,119,63,224,20,8,65,36,
-224,20,7,82,255,224,20,9,66,33,224,20,7,0,49,98,55,224,21,9,
-64,224,224,106,8,135,235,224,20,5,102,229,0,67,241,16,5,0,35,126,
-115,1,95,49,97,166,144,115,224,7,55,2,58,54,55,144,155,242,128,2,
-69,240,184,216,230,19,1,106,226,3,67,32,61,61,231,46,1,134,28,0,
-85,64,12,64,8,0,90,249,11,8,198,116,134,75,241,113,2,237,23,1,
-103,205,226,109,1,2,99,97,115,170,152,231,179,5,145,156,171,44,129,203,
-181,114,96,1,168,138,104,149,137,154,198,216,166,192,137,144,2,67,32,60,
-178,188,230,159,0,224,218,7,224,28,0,128,216,179,232,233,31,3,192,234,
-224,34,1,240,41,1,160,68,134,216,224,67,7,224,245,2,226,35,3,192,
-0,106,5,169,212,0,54,82,104,2,95,54,55,65,104,175,193,224,104,93,
-0,58,97,105,140,129,7,54,54,57,32,64,90,32,85,156,226,225,63,1,
-64,116,224,18,6,65,53,236,171,0,128,18,130,190,224,18,4,102,164,104,
-20,192,191,168,190,64,104,1,64,85,117,188,250,239,1,192,15,224,68,6,
-144,106,171,97,128,18,68,152,160,45,224,60,1,206,125,224,61,5,109,58,
-224,18,5,131,167,224,80,4,196,125,224,80,10,224,41,6,66,150,224,41,
-1,194,157,65,70,183,22,2,53,50,57,64,30,88,165,149,58,64,49,67,
-64,0,58,96,245,100,195,0,80,137,220,0,85,96,20,136,230,228,13,7,
-120,228,228,77,9,228,56,11,142,30,224,63,7,224,41,11,73,191,228,98,
-8,0,49,102,160,228,99,44,2,58,54,54,213,106,133,147,164,40,131,156,
-116,242,64,35,0,54,160,35,246,1,6,98,222,130,152,248,126,0,0,54,
-155,26,143,59,118,32,243,165,1,4,64,95,52,53,49,192,15,0,58,96,
-41,181,175,0,52,98,211,82,142,64,195,0,58,64,54,97,139,0,54,153,
-49,173,36,1,54,54,118,188,119,156,64,81,2,58,54,54,133,9,70,148,
-0,53,64,201,100,201,211,12,74,190,0,53,140,97,170,191,160,13,107,10,
-0,57,68,202,103,165,202,204,249,126,1,0,58,64,105,160,88,142,60,65,
-114,235,45,0,129,36,0,67,184,7,70,200,239,179,4,17,33,33,58,32,
-105,110,100,101,120,32,116,111,111,32,108,97,114,103,197,32,164,15,227,236,
-1,0,53,194,91,64,78,144,218,238,20,1,253,15,1,242,9,7,64,97,
-7,110,101,103,97,116,105,118,101,128,106,96,96,1,58,54,66,116,132,10,
-224,48,5,15,105,110,105,116,58,32,101,109,112,116,121,32,108,105,115,116,
-96,46,225,207,4,249,37,7,165,197,204,29,0,58,96,9,231,191,3,66,
-133,67,85,199,171,128,20,134,47,80,198,135,219,64,22,225,145,0,96,8,
-232,89,2,97,3,200,59,128,101,70,91,155,150,1,95,49,71,207,238,238,
-0,128,14,239,119,11,112,210,239,119,5,176,163,239,165,12,135,206,224,45,
-3,101,74,96,124,131,201,224,54,11,66,160,224,54,6,0,53,64,73,2,
-58,54,53,233,57,4,134,201,161,15,226,141,3,70,135,2,95,54,53,96,
-233,98,6,96,23,129,102,82,208,64,77,251,255,4,198,236,149,178,242,243,
-6,175,45,64,37,0,85,190,179,243,35,0,96,52,128,31,128,86,129,154,
-181,250,97,220,96,74,250,74,4,231,165,1,1,53,54,228,16,0,1,80,
-32,150,234,120,248,64,73,96,23,128,230,176,109,132,139,0,54,91,219,102,
-24,251,68,6,128,203,193,225,128,153,98,46,245,162,1,64,102,229,137,0,
-243,118,1,243,119,2,97,11,231,38,0,224,5,0,153,89,224,15,3,66,
-142,228,186,0,134,49,128,2,151,241,225,162,0,248,210,1,224,95,0,224,
-1,1,104,156,128,0,192,45,247,124,0,160,54,104,180,224,53,3,160,202,
-224,74,8,128,146,229,234,4,207,65,233,91,1,181,187,242,94,1,218,209,
-224,126,3,103,131,126,159,225,181,2,252,178,8,224,91,0,230,244,0,96,
-74,224,51,28,96,199,165,242,225,42,11,225,176,0,224,46,1,224,1,3,
-208,167,128,125,225,56,11,129,53,160,47,240,170,2,197,20,225,65,134,129,
-66,224,62,0,225,68,42,66,195,98,204,168,110,64,4,227,22,2,227,43,
-13,160,180,230,195,47,0,58,100,98,203,101,228,200,0,3,49,51,54,32,
-228,195,0,64,12,1,64,35,68,183,105,108,224,38,7,197,79,128,38,197,
-74,133,237,224,39,3,197,73,128,39,133,68,230,118,6,8,100,105,103,105,
-116,84,111,73,110,134,112,64,218,244,244,9,224,16,0,180,254,134,250,161,
-13,224,49,27,96,176,224,49,21,96,39,96,255,65,33,237,62,1,1,95,
-54,65,61,96,9,0,49,78,83,65,84,1,49,49,65,84,0,50,224,198,
-2,10,92,34,108,105,98,47,68,97,116,97,47,89,57,9,46,104,115,92,
-34,44,49,57,49,58,113,17,97,124,98,1,106,207,95,134,86,53,64,135,
-226,48,0,245,237,18,98,206,224,200,2,96,161,136,125,3,95,54,49,57,
-70,26,106,123,64,98,115,77,0,67,69,151,64,54,144,179,138,40,160,22,
-103,80,145,27,224,23,4,74,118,107,135,224,21,4,64,241,98,118,179,89,
-128,42,224,19,255,224,19,195,0,51,98,90,224,81,58,0,51,224,241,150,
-224,159,151,224,19,255,224,19,37,115,217,160,21,0,49,224,81,50,69,5,
-96,19,0,52,182,116,224,81,45,0,52,183,135,224,61,20,109,217,0,52,
-183,229,224,83,16,226,175,0,0,49,121,148,224,83,7,1,52,48,229,220,
-3,224,21,1,150,145,224,189,25,224,127,4,224,63,1,184,19,224,43,6,
-183,82,224,43,7,224,151,11,225,83,13,224,63,12,183,61,224,107,7,224,
-85,22,226,35,40,0,52,72,133,225,19,29,224,41,3,228,47,20,224,83,
-28,129,231,112,210,224,187,49,225,99,31,224,19,2,220,243,186,225,224,247,
-26,224,39,70,224,19,142,230,1,171,224,179,0,225,123,51,0,49,120,213,
-224,61,7,147,238,224,83,47,224,19,255,224,19,88,122,59,224,201,178,228,
-141,0,3,50,49,53,57,64,8,160,23,226,113,20,0,51,189,116,224,41,
-6,2,49,53,56,227,7,2,227,207,20,1,51,56,225,55,2,226,243,1,
-229,79,12,1,49,52,224,65,2,227,9,92,65,8,224,41,28,229,223,11,
-84,117,128,19,189,226,96,21,77,222,96,21,93,92,224,82,3,64,35,0,
-35,125,164,224,83,7,0,49,231,107,3,64,42,102,177,152,52,160,21,65,
-99,127,242,238,76,5,65,212,64,59,238,52,5,224,88,1,224,65,2,224,
-173,1,225,79,82,224,19,130,80,242,129,4,0,49,226,129,2,226,171,20,
-1,49,51,224,20,1,226,126,11,64,60,97,197,228,12,4,97,154,145,18,
-117,97,192,64,64,128,0,51,97,201,225,156,3,0,56,239,209,255,224,19,
-67,75,67,225,24,255,224,19,255,224,19,9,86,156,192,20,233,103,131,241,
-17,255,224,19,255,224,19,255,224,19,159,67,191,0,51,120,225,0,57,233,
-242,3,0,57,119,233,128,24,2,49,52,53,233,227,3,126,176,96,70,224,
-24,6,232,180,1,224,23,5,1,55,50,64,100,0,55,159,12,1,55,55,
-224,26,3,104,80,168,126,224,125,2,1,50,48,228,226,11,64,145,107,100,
-2,35,54,48,104,179,160,23,0,52,120,172,224,23,9,0,51,96,119,225,
-224,247,224,19,255,224,19,255,224,19,255,224,19,255,224,19,175,237,54,1,
-3,49,53,50,50,242,223,182,224,19,255,224,19,255,224,19,243,99,216,138,
-120,245,191,3,74,93,138,41,224,21,7,224,43,13,224,65,31,244,242,0,
-224,21,3,224,151,0,224,20,45,75,33,224,127,8,85,103,224,171,36,224,
-21,13,149,94,224,129,6,128,20,0,52,64,49,224,151,8,224,20,2,94,
-88,75,241,64,21,249,183,2,245,114,1,224,43,7,224,108,18,0,57,247,
-26,3,64,65,224,43,17,0,50,75,136,224,152,9,224,20,2,224,108,1,
-1,50,53,224,65,12,0,53,224,174,2,224,218,12,1,50,57,248,35,0,
-3,49,53,48,51,224,91,2,246,80,2,1,55,54,225,77,3,224,23,1,
-0,53,224,160,3,226,16,0,0,53,236,146,2,0,52,97,122,98,61,247,
-47,3,0,51,76,122,226,192,7,0,56,85,179,0,35,120,124,1,35,53,
-226,216,3,1,56,54,64,69,97,165,0,35,237,109,3,64,11,227,26,18,
-2,49,52,56,224,182,11,1,55,54,77,163,224,22,8,3,50,49,52,53,
-224,205,2,237,2,61,1,49,53,246,52,3,224,107,3,0,57,224,131,13,
-0,53,225,105,12,64,23,224,155,2,224,115,11,224,175,11,65,78,130,6,
-1,49,54,231,233,255,224,19,255,224,19,255,224,19,211,251,253,31,229,140,
-11,3,51,49,48,53,252,255,11,225,107,255,224,19,168,251,45,255,224,19,
-7,1,49,51,232,69,21,224,19,101,227,114,255,224,19,255,224,19,83,0,
-49,253,15,40,2,55,48,54,234,135,3,253,79,91,230,155,11,224,39,0,
-1,56,52,235,95,4,235,179,31,227,100,200,2,56,52,54,238,239,4,224,
-23,2,122,138,224,23,10,236,15,3,224,23,3,0,48,224,23,14,239,187,
-12,2,56,52,53,224,119,14,236,175,4,224,23,3,0,50,238,144,2,238,
-73,1,0,56,238,51,3,226,86,91,224,19,60,0,57,225,115,14,239,161,
-4,192,23,3,55,48,55,54,237,243,12,224,108,30,2,56,52,54,238,206,
-12,224,43,2,226,215,11,230,220,60,2,56,53,49,225,183,3,79,162,224,
-44,9,1,50,51,113,103,143,191,1,54,52,224,170,2,0,50,79,186,124,
-255,0,64,124,185,224,24,0,0,55,64,48,80,11,224,23,6,0,57,64,
-121,82,207,2,64,35,55,252,245,2,144,237,64,89,224,22,5,64,69,66,
-63,224,21,4,80,214,110,252,224,42,4,1,55,55,64,67,0,53,96,90,
-0,49,253,81,3,1,50,48,64,48,96,229,224,188,4,1,50,56,112,101,
-0,51,224,24,9,1,49,57,105,83,224,25,9,3,51,49,52,50,65,138,
-113,76,1,35,54,64,100,2,75,32,64,224,0,255,224,0,255,224,0,136,
-1,58,54,67,22,27,10,65,32,83,39,32,95,49,52,49,32,64,95,54,
-50,54,32,64,67,32,95,49,50,55,32,95,49,51,99,53,100,244,3,58,
-54,52,57,96,43,13,66,32,89,32,64,66,32,66,32,83,32,85,32,80,
-64,55,2,55,32,64,128,5,64,0,1,67,39,64,27,1,67,39,64,83,
-0,66,64,18,64,16,2,67,32,64,192,41,192,17,96,32,1,80,32,128,
-13,7,95,49,48,54,32,64,85,32,99,52,2,85,32,65,163,59,3,58,
-54,52,56,224,115,1,128,80,64,119,3,64,66,32,85,96,165,0,55,68,
-31,224,87,0,64,85,96,124,3,32,64,67,39,64,97,0,64,224,198,2,
-132,92,2,64,64,64,128,52,96,92,0,55,96,92,2,67,32,83,224,239,
-3,131,216,224,20,7,68,159,224,20,8,0,54,68,8,224,20,7,0,52,
-68,3,224,20,8,65,66,224,20,7,0,53,68,39,224,83,8,64,166,224,
-20,8,224,125,11,85,104,224,20,8,100,129,224,20,8,224,125,11,77,4,
-224,20,9,65,73,224,251,8,225,16,11,0,51,224,188,11,0,52,224,167,
-12,224,83,11,0,49,69,47,224,21,10,224,148,11,104,88,224,20,7,1,
-56,55,106,7,224,22,8,0,54,225,85,12,1,56,53,224,196,12,1,56,
-53,225,215,12,2,56,55,48,64,45,99,21,65,80,3,66,32,95,52,86,
-158,2,95,49,52,65,157,227,45,2,65,236,1,95,54,97,221,3,64,64,
-95,49,75,95,224,7,183,1,58,54,66,88,68,20,97,21,64,241,2,95,
-54,52,129,61,1,95,54,65,14,31,102,114,111,109,85,84,70,56,32,34,
-33,92,34,35,37,38,39,40,41,42,44,45,46,47,58,59,63,64,91,92,
-92,93,3,95,123,125,34,64,79,0,58,97,24,99,97,6,95,50,57,48,
-32,64,83,67,243,1,83,39,67,186,0,60,199,215,224,19,7,162,0,224,
-19,4,98,64,100,70,3,67,32,61,61,192,17,1,95,49,120,95,1,85,
-32,192,191,224,10,3,0,67,164,97,192,66,65,161,224,30,1,224,40,2,
-224,128,8,130,16,224,61,5,66,128,224,61,12,224,149,5,64,19,224,149,
-9,65,7,0,52,225,81,9,128,103,225,81,7,10,36,43,60,61,62,92,
-94,96,92,124,126,193,67,0,51,225,67,19,72,144,225,47,7,104,210,224,
-153,4,96,17,225,47,20,0,83,224,241,6,67,91,224,30,1,224,230,5,
-67,96,224,230,13,0,50,198,77,101,163,67,86,133,149,101,152,230,86,5,
-132,148,0,64,65,9,101,152,97,10,216,190,1,58,54,67,94,97,49,160,
-150,101,213,0,66,160,90,192,72,0,51,68,2,225,59,1,5,83,79,85,
-82,67,69,97,54,160,118,134,87,1,64,95,140,227,64,20,7,95,50,54,
-56,32,95,54,50,64,188,0,66,64,8,0,51,64,119,64,129,3,95,52,
-53,49,64,11,66,148,224,242,0,224,147,2,96,75,160,181,0,58,96,180,
-102,152,102,154,68,18,192,159,70,119,96,8,166,125,91,143,107,58,96,37,
-70,193,64,5,0,80,102,163,0,79,96,203,0,54,64,84,224,198,1,18,
-85,110,99,108,111,115,101,100,32,123,45,32,99,111,109,109,101,110,116,96,
-211,138,81,129,233,71,89,135,131,128,7,225,37,0,0,83,230,244,6,123,
-174,96,249,193,143,192,47,225,146,10,164,199,167,195,128,251,96,159,107,229,
-161,165,4,56,48,32,95,55,107,192,161,247,224,147,39,192,101,224,146,28,
-0,49,108,92,224,147,23,2,49,55,52,224,148,14,64,85,192,97,130,62,
-232,22,14,224,46,30,130,71,160,187,224,231,4,224,84,4,129,117,224,175,
-8,192,156,192,24,0,95,143,172,224,16,4,67,93,96,0,168,168,0,58,
-96,24,7,10,65,32,85,32,66,32,90,66,54,129,100,1,95,51,126,152,
-128,177,1,95,53,79,221,128,95,225,163,10,0,58,96,86,96,67,193,102,
-128,49,67,35,0,52,192,44,131,48,67,87,109,38,224,71,4,125,137,64,
-21,96,4,64,80,201,60,105,147,192,85,224,154,4,160,99,224,73,5,96,
-59,0,54,227,60,0,142,175,2,64,64,80,70,120,67,7,229,38,6,100,
-101,229,38,9,10,32,94,41,94,42,94,43,94,44,94,45,165,38,67,183,
-234,157,3,74,111,96,60,170,22,96,20,135,182,225,170,3,160,144,165,99,
-65,0,64,26,0,54,109,226,133,112,1,95,50,69,129,0,58,96,137,5,
-10,65,32,95,52,56,128,244,196,229,230,61,5,96,226,224,26,12,100,114,
-224,26,14,97,2,224,26,13,97,110,196,94,229,163,4,129,91,107,10,65,
-214,229,238,3,64,25,229,161,10,224,44,13,229,206,14,224,117,15,98,176,
-224,72,12,231,148,13,224,44,14,101,151,224,117,11,225,7,14,101,150,224,
-145,13,97,115,224,100,12,64,25,224,145,32,64,97,225,7,34,99,226,224,
-72,12,64,25,224,117,32,64,37,225,7,13,226,97,14,194,16,225,35,10,
-98,207,224,173,13,96,86,224,128,12,131,16,224,173,30,103,40,225,35,32,
-104,69,224,72,12,96,25,224,117,31,232,112,15,224,118,2,225,34,5,195,
-78,224,145,10,226,189,16,234,82,14,224,44,14,226,189,16,224,45,12,226,
-134,15,225,200,15,96,164,225,253,13,96,58,224,26,13,98,144,224,245,13,
-99,60,224,154,12,226,244,15,224,44,12,226,216,15,224,117,14,64,39,224,
-72,13,226,244,15,224,44,12,226,160,15,225,7,14,98,115,224,144,13,99,
-31,224,99,12,226,215,15,224,44,11,226,186,15,224,116,13,99,174,224,70,
-11,226,212,15,224,43,11,226,155,15,225,3,15,194,10,224,25,9,198,159,
-224,168,9,99,52,224,124,11,226,235,15,224,43,11,226,233,16,224,114,12,
-226,150,16,226,149,35,226,148,16,228,28,14,225,0,16,226,174,16,226,173,
-36,228,24,35,229,77,16,73,59,1,51,48,76,168,104,136,0,58,96,6,
-233,25,6,102,175,243,184,6,0,95,153,228,0,58,108,209,224,47,7,98,
-68,0,54,71,238,0,58,96,38,211,247,72,252,1,95,53,105,16,74,67,
-0,54,106,10,0,32,224,17,1,1,64,35,73,6,64,52,138,67,238,137,
-15,238,116,8,224,221,12,225,0,26,0,58,96,171,160,190,75,221,139,59,
-0,55,160,192,98,99,0,54,67,178,0,58,96,244,224,146,2,225,138,25,
-0,58,96,63,224,197,22,227,76,9,224,18,6,113,13,226,176,25,224,10,
-13,240,92,7,224,51,4,225,6,5,234,211,10,148,235,64,124,98,216,77,
-116,0,82,224,22,4,174,243,96,63,138,214,98,5,97,48,226,15,1,64,
-39,1,49,49,75,234,1,50,32,235,86,1,25,92,34,108,105,98,47,68,
-97,116,97,47,67,104,97,114,46,104,115,92,34,44,49,57,54,58,49,143,
-85,1,95,54,136,72,0,73,64,4,79,76,83,85,75,53,235,222,0,107,
-66,237,141,0,3,95,50,57,56,75,65,4,57,56,32,35,57,96,161,128,
-11,98,99,96,161,171,84,2,54,49,57,79,140,129,211,130,235,185,90,64,
-54,0,35,186,97,65,137,217,235,0,52,162,62,3,35,49,52,56,252,73,
-2,75,171,137,84,224,46,4,121,157,122,48,224,21,3,64,90,96,67,0,
-50,113,141,192,43,224,89,0,224,19,255,224,19,206,0,52,226,33,4,224,
-81,50,66,115,224,241,147,224,159,151,224,19,255,224,19,27,225,203,51,212,
-137,2,35,53,57,71,215,224,21,7,0,51,103,231,224,103,38,224,39,11,
-229,155,1,224,19,1,71,194,224,59,17,121,157,224,61,18,224,163,1,112,
-56,224,21,7,2,56,53,49,101,243,224,87,7,0,50,123,77,225,57,58,
-224,59,11,0,53,225,13,50,225,73,51,224,59,1,109,71,160,21,225,95,
-11,225,53,1,224,121,21,224,39,71,224,19,131,224,179,0,1,49,53,72,
-128,224,181,158,224,19,11,226,31,11,225,145,31,226,131,31,224,19,255,224,
-19,87,225,143,171,78,28,224,19,7,66,147,64,14,2,35,50,49,155,69,
-224,23,2,224,43,7,229,47,11,224,163,71,227,15,0,3,50,49,53,54,
-230,41,11,64,23,224,167,2,224,23,4,230,131,2,224,23,0,0,52,116,
-169,224,21,9,224,135,6,97,3,0,52,124,101,225,1,7,2,52,48,51,
-224,179,10,1,52,48,76,210,224,87,7,1,56,52,153,255,160,23,226,37,
-0,224,89,4,224,45,4,224,203,2,224,91,1,115,168,224,45,10,237,40,
-3,224,23,2,225,17,13,2,56,52,54,116,230,224,93,9,229,71,2,225,
-17,1,110,24,224,67,22,225,109,2,237,180,4,224,47,4,224,139,2,225,
-67,1,224,93,3,224,137,0,2,50,49,52,78,94,224,139,10,225,91,2,
-224,67,2,224,183,2,0,56,224,67,2,0,53,225,247,2,224,45,1,125,
-232,224,113,7,64,159,226,37,12,224,45,3,225,181,0,65,89,224,45,24,
-224,21,0,0,49,124,10,224,21,2,130,83,81,157,224,135,8,154,198,160,
-21,231,249,0,0,52,224,65,4,225,224,3,233,28,3,224,23,3,225,156,
-4,0,54,239,14,0,1,49,54,226,132,3,228,171,31,224,39,11,64,19,
-111,140,233,137,4,0,52,228,74,0,112,37,224,152,2,96,43,0,55,224,
-242,2,64,64,96,165,239,184,4,66,130,128,64,0,54,226,118,6,124,162,
-224,42,3,228,181,1,225,255,3,225,95,0,158,95,160,21,228,181,1,121,
-195,225,48,7,0,49,227,87,3,224,237,0,0,57,224,42,12,0,48,227,
-36,11,120,8,225,65,18,224,19,211,225,4,1,126,27,225,26,9,228,225,
-11,227,108,12,0,50,117,19,224,106,8,0,57,224,21,2,230,126,11,230,
-146,12,64,20,96,78,226,51,4,83,199,129,172,224,151,6,227,33,1,225,
-80,121,224,19,191,69,240,225,24,255,224,19,255,224,19,0,239,179,51,224,
-19,71,228,128,1,228,18,2,225,104,191,224,19,255,224,19,255,224,19,223,
-0,53,70,125,107,55,1,35,57,233,157,3,0,57,74,45,0,35,122,22,
-2,35,54,48,235,39,3,0,52,78,199,224,23,10,0,55,72,65,127,0,
-233,231,5,0,49,250,170,2,1,50,53,234,23,13,1,50,53,238,14,12,
-3,49,50,52,56,234,180,13,2,52,56,51,224,215,11,2,50,52,56,224,
-71,14,233,116,13,1,50,51,235,63,7,96,23,2,55,48,53,124,202,225,
-75,19,126,43,160,45,0,54,236,230,3,224,237,0,0,55,126,48,224,92,
-0,233,59,0,2,55,48,55,236,95,3,0,49,65,45,225,231,88,224,19,
-255,224,19,255,224,19,255,224,19,255,224,19,255,224,19,71,250,150,1,244,
-54,3,250,172,11,225,65,255,224,19,255,224,19,255,224,19,139,74,41,107,
-51,246,64,5,234,255,0,224,21,7,224,43,13,224,65,31,246,151,2,224,
-150,11,224,20,44,74,189,224,127,13,64,230,2,35,49,52,234,161,2,64,
-64,0,51,96,21,0,55,235,21,2,118,153,64,21,1,50,48,64,93,224,
-43,2,128,21,0,53,224,130,6,128,21,0,50,235,41,2,224,43,2,224,
-87,6,225,47,35,224,197,19,224,21,2,241,73,1,235,123,4,224,21,0,
-0,52,250,99,4,235,146,1,224,45,3,251,237,0,224,110,25,224,64,1,
-245,194,3,237,9,1,224,86,2,1,51,52,225,224,0,0,53,247,140,3,
-97,96,98,13,245,240,4,244,46,11,0,56,120,164,119,202,1,35,53,226,
-167,3,1,56,56,89,233,64,96,237,223,5,248,129,1,224,45,2,224,157,
-0,3,50,49,53,56,246,142,11,64,23,0,51,224,138,2,227,45,30,224,
-19,11,246,73,11,255,224,12,225,161,1,224,120,61,224,19,255,224,19,255,
-224,19,255,224,19,119,228,144,11,224,39,11,241,44,11,101,152,146,196,2,
-49,52,53,252,231,3,241,165,1,224,24,6,235,129,1,224,48,6,2,48,
-57,57,235,157,255,224,19,188,251,93,255,224,19,7,1,49,51,226,230,131,
-233,24,1,225,65,161,224,19,255,224,19,167,234,82,32,253,124,91,230,206,
-11,248,15,31,224,199,0,70,177,224,180,99,225,165,92,224,160,151,225,165,
-31,225,144,11,228,238,11,229,142,52,237,78,11,0,56,90,219,160,21,0,
-56,238,89,3,95,191,1,35,55,77,224,3,35,55,55,55,232,253,3,3,
-50,49,52,53,64,74,142,73,91,208,192,25,1,49,50,64,65,105,79,160,
-59,192,24,0,55,64,184,0,51,96,48,224,23,4,0,57,123,174,96,126,
-0,55,251,196,3,64,191,111,20,224,22,5,64,69,66,198,224,21,4,78,
-188,64,209,224,42,5,1,55,57,64,163,92,185,91,194,224,25,4,64,69,
-0,50,96,49,224,188,3,1,50,56,105,211,111,70,224,24,5,1,49,57,
-104,32,224,25,9,3,51,49,52,50,96,51,64,19,1,35,54,64,100,2,
-75,32,64,224,0,255,224,0,255,224,0,152,1,58,54,66,223,12,10,65,
-32,67,39,32,83,32,64,67,39,32,67,128,5,18,39,32,89,32,64,64,
-83,39,32,66,32,64,66,39,32,66,39,32,80,66,222,1,66,32,128,1,
-0,67,64,23,64,0,128,43,1,67,39,64,14,160,26,96,11,224,41,1,
-96,82,224,42,3,192,2,128,21,224,98,3,64,2,64,134,5,95,52,54,
-32,95,54,67,191,160,33,224,101,3,224,131,2,128,85,0,66,64,55,128,
-33,9,64,66,32,83,39,32,64,95,53,55,192,63,7,67,32,95,56,48,
-32,95,55,68,127,96,14,160,64,2,95,52,57,84,83,64,61,224,32,1,
-1,95,54,115,119,128,0,224,55,4,101,38,2,64,95,50,82,246,3,58,
-54,49,57,97,51,9,83,39,32,95,49,56,50,32,95,54,115,217,0,67,
-64,8,64,120,96,13,100,151,0,66,64,13,160,69,5,67,32,95,49,53,
-57,224,30,4,64,74,0,56,96,74,3,85,32,75,52,224,2,1,2,90,
-32,90,64,6,160,136,0,58,64,85,64,36,5,95,49,54,48,32,95,83,
-191,1,95,51,69,187,1,95,54,72,170,1,95,54,69,50,1,95,54,78,
-228,3,95,49,54,56,192,97,3,95,49,55,49,224,109,0,0,48,64,27,
-3,55,50,32,80,160,17,160,216,2,95,49,55,224,145,0,2,95,49,56,
-224,47,0,3,95,49,56,51,224,11,2,0,54,224,55,7,129,190,65,171,
-1,67,32,225,172,1,129,36,224,27,4,1,49,52,65,30,64,23,1,95,
-55,96,241,1,95,54,133,219,129,79,1,49,56,69,56,128,19,224,83,51,
-111,218,224,82,5,0,55,64,241,0,56,224,221,2,1,57,48,224,11,0,
-0,54,85,54,6,75,32,95,49,57,50,32,160,67,0,75,160,8,64,21,
-65,85,65,117,0,54,97,117,9,112,111,112,99,111,117,110,116,32,58,96,
-54,5,10,65,32,115,104,108,64,12,0,52,96,12,2,105,110,118,64,12,
-0,51,96,12,2,120,111,114,64,12,0,50,96,12,128,11,0,49,226,42,
-1,70,43,98,154,0,49,112,118,70,165,66,21,224,17,0,70,173,66,148,
-1,58,54,71,22,1,10,65,98,229,144,250,2,64,64,80,66,120,86,130,
-66,8,5,52,57,57,32,95,53,64,13,224,10,3,5,53,50,54,32,95,
-53,70,171,3,95,54,48,53,96,5,97,37,224,6,0,0,55,96,67,130,
-113,0,95,98,74,0,52,96,37,192,54,1,64,85,99,99,5,67,32,67,
-32,61,61,199,157,3,95,53,49,50,64,42,64,102,96,36,13,102,114,111,
-109,85,84,70,56,32,34,101,111,102,34,98,165,7,85,32,75,32,95,51,
-54,51,160,137,0,73,162,186,0,58,96,114,96,200,1,95,53,64,132,132,
-101,1,95,53,66,208,2,66,32,90,228,112,0,64,30,64,249,1,95,53,
-64,48,128,57,129,125,1,95,49,192,84,2,95,49,56,64,9,64,177,1,
-53,51,66,241,224,249,3,0,57,64,5,128,231,64,7,0,52,96,232,129,
-173,3,95,54,48,49,225,22,1,65,130,96,39,0,58,96,37,224,97,14,
-0,80,96,83,68,11,2,95,53,51,224,30,0,4,53,57,53,32,35,67,
-120,64,66,129,168,64,79,64,67,1,53,57,193,67,225,29,1,4,118,97,
-108,117,101,65,31,225,85,7,64,64,0,51,99,6,97,55,66,133,193,46,
-130,57,0,67,66,47,132,206,128,5,1,95,53,66,24,1,95,53,105,119,
-129,232,64,67,225,112,0,1,95,49,119,194,0,58,64,234,128,143,0,49,
-65,222,1,50,53,193,179,3,95,53,51,52,224,160,8,2,92,92,110,224,
-158,10,96,245,0,49,65,97,160,158,99,14,160,159,130,151,225,122,4,225,
-31,6,73,214,225,60,1,96,17,73,34,0,58,97,162,129,42,2,55,32,
-58,96,31,225,56,15,2,107,101,121,224,151,10,98,139,225,54,0,0,50,
-225,55,3,64,82,195,47,194,106,230,89,3,226,116,1,230,133,7,134,197,
-198,182,230,29,0,96,68,64,182,134,94,64,24,1,83,39,99,196,0,53,
-66,85,64,76,69,12,0,53,134,46,2,67,32,79,68,78,96,139,226,208,
-16,64,232,196,9,225,140,1,97,219,65,32,2,95,53,57,64,19,3,50,
-57,32,75,128,235,132,206,3,64,66,32,85,130,6,225,9,2,96,129,129,
-161,128,31,2,90,32,95,74,231,2,95,49,51,128,52,96,110,130,253,164,
-66,98,55,68,66,64,102,64,23,2,85,32,83,64,138,71,45,2,67,32,
-60,171,91,224,18,6,68,119,98,138,224,18,1,100,17,0,67,65,59,224,
-19,2,132,57,1,75,32,225,193,1,3,84,82,97,119,132,25,224,24,6,
-2,69,79,70,160,23,96,24,5,66,32,95,50,50,49,224,31,2,3,123,
-45,35,32,96,32,0,67,128,25,226,21,2,3,32,35,45,125,192,59,224,
-151,8,133,74,224,150,4,65,154,224,149,6,5,73,110,100,101,110,116,224,
-152,12,4,84,66,114,97,99,99,173,128,27,0,65,128,9,225,17,6,66,
-18,224,121,6,66,143,224,121,6,65,108,64,93,0,67,166,175,225,154,1,
-0,35,102,182,224,23,11,104,140,226,71,0,224,151,1,6,125,32,108,97,
-121,111,117,160,180,225,40,2,224,23,4,227,170,0,68,192,0,51,67,245,
-195,27,224,25,4,224,20,0,225,213,7,224,195,9,227,254,2,3,56,32,
-95,51,98,204,224,76,4,0,49,70,108,224,23,0,193,206,73,88,7,49,
-53,32,79,32,35,52,54,195,19,105,99,97,204,227,40,3,64,0,0,58,
-98,250,101,131,134,94,0,56,72,104,0,53,93,237,1,95,53,100,72,3,
-64,95,49,50,68,95,96,185,1,95,49,100,208,96,11,0,58,96,6,96,
-58,0,48,64,218,1,55,56,103,91,64,69,164,129,73,190,160,11,0,50,
-101,13,192,11,70,13,196,165,73,23,0,50,96,123,96,17,0,73,99,33,
-133,67,68,53,70,200,102,167,131,70,3,95,51,52,51,226,51,2,21,73,
-110,116,101,103,101,114,58,32,100,105,118,105,115,105,111,110,32,98,121,32,
-48,161,145,160,54,70,227,100,134,96,79,0,85,64,68,0,49,69,60,127,
-20,165,182,224,17,9,128,64,96,61,224,7,0,132,137,164,135,70,31,64,
-39,132,172,4,83,32,95,53,56,133,165,164,175,68,216,2,95,53,56,132,
-130,105,17,160,42,0,85,64,10,192,36,235,183,2,235,255,0,1,95,53,
-94,18,227,0,0,192,36,107,100,160,5,160,88,164,150,76,23,193,224,66,
-4,161,219,69,2,126,36,224,0,3,0,58,97,113,133,5,0,83,140,82,
-1,95,50,102,218,0,52,79,174,0,58,96,49,140,141,105,239,98,148,0,
-89,161,61,224,19,0,66,165,96,8,64,63,226,83,4,224,173,2,236,147,
-5,64,31,103,83,224,28,0,64,238,128,69,71,98,100,111,72,231,1,51,
-56,69,8,160,220,66,92,171,217,2,49,48,55,224,28,2,96,241,66,96,
-112,81,64,31,0,52,224,12,0,1,95,50,195,20,2,95,53,53,102,67,
-1,95,52,95,78,161,219,0,58,97,95,98,95,135,230,167,229,230,98,0,
-128,181,64,11,106,241,192,7,68,49,1,53,52,130,229,108,26,129,196,104,
-169,127,116,160,6,193,150,96,26,70,93,64,21,64,59,0,54,105,57,96,
-162,162,13,160,49,96,28,228,25,0,141,78,128,46,138,157,128,26,132,29,
-65,72,136,155,0,83,142,33,128,162,231,103,0,128,33,97,112,98,75,108,
-172,1,53,55,128,152,226,105,0,161,125,225,229,0,136,236,97,214,231,155,
-0,2,95,53,56,96,230,192,95,160,163,128,220,160,12,98,99,141,39,2,
-95,53,56,102,227,138,122,224,197,16,64,39,192,18,64,66,225,16,3,227,
-134,2,64,139,164,178,96,8,140,158,3,95,49,55,52,206,41,67,110,146,
-122,101,209,0,39,66,133,1,95,53,66,31,162,139,224,77,3,224,13,5,
-0,58,99,144,1,10,65,228,80,9,14,108,97,115,116,58,32,101,109,112,
-116,121,32,108,105,115,133,220,129,44,103,229,0,90,64,239,128,175,0,58,
-96,8,100,255,224,89,0,0,79,115,252,64,127,0,58,97,13,227,72,0,
-132,232,0,75,98,124,199,254,0,65,96,13,133,126,196,24,207,105,227,56,
-1,239,244,0,2,95,53,53,137,209,0,54,170,130,96,14,0,58,100,9,
-3,10,65,32,89,160,45,169,160,162,184,129,230,192,93,96,70,137,180,131,
-186,228,148,0,68,222,224,10,7,64,133,72,241,167,38,139,118,0,49,109,
-43,65,178,4,95,51,50,52,32,169,35,192,116,133,105,239,241,3,128,48,
-64,10,128,47,202,201,64,0,64,60,0,58,101,54,161,39,130,187,1,95,
-50,73,212,129,29,241,26,0,224,27,4,97,71,84,202,134,125,0,57,102,
-179,84,128,134,185,64,106,0,53,96,34,170,226,0,52,70,112,130,108,163,
-131,128,11,142,13,99,157,128,1,1,95,54,77,104,128,67,131,228,1,95,
-53,128,198,224,13,0,65,252,102,164,64,111,225,253,8,0,49,193,253,64,
-39,224,29,0,2,51,50,51,224,29,6,173,24,230,118,7,0,58,96,102,
-144,141,227,13,4,64,25,130,41,0,83,134,203,231,17,1,230,186,10,230,
-249,1,231,66,11,224,48,20,97,192,226,57,5,73,44,229,217,8,130,62,
-132,230,230,242,3,162,98,101,109,162,169,99,233,76,99,133,139,79,234,100,
-10,160,60,231,78,0,166,14,224,114,2,228,139,0,242,219,3,162,184,224,
-115,21,224,113,5,224,111,3,224,49,17,144,134,224,0,3,0,58,98,40,
-163,158,1,95,53,81,217,1,53,53,99,253,160,16,65,72,68,163,3,95,
-50,54,56,66,62,100,167,141,39,5,53,55,48,32,95,50,118,238,172,18,
-71,162,0,54,102,62,224,155,3,0,58,96,119,242,128,0,141,169,0,55,
-208,125,167,121,64,180,0,85,81,119,193,174,166,97,0,39,224,21,3,165,
-153,224,29,0,195,239,103,64,160,207,0,54,131,52,132,40,228,249,4,5,
-102,111,108,100,108,49,228,251,8,64,173,98,152,64,185,224,146,3,0,83,
-226,1,4,96,91,131,16,231,228,1,0,85,66,78,235,104,2,100,65,133,
-173,232,50,0,192,189,230,196,0,102,154,199,247,1,95,50,206,3,230,207,
-0,0,54,128,22,161,171,166,169,232,8,1,232,9,5,128,151,0,54,228,
-68,0,208,238,128,144,0,53,113,242,131,157,64,83,100,142,66,13,96,45,
-198,227,132,39,0,58,100,57,99,127,0,73,194,240,134,20,227,60,4,137,
-26,227,245,2,230,134,7,96,144,131,201,104,247,144,93,163,4,135,185,233,
-96,0,193,92,233,121,10,231,43,5,68,247,128,238,200,174,128,89,67,68,
-128,15,1,95,53,76,13,130,181,0,53,76,78,128,155,99,154,129,74,103,
-182,162,84,176,113,224,46,1,224,102,0,160,44,227,250,3,224,184,11,224,
-134,15,105,65,64,169,224,137,8,192,90,224,134,27,224,181,2,225,11,3,
-224,73,0,161,11,97,218,0,50,226,226,2,10,92,34,108,105,98,47,68,
-97,116,97,47,172,56,96,7,13,114,110,97,108,46,104,115,92,34,44,53,
-52,58,49,98,245,0,58,97,249,113,29,117,240,67,171,0,58,96,115,162,
-224,97,148,128,236,237,182,0,98,186,96,23,162,95,98,240,163,253,225,236,
-0,64,41,227,206,4,132,156,128,5,227,149,8,19,105,109,112,111,115,115,
-105,98,108,101,58,32,120,115,32,62,61,32,121,115,96,161,81,126,224,221,
-38,3,57,48,58,54,239,190,0,234,247,2,64,145,226,86,0,227,125,3,
-172,130,227,124,3,0,48,236,97,0,228,118,0,163,81,1,53,53,114,128,
-164,213,196,131,224,80,12,234,157,2,224,80,2,97,176,96,69,97,127,245,
-127,1,98,76,139,74,105,254,156,67,104,141,132,7,196,37,196,13,224,37,
-1,64,106,224,14,3,228,40,1,236,35,0,0,58,96,114,163,241,142,33,
-231,33,21,166,55,96,172,0,55,228,220,11,64,82,133,44,64,140,0,51,
-68,80,232,192,1,131,14,163,23,129,116,150,150,3,64,95,52,51,96,162,
-133,175,160,120,200,22,0,53,168,108,1,53,53,79,127,130,142,66,230,226,
-142,2,163,123,129,43,229,119,9,161,154,229,121,8,225,244,15,96,188,64,
-110,161,159,230,102,1,67,126,0,53,105,70,199,208,226,76,45,224,91,1,
-226,76,10,224,95,3,226,76,31,224,80,2,161,159,106,148,0,58,96,24,
-226,76,6,130,58,226,57,0,100,69,230,69,2,224,11,3,0,58,96,71,
-1,10,65,74,236,0,58,96,147,106,83,70,64,0,52,102,31,64,187,206,
-25,78,103,1,95,53,79,74,205,122,104,52,138,81,80,229,96,10,0,58,
-96,6,230,148,6,192,251,96,78,148,92,165,1,128,6,0,58,96,80,224,
-52,27,224,59,2,0,58,96,139,224,52,20,224,98,2,160,59,0,58,96,
-198,224,52,27,224,112,2,0,58,97,1,102,215,134,208,226,149,3,140,23,
-224,19,0,111,240,166,10,2,95,53,52,105,128,209,165,165,28,1,53,52,
-143,99,198,49,97,136,64,123,135,57,96,86,75,246,2,52,51,32,101,12,
-160,47,198,59,96,65,187,41,194,63,195,118,234,215,2,0,73,217,42,107,
-249,0,51,142,202,96,17,192,118,0,58,96,7,3,10,65,32,75,141,176,
-64,84,64,13,2,50,32,58,96,114,96,25,108,144,64,137,98,25,65,241,
-0,52,98,1,0,52,97,129,66,37,202,68,0,52,162,10,64,31,0,58,
-96,31,193,49,231,80,0,224,174,0,96,48,164,28,232,176,2,192,13,2,
-51,48,57,195,220,128,167,216,26,74,138,225,32,0,97,169,214,171,64,15,
-121,185,184,82,1,95,51,115,186,96,86,0,58,96,6,104,225,1,95,53,
-68,138,2,95,53,51,100,123,0,51,193,214,0,83,65,33,175,145,77,214,
-105,226,67,110,74,217,91,153,96,7,227,154,2,205,243,206,36,0,56,98,
-38,64,85,242,128,0,202,166,129,148,128,19,228,80,1,92,133,195,210,224,
-117,39,201,111,100,53,160,2,64,18,228,172,6,96,116,160,5,69,49,1,
-54,53,220,247,162,117,132,53,171,72,0,35,162,171,97,166,66,197,126,114,
-224,40,12,235,245,0,224,62,13,194,145,224,70,6,160,38,233,102,0,224,
-236,24,65,80,0,54,162,95,0,89,106,130,192,215,117,210,96,127,138,165,
-163,25,65,85,1,50,55,224,236,7,165,219,235,188,1,95,56,179,120,76,
-225,119,204,192,22,2,95,51,48,248,50,3,2,32,37,32,168,87,224,45,
-5,64,0,118,61,96,6,64,249,0,58,87,26,195,11,73,213,137,208,250,
-39,25,162,41,230,12,2,97,203,224,70,0,172,37,96,28,250,41,38,154,
-39,250,38,2,0,51,239,130,0,0,51,67,230,96,18,131,218,2,80,32,
-58,124,248,103,137,3,50,55,32,80,112,120,0,50,99,66,109,244,134,198,
-117,84,64,116,0,58,122,97,128,45,250,86,4,0,58,96,47,161,7,64,
-201,122,24,0,50,237,156,1,131,51,0,85,96,21,131,126,64,123,65,182,
-151,23,173,43,253,57,1,253,156,3,205,241,225,240,1,92,140,252,188,0,
-81,158,126,79,133,48,0,58,124,203,226,63,8,103,81,119,169,96,94,128,
-14,97,40,66,85,225,252,1,110,47,97,254,225,209,2,195,93,165,98,110,
-213,231,251,2,160,98,65,116,0,49,163,138,98,117,251,178,1,226,109,1,
-129,219,192,18,160,50,96,8,66,104,64,6,64,198,0,58,96,219,100,188,
-147,66,64,24,96,173,98,126,137,136,113,238,0,50,233,213,1,0,58,96,
-59,225,234,0,128,17,129,233,124,223,161,252,64,71,192,89,195,89,224,74,
-0,132,150,0,56,128,21,0,53,224,21,0,193,131,129,121,0,58,96,171,
-207,227,64,14,193,253,1,95,53,97,193,97,138,225,63,4,226,215,51,0,
-58,97,162,244,123,2,67,79,1,90,32,224,34,1,0,58,96,52,178,102,
-64,13,194,87,67,219,69,225,64,51,115,65,64,98,244,172,1,64,19,114,
-182,162,21,224,177,2,229,96,1,224,173,0,161,170,224,25,3,227,205,1,
-139,154,128,33,226,0,39,225,20,0,0,95,77,155,97,59,0,95,117,26,
-255,142,1,64,172,129,219,67,55,65,174,224,197,2,231,142,1,195,126,193,
-113,228,84,0,163,147,96,71,225,186,0,0,51,101,115,0,58,97,210,65,
-6,67,68,67,112,193,4,228,79,11,225,34,40,96,25,227,31,4,224,20,
-1,97,35,128,110,103,206,225,39,27,1,95,49,72,56,164,34,74,128,128,
-10,0,50,65,58,161,41,64,6,244,89,1,229,140,2,230,190,2,182,23,
-225,196,2,160,177,64,34,248,127,6,96,186,1,52,54,166,90,224,51,4,
-64,15,224,45,2,128,21,145,180,224,47,7,134,133,99,201,130,239,115,105,
-160,0,0,58,96,230,101,89,0,48,77,17,114,44,99,213,205,49,65,126,
-75,179,1,49,48,192,0,1,32,58,96,38,229,117,7,64,92,64,72,0,
-51,230,146,3,224,174,1,128,164,225,170,0,225,124,4,129,96,97,84,132,
-132,64,6,3,10,65,32,90,71,113,0,58,96,31,226,104,0,247,86,1,
-162,90,0,58,96,71,3,10,65,32,73,64,152,130,100,96,10,130,93,148,
-14,64,39,0,52,78,111,227,205,0,1,82,32,120,133,1,52,57,133,227,
-2,95,52,57,64,238,1,52,57,211,158,0,90,114,148,0,58,96,22,224,
-138,0,96,45,174,144,84,150,142,9,1,95,52,91,8,1,95,52,83,218,
-64,72,68,154,1,52,57,199,160,0,89,100,111,67,148,0,52,92,19,162,
-130,224,62,0,1,95,52,88,209,248,177,0,233,198,0,206,117,76,171,0,
-64,72,212,119,252,215,247,193,77,96,41,69,57,224,42,0,0,67,69,161,
-72,58,4,50,48,57,53,49,97,79,3,35,53,53,50,128,230,131,1,224,
-123,3,129,139,104,228,160,20,101,129,98,7,0,52,255,101,2,64,86,64,
-210,1,95,51,96,73,230,183,1,22,104,71,101,116,67,111,110,116,101,110,
-116,115,58,32,115,117,114,114,111,103,97,116,101,168,200,69,102,71,36,160,
-110,76,23,64,174,224,18,0,65,60,88,128,1,95,52,95,63,75,79,128,
-24,238,124,0,0,58,97,78,76,28,102,89,0,58,96,39,99,100,143,89,
-0,49,78,71,0,95,73,13,4,35,49,49,49,52,173,79,241,252,5,30,
-68,97,116,97,46,67,104,97,114,46,99,104,114,58,32,105,110,118,97,108,
-105,100,32,99,111,100,101,112,111,105,110,213,160,0,50,161,184,196,214,0,
-95,96,238,75,106,97,38,9,10,65,32,94,103,101,116,98,32,58,97,177,
-98,234,3,55,51,32,79,67,114,0,53,88,150,1,95,51,65,161,134,24,
-97,234,213,196,225,112,1,66,36,74,50,143,58,2,52,56,54,66,59,0,
-55,232,6,3,6,111,112,101,110,70,105,108,129,63,225,148,2,0,58,98,
-99,101,135,66,3,89,57,96,57,234,3,1,0,51,97,65,200,172,185,135,
-2,51,57,52,218,201,64,152,64,3,250,216,1,115,240,65,226,67,76,164,
-22,96,6,224,142,1,1,58,32,210,233,0,58,64,173,226,251,11,64,208,
-162,251,109,38,128,26,173,41,225,236,4,129,255,224,34,2,141,60,64,90,
-131,44,241,109,3,0,52,87,98,2,64,95,52,120,77,0,83,136,53,1,
-95,49,75,208,224,33,7,254,216,0,224,54,4,161,110,135,133,0,52,158,
-80,224,122,0,78,153,0,58,96,141,96,117,1,95,51,114,202,1,52,56,
-97,236,188,74,5,94,102,108,117,115,104,65,238,64,22,129,203,227,57,2,
-90,96,161,221,224,224,0,207,147,239,235,3,117,173,0,83,128,114,64,3,
-224,131,4,224,13,6,227,46,7,64,149,64,157,91,190,1,95,52,91,40,
-138,118,163,50,64,22,96,199,130,157,135,87,0,58,96,22,207,12,0,90,
-132,201,96,51,134,207,0,58,96,60,128,246,0,52,75,143,107,71,96,29,
-64,244,4,99,108,111,115,101,64,244,187,150,0,85,165,38,79,214,2,52,
-55,53,238,14,0,0,58,96,156,10,10,65,32,116,111,70,117,110,80,116,
-114,64,50,129,197,73,12,0,90,68,133,100,61,0,58,97,41,111,79,1,
-48,52,64,67,0,50,67,85,64,19,226,101,1,5,115,116,100,101,114,114,
-66,105,0,58,97,184,69,193,1,79,46,128,21,64,87,172,42,160,64,97,
-12,67,114,224,64,4,1,105,110,160,63,166,1,96,63,1,105,110,64,62,
-239,207,1,131,40,65,0,136,247,97,89,224,9,1,128,30,72,252,135,34,
-176,31,112,106,100,34,111,230,130,98,0,58,96,6,129,118,0,58,98,254,
-239,139,0,227,238,3,84,193,64,86,227,26,3,221,228,230,10,7,64,124,
-83,14,96,36,0,52,117,193,1,95,52,167,203,163,228,76,156,108,131,131,
-184,233,2,3,0,52,89,88,64,6,209,229,99,153,177,229,0,80,164,165,
-129,121,224,6,2,74,157,96,50,64,201,0,52,64,201,198,183,230,43,8,
-143,88,102,157,226,166,5,98,27,76,21,166,152,224,55,6,135,230,192,192,
-228,209,0,201,230,0,52,180,58,64,135,130,41,14,73,79,46,112,101,114,
-102,111,114,109,73,79,32,94,38,162,146,64,31,130,27,2,102,112,102,97,
-216,184,91,4,102,112,110,101,119,64,14,165,164,7,97,100,100,95,70,73,
-76,69,64,18,129,250,96,18,5,117,116,102,56,32,58,97,86,168,4,225,
-169,3,98,4,0,49,75,152,160,191,128,11,161,58,82,33,2,52,49,49,
-126,2,94,127,65,192,101,232,224,26,10,0,57,198,189,224,27,8,72,74,
-224,26,11,226,199,1,1,119,43,165,110,1,95,52,81,161,67,236,229,17,
-1,130,135,1,95,51,117,205,225,74,3,194,12,226,97,8,0,58,98,126,
-100,203,70,87,64,253,162,18,3,39,32,95,52,117,104,0,52,85,211,1,
-58,52,183,3,76,183,0,52,117,122,64,8,1,53,48,102,107,160,12,0,
-49,128,29,64,132,1,95,52,150,17,128,43,96,103,204,209,119,40,79,148,
-1,95,52,119,93,96,41,74,63,1,52,54,64,126,207,255,243,78,3,0,
-58,96,83,201,43,195,44,150,200,98,218,115,131,139,200,207,146,0,58,64,
-143,130,220,160,27,84,224,0,55,209,133,141,251,224,70,0,69,5,96,206,
-102,38,88,198,66,247,233,76,0,135,77,181,223,0,89,253,147,0,130,8,
-96,50,160,117,171,19,96,245,100,81,3,52,55,32,58,97,71,128,13,64,
-226,213,90,66,79,158,211,64,61,1,95,52,114,177,0,58,64,35,129,14,
-96,57,198,246,194,121,227,54,3,84,237,225,254,16,231,87,6,85,50,231,
-87,9,231,140,7,96,127,129,142,133,231,1,100,105,69,94,181,111,0,94,
-66,34,160,17,237,217,1,1,89,32,236,104,4,121,18,176,2,249,210,1,
-131,244,96,149,65,138,1,95,52,83,180,129,127,118,153,193,63,64,127,239,
-192,2,110,5,96,43,97,62,0,51,67,158,181,59,12,94,71,69,84,84,
-73,77,69,77,73,76,76,73,64,22,129,99,139,204,96,2,70,150,0,90,
-112,6,128,0,1,58,52,181,15,194,92,86,204,128,247,0,58,122,17,160,
-208,193,97,0,95,112,239,228,206,0,193,119,73,8,74,76,133,117,130,2,
-165,213,231,230,1,164,229,231,65,3,129,146,171,55,82,249,233,138,1,228,
-100,3,244,21,2,224,78,1,224,71,5,229,34,3,96,187,130,36,252,210,
-8,5,104,101,97,100,58,32,114,54,3,32,108,105,115,138,197,107,34,179,
-120,6,65,46,119,114,105,116,101,65,61,241,140,0,225,63,1,64,2,198,
-215,1,58,52,179,141,145,174,225,98,1,225,94,0,1,58,52,179,129,145,
-226,224,68,2,192,30,161,197,68,255,2,75,32,85,165,95,224,2,43,193,
-208,224,0,3,224,68,40,224,2,3,224,80,11,224,81,53,224,84,15,224,
-85,56,96,2,118,47,224,0,12,135,67,224,1,31,246,96,9,5,70,108,
-97,103,115,123,254,187,0,224,0,10,162,178,224,2,52,96,192,224,126,11,
-7,118,101,114,98,111,115,101,61,173,111,86,225,1,95,50,71,20,248,99,
-0,224,0,10,224,231,25,224,1,1,192,114,2,79,32,35,68,231,238,68,
-0,224,0,9,224,231,56,224,228,16,4,114,117,110,73,116,224,226,4,0,
-52,228,80,2,224,0,11,224,215,25,192,1,224,223,32,224,222,50,100,234,
-66,129,224,112,3,224,222,1,5,109,104,115,100,105,114,160,223,144,23,152,
-169,224,223,16,224,212,23,192,1,224,220,31,224,219,44,64,213,219,34,224,
-221,18,4,112,97,116,104,115,224,220,34,224,209,21,192,1,224,217,30,224,
-216,48,224,208,18,4,111,117,116,112,117,194,142,224,209,26,224,202,23,64,
-1,224,206,29,224,205,45,227,85,15,6,108,111,97,100,105,110,103,227,87,
-32,224,197,62,224,196,41,224,193,16,4,115,112,101,101,100,224,191,31,224,
-188,59,224,187,38,224,184,16,7,114,101,97,100,67,97,99,104,229,183,5,
-224,188,17,224,185,56,224,184,35,224,181,16,104,250,224,182,34,224,179,53,
-224,178,32,224,175,16,6,117,115,101,84,105,99,107,196,124,224,173,21,224,
-170,50,224,169,29,224,166,16,4,100,111,67,80,80,224,163,27,224,160,47,
-224,159,20,229,197,30,5,99,112,112,65,114,103,229,199,27,224,163,44,224,
-162,17,224,159,31,224,157,29,224,154,41,225,60,21,225,211,15,6,99,111,
-109,112,114,101,115,226,122,25,224,142,38,224,141,8,225,30,2,125,254,225,
-36,20,6,98,117,105,108,100,80,107,197,242,225,39,16,224,146,35,224,145,
-5,251,27,3,224,140,22,77,95,224,139,25,224,134,29,224,132,2,238,13,
-2,232,147,18,5,107,103,80,97,116,104,224,123,20,224,117,23,224,115,3,
-226,6,15,6,105,110,115,116,97,108,108,224,230,1,226,8,11,224,102,20,
-96,101,236,193,0,224,205,13,4,116,97,114,103,101,232,144,18,224,92,14,
-224,74,11,3,100,117,109,112,108,209,224,175,4,1,49,50,81,109,0,50,
-64,129,233,182,16,224,0,11,192,115,0,49,64,239,128,116,128,75,0,51,
-188,166,96,12,224,17,3,3,64,95,52,50,85,142,224,18,3,96,39,0,
-51,64,128,158,40,1,50,53,192,11,0,58,96,6,210,229,120,38,81,43,
-115,199,188,22,79,226,224,225,4,6,78,111,116,104,105,110,103,161,44,245,
-90,0,1,52,50,90,67,82,220,0,50,210,240,177,241,225,115,13,4,74,
-117,115,116,32,225,113,0,161,111,160,49,160,176,160,171,96,166,145,106,120,
-180,96,79,80,212,0,35,81,165,64,61,92,199,128,16,217,187,64,140,239,
-249,3,121,169,147,145,3,60,32,64,35,64,91,224,18,6,64,103,225,0,
-0,128,18,65,174,0,85,224,183,7,3,68,97,108,108,160,182,224,27,9,
-8,99,111,109,98,105,110,97,116,111,120,55,128,218,224,82,4,80,154,224,
-54,9,6,116,111,112,108,101,118,101,224,87,17,5,100,101,115,117,103,97,
-224,84,0,244,124,1,128,85,64,245,224,104,6,65,249,224,104,10,7,121,
-112,101,99,104,101,99,107,224,105,18,2,114,105,118,221,40,224,31,10,3,
-112,97,114,115,224,30,0,226,88,1,147,81,130,88,64,11,0,58,96,6,
-225,129,1,226,69,8,2,70,97,108,160,71,224,24,6,2,84,114,117,192,
-95,192,92,65,154,192,92,162,14,216,15,3,95,49,54,53,162,110,1,95,
-52,66,50,1,58,52,83,66,250,35,0,224,1,17,243,164,1,224,0,0,
-0,58,96,65,96,87,0,85,244,82,1,155,150,0,50,183,214,224,167,0,
-6,118,55,46,50,94,42,34,96,113,146,133,2,95,52,49,67,229,67,56,
-2,58,52,50,212,64,1,49,56,67,192,0,48,93,139,2,35,49,50,96,
-6,0,54,128,12,228,163,0,0,58,96,51,128,45,85,129,0,49,212,87,
-0,58,64,15,128,10,67,97,1,49,53,100,127,0,54,160,56,2,95,50,
-54,67,233,89,125,112,176,128,73,129,118,131,146,0,49,149,136,87,119,0,
-58,64,61,128,25,246,129,0,131,187,181,8,246,231,10,229,160,1,213,44,
-224,47,2,160,110,187,70,0,51,65,134,182,89,150,142,64,123,64,25,64,
-20,2,95,52,48,87,214,253,197,5,9,94,42,79,112,116,105,111,110,115,
-58,97,70,248,126,16,2,45,104,32,224,0,7,14,80,114,105,110,116,32,
-117,115,97,103,101,94,42,45,63,224,31,22,4,45,104,101,108,112,224,31,
-10,7,116,104,105,115,32,109,101,115,192,38,6,118,101,114,115,105,111,110,
-224,38,9,1,101,32,160,26,64,37,6,110,117,109,101,114,105,99,224,45,
-1,224,37,8,10,32,110,117,109,98,101,114,94,42,45,118,224,116,3,96,
-0,6,73,110,99,114,101,97,115,96,43,31,98,111,115,105,116,121,32,40,
-102,108,97,103,32,99,97,110,32,98,101,32,114,101,112,101,97,116,101,100,
-41,94,42,45,0,113,224,61,8,1,68,101,224,61,33,0,108,224,61,8,
-27,83,104,111,119,32,101,118,101,114,121,32,116,105,109,101,32,97,32,109,
-111,100,117,108,101,32,105,115,32,78,202,5,101,100,94,42,45,115,224,54,
-13,73,142,2,105,108,97,65,175,0,32,110,52,14,32,105,110,32,108,105,
-110,101,115,47,115,94,42,45,114,224,53,8,16,82,117,110,32,100,105,114,
-101,99,116,108,121,94,42,45,67,82,224,32,8,2,101,97,100,224,86,4,
-0,99,77,23,64,42,0,87,224,42,7,0,87,118,49,224,43,12,224,42,
-7,128,86,3,97,110,100,32,150,102,224,52,11,3,88,67,80,80,224,52,
-6,8,117,110,32,99,112,112,104,115,32,64,222,9,111,117,114,99,101,32,
-102,105,108,101,64,218,3,68,120,120,120,224,45,5,4,80,97,115,115,32,
-128,23,1,116,111,128,55,3,94,42,45,73,224,39,14,96,23,224,39,2,
-0,84,224,36,5,23,32,32,32,71,101,110,101,114,97,116,101,32,100,121,
-110,97,109,105,99,32,102,117,110,99,96,177,98,193,9,32,115,116,97,116,
-105,115,116,105,99,64,62,0,122,224,62,8,0,67,171,41,64,235,166,124,
-6,32,99,111,100,101,32,103,160,87,97,171,66,159,1,46,99,96,213,7,
-94,42,45,105,80,65,84,72,224,69,4,3,65,100,100,32,96,20,1,116,
-111,194,22,6,115,101,97,114,99,104,32,82,126,3,94,42,45,111,124,189,
-224,0,3,0,79,113,198,64,48,64,26,1,94,42,224,28,4,128,0,1,
-73,102,96,27,4,32,101,110,100,115,64,133,0,46,64,163,6,32,112,114,
-111,100,117,99,66,128,224,178,2,128,153,224,67,28,224,64,2,0,67,224,
-55,17,7,79,116,104,101,114,119,105,115,194,4,0,101,97,3,224,113,1,
-5,115,32,116,111,103,101,64,36,4,32,119,105,116,104,96,29,2,114,117,
-110,99,26,5,115,121,115,116,101,109,64,218,224,106,1,15,114,101,103,117,
-108,97,114,32,101,120,101,99,117,116,97,98,97,72,0,97,224,118,8,9,
-67,108,101,97,114,32,112,97,99,107,97,187,225,67,4,0,97,225,118,20,
-224,51,13,3,76,80,75,71,224,50,4,8,32,76,105,115,116,32,97,108,
-108,161,167,3,115,32,111,102,224,59,0,6,80,75,71,94,42,45,80,224,
-51,8,0,66,76,184,224,37,6,0,81,64,7,5,32,91,68,73,82,93,
-160,37,0,73,139,109,224,39,6,5,116,84,65,82,71,69,226,183,3,6,
-83,101,108,101,99,116,32,139,54,225,124,12,7,68,105,115,116,114,105,98,
-117,66,125,128,38,21,115,58,32,100,101,102,97,117,108,116,44,32,101,109,
-115,99,114,105,112,116,101,110,224,60,12,0,84,128,48,196,213,4,100,101,
-102,105,110,162,197,128,25,4,46,99,111,110,102,66,147,9,112,116,99,32,
-79,80,84,73,79,78,160,58,166,82,3,32,102,111,114,97,208,0,67,193,
-252,69,142,0,100,75,156,4,45,80,65,83,83,192,105,7,68,101,98,117,
-103,44,32,112,101,194,9,65,83,84,32,97,102,116,101,114,32,64,34,224,
-153,12,16,80,111,115,115,105,98,108,101,32,112,97,115,115,101,115,58,32,
-105,14,1,44,32,137,53,1,44,32,233,95,0,64,18,105,178,1,44,32,
-201,220,0,44,226,123,2,0,44,65,191,134,246,103,69,136,92,0,75,70,
-254,0,48,102,254,0,58,71,7,232,4,0,136,75,0,85,64,25,0,58,
-71,37,232,137,5,0,85,68,37,14,58,32,109,104,115,32,91,45,104,92,
-124,63,93,32,91,134,244,96,8,166,149,96,11,230,188,6,64,19,0,118,
-64,4,0,113,64,4,0,108,64,4,0,115,64,4,0,114,64,4,6,67,
-91,82,92,124,87,93,64,10,69,49,64,7,3,68,68,69,70,64,7,0,
-73,66,178,64,8,0,84,64,4,0,122,64,4,100,81,64,8,100,39,64,
-8,1,97,91,96,18,64,10,0,76,96,10,4,92,124,80,75,71,96,15,
-66,159,64,7,226,129,2,64,14,162,104,96,69,225,217,1,64,14,225,185,
-1,16,93,32,91,77,79,68,85,76,69,78,65,77,69,46,46,92,124,96,
-110,105,134,72,99,104,139,0,57,72,71,72,164,2,58,52,48,172,7,2,
-52,48,52,64,4,7,53,32,64,95,51,55,52,32,232,94,2,4,115,116,
-100,111,117,124,167,0,58,96,51,5,10,65,32,73,79,46,128,21,1,32,
-58,96,50,169,79,4,66,32,95,51,55,77,53,236,244,1,255,24,1,141,
-106,160,38,253,44,2,93,144,64,30,128,13,0,58,64,135,192,79,91,174,
-0,80,96,164,137,42,78,163,0,52,96,44,0,48,106,29,77,134,64,176,
-1,52,48,64,12,0,58,96,98,64,157,64,149,130,28,6,65,46,97,108,
-108,111,99,64,16,130,34,0,83,155,171,253,197,1,3,95,51,57,56,138,
-202,122,210,66,73,1,64,58,65,32,128,132,2,95,51,54,224,194,0,96,
-33,0,58,96,47,96,140,113,25,0,67,74,19,0,83,96,84,127,239,0,
-53,140,106,2,95,51,54,77,174,4,50,48,57,53,49,64,209,5,64,35,
-53,53,50,57,234,34,1,1,51,55,94,114,1,51,55,138,70,79,79,1,
-51,57,97,123,96,35,225,124,1,17,104,80,117,116,67,104,97,114,58,32,
-115,117,114,114,111,103,97,116,171,251,1,95,50,64,135,0,58,96,147,126,
-103,107,59,66,255,96,66,225,145,2,0,57,254,196,1,97,81,224,9,5,
-110,203,1,51,57,65,86,1,49,57,65,162,75,57,1,95,51,74,182,192,
-6,0,58,96,154,224,81,0,193,153,240,192,2,128,14,224,11,2,225,189,
-2,65,212,96,95,130,121,2,50,32,58,96,145,106,249,0,56,64,17,0,
-49,96,179,129,186,2,95,50,57,109,9,0,55,75,13,1,51,57,108,181,
-2,51,48,55,160,38,64,144,192,50,64,11,0,57,192,11,0,58,96,6,
-205,76,108,156,192,154,0,90,96,129,97,246,242,54,3,178,60,253,183,0,
-129,20,64,174,139,223,64,20,253,215,2,144,164,2,51,56,56,128,144,235,
-165,3,0,58,239,163,0,128,43,96,30,224,36,16,193,27,131,29,0,54,
-66,121,0,83,162,57,2,51,53,57,140,183,224,72,28,128,162,192,185,242,
-143,3,192,171,99,136,224,94,10,240,107,11,1,32,40,128,86,224,122,9,
-77,79,237,136,1,224,118,1,206,124,161,164,110,124,128,11,0,58,96,6,
-238,217,1,66,95,64,78,240,99,8,64,160,224,18,6,98,111,224,19,7,
-97,139,224,19,6,67,55,239,208,6,78,20,1,64,85,224,212,2,10,105,
-110,116,101,114,114,117,112,116,101,100,128,221,224,28,3,1,114,101,170,198,
-5,118,97,110,105,115,104,192,34,224,35,4,72,233,164,250,240,168,9,78,
-45,224,45,4,7,117,110,115,117,112,112,111,114,71,209,1,111,112,74,88,
-2,105,111,110,224,120,9,8,104,97,114,100,119,97,114,101,32,103,234,194,
-22,224,243,7,132,69,224,19,5,67,157,224,132,7,67,219,224,243,5,7,
-97,112,112,114,111,112,114,105,75,47,71,109,224,129,9,14,105,110,118,97,
-108,105,100,32,97,114,103,117,109,101,110,192,131,224,34,3,3,102,97,105,
-108,225,18,0,224,115,7,65,228,224,44,3,11,112,114,111,116,111,99,111,
-108,32,101,114,114,209,215,224,31,3,170,43,224,29,2,224,240,9,225,247,
-10,225,246,10,225,245,10,225,244,7,2,117,110,115,76,12,2,102,105,101,
-77,60,8,110,115,116,114,97,105,110,116,115,224,149,9,3,117,115,101,114,
-224,147,4,224,210,4,4,101,114,109,105,115,110,171,3,100,101,110,105,225,
-10,15,226,2,7,6,105,108,108,101,103,97,108,225,254,19,2,101,110,100,
-74,142,75,148,225,251,14,225,230,10,225,229,7,226,188,0,5,101,120,104,
-97,117,115,226,224,21,3,98,117,115,121,225,201,14,224,86,6,12,100,111,
-101,115,32,110,111,116,32,101,120,105,115,162,22,224,31,3,1,97,108,92,
-85,0,121,128,30,161,82,128,0,164,11,100,115,164,11,96,11,0,58,96,
-6,196,11,2,95,50,57,96,37,65,179,200,43,70,249,1,56,48,181,81,
-167,105,0,66,145,20,224,120,1,6,72,97,110,100,108,101,45,96,113,145,
-207,1,51,56,145,207,224,110,1,64,84,0,58,96,6,228,122,4,228,234,
-8,1,48,120,128,184,64,128,1,56,51,102,109,0,56,70,253,1,51,56,
-100,217,1,95,51,103,193,224,210,1,64,103,192,99,64,11,0,58,96,6,
-96,99,0,48,96,136,71,182,0,50,73,70,1,95,50,145,196,1,49,48,
-64,22,101,138,0,50,64,211,224,11,0,96,79,160,11,70,187,160,11,72,
-31,0,58,96,12,128,85,103,2,0,49,136,32,64,154,96,170,83,208,128,
-42,64,43,135,143,2,95,52,55,70,170,114,83,64,181,3,95,49,53,50,
-96,5,0,51,96,5,103,211,0,53,64,55,0,53,96,168,103,210,0,53,
-96,120,160,70,135,149,102,35,3,51,56,49,32,101,254,2,49,53,55,65,
-141,1,85,32,166,43,0,50,68,232,96,7,0,54,69,195,0,65,129,118,
-4,95,51,50,52,32,133,154,64,12,1,56,50,96,194,135,215,0,83,73,
-15,3,32,95,52,54,246,230,0,64,5,64,66,104,102,4,56,48,32,95,
-55,64,149,2,49,55,52,160,9,72,203,1,35,54,67,77,128,43,129,158,
-224,46,6,96,36,0,52,65,230,96,187,136,48,131,57,219,189,232,212,1,
-128,23,1,67,39,192,24,64,8,201,173,0,95,64,225,128,223,224,241,41,
-128,12,128,115,73,248,64,65,163,190,224,96,1,84,129,224,96,46,128,254,
-0,85,64,5,128,192,169,171,192,13,96,225,64,210,224,222,8,96,20,232,
-182,0,64,40,106,150,64,27,128,33,224,152,5,67,121,66,58,224,162,47,
-3,95,51,52,51,227,86,2,0,78,141,56,23,46,115,104,111,119,73,110,
-116,65,116,66,97,115,101,58,32,110,101,103,97,116,105,118,101,230,108,7,
-96,207,224,2,3,137,134,192,206,64,5,234,81,2,160,168,161,219,89,12,
-67,111,224,46,33,0,50,103,59,160,48,224,227,22,224,237,3,224,225,27,
-231,246,3,1,98,97,247,250,0,128,139,0,89,161,185,226,163,3,194,153,
-67,116,0,55,162,79,193,180,225,235,1,224,49,2,194,94,160,83,192,11,
-226,106,8,224,70,4,74,18,192,49,74,237,160,124,193,40,128,60,97,70,
-224,249,1,97,88,129,135,224,10,2,224,55,2,162,246,124,143,0,49,109,
-55,107,51,128,65,99,165,224,92,2,97,116,224,92,1,99,180,171,165,1,
-51,55,76,6,69,246,96,13,64,12,70,11,96,12,0,48,79,229,1,51,
-51,68,177,0,48,225,126,3,0,83,104,69,4,46,73,79,46,69,199,180,
-224,28,1,5,73,79,69,120,99,101,112,218,97,127,97,15,0,58,108,70,
-7,10,65,32,94,112,117,116,98,64,99,165,184,4,51,55,51,32,79,64,
-6,0,52,88,103,1,95,51,64,184,192,49,0,54,96,34,1,75,50,64,
-2,64,15,133,105,2,75,32,75,89,58,96,49,109,8,0,83,225,157,0,
-76,96,129,102,108,106,162,131,0,39,238,250,2,1,51,54,130,125,216,45,
-96,29,238,129,1,129,176,3,95,51,54,52,65,51,96,17,64,13,65,0,
-0,54,107,195,226,135,6,3,66,97,100,32,135,16,82,223,232,69,0,97,
-84,161,103,0,55,175,47,132,164,0,90,160,4,130,121,224,151,0,188,22,
-1,51,55,67,207,174,148,102,68,239,155,1,96,75,173,153,1,55,57,65,
-65,129,192,3,102,112,50,112,64,13,217,194,0,56,130,207,96,97,224,5,
-0,70,87,104,106,64,1,70,209,74,212,2,95,49,51,64,165,224,6,12,
-224,42,2,64,15,128,48,224,42,30,160,28,224,49,10,224,42,15,224,49,
-10,224,42,22,224,49,3,77,28,225,161,0,0,58,96,6,218,84,1,51,
-54,168,50,112,45,0,54,130,130,168,137,0,54,135,241,64,20,0,58,96,
-39,98,142,1,54,53,90,81,225,29,0,0,58,96,38,160,78,68,65,132,
-226,78,156,131,214,0,58,64,49,128,32,0,82,137,65,251,134,0,66,69,
-64,25,68,18,123,192,0,58,96,27,98,12,0,95,72,67,69,189,0,58,
-98,145,1,10,65,120,6,0,58,112,169,224,109,2,227,228,2,0,80,133,
-108,0,49,128,92,238,107,5,128,138,90,250,102,15,98,252,0,58,81,45,
-194,18,2,95,51,53,111,197,97,39,78,124,1,64,58,96,6,10,10,65,
-32,115,101,113,117,97,108,32,58,96,33,97,2,72,201,66,116,1,95,51,
-96,57,1,52,57,226,136,4,3,95,51,53,54,227,1,2,5,77,72,83,
-68,73,82,98,248,1,58,51,70,184,178,27,194,217,96,179,113,77,0,53,
-98,219,136,143,175,5,97,196,0,51,73,34,101,1,92,32,0,48,240,252,
-0,1,95,51,73,47,97,229,192,143,110,146,64,103,129,147,210,131,0,51,
-73,94,178,127,0,51,64,188,125,213,64,39,129,154,86,33,6,67,83,116,
-114,105,110,103,64,231,176,255,1,57,55,103,62,0,58,96,127,227,58,0,
-98,54,96,158,105,204,202,131,224,6,0,129,65,64,159,0,58,96,6,7,
-10,65,32,116,111,73,110,116,64,88,129,187,6,94,103,101,116,101,110,118,
-64,16,239,123,0,128,192,253,15,2,0,58,97,86,114,44,0,58,65,102,
-129,244,1,95,51,64,31,65,196,0,58,65,133,96,227,64,31,128,238,193,
-83,0,95,94,52,225,99,6,194,78,97,71,193,171,2,95,51,52,161,48,
-0,52,129,8,75,96,228,191,4,12,116,97,105,108,58,32,101,109,112,116,
-121,32,108,204,103,0,65,96,126,197,93,146,25,67,17,64,79,99,18,0,
-52,129,48,0,73,64,154,242,43,5,0,51,66,43,1,51,52,242,43,2,
-160,56,108,39,192,11,74,246,96,11,0,58,96,6,129,34,236,146,0,128,
-61,236,116,5,110,27,177,111,172,0,96,38,0,58,96,6,230,171,20,6,
-67,111,110,116,114,111,108,230,169,11,96,18,3,67,97,108,108,230,167,3,
-64,194,107,56,163,91,198,83,64,7,168,47,233,216,0,1,95,51,64,197,
-132,105,0,51,66,115,104,241,135,172,158,240,1,51,51,169,28,131,180,0,
-58,64,160,64,94,0,85,166,211,64,30,96,109,0,85,225,154,7,4,109,
-100,53,67,111,87,130,0,101,161,160,205,42,69,20,67,227,0,90,96,118,
-0,50,107,95,1,95,56,99,59,67,47,0,89,100,43,137,86,1,67,39,
-100,69,228,42,1,196,183,255,22,2,160,189,140,219,136,244,2,95,51,51,
-64,73,99,94,171,241,1,64,95,72,47,2,95,51,50,103,5,198,143,64,
-243,66,241,9,109,100,53,65,114,114,97,121,32,58,96,57,130,55,194,173,
-0,55,192,154,2,95,51,51,100,158,102,139,231,116,2,231,8,3,3,95,
-51,51,50,224,46,5,163,146,224,46,0,0,95,109,249,226,230,5,0,51,
-167,34,0,58,96,199,162,154,64,20,132,36,150,23,139,126,0,67,108,114,
-173,12,128,142,233,235,0,128,106,225,52,3,192,25,233,238,1,135,70,237,
-80,1,107,173,141,20,235,144,2,229,159,6,170,64,160,69,231,245,1,64,
-186,136,101,224,44,1,96,95,0,66,133,236,205,148,144,30,234,9,4,232,
-27,4,224,43,10,1,95,49,68,64,229,61,3,128,16,0,58,65,96,226,
-129,0,0,90,134,152,64,21,195,136,99,181,0,50,70,45,193,251,129,245,
-113,221,0,95,72,116,0,58,97,152,1,10,65,110,115,0,58,96,28,128,
-57,66,239,69,122,0,95,84,116,1,95,51,71,116,175,129,64,79,207,129,
-192,11,67,235,192,11,68,17,128,11,65,68,1,64,58,96,12,5,10,65,
-32,114,101,109,64,97,239,228,0,100,101,96,147,97,124,239,140,0,96,53,
-64,54,130,144,102,116,128,131,174,39,0,58,96,39,96,26,98,126,162,10,
-69,132,97,178,241,247,2,0,95,70,93,165,75,98,102,96,180,0,50,227,
-154,2,31,92,34,108,105,98,47,68,97,116,97,47,73,110,116,101,103,101,
-114,95,84,121,112,101,46,104,115,92,34,44,51,57,58,0,49,236,119,0,
-69,19,97,163,64,169,64,168,1,52,51,226,34,1,96,30,0,50,89,12,
-70,94,130,15,0,49,90,14,96,19,193,192,242,39,0,107,203,175,75,204,
-141,109,96,0,56,160,174,234,213,0,96,69,128,13,0,79,64,209,0,79,
-246,51,0,131,251,64,29,224,21,3,1,95,50,121,180,1,95,50,121,248,
-0,58,97,76,89,176,65,122,131,68,198,6,0,50,128,172,75,26,0,58,
-65,19,195,107,64,16,230,6,2,81,26,1,95,51,100,142,166,6,160,56,
-102,6,192,11,97,244,133,197,64,6,128,102,82,81,110,24,108,198,0,51,
-118,92,0,58,64,43,128,31,184,77,1,95,51,112,238,99,172,0,80,128,
-47,64,203,160,47,224,15,8,64,65,229,119,0,108,60,64,23,186,56,132,
-142,136,145,149,235,101,216,109,48,160,68,103,100,224,21,1,160,154,169,14,
-104,148,97,86,74,167,0,51,118,139,0,58,96,159,102,151,2,55,32,58,
-96,19,108,185,0,58,96,45,161,52,64,64,253,41,0,96,90,200,133,236,
-43,6,224,14,5,192,170,228,105,0,200,149,96,188,0,58,96,6,201,246,
-2,50,56,49,64,93,160,50,1,48,57,200,213,65,236,192,26,1,56,52,
-224,26,6,0,58,96,91,97,110,0,89,236,169,0,113,236,101,30,172,75,
-204,69,0,75,69,175,139,178,206,160,130,133,0,85,224,23,2,197,89,234,
-175,5,133,13,0,49,133,189,139,164,224,8,4,64,214,64,142,190,68,229,
-168,3,192,9,128,44,236,58,4,0,58,96,54,136,19,68,159,189,85,73,
-104,189,50,244,145,0,185,14,227,217,1,11,110,111,32,109,97,116,99,104,
-32,97,116,32,131,196,153,47,96,104,68,176,130,211,136,129,96,11,0,58,
-96,6,232,129,29,207,22,0,46,68,53,2,114,110,97,104,119,224,39,1,
-2,80,97,116,64,22,0,77,64,128,2,70,97,105,232,149,4,189,137,141,
-206,132,191,1,95,49,113,73,164,164,135,20,163,64,2,95,49,50,117,107,
-129,125,99,244,73,79,137,85,234,133,2,64,0,72,152,98,128,189,216,161,
-28,250,172,1,0,49,69,237,0,35,73,22,66,229,0,54,64,16,1,49,
-32,128,15,99,20,154,163,100,177,224,24,1,161,56,224,220,1,4,39,92,
-92,39,39,165,23,193,75,128,190,224,82,1,102,138,136,191,224,17,3,211,
-202,229,161,1,224,151,1,0,64,160,35,168,37,224,139,0,98,138,246,112,
-9,3,92,92,92,34,242,245,0,97,87,202,191,1,50,49,66,31,131,58,
-230,12,0,100,24,66,158,1,95,49,74,103,224,14,1,0,50,67,235,64,
-136,67,60,160,136,108,180,97,18,64,39,97,111,162,168,173,201,242,70,2,
-156,220,161,150,1,79,32,96,59,129,144,160,200,96,62,193,205,0,50,94,
-88,190,101,143,24,207,22,0,90,64,28,97,112,64,61,224,231,3,0,38,
-192,230,131,101,178,52,206,80,195,75,178,153,113,8,225,89,7,224,60,1,
-104,116,192,223,128,77,160,223,96,224,112,87,135,82,195,206,225,163,6,141,
-183,224,180,1,127,100,226,92,2,113,45,239,212,6,224,210,18,2,64,64,
-79,95,100,1,48,32,224,30,2,2,78,85,76,96,30,96,25,0,49,224,
-25,3,2,83,79,72,224,25,1,0,50,224,25,4,1,84,88,224,25,1,
-0,51,224,25,3,0,69,224,25,3,0,52,224,25,4,1,79,84,224,25,
-1,0,53,224,25,4,1,78,81,224,25,1,0,54,224,25,3,2,65,67,
-75,224,25,1,0,55,110,7,65,209,97,240,96,19,0,56,128,19,0,56,
-224,19,3,0,57,96,19,0,49,70,71,224,20,1,69,152,96,21,0,48,
-224,21,4,0,49,160,21,224,64,4,68,29,64,21,66,226,224,21,2,142,
-135,0,49,65,146,224,108,2,128,43,226,134,0,128,42,224,248,4,1,83,
-79,225,95,2,224,248,4,1,83,73,224,25,2,224,248,4,2,68,76,69,
-224,26,2,0,55,224,26,4,0,67,137,37,128,26,0,56,224,26,5,0,
-50,224,26,2,0,57,224,26,5,0,51,225,203,2,226,0,4,2,68,67,
-52,224,26,2,226,1,4,1,78,65,225,127,2,72,181,224,187,2,1,89,
-78,224,26,2,226,3,6,0,66,224,26,2,225,11,4,1,67,65,224,53,
-3,226,5,5,0,77,224,25,2,225,12,4,1,83,85,224,79,3,225,12,
-4,2,69,83,67,224,26,2,225,12,4,1,70,83,224,25,2,225,11,4,
-0,71,224,25,2,67,69,224,25,1,0,82,224,25,3,225,9,4,0,85,
-224,25,2,103,57,225,63,2,0,69,131,64,198,23,224,0,21,110,206,140,
-140,0,58,101,112,153,255,165,30,77,18,0,49,70,8,154,35,173,115,96,
-17,1,64,35,82,36,1,64,58,100,182,101,121,3,56,57,32,58,100,218,
-240,7,5,228,244,0,69,211,103,112,128,17,0,58,96,6,250,218,11,139,
-178,2,95,50,57,108,31,0,49,173,14,137,155,68,192,81,4,64,80,103,
-182,96,87,96,69,254,215,2,3,95,49,54,53,205,215,192,64,187,5,229,
-151,6,96,69,109,142,205,46,251,46,0,235,89,2,224,10,1,96,50,146,
-165,251,106,2,1,56,57,219,69,185,24,224,74,6,0,58,96,102,5,10,
-65,32,99,104,114,65,36,136,4,79,248,192,138,157,130,96,41,135,190,65,
-21,134,173,2,95,50,57,64,32,225,149,11,101,104,225,149,5,72,49,128,
-113,135,17,64,144,77,198,255,16,7,64,37,224,19,7,129,227,172,166,160,
-19,64,84,234,1,1,234,11,2,224,40,7,65,211,224,40,12,224,102,8,
-70,68,224,61,7,65,203,224,102,13,107,217,3,67,32,61,61,64,38,112,
-38,134,88,224,97,3,0,58,97,34,106,233,72,239,97,42,82,145,226,86,
-8,65,233,1,52,50,239,242,0,1,52,52,65,126,136,232,65,137,0,51,
-79,209,89,53,128,13,80,170,158,171,0,50,81,151,192,41,2,64,95,50,
-114,36,97,247,64,123,131,54,4,111,114,100,32,58,96,18,9,10,65,32,
-98,115,105,110,100,101,120,64,16,163,17,2,50,51,49,96,156,231,49,0,
-117,71,2,95,50,54,67,40,89,182,96,157,93,153,0,49,66,210,176,144,
-96,11,253,38,4,242,94,6,19,87,111,114,100,56,46,115,117,99,99,58,
-32,111,118,101,114,102,108,111,119,99,255,245,162,4,192,108,0,55,96,210,
-192,108,98,193,224,109,42,3,112,114,101,100,91,164,0,100,224,110,3,105,
-254,126,93,111,3,64,14,87,37,1,95,50,107,94,66,134,1,54,54,225,
-79,1,224,245,2,66,28,143,16,131,137,65,159,0,49,79,187,200,149,2,
-95,50,54,86,12,160,57,224,194,2,224,31,12,224,89,2,237,28,1,160,
-123,96,84,224,20,2,96,54,163,47,64,62,225,167,6,79,145,192,80,98,
-105,193,160,90,209,209,159,225,32,9,225,141,19,128,82,128,195,192,82,129,
-134,224,83,22,225,115,13,112,139,65,102,65,95,0,56,97,110,224,174,2,
-225,89,7,119,135,193,51,0,56,65,170,224,137,3,224,25,1,100,211,224,
-71,2,64,19,0,51,192,72,131,203,67,186,224,83,1,128,77,160,58,65,
-75,0,54,198,72,140,232,171,244,160,133,128,155,196,0,106,195,120,243,179,
-18,235,107,1,202,220,96,66,171,144,253,192,0,238,198,0,1,95,49,88,
-9,66,113,96,6,128,28,192,76,203,49,65,122,134,69,241,71,5,0,32,
-160,53,160,252,140,162,224,165,0,224,42,1,211,117,96,225,224,218,17,140,
-231,224,218,67,97,44,224,218,70,133,128,224,218,9,238,155,0,178,160,71,
-176,64,44,128,179,224,125,5,160,192,96,202,160,180,162,222,64,91,148,247,
-64,150,164,72,211,5,192,9,0,58,98,81,99,111,1,55,48,108,2,0,
-95,160,7,64,26,134,186,79,133,128,42,210,149,0,55,101,29,181,157,128,
-9,0,50,98,128,0,58,99,241,195,190,2,95,50,51,72,120,101,200,2,
-95,50,51,72,114,96,11,239,11,1,89,226,166,16,224,18,4,109,235,224,
-18,5,130,7,224,18,4,114,70,224,18,5,129,82,224,18,4,132,246,224,
-18,4,65,57,224,18,6,65,21,224,18,6,135,134,224,18,4,224,189,10,
-104,90,224,19,7,224,191,10,112,92,224,19,7,224,193,10,109,219,224,19,
-7,224,195,10,115,176,224,19,7,224,197,10,104,206,224,19,7,224,199,10,
-116,57,224,19,7,225,135,11,224,199,10,187,53,224,19,5,224,199,10,104,
-94,224,19,7,224,199,10,104,196,224,19,7,169,21,224,19,4,98,89,251,
-130,6,18,111,69,110,117,109,58,32,111,117,116,32,111,102,32,114,97,110,
-103,101,165,165,136,46,64,7,99,3,1,95,50,90,60,96,7,104,80,1,
-95,50,123,3,64,7,133,254,0,50,91,141,96,7,147,81,0,50,155,254,
-1,95,50,106,249,64,7,160,79,184,26,0,50,138,123,1,95,50,87,6,
-64,7,103,237,64,7,160,79,164,69,0,50,125,161,64,7,160,79,189,152,
-0,50,135,109,1,95,50,107,210,64,7,160,79,126,97,70,11,160,79,0,
-54,160,79,94,234,96,7,160,79,132,104,1,95,50,100,135,0,85,241,119,
-1,137,220,98,69,234,4,7,64,65,234,147,53,128,7,96,8,96,174,234,
-145,14,128,7,96,8,96,229,234,143,35,128,7,96,8,165,74,224,38,6,
-64,255,64,29,97,7,64,8,170,144,224,99,7,99,12,224,119,7,130,248,
-224,80,5,138,217,128,7,96,8,168,232,224,38,5,99,71,0,85,143,84,
-128,8,129,1,66,187,224,39,4,130,227,224,59,5,161,22,151,81,64,8,
-129,22,64,9,166,70,224,169,7,64,41,224,208,7,108,146,224,19,6,131,
-141,224,109,5,65,55,64,90,97,63,64,8,97,42,224,38,8,65,55,64,
-29,97,63,64,8,170,127,224,98,6,132,63,224,58,5,65,33,64,49,97,
-41,0,85,113,112,224,96,9,65,31,0,85,113,160,96,7,166,139,224,94,
-7,64,155,224,18,6,132,57,224,75,4,65,47,0,85,114,26,96,7,129,
-52,224,35,6,160,246,192,245,128,244,225,158,8,226,0,10,161,255,193,6,
-193,154,130,6,135,214,138,204,198,221,99,52,0,39,233,232,1,104,116,236,
-229,3,140,199,96,46,224,12,5,235,61,4,160,78,136,73,224,25,11,196,
-195,0,55,224,19,2,94,18,128,11,0,58,96,6,137,24,84,152,0,39,
-88,57,77,68,138,240,180,136,137,53,148,173,96,11,184,71,192,105,197,38,
-64,254,224,6,5,0,58,64,107,224,95,5,224,92,6,224,79,6,97,34,
-224,79,10,0,58,64,192,235,232,7,69,55,170,241,93,24,97,101,75,232,
-253,135,3,229,237,5,2,73,110,116,235,230,19,128,80,107,92,224,80,0,
-253,217,8,224,81,9,235,228,12,1,73,32,64,2,65,247,0,55,235,224,
-1,128,85,225,247,3,188,240,225,187,0,0,55,235,223,1,128,44,224,25,
-1,235,223,1,160,25,128,90,224,77,1,130,145,224,82,0,128,76,160,57,
-65,65,0,54,235,3,17,134,98,235,2,66,166,163,135,10,235,1,16,135,
-49,64,10,235,1,4,128,53,235,1,7,96,163,235,0,10,64,222,224,215,
-16,96,134,224,215,67,135,59,224,215,68,132,172,224,215,9,235,216,10,64,
-43,235,215,33,136,88,203,215,64,148,235,215,16,66,73,157,160,96,13,217,
-151,75,186,195,82,78,177,1,95,50,83,113,203,243,132,240,96,83,224,28,
-15,0,58,98,172,156,0,64,77,128,100,0,65,64,100,0,54,222,85,160,
-205,88,160,128,150,252,171,0,192,222,64,45,132,72,6,85,32,75,50,32,
-75,52,126,4,64,21,132,21,192,21,97,64,0,58,68,70,128,114,64,136,
-91,93,101,32,128,17,0,49,192,17,129,93,152,148,128,17,129,2,152,140,
-128,17,129,6,152,132,128,17,192,204,70,63,128,17,128,211,152,116,96,17,
-73,126,128,17,0,55,192,17,128,187,152,106,128,17,221,21,70,247,128,17,
-224,179,0,71,18,128,18,224,180,1,192,181,74,2,160,18,192,182,66,145,
-160,18,192,183,74,56,160,18,192,184,74,83,160,18,192,185,74,110,160,18,
-192,186,66,48,160,18,192,187,74,164,160,18,192,188,65,164,160,18,192,189,
-74,218,128,18,72,250,128,18,224,189,0,73,22,128,18,225,115,1,192,189,
-67,18,160,18,192,189,66,167,160,18,192,189,75,97,160,18,192,189,75,124,
-160,18,192,189,75,151,160,18,192,189,75,178,160,18,192,189,75,205,160,18,
-192,189,71,36,183,65,83,73,102,154,156,191,1,50,51,165,253,165,252,198,
-141,81,193,180,184,0,64,102,34,64,19,128,221,224,69,9,230,150,10,224,
-71,0,227,118,0,0,51,66,191,96,18,128,254,67,17,224,1,1,67,217,
-96,0,224,20,11,224,17,8,224,14,5,224,11,2,192,8,93,0,131,86,
-88,160,195,64,0,90,128,130,64,21,207,150,77,59,0,50,65,58,0,58,
-117,70,15,10,65,32,34,94,95,94,44,94,41,94,66,94,57,94,59,96,
-5,18,53,94,54,94,57,94,58,94,57,94,52,94,57,94,57,94,73,94,
-38,96,7,0,66,96,19,30,57,94,89,94,32,94,53,94,57,94,54,94,
-60,94,51,94,60,94,89,94,33,94,53,94,58,94,54,94,58,124,32,96,
-75,22,57,94,67,94,59,94,61,94,57,94,60,94,61,94,50,94,55,94,
-58,94,45,94,61,96,13,8,58,94,40,94,40,94,60,94,33,96,75,31,
-60,94,40,94,50,94,56,94,66,94,40,94,57,94,86,94,32,94,58,94,
-70,94,32,94,87,94,33,94,58,94,71,94,2,33,94,32,224,3,102,224,
-33,59,224,3,53,224,9,1,0,66,224,15,6,64,5,0,66,96,5,2,
-33,94,67,224,19,6,224,43,3,224,79,13,224,69,9,224,15,1,2,33,
-94,50,160,67,0,67,96,9,0,34,96,25,224,5,3,224,3,21,224,33,
-25,192,37,192,77,224,129,3,224,3,99,0,70,96,5,128,11,64,5,128,
-23,193,77,224,3,2,1,124,68,97,21,28,90,94,33,94,81,94,49,94,
-67,94,60,94,75,94,49,94,77,94,60,94,68,94,49,94,70,94,60,94,
-49,96,3,6,80,94,60,124,111,94,35,224,57,0,64,21,64,7,4,48,
-94,48,94,49,97,83,8,57,94,32,94,67,94,48,94,60,96,25,67,73,
-2,32,94,48,160,3,64,41,0,80,96,11,3,72,94,32,124,193,29,225,
-211,3,224,3,35,64,179,64,9,0,58,160,15,96,75,5,124,50,94,32,
-124,47,224,75,40,224,3,13,8,61,94,68,94,35,94,37,94,37,224,73,
-56,224,3,37,224,29,19,224,67,31,224,3,145,1,48,124,65,79,130,49,
-4,69,94,57,124,40,98,53,0,52,96,17,18,61,94,61,94,59,94,48,
-124,44,94,35,94,52,94,35,94,57,94,35,224,5,4,6,71,94,48,94,
-90,94,50,98,97,67,189,69,87,6,74,94,48,94,69,94,45,229,179,0,
-0,59,96,5,64,73,0,74,96,53,64,25,14,57,94,95,94,50,94,49,
-94,73,94,50,94,84,94,35,101,231,10,67,94,57,94,50,94,50,94,35,
-124,98,96,73,4,50,94,70,94,35,101,187,6,69,94,35,94,49,94,49,
-96,117,4,61,94,67,94,35,96,39,64,51,2,66,94,50,96,89,8,50,
-94,77,94,57,94,48,94,45,64,63,1,94,93,99,59,0,35,64,193,3,
-124,88,94,50,96,119,64,33,0,48,64,51,5,124,32,94,50,94,72,160,
-81,0,61,96,139,0,49,96,235,6,35,94,59,94,59,94,85,96,205,64,
-29,128,35,0,66,96,5,66,119,64,35,0,78,96,101,64,83,64,23,64,
-17,64,15,16,74,94,50,94,68,94,48,94,87,94,50,94,60,94,69,94,
-50,96,137,0,45,96,19,3,72,94,35,124,70,103,2,49,94,87,96,205,
-6,95,94,35,94,36,124,53,96,167,0,36,96,151,8,66,94,36,94,71,
-94,35,94,67,96,15,2,36,94,36,160,249,65,27,129,103,199,7,2,49,
-94,78,160,55,4,36,94,48,94,71,96,103,0,48,97,11,64,7,64,185,
-2,48,94,70,96,5,64,85,129,145,128,217,128,101,64,215,64,15,128,63,
-128,7,64,27,65,197,64,29,192,75,65,85,64,121,64,35,64,121,64,21,
-65,27,2,69,94,40,98,15,65,157,128,29,64,37,64,75,64,243,224,63,
-1,224,139,7,224,5,7,64,55,64,101,64,125,64,247,128,71,64,23,65,
-85,64,185,2,35,94,70,224,191,0,65,13,128,135,64,37,128,155,65,17,
-224,125,1,0,72,224,181,0,224,121,11,0,68,225,5,6,129,203,192,59,
-129,3,129,71,0,78,160,51,224,251,3,66,191,64,127,0,50,98,133,64,
-55,225,125,27,224,119,7,129,217,225,127,13,64,93,128,141,225,129,17,66,
-225,65,125,128,245,64,33,65,113,65,41,128,245,65,41,64,13,193,101,128,
-9,192,17,192,39,64,7,0,75,161,169,128,123,64,5,128,29,64,145,129,
-145,128,213,0,69,96,35,163,51,105,35,0,69,97,251,69,131,64,131,128,
-43,129,5,128,131,0,86,96,5,0,79,225,109,4,130,213,129,215,64,165,
-224,237,1,192,53,128,173,225,119,9,64,39,2,57,94,70,98,113,194,243,
-0,57,224,111,10,67,37,225,107,9,0,68,96,117,193,171,128,235,128,123,
-64,11,64,219,226,143,1,224,117,3,128,17,2,36,94,75,225,147,0,0,
-36,226,93,3,99,201,64,23,227,79,3,225,59,3,68,141,65,93,64,45,
-0,36,96,189,225,201,7,0,72,96,209,132,35,192,159,0,81,161,155,68,
-63,194,205,128,207,66,79,131,15,128,85,65,173,130,133,66,129,128,201,128,
-183,128,217,0,57,64,185,1,124,47,96,115,64,201,68,71,64,57,67,187,
-68,131,68,103,235,85,0,0,124,64,123,226,49,1,129,67,128,131,193,89,
-128,69,69,9,128,143,128,35,69,47,64,89,224,123,1,66,127,0,95,96,
-55,2,66,94,61,101,37,75,129,64,11,64,251,66,57,64,41,0,73,96,
-251,69,195,128,3,75,237,64,3,64,185,97,217,0,124,64,103,64,175,0,
-77,97,27,67,169,134,107,64,119,69,197,64,33,128,251,64,63,64,87,134,
-163,0,68,107,247,64,115,96,213,1,124,42,97,127,129,161,65,37,133,107,
-129,111,129,191,64,143,2,69,94,57,97,23,192,21,131,69,193,221,129,63,
-65,113,134,17,0,76,226,135,0,128,211,129,239,0,36,163,31,64,13,2,
-61,94,61,167,75,73,13,137,101,64,139,71,79,137,141,1,66,124,129,221,
-197,153,196,47,224,17,0,98,97,224,13,1,70,171,224,45,18,102,15,2,
-48,124,56,224,51,4,195,87,64,201,4,72,94,57,94,83,98,133,131,153,
-0,73,98,123,2,48,124,85,167,241,0,69,170,43,4,52,94,68,124,107,
-98,189,10,57,94,80,94,50,94,41,94,89,94,50,97,155,3,66,94,48,
-124,70,223,71,39,2,66,94,39,97,167,67,71,130,179,65,15,4,72,94,
-48,94,82,162,229,66,129,0,57,96,17,64,31,64,17,67,73,65,57,195,
-181,160,19,1,124,51,224,49,0,66,73,66,203,129,91,65,229,135,147,142,
-21,64,37,195,59,130,237,68,137,64,185,72,163,72,51,64,133,0,45,168,
-67,64,219,0,34,66,233,1,124,52,160,167,66,57,3,35,94,35,124,75,
-79,65,175,3,68,94,48,124,65,243,69,73,0,94,160,151,199,123,132,213,
-229,29,1,65,227,128,29,66,101,65,67,199,139,72,97,195,15,4,74,94,
-48,124,43,162,183,65,53,195,147,97,117,0,124,74,181,68,169,226,125,1,
-64,55,66,167,64,161,128,245,131,75,130,163,131,11,128,123,0,73,160,45,
-224,219,0,224,7,0,0,70,97,33,65,3,64,31,67,45,5,37,94,79,
-94,35,124,131,139,72,97,0,46,162,173,67,67,197,17,192,93,64,187,192,
-201,64,73,66,21,67,227,0,72,169,15,128,171,64,227,195,65,195,61,131,
-29,99,61,96,243,128,91,198,13,128,31,128,99,64,135,0,57,99,207,65,
-219,64,209,192,69,65,71,67,175,131,55,130,23,193,83,2,69,94,49,162,
-65,138,155,65,173,0,42,162,171,76,149,0,71,102,3,129,179,2,57,94,
-76,225,61,0,66,251,65,51,196,177,128,105,129,237,8,43,94,33,124,62,
-94,49,94,76,77,31,0,124,76,147,4,36,94,49,124,63,237,53,2,224,
-3,255,224,3,17,193,143,224,3,181,64,197,2,71,94,32,228,245,0,0,
-69,162,89,81,235,64,23,192,7,224,31,11,207,51,192,3,192,43,0,77,
-160,43,128,15,0,34,224,7,8,79,21,0,48,241,53,0,0,34,114,125,
-2,66,94,60,102,13,224,23,3,64,19,0,67,160,75,192,21,66,231,0,
-60,96,73,0,68,111,145,0,60,163,7,224,81,7,64,23,8,74,94,41,
-94,68,94,45,94,69,179,57,6,55,94,56,94,53,94,55,224,7,0,67,
-57,2,42,94,43,96,35,0,41,102,23,64,25,69,63,2,51,94,51,99,
-245,0,58,101,239,0,74,179,127,4,51,94,73,94,57,160,83,68,119,2,
-45,94,40,173,39,74,135,77,219,64,45,77,193,224,13,1,69,233,69,183,
-70,183,0,59,107,77,67,161,2,67,94,37,99,245,4,37,94,75,94,35,
-96,21,71,177,80,149,64,5,64,11,242,89,1,128,7,192,23,0,58,96,
-247,71,229,64,15,192,3,64,245,64,51,145,55,67,249,64,49,64,17,65,
-227,71,121,80,129,65,75,64,65,128,25,8,61,94,79,94,40,124,34,94,
-39,160,51,0,39,104,137,137,171,64,47,0,68,96,43,0,58,96,147,128,
-51,192,5,0,70,96,5,0,94,160,31,192,25,128,17,2,66,94,75,116,
-41,0,61,232,201,0,0,83,160,39,64,53,4,53,94,54,124,80,96,15,
-8,93,94,61,94,88,94,58,124,39,103,125,1,58,124,64,49,0,85,97,
-179,10,61,94,84,94,48,124,59,94,40,124,77,96,19,4,40,94,65,124,
-54,96,51,69,139,10,58,124,53,94,61,94,71,94,58,124,110,96,19,2,
-65,124,119,224,107,2,224,3,11,4,93,94,40,124,43,105,15,129,145,0,
-94,160,7,224,3,7,0,79,64,77,5,92,95,94,61,94,65,225,189,0,
-224,3,30,1,124,62,224,47,2,0,95,160,11,6,66,94,65,94,58,124,
-47,96,207,129,37,64,231,76,183,66,49,64,103,6,48,124,104,94,61,124,
-47,242,13,2,193,243,227,163,3,243,11,1,64,5,67,135,79,165,243,175,
-111,224,3,73,0,33,162,205,128,13,70,197,64,7,74,43,67,137,86,135,
-2,57,124,37,163,223,64,21,100,15,1,124,55,168,203,71,27,77,145,0,
-35,104,81,73,101,138,17,224,5,33,80,125,196,29,64,3,67,247,64,7,
-128,5,68,21,132,61,64,5,128,23,196,73,226,7,5,71,191,67,251,64,
-41,137,133,64,49,2,53,94,76,177,233,215,203,224,3,3,1,52,124,64,
-205,0,89,98,11,2,88,94,61,106,25,6,65,124,85,94,61,94,89,106,
-157,0,61,184,9,6,61,94,49,94,50,94,39,226,123,11,96,91,224,87,
-8,96,5,64,27,2,72,94,39,232,175,0,0,52,117,41,128,139,0,39,
-96,81,128,153,74,251,137,187,72,33,69,59,66,97,3,50,94,52,124,73,
-187,74,77,64,13,136,119,75,91,137,233,132,43,79,127,0,61,82,185,1,
-124,37,96,109,64,23,2,79,94,50,100,11,138,153,67,233,0,71,100,91,
-2,78,94,40,98,247,2,73,94,40,99,7,64,15,2,66,124,63,78,205,
-2,124,51,124,64,47,0,50,128,13,5,94,65,124,35,124,125,176,65,4,
-49,94,72,124,118,141,243,100,7,4,72,94,48,124,39,233,23,2,68,113,
-64,37,65,39,64,121,73,55,72,239,0,83,102,147,226,155,53,224,3,19,
-73,87,69,193,73,181,66,65,0,49,224,73,48,179,199,171,131,0,39,173,
-75,137,213,4,86,94,60,94,72,118,195,150,197,224,3,13,246,153,41,224,
-3,69,79,69,224,17,3,224,35,13,224,195,3,88,213,64,9,224,185,35,
-70,249,192,5,224,3,19,248,61,3,64,5,66,217,128,7,128,3,224,47,
-5,0,84,104,63,129,189,66,71,2,49,94,33,100,25,211,87,139,71,68,
-93,235,243,1,71,19,139,181,147,255,146,5,77,105,77,195,67,251,148,63,
-1,36,124,67,57,0,79,160,55,64,19,204,99,76,177,0,81,171,159,66,
-185,149,221,64,105,64,29,0,91,108,35,132,151,64,121,78,1,142,9,64,
-65,0,92,242,191,0,236,213,3,236,151,5,76,125,68,121,69,33,64,81,
-71,213,64,77,141,251,85,201,131,41,112,189,111,97,144,17,192,225,128,7,
-67,207,129,5,77,33,64,23,65,75,64,55,141,85,131,113,77,117,144,229,
-173,189,96,245,144,51,140,123,64,75,174,117,160,25,0,87,177,103,131,195,
-79,77,224,121,1,64,17,129,137,64,19,78,149,146,27,224,7,5,229,235,
-6,112,83,74,47,64,219,194,109,6,67,94,48,124,79,94,33,110,255,128,
-211,224,5,1,0,57,96,9,192,207,65,143,2,50,124,87,101,143,0,50,
-101,135,65,119,64,63,64,15,65,61,2,46,94,70,100,147,2,46,94,46,
-192,7,1,94,71,160,9,2,47,124,49,96,9,4,47,94,66,124,109,128,
-163,1,124,105,101,19,64,157,0,33,96,79,74,245,70,191,129,227,2,50,
-94,58,176,3,146,63,128,3,224,5,0,112,121,4,80,94,60,94,79,65,
-129,3,124,106,94,50,101,217,4,79,94,61,124,63,160,95,87,47,71,1,
-69,125,148,195,94,47,69,125,83,213,222,55,64,215,64,17,134,149,74,215,
-230,67,11,224,3,3,65,125,64,7,144,71,139,7,129,235,134,85,192,3,
-139,31,0,52,105,43,66,91,152,211,138,61,64,161,0,65,161,157,87,247,
-66,69,254,207,58,160,59,192,165,65,69,2,49,124,44,162,43,80,185,131,
-145,226,43,9,140,35,128,31,87,181,0,58,126,251,64,9,65,63,0,67,
-169,159,66,105,0,66,121,93,137,163,65,83,144,191,145,205,193,161,114,97,
-112,99,0,50,66,47,1,124,122,184,235,64,221,66,49,0,44,178,93,4,
-72,94,61,124,52,103,127,1,40,94,74,245,95,105,65,161,76,3,145,59,
-2,61,124,46,96,47,68,77,4,65,94,65,94,48,195,219,98,117,76,23,
-4,35,94,90,94,40,97,85,90,29,64,73,66,247,0,83,104,13,67,147,
-0,39,103,151,0,37,96,129,67,99,0,48,177,135,144,103,64,55,64,37,
-67,247,2,39,124,41,103,57,6,32,124,39,94,33,124,77,160,195,210,33,
-73,117,64,187,0,35,101,63,135,97,0,71,164,207,132,117,0,74,109,125,
-0,78,96,5,0,70,253,45,0,75,177,67,51,0,78,96,5,66,235,141,
-135,64,195,64,59,66,249,2,66,124,54,163,175,71,207,65,101,64,147,68,
-1,71,195,2,48,124,41,109,69,3,72,94,49,124,64,191,193,175,67,5,
-81,79,129,117,65,45,128,23,150,227,69,97,0,40,96,11,65,173,86,85,
-65,255,69,97,4,72,94,40,124,47,225,177,4,64,85,2,68,94,40,96,
-125,141,169,64,63,65,215,64,25,2,57,124,63,170,79,65,45,65,163,64,
-51,2,79,94,40,99,101,77,227,132,199,137,29,138,151,134,21,211,191,65,
-179,130,97,147,23,69,55,0,40,99,155,74,61,64,7,64,33,64,89,197,
-187,73,7,129,5,0,61,101,235,64,89,131,57,64,55,116,45,99,223,64,
-169,64,15,201,159,64,243,64,215,64,133,64,11,84,81,154,21,118,229,65,
-7,3,124,79,94,48,85,81,3,124,54,94,48,94,105,1,94,76,96,7,
-70,211,102,173,162,23,134,141,243,67,3,64,209,69,183,85,7,146,143,92,
-223,2,49,94,85,111,181,0,48,109,195,0,65,64,93,1,94,94,65,27,
-1,124,41,96,147,64,185,157,23,129,53,97,19,64,123,96,99,64,237,74,
-3,129,153,64,197,70,201,66,197,75,45,77,239,64,193,129,79,75,229,2,
-48,94,84,96,209,0,40,105,189,203,209,134,83,84,27,0,78,164,219,65,
-43,85,195,64,183,230,97,1,128,45,135,21,68,21,216,143,198,205,68,51,
-0,45,97,43,134,85,68,151,156,185,219,77,65,11,2,66,94,35,97,35,
-148,37,71,133,193,31,70,149,64,75,131,25,70,83,128,83,128,119,102,189,
-120,103,64,119,84,59,135,147,136,15,64,135,134,113,138,159,64,53,133,89,
-64,199,67,97,65,9,221,71,244,53,1,64,5,202,15,160,233,107,41,246,
-247,7,132,147,69,17,101,243,168,21,64,73,64,193,66,47,192,223,199,101,
-251,175,33,129,91,128,141,154,187,251,175,1,153,233,64,47,64,91,85,91,
-128,53,192,31,84,137,194,77,64,229,154,155,192,119,132,185,64,9,64,71,
-156,77,192,95,64,217,64,5,225,5,1,136,57,65,113,136,203,66,83,64,
-155,2,92,94,48,98,29,192,237,64,49,129,63,131,167,213,89,192,57,137,
-217,0,93,186,21,192,121,192,221,129,31,128,243,129,167,195,41,0,65,66,
-161,97,89,194,89,64,169,224,51,5,0,86,97,235,98,143,102,27,192,97,
-245,237,1,128,39,137,243,129,17,129,151,73,173,0,82,173,99,128,37,64,
-47,192,153,161,215,224,45,0,0,83,106,37,2,48,94,90,161,75,224,49,
-1,130,241,65,111,67,37,64,47,134,119,77,235,65,219,2,65,124,56,165,
-89,226,167,1,99,29,1,124,99,102,101,4,32,94,95,94,33,96,55,68,
-197,68,85,226,39,1,132,131,226,31,1,91,25,87,149,226,15,1,193,9,
-66,1,137,211,64,121,67,31,87,31,64,185,160,77,0,124,67,5,225,71,
-3,133,3,192,235,64,59,0,90,96,103,2,73,94,35,173,239,64,89,196,
-187,65,197,65,151,234,183,1,67,183,2,45,94,50,183,1,225,99,1,65,
-253,69,3,74,241,131,231,4,57,94,65,124,53,186,73,144,61,193,85,122,
-137,0,124,128,185,152,129,225,127,1,130,69,128,43,0,82,230,69,0,0,
-57,248,247,0,0,85,162,189,64,55,226,17,2,0,124,234,167,1,137,217,
-66,241,64,85,64,63,198,85,131,39,139,103,224,141,1,135,9,129,105,71,
-253,221,193,128,103,194,75,228,189,1,0,66,64,213,250,119,2,139,73,222,
-93,64,211,106,113,121,247,64,29,66,35,64,133,224,75,1,66,131,101,83,
-0,124,77,21,136,129,2,84,94,40,115,207,2,67,94,59,104,197,0,76,
-167,125,10,89,94,50,124,101,94,48,124,110,94,39,184,189,66,205,1,65,
-124,66,253,1,84,124,90,207,0,96,163,173,64,49,0,72,99,9,0,79,
-122,149,64,215,69,201,65,77,0,95,98,193,100,53,5,124,70,94,50,124,
-53,66,157,97,83,85,25,197,9,64,147,0,77,98,61,0,68,123,217,64,
-211,154,169,133,153,154,61,197,3,129,61,250,143,1,157,223,131,139,65,103,
-221,25,76,43,67,21,193,213,103,63,166,131,64,145,65,73,0,67,104,75,
-2,66,94,49,98,131,147,121,129,35,0,65,96,143,195,47,0,86,105,165,
-2,57,124,100,188,27,136,7,71,9,66,17,135,13,0,76,121,99,77,145,
-64,119,79,243,65,49,65,125,66,131,4,50,124,47,124,117,97,117,98,3,
-81,147,0,124,64,141,65,255,64,65,4,50,124,69,124,102,96,73,158,107,
-64,5,64,73,73,95,70,139,65,171,0,50,69,11,168,149,64,13,64,87,
-65,143,154,123,74,207,0,82,105,221,76,79,64,225,66,15,138,169,194,69,
-128,57,158,163,65,37,3,45,94,94,124,68,103,2,65,124,111,190,177,64,
-245,4,67,124,51,94,61,97,227,65,207,64,49,0,86,142,45,4,124,115,
-94,61,124,75,85,2,65,124,117,129,89,212,241,0,124,79,33,197,153,75,
-5,68,55,2,71,94,45,101,25,137,195,0,35,114,43,3,67,94,35,124,
-75,157,86,5,0,65,107,39,4,35,94,61,124,121,167,41,68,143,160,7,
-1,124,86,178,113,0,88,86,35,96,191,76,59,76,47,64,7,138,139,0,
-81,160,13,64,21,234,179,1,190,135,224,13,0,152,89,88,187,152,111,234,
-203,1,74,221,224,63,1,64,37,128,43,128,45,203,9,224,29,7,80,163,
-64,93,137,191,192,33,224,157,3,224,7,23,0,91,176,183,10,88,94,32,
-94,58,94,88,94,33,94,58,117,251,224,15,55,177,15,1,124,49,67,55,
-86,237,1,124,54,101,119,1,61,124,66,143,67,231,1,35,94,87,119,129,
-147,67,41,66,87,67,67,72,99,2,35,94,72,106,1,0,73,113,43,0,
-83,117,187,68,167,2,33,94,65,100,49,133,51,0,80,162,19,221,195,64,
-5,172,157,4,124,61,94,49,124,65,15,2,35,124,111,108,249,202,227,73,
-215,153,75,195,209,75,27,84,29,131,201,2,35,94,80,254,83,0,132,15,
-66,191,2,59,94,67,96,143,68,67,0,49,224,25,0,85,65,192,53,68,
-247,228,35,1,2,67,124,95,229,141,0,137,55,237,209,3,1,65,124,136,
-239,108,67,64,147,67,127,3,124,33,94,32,93,33,96,163,64,99,228,115,
-4,1,94,70,96,151,0,58,114,5,75,215,0,59,74,221,99,25,78,5,
-148,227,1,65,124,77,217,128,111,135,175,128,117,195,165,195,119,192,145,134,
-213,64,5,129,7,224,3,1,131,217,224,61,7,224,3,9,224,31,1,128,
-83,224,241,3,224,101,1,128,117,0,80,238,189,0,64,13,129,1,0,80,
-85,145,171,243,0,66,68,69,121,65,68,57,0,99,182,165,0,78,175,35,
-128,7,96,5,1,124,36,165,75,0,76,96,243,4,32,94,61,124,55,108,
-251,102,51,192,65,121,197,144,183,0,61,100,159,87,253,0,65,118,239,2,
-65,124,122,98,115,4,60,94,69,124,87,160,45,70,113,66,33,175,49,1,
-124,118,160,135,86,95,65,35,0,75,160,39,65,105,224,13,0,1,124,55,
-118,115,64,225,147,149,90,101,64,15,68,95,64,181,224,53,1,0,61,107,
-77,1,66,124,90,165,64,215,66,251,64,33,207,161,64,65,66,183,64,81,
-64,181,192,247,90,167,136,49,128,23,2,65,94,82,97,3,0,91,165,37,
-0,72,161,193,4,66,124,77,124,93,96,9,66,121,2,50,124,32,97,19,
-193,223,0,65,101,91,161,201,2,124,44,92,96,35,166,13,0,58,80,27,
-229,215,0,2,68,124,107,96,7,0,83,114,161,0,68,135,33,1,124,97,
-96,41,0,38,104,99,129,197,64,97,96,111,5,124,43,124,56,124,80,108,
-229,74,233,2,95,94,45,96,93,69,199,4,35,94,67,124,124,109,171,0,
-47,68,3,1,124,123,96,9,64,131,224,15,2,31,34,32,58,50,50,56,
-32,64,10,65,32,95,54,32,95,49,52,54,32,64,95,54,32,89,32,66,
-32,66,32,83,32,85,64,18,5,55,32,64,64,64,64,64,16,1,90,32,
-224,7,1,12,83,39,32,83,32,64,66,32,67,39,32,83,39,64,8,14,
-83,32,64,95,49,50,55,32,95,53,49,32,64,35,49,160,52,0,67,64,
-23,224,38,0,9,66,32,64,64,67,32,67,32,95,52,64,108,12,53,54,
-32,64,64,95,49,53,55,32,95,49,57,64,120,5,51,50,52,32,35,49,
-64,143,96,0,64,53,64,110,10,95,49,48,54,32,64,67,32,95,56,48,
-160,41,224,53,19,3,85,32,35,48,224,64,0,31,66,32,80,32,95,51,
-50,50,32,102,114,111,109,85,84,70,56,32,34,92,34,108,105,98,47,68,
-97,116,97,47,67,104,21,97,114,47,85,110,105,99,111,100,101,46,104,115,
-92,34,44,50,48,50,58,56,34,128,62,64,225,96,228,96,71,128,13,64,
-133,224,187,28,128,185,2,64,67,39,64,249,7,95,49,55,52,32,95,55,
-53,64,27,160,210,64,202,96,16,64,80,192,11,192,63,3,95,49,57,56,
-64,184,4,50,50,48,32,64,160,55,224,28,0,129,76,64,70,96,151,2,
-95,50,50,65,107,96,8,0,52,225,37,0,160,78,128,140,225,17,2,64,
-71,64,11,2,95,50,50,64,192,3,58,50,50,55,129,252,2,50,50,53,
-66,10,0,54,96,13,7,98,115,117,110,112,97,99,107,64,17,0,53,96,
-17,64,110,4,95,50,50,50,32,64,57,1,51,32,64,56,0,52,96,24,
-2,66,32,89,65,247,65,160,0,58,96,25,64,44,65,41,0,67,129,44,
-65,32,0,54,64,113,96,118,97,142,130,81,129,220,128,57,128,189,0,50,
-96,48,225,42,1,192,190,0,64,128,49,0,58,96,33,96,139,64,115,64,
-61,0,80,128,6,160,68,64,33,0,49,128,205,5,49,48,56,32,95,50,
-64,21,3,95,49,57,53,64,10,64,114,192,11,65,70,3,95,50,49,48,
-161,96,64,11,0,49,224,11,2,0,51,224,11,2,0,57,224,11,0,0,
-54,64,57,0,52,64,255,0,48,64,156,0,58,96,22,1,10,65,162,213,
-98,254,129,236,66,48,128,255,64,2,64,151,162,72,226,78,0,66,4,225,
-192,1,192,37,64,16,128,52,64,77,96,5,99,79,97,28,1,49,52,64,
-7,2,85,32,65,161,44,1,49,53,64,137,0,49,96,246,64,59,64,18,
-99,167,64,136,1,95,54,65,57,224,19,1,8,64,64,83,32,73,32,64,
-75,50,226,127,1,224,125,0,1,83,39,65,69,194,84,99,208,129,131,66,
-54,0,75,192,172,98,232,96,128,64,18,224,128,7,162,251,192,139,96,71,
-130,135,96,16,224,54,15,0,64,128,206,97,103,0,56,65,223,1,49,57,
-97,81,64,45,2,75,52,32,128,174,0,58,96,27,224,21,2,160,20,130,
-182,2,85,32,90,96,1,0,75,64,175,96,23,0,54,224,44,0,64,13,
-130,188,224,37,9,130,187,225,148,0,97,1,1,95,49,66,36,3,95,50,
-49,50,96,58,130,202,0,85,64,134,192,57,0,58,96,27,130,129,161,181,
-6,95,50,48,57,32,64,65,96,49,130,123,224,27,7,128,136,130,43,96,
-77,224,196,1,64,30,8,10,65,32,117,114,101,109,32,58,98,150,64,13,
-3,113,117,111,116,64,14,163,152,2,49,48,57,99,52,100,100,164,118,0,
-54,68,211,65,73,226,148,6,64,83,129,0,0,73,64,65,128,253,0,83,
-99,141,65,145,226,93,0,163,155,2,54,56,32,131,150,98,175,130,196,224,
-22,4,133,124,67,28,229,66,16,10,73,110,116,101,103,101,114,95,84,121,
-112,165,66,3,53,52,58,49,165,65,128,63,0,57,67,68,0,48,96,80,
-66,118,0,79,64,123,0,79,97,24,160,36,224,34,3,224,26,3,224,23,
-2,198,134,2,95,50,48,66,103,2,95,50,48,100,132,64,251,100,112,2,
-95,49,54,68,155,1,54,52,64,47,0,50,166,127,0,58,96,37,102,218,
-0,54,98,159,1,95,55,97,219,64,32,128,53,1,54,57,224,20,1,129,
-190,0,75,65,56,129,173,2,80,32,58,64,128,162,41,99,47,131,7,162,
-183,96,184,96,14,129,207,69,180,225,229,3,96,36,0,58,96,34,64,131,
-1,52,49,64,47,3,53,32,95,54,65,170,160,10,66,87,128,10,2,49,
-55,51,96,11,0,55,64,11,102,227,0,73,97,179,96,220,71,86,1,49,
-53,100,135,230,114,7,131,100,230,137,9,224,22,13,128,45,96,185,66,54,
-96,115,0,58,96,31,101,203,192,24,64,19,130,61,96,243,0,56,133,153,
-1,53,57,64,30,64,50,2,35,50,53,101,4,96,44,98,165,0,54,71,
-154,68,119,161,137,2,49,54,51,96,5,96,101,97,192,1,54,56,192,61,
-2,95,49,55,97,11,96,73,96,27,1,55,50,130,227,96,51,0,55,132,
-84,1,49,55,224,110,0,2,95,49,56,224,48,0,3,95,49,56,51,224,
-11,2,0,54,224,56,8,196,199,98,203,71,171,230,126,1,224,27,5,2,
-49,52,50,160,28,1,95,55,97,46,66,38,192,41,2,95,49,56,102,50,
-64,18,224,81,51,0,57,224,81,9,66,115,1,49,56,224,220,2,0,57,
-104,214,160,11,0,49,66,254,4,95,49,57,50,32,160,67,0,75,160,8,
-64,21,0,51,69,19,0,58,96,43,6,10,65,32,90,32,85,32,64,13,
-130,206,7,112,111,112,99,111,117,110,116,66,181,228,138,2,0,66,96,109,
-0,56,67,28,0,49,167,88,0,58,64,113,129,182,3,56,56,32,58,64,
-139,226,183,3,133,44,224,1,9,165,62,224,0,2,0,58,96,88,64,72,
-2,51,52,51,228,31,2,18,97,114,105,116,104,109,101,116,105,99,32,111,
-118,101,114,102,108,111,119,68,17,0,58,97,1,131,78,165,35,0,83,228,
-148,5,192,5,2,95,49,56,102,240,3,95,49,56,53,227,96,0,230,188,
-0,71,106,130,142,134,250,1,49,55,137,24,230,168,0,131,160,226,241,3,
-128,66,0,58,66,47,128,234,224,228,15,224,1,3,224,240,9,64,0,0,
-58,96,147,96,68,69,247,96,169,192,211,129,108,98,255,64,147,0,58,66,
-171,161,90,0,51,224,108,42,0,58,96,75,224,92,4,64,244,132,141,1,
-95,49,71,96,160,252,0,58,67,33,160,105,225,193,17,224,103,14,0,58,
-96,73,224,102,4,0,55,71,10,160,195,0,55,226,30,0,0,52,224,92,
-15,224,84,7,0,58,96,58,231,63,1,224,1,21,225,103,12,0,58,96,
-131,197,56,69,51,101,45,133,39,165,38,99,240,229,38,7,104,252,97,246,
-101,4,138,238,64,52,0,58,96,47,103,17,136,225,98,68,64,232,226,40,
-1,0,58,64,88,160,184,231,247,1,96,45,5,10,65,32,42,32,58,96,
-126,129,42,1,95,49,68,28,130,89,226,122,12,99,190,0,58,68,220,160,
-49,236,78,3,228,75,10,137,247,98,221,102,209,70,32,224,29,2,1,95,
-49,100,77,234,60,0,1,95,49,101,88,227,214,0,64,106,226,4,0,136,
-103,224,2,2,225,85,0,232,138,0,224,30,4,225,133,3,0,58,96,104,
-224,178,62,229,147,0,128,178,0,54,65,111,224,178,3,72,109,195,33,224,
-141,2,226,23,6,0,58,96,56,224,183,7,226,66,14,0,58,96,117,226,
-178,0,134,227,66,65,7,10,65,32,120,111,114,32,58,102,150,2,10,65,
-32,128,11,129,208,2,97,110,100,64,12,129,171,2,95,52,56,137,7,3,
-95,49,52,57,66,57,66,84,167,33,224,1,31,107,212,224,0,10,224,57,
-25,192,1,224,65,14,224,56,25,128,1,224,62,13,224,55,25,64,1,224,
-59,12,224,54,25,224,56,13,224,53,44,224,50,41,224,47,38,224,44,35,
-224,41,32,224,38,29,224,35,26,224,32,23,224,29,20,224,26,17,224,23,
-14,224,20,11,224,17,8,224,14,5,224,11,2,192,8,109,70,224,0,9,
-0,58,74,28,229,83,1,224,1,23,227,202,4,224,68,2,70,249,140,217,
-106,144,228,11,1,171,103,69,125,99,186,203,43,1,95,49,67,197,0,49,
-82,142,224,11,0,73,63,192,11,137,112,128,11,139,135,128,11,107,158,0,
-53,96,10,109,109,106,246,96,10,0,58,96,6,5,10,65,32,117,62,61,
-64,134,132,82,1,117,62,64,11,132,81,1,117,60,96,24,132,82,1,117,
-60,64,11,132,81,3,117,99,109,112,64,13,176,160,96,105,196,100,192,121,
-68,106,64,99,129,45,0,47,64,73,64,18,160,244,0,52,128,244,0,75,
-64,10,206,27,1,52,53,64,13,128,147,1,98,115,145,178,64,20,160,29,
-0,51,64,13,128,152,7,98,115,108,101,110,103,116,104,64,17,232,147,0,
-101,30,143,102,74,186,64,21,0,82,141,240,64,16,170,68,145,195,1,49,
-51,106,201,112,144,2,58,49,52,170,63,97,107,0,51,97,107,0,51,103,
-156,0,51,71,167,1,49,51,110,171,0,51,104,67,0,51,69,69,97,77,
-96,65,129,77,96,10,0,58,96,6,225,77,0,64,40,193,77,64,58,225,
-77,0,64,77,193,77,64,95,3,10,65,32,105,129,77,64,115,96,201,139,
-25,2,58,49,51,128,218,65,35,64,16,143,63,0,54,64,13,225,119,3,
-83,71,2,95,49,50,101,216,64,188,193,108,64,17,3,10,65,32,61,96,
-11,226,98,1,1,64,58,96,245,210,236,111,71,209,159,80,178,0,90,64,
-82,171,226,83,1,64,6,139,102,179,78,113,200,97,30,82,193,0,58,96,
-29,96,22,71,52,192,73,3,48,54,32,35,75,183,147,76,0,35,108,14,
-227,116,2,224,32,2,143,175,116,92,177,196,0,89,243,79,0,115,19,224,
-65,4,224,64,5,66,13,64,0,96,58,163,88,179,201,139,145,128,163,128,
-244,129,76,105,88,85,210,0,48,96,20,129,86,104,97,64,14,232,112,0,
-99,134,0,58,97,8,167,40,164,18,0,58,97,36,194,112,96,36,177,210,
-0,66,80,87,137,134,114,23,80,214,130,70,146,32,1,58,49,177,230,11,
-94,109,100,53,83,116,114,105,110,103,32,58,96,27,180,145,2,66,32,95,
-128,46,64,213,97,74,64,15,213,98,116,173,141,115,168,107,178,15,73,172,
-128,55,0,51,73,176,1,90,32,224,31,0,129,9,4,110,101,119,67,65,
-128,111,2,76,101,110,64,114,129,9,224,212,5,129,8,0,65,64,30,129,
-4,129,148,2,115,101,113,142,15,96,8,101,19,1,58,49,177,255,80,81,
-177,244,193,150,128,1,229,136,78,0,58,85,7,193,122,229,91,2,0,58,
-114,234,3,10,65,32,79,64,144,129,79,6,95,56,57,32,75,32,95,98,
-97,192,7,1,95,57,79,106,114,90,0,95,112,163,128,10,1,49,48,78,
-176,192,11,0,50,224,11,2,107,154,81,148,0,58,96,18,65,186,6,112,
-111,107,101,87,111,114,73,92,177,173,4,94,112,101,101,107,192,18,162,99,
-65,177,75,66,145,221,81,117,0,58,64,89,160,187,241,78,3,177,167,192,
-49,152,13,160,48,226,123,1,0,95,81,117,67,87,68,214,0,95,81,152,
-1,64,58,177,203,2,116,111,73,79,36,177,172,6,116,111,80,116,114,32,
-58,177,164,243,160,5,177,22,131,24,245,210,0,129,102,67,182,1,64,95,
-113,43,182,201,99,90,0,95,144,131,3,73,32,64,58,177,64,229,102,5,
-177,47,237,104,0,79,187,65,179,128,61,1,67,32,96,63,0,95,76,249,
-64,44,229,168,0,202,197,175,234,0,95,80,49,75,235,0,35,77,160,175,
-237,148,55,175,217,226,51,1,226,55,2,226,94,72,176,56,203,221,64,31,
-0,95,87,85,100,121,0,95,79,38,163,149,224,20,0,163,154,1,56,50,
-160,16,163,159,119,127,132,175,0,58,176,82,64,37,114,182,64,226,176,55,
-6,94,102,114,101,101,32,58,175,196,140,157,224,91,5,0,95,78,119,0,
-95,79,11,140,115,96,33,224,109,0,97,171,64,31,135,238,224,116,0,0,
-58,175,209,128,50,64,226,64,165,133,85,96,244,0,39,86,195,224,48,0,
-0,73,160,255,224,247,3,193,209,225,62,1,224,118,3,1,64,95,80,8,
-128,162,247,28,0,248,229,6,101,95,176,76,205,13,64,154,226,4,0,0,
-50,133,61,176,18,91,162,0,83,118,185,123,143,129,88,64,240,1,32,95,
-79,176,65,121,98,80,224,104,8,128,103,197,183,228,21,1,0,58,176,4,
-68,183,0,58,175,243,96,199,103,172,130,164,192,75,226,169,7,175,237,242,
-6,6,8,117,110,100,101,102,105,110,101,100,113,252,175,206,247,140,7,175,
-147,111,229,99,172,72,158,99,14,0,95,72,200,0,83,238,118,11,65,128,
-238,68,2,143,254,85,206,211,126,143,244,192,33,128,249,240,18,1,0,95,
-79,206,0,58,175,232,2,66,32,95,116,170,112,33,175,231,0,85,97,203,
-124,186,80,116,142,204,0,80,96,7,97,114,225,113,0,112,151,64,120,97,
-11,99,226,128,212,129,180,2,95,54,55,163,167,73,81,176,7,0,89,162,
-99,252,82,3,247,114,1,194,83,0,67,103,224,150,161,128,191,65,5,214,
-217,161,2,1,55,48,128,155,97,210,175,251,4,105,110,118,32,58,175,228,
-4,115,104,114,32,58,175,203,72,213,175,107,0,97,128,23,129,143,4,115,
-104,108,32,58,175,47,2,43,32,58,175,38,2,45,32,58,175,35,2,73,
-32,58,175,33,230,68,7,175,43,130,171,100,158,175,37,106,22,74,233,0,
-95,74,252,0,95,75,13,0,95,75,31,0,95,75,48,0,95,75,66,106,
-16,149,40,74,15,96,9,0,58,172,37,131,180,98,189,131,193,96,37,0,
-55,131,118,69,88,172,8,224,29,1,224,49,1,224,39,5,230,251,0,195,
-75,172,34,74,110,171,200,2,62,32,58,171,197,74,106,171,196,2,60,32,
-58,171,193,138,103,171,194,106,60,75,144,0,95,75,161,0,58,171,202,74,
-57,171,177,65,98,171,176,2,80,32,58,171,175,196,14,164,73,194,34,224,
-20,11,224,17,8,224,14,5,224,11,2,192,8,229,137,0,172,17,250,174,
-5,172,24,4,110,101,103,32,58,172,20,2,42,32,58,172,16,2,45,32,
-58,172,8,2,43,32,58,171,252,224,148,68,0,58,172,64,199,83,64,17,
-225,225,0,73,127,68,90,66,26,75,223,64,12,66,28,69,237,1,64,58,
-172,23,4,95,51,55,32,58,172,22,2,73,32,58,172,20,64,54,66,76,
-76,10,0,58,172,27,64,29,128,224,64,9,168,102,7,109,97,108,108,111,
-99,32,58,172,20,13,73,79,46,112,101,114,102,111,114,109,73,79,32,58,
-172,30,224,179,2,0,58,172,35,2,85,32,58,172,20,224,219,14,0,58,
-172,39,64,19,0,95,127,70,0,95,109,21,236,50,2,103,237,0,58,172,
-53,6,114,97,105,115,101,32,58,172,12,7,65,46,114,101,97,100,32,58,
-172,4,13,73,79,46,103,101,116,65,114,103,82,101,102,32,58,171,138,0,
-95,70,104,67,63,123,218,99,67,64,95,224,199,0,1,62,62,95,153,128,
-42,105,126,128,33,1,95,49,231,86,0,1,49,55,128,65,88,81,192,9,
-0,50,71,41,64,9,0,58,171,181,186,213,73,119,64,52,119,110,64,69,
-108,188,254,222,4,96,32,116,227,192,32,0,95,150,117,161,168,0,55,88,
-69,224,47,12,107,103,96,155,143,64,129,18,78,207,129,14,70,14,130,28,
-253,172,0,119,85,231,7,0,0,50,211,192,128,253,233,57,0,69,139,224,
-11,2,96,197,101,26,0,58,171,153,96,59,140,148,164,150,0,51,97,196,
-108,34,130,110,73,193,129,62,74,61,96,36,64,180,101,204,128,226,0,58,
-128,224,2,75,32,58,225,220,1,1,64,58,194,136,0,58,162,125,9,79,
-46,114,101,116,117,114,110,32,58,225,212,0,0,62,68,100,128,196,2,80,
-32,58,128,187,227,74,47,0,58,227,157,3,226,142,9,237,130,1,130,118,
-64,200,1,95,50,86,129,131,193,224,0,255,224,0,255,224,0,255,224,0,
-255,224,0,255,224,0,255,224,0,255,224,0,255,224,0,198,1,32,125,
-};
-unsigned char *combexpr = data;
-int combexprlen = 126219;
+122,76,90,49,39,243,1,0,26,118,56,46,48,10,50,51,53,50,10,65,
+32,95,48,32,95,50,51,32,64,95,51,52,53,32,64,66,224,15,2,6,
+53,55,32,64,64,66,32,224,18,3,17,52,57,32,64,64,64,83,39,32,
+66,32,64,66,39,32,67,32,83,64,50,6,83,32,67,39,32,83,39,128,
+10,24,64,95,49,50,55,32,95,51,53,57,32,64,102,114,111,109,85,84,
+70,56,32,34,45,104,34,64,57,15,64,67,39,66,32,85,32,95,51,57,
+57,32,95,52,48,48,64,19,1,75,50,96,25,224,70,29,0,63,224,70,
+61,4,45,104,101,108,112,224,74,11,0,52,224,74,41,6,118,101,114,115,
+105,111,110,224,77,9,3,50,51,53,32,224,40,1,8,77,105,99,114,111,
+72,115,44,32,160,47,0,32,64,48,96,35,4,95,52,49,50,32,128,10,
+224,46,1,16,44,32,99,111,109,98,105,110,97,116,111,114,32,102,105,108,
+101,224,55,5,2,52,49,51,96,111,224,172,0,2,83,39,32,64,123,2,
+64,67,32,224,166,14,6,110,117,109,101,114,105,99,224,174,5,2,66,32,
+80,192,250,64,131,224,77,0,96,0,65,250,64,248,96,90,64,5,2,95,
+56,50,130,8,64,109,9,95,52,49,52,32,95,50,49,32,64,64,115,5,
+52,49,54,32,64,35,64,12,0,66,128,80,64,7,224,209,5,6,102,108,
+97,103,115,32,61,96,191,7,64,95,49,49,56,32,95,52,96,62,96,0,
+0,67,128,100,162,113,0,83,64,27,96,138,128,121,224,23,4,96,249,224,
+23,10,97,187,65,4,0,66,66,159,10,95,52,50,55,32,64,85,32,75,
+32,65,128,99,0,67,66,174,2,39,32,64,96,208,9,95,52,50,56,32,
+64,95,52,50,57,65,50,3,67,32,95,55,66,253,2,95,49,52,66,243,
+0,75,96,161,2,50,50,51,192,105,3,67,39,32,80,64,231,0,39,64,
+212,0,50,64,221,8,95,56,52,55,32,95,53,50,50,224,224,2,11,99,
+111,109,109,97,110,100,45,108,105,110,101,64,228,2,35,48,32,96,3,129,
+86,3,95,51,52,51,226,172,0,128,143,4,95,50,51,49,53,162,54,1,
+32,67,98,2,161,16,64,9,2,56,32,64,64,190,97,5,64,198,96,149,
+224,43,0,128,149,1,95,50,131,146,163,145,3,32,95,56,49,97,162,0,
+51,64,204,1,51,49,64,76,65,133,64,115,129,93,128,60,129,209,1,95,
+49,96,224,226,47,2,98,61,1,56,52,192,13,5,79,32,35,52,54,32,
+129,14,193,27,3,67,39,32,79,161,220,66,130,224,8,0,160,6,161,60,
+192,45,96,0,9,58,50,51,53,49,32,64,10,65,32,65,105,224,1,19,
+0,83,65,94,2,51,49,32,65,53,2,95,49,51,64,250,162,70,1,79,
+32,224,140,2,96,98,65,196,64,25,97,190,224,205,0,226,254,4,224,192,
+4,1,95,55,96,145,160,152,0,79,65,138,0,49,64,4,4,51,32,73,
+32,64,227,41,2,5,108,105,98,47,103,109,132,28,96,56,128,241,97,173,
+0,53,227,82,3,3,47,108,105,98,224,37,1,224,66,3,3,111,117,116,
+46,67,189,162,233,96,199,224,6,28,224,161,3,192,20,0,51,99,152,192,
+6,224,27,4,224,113,1,6,100,101,102,97,117,108,116,160,112,64,35,65,
+116,0,48,97,116,2,66,32,89,97,241,98,32,0,83,194,201,65,50,4,
+67,32,64,64,80,226,245,0,162,21,64,5,64,13,163,253,132,255,228,83,
+14,132,68,224,57,42,0,118,224,57,48,0,113,224,57,48,0,114,224,57,
+48,0,108,224,57,48,0,115,224,57,48,1,67,82,224,58,49,0,87,224,
+58,49,224,57,48,0,84,224,57,48,3,88,67,80,80,224,60,48,0,122,
+224,57,48,0,81,224,57,2,195,26,198,78,128,73,231,245,19,0,111,192,
+61,64,46,0,82,96,54,229,142,2,197,134,70,93,165,134,224,105,49,2,
+112,116,99,224,108,20,128,85,229,249,0,69,58,128,114,103,10,164,182,134,
+233,1,64,67,68,202,198,72,224,144,12,161,51,64,14,161,69,96,108,232,
+91,4,0,49,64,100,0,35,71,48,128,0,167,187,228,83,0,224,57,2,
+96,87,128,105,225,161,1,192,37,224,38,0,225,170,6,128,95,1,49,48,
+224,96,0,224,61,43,225,117,0,224,61,45,0,54,224,61,5,224,67,0,
+224,61,11,0,67,224,61,6,0,54,71,186,224,60,2,0,66,225,91,1,
+225,33,8,224,62,10,0,55,201,218,224,119,9,224,178,18,0,56,200,88,
+224,53,36,0,57,199,165,224,53,36,0,55,193,29,224,195,2,226,31,8,
+0,49,232,234,0,160,37,102,121,224,51,74,0,49,192,195,224,103,35,108,
+200,224,103,38,203,27,224,51,33,227,35,0,128,36,169,186,74,111,2,54,
+55,57,200,165,4,89,32,66,32,80,105,222,163,177,2,49,48,54,103,177,
+0,80,105,95,3,52,52,50,32,107,89,171,51,0,49,98,93,72,180,106,
+40,163,246,0,49,73,130,1,49,49,96,11,104,41,2,50,48,56,224,12,
+0,160,0,96,130,228,62,22,109,230,99,59,64,43,128,138,3,64,95,57,
+53,227,15,0,224,0,2,224,79,12,107,36,192,77,0,52,234,134,1,1,
+49,57,192,137,227,81,1,64,16,129,25,0,85,128,10,160,68,0,67,234,
+200,12,202,82,128,49,0,90,224,60,1,224,10,0,224,220,23,224,76,1,
+229,27,4,0,57,128,18,229,27,5,224,223,28,0,54,224,223,11,224,130,
+20,0,55,224,130,13,1,55,52,67,244,224,130,5,224,70,64,224,197,10,
+224,72,0,77,5,230,161,1,224,43,20,230,205,9,225,198,33,224,58,1,
+225,198,58,224,76,1,224,252,5,0,57,66,164,225,198,11,109,123,238,145,
+9,7,85,110,107,110,111,119,110,32,78,153,1,58,32,103,100,203,230,172,
+116,2,35,49,48,128,76,237,184,3,160,156,160,249,64,128,165,34,76,146,
+2,49,52,49,140,44,2,50,52,52,231,199,3,0,46,135,196,224,34,20,
+136,84,224,25,11,0,97,200,1,160,241,174,138,140,254,224,239,2,232,24,
+63,225,196,12,0,52,224,65,1,0,95,231,94,0,224,39,11,68,139,224,
+39,27,0,50,224,39,30,228,147,1,224,39,11,80,151,160,40,228,110,1,
+224,61,2,228,65,3,224,108,26,224,46,8,224,39,14,228,218,3,224,39,
+19,228,34,3,224,39,17,0,50,69,167,224,79,28,227,249,1,224,39,21,
+227,216,1,5,95,54,49,32,95,55,112,222,1,53,55,160,9,1,51,50,
+166,84,128,0,224,64,0,0,83,224,64,11,97,98,0,48,128,57,82,122,
+0,53,177,234,128,57,131,175,135,11,0,58,128,69,84,86,5,56,49,51,
+32,75,32,80,184,131,221,224,1,21,136,114,224,0,5,224,53,44,224,50,
+41,224,47,38,224,44,35,224,41,32,224,38,29,224,35,26,224,32,23,224,
+29,20,224,26,17,224,23,14,224,20,11,224,17,8,224,14,5,224,11,2,
+192,8,96,5,100,245,72,197,224,0,13,66,88,0,56,226,88,5,0,90,
+224,147,4,224,1,15,226,34,10,226,88,255,224,37,23,224,35,4,224,32,
+23,224,29,20,224,26,17,224,23,14,224,20,11,224,17,8,224,14,5,224,
+11,2,192,8,96,5,226,86,19,66,85,0,55,226,85,5,224,101,1,104,
+142,225,247,25,64,1,226,46,10,224,55,26,224,53,10,224,50,41,224,47,
+38,224,44,35,224,41,32,224,38,29,224,35,26,224,32,23,224,29,20,224,
+26,17,224,23,14,224,20,11,226,45,14,66,40,0,54,226,40,15,64,1,
+162,44,226,46,255,224,41,20,224,38,29,224,35,26,224,32,23,224,29,20,
+224,26,17,226,3,12,66,1,0,53,226,1,17,193,255,224,85,7,224,1,
+11,225,254,255,224,38,20,224,35,26,224,32,23,224,29,20,224,26,17,224,
+23,14,228,25,13,66,22,0,52,228,24,19,228,26,2,226,28,255,224,41,
+19,224,38,29,224,35,26,224,32,23,224,29,20,225,235,11,65,233,0,51,
+225,233,21,225,235,3,225,236,255,224,41,19,224,38,29,224,35,26,224,32,
+23,225,207,10,65,206,0,50,225,206,23,128,1,225,212,2,225,215,255,224,
+41,21,225,110,7,65,107,0,49,225,107,29,192,1,225,115,5,64,0,224,
+49,23,64,1,225,119,64,224,193,3,64,189,159,73,224,189,4,64,161,224,
+89,23,64,1,226,11,246,224,38,29,224,35,26,224,32,23,224,29,20,224,
+26,17,224,23,14,224,20,11,224,17,8,224,14,5,224,11,2,238,115,17,
+0,58,150,190,227,10,35,227,12,11,226,121,48,224,153,2,64,138,241,82,
+6,224,69,11,224,124,3,224,31,11,224,1,7,224,117,11,224,53,44,224,
+50,41,224,47,38,224,44,35,224,41,32,224,38,29,224,35,26,226,67,9,
+65,176,240,173,16,224,1,7,226,51,6,224,40,17,224,1,1,225,185,205,
+225,71,6,65,68,0,54,227,128,35,227,124,8,224,46,21,128,1,225,74,
+114,224,239,4,64,237,238,181,18,224,1,7,224,235,7,224,43,19,192,1,
+226,53,161,226,9,5,65,26,237,185,22,224,1,11,229,139,10,224,88,2,
+64,84,172,36,6,50,48,57,32,95,57,53,89,69,3,57,53,53,32,96,
+26,170,112,7,50,48,55,32,95,50,52,54,89,102,96,56,2,95,50,52,
+159,172,64,12,14,67,32,83,32,95,49,50,55,32,95,53,49,32,64,35,
+92,118,224,18,6,224,37,10,94,123,224,18,6,158,9,224,18,4,0,52,
+224,18,9,89,210,0,67,127,233,224,18,0,127,241,76,236,252,128,1,19,
+116,111,69,110,117,109,58,32,111,117,116,32,111,102,32,114,97,110,103,101,
+156,146,128,220,64,194,1,49,53,127,0,65,12,64,103,90,158,0,50,97,
+21,2,95,49,48,122,57,4,64,95,49,56,57,125,69,129,23,3,64,85,
+32,83,221,58,2,67,32,60,160,178,224,18,6,160,159,224,18,3,64,159,
+1,85,32,96,6,64,7,96,90,224,35,7,64,129,1,85,32,96,6,64,
+7,64,88,96,36,224,91,4,129,71,224,55,4,64,194,1,85,32,96,6,
+64,7,129,213,1,85,32,97,133,189,155,189,78,97,183,128,252,158,9,128,
+5,157,129,5,49,52,50,32,95,54,64,52,3,95,50,52,53,224,47,0,
+224,13,6,1,67,39,66,164,3,95,50,49,51,224,81,3,65,25,224,26,
+14,161,105,0,56,224,67,1,2,95,50,56,226,70,1,66,98,235,103,28,
+226,196,4,224,34,13,224,1,5,230,26,205,224,41,32,224,38,29,231,177,
+8,65,143,236,57,10,161,127,224,84,15,224,1,3,225,119,255,224,38,20,
+224,35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,224,17,
+8,224,14,5,236,49,16,3,58,50,51,50,140,48,0,83,100,18,0,66,
+229,190,0,5,51,53,57,32,64,75,64,51,0,66,64,27,1,95,48,68,
+7,127,160,0,55,68,66,132,233,95,150,128,9,224,31,0,2,64,67,39,
+64,119,3,95,55,57,53,70,155,127,225,8,66,32,95,52,52,48,32,95,
+57,86,227,68,229,1,55,57,70,184,1,50,49,96,15,64,31,0,67,96,
+75,1,66,32,102,24,4,64,95,50,51,53,230,30,2,11,67,97,110,110,
+111,116,32,102,105,110,100,32,134,22,3,64,66,32,85,64,46,133,14,0,
+56,101,50,128,155,0,55,64,31,3,95,50,51,50,101,99,224,10,3,64,
+9,0,55,103,40,0,50,140,151,64,109,0,54,160,182,224,227,7,73,196,
+65,60,3,95,52,49,52,69,148,64,65,224,33,4,4,50,51,50,53,32,
+192,235,224,128,0,64,82,1,57,57,158,110,73,25,2,79,32,35,69,112,
+97,70,128,29,224,112,1,128,41,224,234,6,0,32,192,224,5,89,32,66,
+32,80,32,64,56,128,99,3,67,39,32,89,96,12,0,32,64,15,0,64,
+64,28,96,145,126,219,70,96,128,174,1,49,48,102,183,133,226,0,79,96,
+94,4,50,54,32,95,49,68,40,193,111,160,141,128,37,129,153,0,64,161,
+154,70,6,65,177,65,36,140,11,96,112,98,69,128,6,160,15,64,112,64,
+136,7,95,54,54,50,32,64,95,52,81,128,224,6,0,1,51,49,65,113,
+4,66,32,95,49,57,224,28,1,64,82,0,54,130,105,4,32,95,49,49,
+53,198,203,225,115,2,104,63,130,77,225,81,0,160,37,225,134,1,200,75,
+0,51,104,15,2,95,51,53,160,37,226,57,12,22,103,101,116,68,105,114,
+101,99,116,111,114,121,67,111,110,116,101,110,116,115,58,32,99,130,79,3,
+111,112,101,110,193,110,129,94,2,83,39,32,65,91,64,5,225,233,4,224,
+136,1,129,113,98,121,0,83,232,214,0,224,138,5,226,150,0,224,65,3,
+104,41,224,24,8,0,51,135,114,129,225,96,217,225,190,0,226,90,8,1,
+95,52,66,80,97,85,0,49,224,18,0,97,89,104,250,94,104,163,207,139,
+145,9,94,99,95,100,95,110,97,109,101,32,64,19,138,138,7,94,114,101,
+97,100,100,105,114,96,18,138,72,0,75,224,145,5,0,55,66,174,225,128,
+4,194,168,0,66,130,210,225,91,1,64,91,0,58,129,63,64,167,0,48,
+98,204,192,135,224,66,29,6,118,101,114,115,105,111,110,224,69,1,1,52,
+48,100,23,1,51,49,97,47,224,69,30,13,99,111,109,112,105,108,101,114,
+58,32,109,104,115,45,96,74,1,95,57,98,130,224,64,30,6,100,101,112,
+101,110,100,115,224,134,1,1,55,49,128,38,76,221,0,85,99,112,160,51,
+0,64,128,231,192,66,2,79,32,35,67,54,99,80,128,187,97,140,2,50,
+49,52,160,10,0,67,98,74,192,129,96,126,224,118,1,15,101,120,112,111,
+115,101,100,45,109,111,100,117,108,101,115,58,162,138,165,79,227,1,3,0,
+85,99,160,73,239,226,19,4,224,79,6,4,111,116,104,101,114,224,77,7,
+192,60,130,40,228,127,1,1,95,54,196,128,105,224,228,131,10,64,24,129,
+213,0,56,76,89,224,0,1,66,60,140,106,128,170,0,66,224,151,7,226,
+188,0,227,181,2,74,181,1,54,53,202,181,0,52,67,255,138,245,229,8,
+14,15,66,117,105,108,100,105,110,103,32,112,97,99,107,97,103,101,128,147,
+170,186,69,1,163,171,230,123,7,67,158,66,64,5,54,32,64,95,55,54,
+99,77,229,51,1,67,180,196,98,132,197,227,232,1,1,95,52,231,33,0,
+96,29,128,48,0,39,224,5,8,224,230,3,192,131,224,232,30,192,234,128,
+10,224,239,5,3,87,114,105,116,224,238,9,101,211,98,120,226,181,9,2,
+32,116,111,161,168,0,55,196,6,224,189,1,128,2,65,153,232,9,0,224,
+183,2,161,160,0,39,96,2,64,184,1,54,52,65,46,160,70,160,46,2,
+50,51,49,99,203,160,79,134,97,96,8,200,42,77,216,65,126,3,50,51,
+49,56,97,6,0,56,66,247,0,85,102,181,3,64,85,32,65,96,156,0,
+52,131,137,224,21,5,109,180,195,147,1,51,53,168,74,164,62,227,255,0,
+64,15,132,8,161,50,225,170,6,192,196,225,127,29,225,128,22,6,67,111,
+109,112,114,101,115,68,143,3,32,116,105,109,193,129,129,74,225,131,0,101,
+126,79,76,72,221,134,140,3,55,52,32,95,142,128,0,64,225,156,2,1,
+109,115,194,176,136,122,68,81,227,23,0,1,49,50,72,167,64,87,0,54,
+101,246,6,51,54,56,32,95,55,56,96,212,195,109,70,53,128,183,97,33,
+129,91,131,124,141,132,1,66,32,232,35,1,225,145,1,168,10,248,64,1,
+128,7,230,91,4,141,159,65,175,100,210,0,55,71,165,96,88,140,77,0,
+83,196,241,2,54,53,49,97,223,0,49,66,24,2,95,50,57,64,179,166,
+242,104,80,2,64,35,52,128,82,166,136,131,14,0,80,227,155,1,98,129,
+224,50,4,101,47,161,8,168,71,99,148,103,227,65,236,1,95,52,73,157,
+193,41,66,20,200,91,0,49,196,46,68,185,65,17,0,54,99,222,64,14,
+1,54,54,70,54,64,20,80,126,224,163,11,0,73,64,9,196,198,231,55,
+1,98,127,72,55,226,14,8,195,135,103,65,104,45,9,102,32,116,104,101,
+32,102,111,114,109,96,20,0,45,198,188,131,131,98,21,0,49,73,107,1,
+51,48,175,205,0,58,129,245,97,170,224,1,1,235,177,30,224,11,2,192,
+8,73,241,160,86,183,88,2,50,49,54,69,189,0,49,66,126,64,22,137,
+178,128,58,0,95,96,144,73,218,0,56,82,51,194,255,0,55,65,42,96,
+246,70,9,0,55,99,132,112,118,92,174,3,95,49,57,53,129,209,64,77,
+0,54,226,102,0,163,5,200,249,65,100,229,38,5,204,11,195,146,1,67,
+32,138,71,241,231,6,15,112,107,103,80,97,116,104,32,105,115,32,101,109,
+112,116,121,230,163,0,130,166,129,243,96,6,0,79,66,55,0,79,235,57,
+0,192,27,128,135,96,105,134,123,231,41,5,228,17,13,64,12,70,14,1,
+54,49,131,168,177,118,228,15,22,6,73,110,115,116,97,108,108,229,147,9,
+64,99,168,12,229,144,6,0,105,234,78,0,64,81,230,28,0,233,92,5,
+196,82,70,133,224,13,1,229,180,0,224,208,4,4,95,50,51,48,51,68,
+113,229,223,0,131,83,96,226,128,50,224,253,10,64,53,147,138,139,219,161,
+63,225,172,1,64,54,232,8,0,225,91,2,161,123,135,83,231,204,19,161,
+81,146,199,231,192,14,4,99,114,101,97,116,231,182,1,224,84,6,97,66,
+224,219,1,69,32,128,107,2,32,95,56,171,70,129,104,96,193,64,176,110,
+50,106,104,66,87,133,36,2,95,57,52,101,86,96,9,96,233,236,207,7,
+134,158,108,108,1,95,56,67,152,202,162,233,193,10,224,101,3,234,136,4,
+238,168,1,64,0,0,75,174,78,66,218,1,95,52,131,236,67,46,139,118,
+70,231,2,90,32,75,102,182,64,21,182,3,105,100,69,128,64,83,0,50,
+131,173,181,201,68,191,79,82,64,25,141,122,64,32,99,121,129,226,0,80,
+109,226,0,32,133,25,68,200,225,100,1,1,46,47,129,95,135,86,167,99,
+64,72,0,48,128,72,179,174,1,50,51,86,45,2,50,51,48,164,39,133,
+231,129,131,64,121,0,54,165,124,64,28,73,241,233,218,0,67,105,1,95,
+53,65,144,64,42,143,61,64,49,128,61,96,54,199,116,64,219,0,53,70,
+214,237,239,1,64,48,64,126,64,64,224,125,1,65,5,64,21,229,163,1,
+1,95,52,90,120,64,26,129,67,162,112,194,160,80,47,65,231,1,95,52,
+103,211,194,143,224,30,8,0,56,150,33,224,30,6,2,95,52,56,65,239,
+227,45,8,2,95,51,56,96,83,144,49,96,125,129,171,168,213,96,212,224,
+99,2,110,178,105,141,65,242,1,35,53,108,7,1,64,75,64,24,128,36,
+65,153,163,14,235,100,0,162,227,167,209,130,4,0,50,96,223,228,65,2,
+3,95,52,48,49,64,4,1,51,32,64,66,66,145,0,55,228,248,1,71,
+227,129,136,229,15,1,129,155,238,135,0,150,96,231,100,4,128,211,129,9,
+228,176,2,229,82,3,131,240,168,21,0,85,71,228,128,52,238,75,4,0,
+48,130,163,71,136,160,22,64,193,130,165,0,48,194,165,0,89,230,2,0,
+0,66,64,134,136,102,64,17,224,54,2,224,140,0,160,87,130,152,2,94,
+109,107,174,141,65,83,166,186,233,229,7,230,102,3,235,233,1,229,93,9,
+0,56,94,110,234,253,1,224,42,1,120,60,103,227,114,51,0,90,228,229,
+13,71,70,230,10,0,239,98,0,1,64,67,134,109,128,0,64,27,0,85,
+160,35,128,9,160,10,224,183,11,229,233,2,205,33,131,209,161,14,160,167,
+230,10,2,224,21,8,224,24,1,192,239,165,248,160,80,172,145,224,96,3,
+231,13,31,235,19,28,16,116,111,112,32,108,101,118,101,108,32,100,101,102,
+110,115,58,32,96,0,236,154,0,229,91,2,2,55,51,57,153,50,235,32,
+5,164,145,96,22,231,44,6,7,40,117,110,112,114,117,110,101,179,210,224,
+76,3,224,64,2,0,95,107,20,67,19,0,49,232,12,2,225,18,24,237,
+170,9,65,11,72,149,0,53,91,27,98,47,186,72,227,173,1,151,62,161,
+13,164,69,131,165,239,244,4,224,195,2,0,61,160,187,0,32,64,76,243,
+231,1,192,0,225,202,5,130,252,224,180,1,173,125,75,2,64,62,166,200,
+226,79,1,226,158,4,103,178,0,55,102,249,64,4,228,115,6,224,55,4,
+226,137,12,224,119,5,233,183,4,226,49,68,9,102,105,110,97,108,32,112,
+97,115,115,130,43,226,49,3,163,151,97,82,128,59,226,53,0,128,14,237,
+89,18,230,243,2,237,89,4,163,239,161,255,129,5,205,1,130,161,238,245,
+16,224,225,1,2,95,50,50,169,39,169,94,228,60,1,235,71,3,85,71,
+2,49,50,57,160,147,172,131,89,123,64,27,0,57,234,84,0,78,218,160,
+115,2,95,52,56,171,109,1,55,48,64,41,0,56,230,241,1,229,242,3,
+231,207,2,0,104,192,220,175,24,102,51,0,50,109,127,0,56,129,24,64,
+14,241,142,0,161,239,129,142,226,111,1,161,99,192,30,225,87,3,96,19,
+96,34,0,50,72,191,117,147,97,226,76,13,64,33,2,35,49,48,172,192,
+225,130,17,6,32,108,105,110,101,115,47,225,136,2,236,11,4,229,134,3,
+100,237,194,255,160,123,100,211,128,155,109,173,1,50,50,72,124,225,5,2,
+3,99,111,109,98,192,91,165,6,224,53,4,126,81,224,53,9,234,107,1,
+225,195,3,3,95,57,48,50,226,161,2,3,109,104,115,99,224,42,7,229,
+201,0,230,24,11,79,159,72,42,224,46,1,226,86,4,232,65,0,224,168,
+0,227,80,7,1,95,55,74,61,225,208,0,121,62,64,189,129,206,0,57,
+212,54,234,252,6,224,11,0,209,151,239,84,1,193,223,3,95,50,50,54,
+135,147,1,50,57,209,39,98,57,192,128,2,95,51,54,162,227,3,95,50,
+49,56,66,119,237,143,5,31,84,104,101,32,45,114,32,102,108,97,103,32,
+99,117,114,114,101,110,116,108,121,32,111,110,108,121,32,119,111,114,107,115,
+4,32,119,105,116,104,85,85,161,46,64,104,162,12,209,222,1,50,50,75,
+49,64,117,104,162,7,95,49,49,57,56,32,95,56,112,82,112,179,225,121,
+2,2,97,105,110,227,186,3,2,58,50,50,66,183,107,52,130,41,197,200,
+255,53,0,78,74,97,249,64,103,121,146,3,90,32,64,83,96,106,0,39,
+96,113,128,16,161,25,3,95,56,57,48,224,123,1,1,57,51,64,11,228,
+93,1,228,168,5,5,68,117,112,108,105,99,76,161,0,105,77,232,1,110,
+99,237,222,3,197,248,64,7,112,246,166,1,230,2,10,1,97,116,128,55,
+118,53,96,41,224,119,2,224,0,1,66,233,72,72,224,91,0,1,95,52,
+140,240,225,207,2,227,167,4,236,159,1,68,123,102,88,81,234,71,80,147,
+65,224,131,2,0,125,225,85,1,64,31,1,85,32,172,162,228,17,2,90,
+59,224,13,1,238,120,2,174,123,160,250,224,17,2,192,20,227,202,2,224,
+48,8,224,51,10,224,57,3,227,188,3,224,29,17,224,65,3,135,35,195,
+103,163,109,224,203,7,96,2,128,41,224,37,8,230,192,0,236,191,1,161,
+209,65,102,1,49,50,115,68,137,194,73,217,1,95,49,72,15,68,224,0,
+95,86,211,134,226,2,95,55,54,161,154,167,214,65,84,1,75,52,161,119,
+224,159,6,68,101,1,49,50,109,33,2,49,50,53,244,173,3,128,1,100,
+90,224,234,8,225,5,2,192,40,194,196,129,41,64,133,198,82,224,34,3,
+224,62,0,99,227,128,120,224,34,3,64,18,229,231,1,242,64,0,163,45,
+4,64,83,32,95,57,113,11,1,49,49,141,44,224,96,1,128,146,133,159,
+147,149,224,100,6,100,202,105,44,160,17,2,95,49,49,100,203,192,107,225,
+10,11,225,4,2,192,162,224,166,5,192,157,160,221,234,200,1,160,185,193,
+22,132,93,0,56,230,165,1,96,61,96,147,96,209,102,230,64,211,214,134,
+227,64,1,67,80,143,24,231,8,4,128,0,226,48,0,0,67,97,231,0,
+50,175,186,235,248,6,3,64,66,32,82,64,214,122,24,64,0,173,247,128,
+238,233,133,5,236,32,1,143,34,228,48,5,1,65,32,227,172,0,224,122,
+1,143,62,226,112,1,161,21,96,21,228,139,3,128,207,254,81,0,228,57,
+12,228,23,2,2,64,94,42,231,69,0,143,160,160,65,87,238,234,171,3,
+163,127,138,103,160,9,131,32,231,217,3,1,95,49,151,142,96,238,100,98,
+160,133,193,60,65,59,192,86,2,80,32,90,241,7,0,132,182,192,25,65,
+31,0,85,96,42,130,129,3,85,32,75,51,64,2,160,11,224,53,0,86,
+167,224,11,1,229,227,0,0,55,81,5,98,155,229,236,13,229,162,8,1,
+78,111,76,189,3,105,110,105,116,87,218,4,102,111,117,110,100,85,197,187,
+237,197,217,227,111,0,70,149,181,94,182,104,246,83,10,65,64,246,83,3,
+5,95,52,52,50,32,35,65,126,64,62,176,246,0,54,169,246,0,54,96,
+61,0,54,248,147,0,228,115,6,130,201,140,232,170,100,0,57,73,117,0,
+57,96,44,192,68,0,49,98,229,202,117,163,119,64,108,0,54,209,141,114,
+80,2,95,50,50,145,251,98,12,125,223,137,100,129,216,97,56,119,206,115,
+90,0,52,128,7,65,81,248,75,10,196,8,130,206,197,117,133,85,65,150,
+130,246,109,86,248,91,0,195,10,224,94,36,162,116,165,19,224,108,0,96,
+176,143,181,162,5,224,107,4,96,106,227,122,0,103,127,0,54,128,224,195,
+47,65,43,226,14,8,10,35,105,110,99,108,117,100,101,32,92,34,237,188,
+0,64,47,2,79,32,35,78,15,238,175,1,64,103,235,167,15,7,109,104,
+115,102,102,105,46,104,131,94,98,149,4,49,32,95,51,53,66,74,225,73,
+24,150,236,224,245,6,224,13,0,100,117,192,36,224,46,2,224,10,6,164,
+158,225,125,5,129,15,129,19,225,25,0,225,17,0,130,59,1,50,50,98,
+105,228,78,0,224,212,1,31,115,116,97,116,105,99,32,115,116,114,117,99,
+116,32,102,102,105,95,101,110,116,114,121,32,116,97,98,108,101,91,93,32,
+2,61,32,123,64,239,228,122,6,192,84,67,192,224,77,3,4,123,32,48,
+44,48,136,154,224,22,3,1,125,59,224,17,7,224,111,8,1,42,120,64,
+11,96,117,1,32,61,128,125,96,52,228,177,3,234,200,6,24,85,110,105,
+109,112,108,101,109,101,110,116,101,100,32,70,70,73,32,102,101,97,116,117,
+114,101,225,160,0,2,50,50,56,122,235,227,144,1,81,238,161,178,64,29,
+99,93,2,50,50,56,164,111,225,197,1,65,98,65,186,232,197,1,225,142,
+1,133,43,160,5,193,231,0,83,99,112,0,83,66,50,64,63,72,54,229,
+45,0,96,3,96,12,167,126,198,41,136,39,224,85,0,99,106,76,230,4,
+61,61,32,64,35,166,116,231,77,5,232,10,1,243,114,2,117,176,2,50,
+50,57,168,22,226,7,2,68,18,148,224,141,75,192,100,199,126,116,244,0,
+83,96,15,165,255,100,56,232,13,0,212,97,97,49,225,121,1,5,100,121,
+110,97,109,105,173,79,64,73,0,85,97,107,76,150,224,226,3,224,73,26,
+6,119,114,97,112,112,101,114,224,73,7,68,233,192,73,225,24,1,224,65,
+2,227,163,15,130,206,236,112,2,97,9,0,95,124,43,193,205,192,232,186,
+209,193,210,138,136,72,111,239,177,26,224,97,0,194,40,104,148,1,50,50,
+118,94,0,49,102,159,96,28,0,85,150,62,128,23,119,227,64,0,224,135,
+12,226,106,11,128,19,225,58,3,246,55,8,242,130,4,128,47,196,115,224,
+96,0,194,162,224,87,3,225,83,4,150,65,168,133,196,151,233,152,1,98,
+229,225,138,4,0,66,71,251,66,115,185,128,246,98,0,225,255,3,225,185,
+36,3,118,97,108,117,163,185,224,105,13,103,42,1,67,39,64,106,0,95,
+105,146,192,245,224,141,7,224,17,4,224,142,6,226,234,1,104,193,133,121,
+226,105,1,64,38,238,80,18,230,85,6,1,98,97,104,84,9,101,105,103,
+110,32,105,109,112,111,114,174,22,254,23,11,99,138,0,51,167,157,0,65,
+135,172,151,75,105,36,64,14,151,30,2,75,50,32,64,12,247,26,1,64,
+1,223,188,224,13,9,231,61,1,254,44,0,0,58,130,110,224,105,2,67,
+79,224,105,2,67,168,1,10,65,230,6,4,5,71,69,84,82,65,87,229,
+165,7,11,71,69,84,84,73,77,69,77,73,76,76,73,224,27,7,2,97,
+99,111,112,33,224,19,4,6,100,100,95,70,73,76,69,224,23,11,3,117,
+116,102,56,224,23,8,0,115,144,28,224,19,4,1,116,97,224,19,12,0,
+50,224,20,7,4,99,97,108,108,111,99,234,224,21,4,3,108,111,115,101,
+114,71,224,21,4,224,171,9,2,101,120,112,224,18,7,4,102,108,117,115,
+104,224,59,8,3,102,111,112,101,224,145,8,2,102,114,101,98,172,224,19,
+3,2,103,101,116,224,60,8,5,103,101,116,101,110,118,224,21,7,7,105,
+115,119,105,110,100,111,119,224,148,8,2,108,111,103,224,18,7,0,109,224,
+230,12,6,109,100,53,65,114,114,97,127,76,224,23,6,0,66,225,129,11,
+7,109,100,53,83,116,114,105,110,224,94,9,3,101,109,99,112,224,70,9,
+4,101,109,109,111,118,224,225,8,1,112,117,224,225,9,225,194,10,3,115,
+113,114,116,224,19,8,4,121,115,116,101,109,224,21,7,225,235,10,5,116,
+109,112,110,97,109,224,122,8,1,117,110,225,94,11,5,117,110,108,105,110,
+107,224,21,7,3,114,101,97,100,224,42,8,3,119,114,105,116,226,24,9,
+5,112,101,101,107,80,116,102,127,224,22,4,2,111,107,101,224,22,14,3,
+87,111,114,100,224,69,11,224,23,11,66,247,13,108,122,55,55,95,99,111,
+109,112,114,101,115,115,111,224,82,8,224,34,0,1,100,101,224,36,21,2,
+114,108,101,224,70,22,64,33,224,69,23,2,98,119,116,224,69,22,64,33,
+224,69,19,64,235,4,95,117,105,110,116,227,205,8,65,29,224,25,14,192,
+51,1,49,54,224,52,16,224,26,10,192,53,0,51,227,251,8,224,53,0,
+224,26,10,192,53,1,54,52,224,53,16,224,26,10,64,53,224,212,16,224,
+211,16,224,210,17,224,209,17,224,208,17,224,207,17,224,206,17,224,205,17,
+3,117,115,104,111,227,135,9,129,3,224,26,13,64,53,224,52,17,224,51,
+17,65,82,225,107,16,224,207,15,224,205,15,224,97,13,1,108,111,228,186,
+9,128,98,224,25,12,64,51,224,50,16,224,49,16,1,117,108,224,102,18,
+224,103,17,224,104,17,224,51,16,1,102,108,224,255,13,224,23,10,5,115,
+105,122,101,111,102,225,25,11,160,25,224,100,11,192,26,224,27,11,70,206,
+1,100,105,227,215,8,103,56,224,23,10,69,76,224,46,11,2,95,100,95,
+229,167,11,1,99,104,224,44,10,127,241,224,20,7,4,103,101,116,99,119,
+229,50,8,6,103,101,116,95,98,117,102,224,180,11,3,98,95,114,100,224,
+27,17,1,119,114,224,27,11,6,110,101,119,95,109,112,122,224,144,8,4,
+112,122,95,97,98,231,126,8,96,22,0,100,224,147,8,96,22,0,110,224,
+22,12,1,99,109,232,69,8,64,22,64,197,224,47,12,64,24,1,115,105,
+224,25,15,0,117,224,25,12,82,197,1,95,115,224,56,16,224,30,0,224,
+61,14,229,194,9,64,22,2,109,117,108,224,22,14,1,95,50,233,26,10,
+64,27,1,110,101,232,61,9,8,112,122,95,112,111,112,99,111,117,226,158,
+9,64,27,1,115,117,231,113,8,64,22,5,102,100,105,118,95,113,224,104,
+16,0,116,96,30,224,182,12,4,116,115,116,98,105,224,106,12,0,120,224,
+231,9,5,119,97,110,116,95,103,129,161,240,71,3,224,0,94,75,105,0,
+54,244,84,4,1,95,52,125,121,179,239,118,74,80,143,237,28,1,240,140,
+1,1,95,49,80,187,160,32,0,54,91,218,157,161,240,173,1,64,94,147,
+238,2,85,32,90,114,26,0,90,176,27,141,247,86,187,1,50,50,124,167,
+143,4,96,10,128,5,96,60,144,24,219,134,80,119,77,229,108,94,208,104,
+214,19,192,26,0,95,237,0,5,4,123,32,92,34,38,65,93,88,99,246,
+176,3,224,34,1,5,92,34,44,32,48,44,92,78,67,89,1,114,95,96,
+45,211,126,224,38,1,1,125,44,96,24,96,0,109,132,224,104,9,224,103,
+32,224,98,24,193,22,224,106,21,112,181,128,68,224,39,11,64,112,128,39,
+174,54,192,151,247,150,2,65,172,110,91,224,61,8,224,169,30,128,174,225,
+184,2,65,183,142,69,66,68,83,212,64,7,118,26,2,95,49,54,111,35,
+64,34,142,89,225,218,12,250,79,0,208,116,146,14,175,24,149,124,96,8,
+151,121,1,50,50,81,58,224,189,6,225,201,1,97,36,112,225,3,55,51,
+32,64,155,74,152,197,96,211,64,121,65,68,1,50,55,94,146,1,50,54,
+66,226,224,17,4,0,55,64,49,122,217,239,116,7,1,49,50,121,243,224,
+116,1,207,105,16,38,32,109,117,115,116,32,98,101,32,80,116,114,47,70,
+117,110,171,168,78,254,240,92,15,2,40,72,115,128,40,0,41,193,89,224,
+43,7,176,189,64,5,96,186,241,89,7,64,171,149,112,211,59,225,26,0,
+162,76,96,244,97,6,160,43,129,13,227,63,1,147,9,65,143,97,149,129,
+136,97,113,179,140,158,251,160,87,97,40,243,62,0,82,4,0,50,68,11,
+207,247,225,145,6,5,114,101,116,117,114,110,162,144,96,42,222,104,226,194,
+1,224,50,6,1,59,32,160,52,66,137,64,22,6,95,85,110,105,116,40,
+115,162,214,250,103,12,2,79,32,35,88,71,225,21,0,146,245,227,144,2,
+64,32,222,186,224,65,0,88,15,1,48,55,226,253,4,194,249,1,53,54,
+150,72,100,218,1,53,54,91,57,68,151,161,58,224,110,6,185,46,90,47,
+163,83,97,103,0,85,221,164,195,1,227,51,10,145,91,225,56,10,64,252,
+1,116,111,162,204,227,201,3,64,92,66,141,224,49,8,225,33,35,64,122,
+145,201,67,139,130,9,117,220,154,19,122,71,0,85,250,103,0,0,55,96,
+223,64,120,249,233,0,65,241,67,236,3,49,51,57,56,224,131,3,98,199,
+64,31,250,181,1,0,56,70,31,4,95,49,48,48,56,113,228,64,250,1,
+10,65,227,127,5,99,81,184,45,64,34,0,54,224,92,12,12,80,114,105,
+109,105,116,105,118,101,115,46,73,79,192,103,134,105,116,208,131,0,224,202,
+0,96,179,180,218,192,31,244,130,0,224,244,9,213,4,64,29,0,85,226,
+251,1,195,21,225,9,4,160,43,245,80,1,128,139,134,184,227,7,12,226,
+203,0,163,9,96,93,68,203,225,212,5,229,208,11,225,215,0,226,6,5,
+254,62,3,229,198,10,229,194,4,227,30,7,64,172,133,173,69,36,155,71,
+101,105,163,216,2,67,32,60,161,64,132,13,247,254,3,96,21,161,79,103,
+145,0,85,164,50,224,36,3,165,111,86,101,192,89,226,77,9,101,117,160,
+32,64,57,226,108,7,96,68,224,211,1,229,81,3,226,20,2,192,18,128,
+0,224,115,2,100,219,1,95,54,249,88,2,130,137,2,50,50,55,96,195,
+184,139,253,189,12,165,228,225,87,8,17,78,111,116,32,97,32,118,97,108,
+105,100,32,67,32,116,121,112,101,221,185,1,49,53,133,134,65,90,134,229,
+164,119,229,252,17,226,207,2,4,70,108,111,97,116,116,230,246,135,16,224,
+34,2,0,64,224,85,30,0,73,138,252,224,82,16,192,31,224,79,31,210,
+74,224,80,16,224,32,0,224,81,20,3,68,97,116,97,96,75,96,4,112,
+192,224,81,20,128,33,224,82,20,132,119,224,69,16,70,64,224,68,25,0,
+83,116,10,8,46,73,79,46,72,97,110,100,108,151,244,225,22,16,194,119,
+231,137,1,75,73,157,51,97,250,225,200,16,136,47,8,46,67,46,84,121,
+112,101,115,46,128,70,64,35,236,35,3,3,67,67,104,97,236,56,8,1,
+67,83,224,21,12,0,85,224,43,13,241,23,11,1,67,85,224,22,13,162,
+10,224,42,5,224,20,11,0,76,239,185,10,1,67,85,224,21,12,5,80,
+116,114,100,105,102,238,250,8,3,67,83,105,122,239,158,8,1,67,83,224,
+21,12,0,76,224,110,14,224,22,12,1,84,105,143,246,237,82,10,67,149,
+135,106,230,84,18,228,96,1,64,46,135,30,224,46,18,224,43,1,68,200,
+231,197,13,64,9,1,95,116,235,83,1,232,152,9,224,43,1,8,40,105,
+110,116,32,115,41,32,123,229,187,5,224,32,1,0,59,158,192,128,206,73,
+138,103,70,169,171,4,95,50,50,52,54,128,6,137,140,160,9,75,248,5,
+48,54,32,35,49,50,100,221,2,50,50,54,196,166,0,54,135,136,64,18,
+139,4,0,53,103,124,64,31,3,10,65,32,94,246,35,10,90,0,64,37,
+192,235,0,51,104,213,96,10,0,48,64,173,96,126,0,53,155,121,0,39,
+102,76,192,23,198,187,101,108,78,52,160,19,3,32,95,51,54,192,34,101,
+173,92,141,0,52,73,109,1,50,53,134,6,154,226,134,154,224,58,1,64,
+31,137,4,96,232,0,53,105,172,0,53,74,245,1,51,53,170,96,224,26,
+5,124,254,0,53,70,94,71,59,3,51,50,50,32,169,202,224,153,2,224,
+156,5,97,43,64,35,235,87,0,192,168,1,95,57,128,160,137,12,224,30,
+16,159,39,188,211,225,9,2,160,152,0,54,64,191,123,24,224,65,0,224,
+222,1,126,178,251,247,0,224,245,2,0,54,96,7,1,49,49,224,165,0,
+224,0,1,65,156,136,129,0,94,154,108,97,174,135,230,141,113,2,39,32,
+95,79,162,64,70,0,49,98,25,97,11,3,55,32,95,50,75,27,160,66,
+134,188,4,112,97,99,107,67,153,153,2,76,101,110,96,73,131,63,0,94,
+179,8,96,18,163,35,5,56,57,32,75,32,95,98,12,192,7,0,95,71,
+69,161,4,1,95,57,225,131,0,106,7,224,12,3,64,218,128,12,160,157,
+98,175,66,73,125,244,160,163,96,245,193,14,2,49,48,52,192,30,0,95,
+108,65,0,58,128,65,224,137,22,96,47,160,137,96,11,192,137,160,12,128,
+137,64,12,224,137,1,2,50,50,53,98,145,224,138,2,158,139,201,137,2,
+50,53,55,224,139,1,64,5,64,139,131,153,0,94,85,56,1,80,116,99,
+52,64,37,96,18,153,213,96,18,0,54,96,18,174,207,109,93,0,53,65,
+156,227,37,9,141,155,2,95,49,48,104,181,64,58,195,130,64,51,0,51,
+126,198,72,123,236,84,0,64,71,68,26,128,163,97,44,174,223,162,0,224,
+189,0,0,32,162,105,64,217,128,58,130,46,0,94,156,113,96,167,130,15,
+0,94,91,98,96,15,162,6,244,220,3,96,23,222,24,3,95,55,49,54,
+237,118,2,228,190,1,30,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,229,185,
+0,64,165,197,33,114,156,2,50,50,52,96,164,6,50,50,52,56,32,35,
+50,170,91,224,90,3,1,125,59,101,24,224,20,5,224,104,5,10,42,99,
+111,109,98,101,120,112,114,32,61,96,116,128,49,159,182,229,138,8,69,137,
+192,47,5,108,101,110,32,61,32,192,45,224,153,0,241,77,3,106,177,2,
+79,32,35,66,133,239,175,2,129,82,69,132,97,24,0,89,64,55,75,8,
+3,85,32,95,49,96,209,129,237,95,53,224,7,1,229,39,1,69,182,206,
+83,107,164,238,79,1,0,53,95,177,192,95,173,105,2,55,52,50,240,223,
+1,241,238,7,101,69,76,5,0,52,160,161,64,56,130,148,64,97,1,75,
+52,160,2,2,90,32,90,64,6,228,81,1,70,83,64,93,1,57,52,127,
+254,0,52,130,122,5,67,32,95,56,56,55,71,28,65,140,64,23,211,179,
+1,75,51,128,63,64,19,130,75,64,248,2,66,32,80,96,199,205,129,133,
+108,0,67,105,43,225,4,11,225,12,0,161,5,96,0,64,18,140,235,1,
+56,51,66,212,0,55,107,175,64,104,210,85,1,75,50,102,193,76,234,192,
+15,160,211,224,1,5,224,225,1,224,230,0,207,12,0,75,224,46,10,224,
+56,16,160,60,67,93,135,138,1,32,80,140,115,226,82,0,76,115,164,233,
+2,54,32,35,111,86,195,125,135,172,100,52,198,249,128,14,163,56,0,35,
+69,204,194,71,2,75,50,32,181,32,237,176,1,0,83,237,176,8,99,197,
+237,112,0,224,25,3,97,67,109,132,237,224,4,65,189,0,85,128,140,160,
+161,231,151,0,224,195,3,0,50,96,6,224,196,4,64,0,102,82,237,245,
+3,96,101,102,106,224,62,27,2,85,32,83,128,144,5,95,49,54,53,32,
+95,103,107,99,74,110,98,100,159,129,14,0,50,80,57,224,17,2,98,220,
+1,52,52,96,5,86,138,2,49,52,54,233,114,6,64,9,169,42,128,44,
+163,18,0,55,68,223,64,69,131,125,96,0,225,73,12,193,6,224,223,5,
+96,21,66,35,161,139,224,34,10,101,163,224,34,4,225,78,9,1,49,48,
+67,26,225,15,5,66,70,227,200,2,64,163,0,54,98,204,64,170,111,167,
+111,64,72,193,0,49,101,205,3,95,52,56,53,73,213,96,101,65,217,96,
+31,73,58,97,72,2,35,50,48,68,24,0,64,224,23,8,2,54,53,53,
+64,89,98,71,224,24,4,4,49,49,49,52,49,112,215,3,95,51,52,51,
+229,71,3,2,116,102,56,76,96,5,58,32,98,97,100,32,204,106,226,78,
+3,0,83,197,69,64,147,96,238,1,56,48,137,105,164,191,0,35,200,96,
+177,123,224,46,18,68,226,2,35,49,50,137,91,149,178,224,44,30,224,41,
+32,131,84,133,43,3,50,32,95,51,120,251,160,168,67,116,224,27,22,224,
+26,4,160,20,97,13,225,8,28,0,50,128,47,224,216,81,224,187,47,224,
+184,22,178,234,224,139,38,224,111,12,203,212,0,67,64,74,64,39,66,230,
+0,54,200,62,131,21,136,166,195,49,67,18,119,253,135,24,69,224,162,187,
+131,12,107,203,70,44,0,54,68,15,128,18,105,38,227,0,4,160,24,99,
+113,64,22,224,75,3,114,122,134,206,128,124,224,28,15,0,57,224,28,19,
+0,49,97,221,224,49,7,164,241,224,137,9,131,189,64,214,224,71,8,64,
+24,224,48,10,99,170,227,186,2,224,235,4,227,178,1,1,92,92,142,110,
+73,16,192,148,225,184,8,0,49,85,123,97,185,129,144,227,30,5,128,59,
+96,237,225,243,18,224,71,18,161,237,160,77,224,155,3,0,63,175,10,193,
+254,192,107,65,39,224,20,2,224,129,29,160,115,133,70,160,56,228,192,6,
+4,113,117,111,116,101,140,203,196,185,224,72,1,1,50,50,93,3,156,254,
+128,74,107,154,64,0,89,106,233,47,2,66,137,7,10,65,32,80,32,35,
+52,32,182,168,64,30,130,181,203,174,3,95,51,57,57,234,77,7,17,87,
+101,108,99,111,109,101,32,116,111,32,105,110,116,101,114,97,99,80,64,15,
+32,77,105,99,114,111,72,115,44,32,118,101,114,115,105,111,153,36,7,95,
+52,48,56,32,95,52,49,102,71,96,169,224,89,0,1,52,49,79,166,91,
+89,0,55,73,186,96,105,224,100,1,8,85,115,105,110,103,32,71,77,80,
+230,247,0,239,126,3,1,95,56,70,93,174,3,238,137,5,1,55,54,74,
+39,0,50,98,120,96,33,72,180,0,52,109,26,0,49,174,116,0,49,161,
+201,238,119,0,181,58,74,6,0,49,134,172,76,74,0,51,96,181,1,95,
+49,160,188,65,31,188,18,5,56,49,51,32,75,32,72,105,128,1,137,202,
+192,13,224,1,19,0,67,128,105,224,0,4,224,53,44,224,50,41,224,47,
+38,224,44,35,224,41,32,224,38,29,224,35,26,224,32,23,224,29,20,224,
+26,17,224,23,14,224,20,11,224,17,8,66,54,162,230,224,0,4,66,55,
+139,209,224,93,5,224,1,15,226,34,11,226,91,255,224,41,19,224,38,29,
+224,35,26,224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,224,17,
+8,224,14,5,224,11,2,192,8,110,120,224,0,6,66,120,182,36,69,116,
+0,55,159,50,0,49,116,59,70,110,96,15,0,55,91,229,102,129,192,34,
+69,164,0,55,70,166,112,184,0,49,93,25,1,95,56,81,38,1,95,56,
+78,153,69,124,224,77,0,64,39,229,184,6,88,4,7,32,39,58,113,117,
+105,116,39,70,34,64,8,13,44,32,39,58,104,101,108,112,39,32,102,111,
+114,32,64,9,133,213,224,73,2,0,51,85,180,0,55,90,106,2,95,50,
+49,93,203,230,244,6,2,84,104,101,230,109,4,0,115,120,220,25,32,99,
+117,114,114,101,110,116,108,121,32,111,110,108,121,32,119,111,114,107,115,32,
+119,105,116,104,86,163,160,100,2,50,50,50,148,187,97,17,179,227,225,0,
+0,1,56,48,77,172,64,233,0,56,114,63,128,227,148,255,224,33,2,2,
+50,49,56,237,68,1,224,28,1,129,129,129,47,166,109,160,33,0,50,138,
+97,96,30,72,217,244,226,1,64,26,71,146,224,220,1,4,46,109,104,115,
+105,96,173,224,19,1,1,62,32,128,190,0,80,70,143,64,192,113,104,160,
+203,205,167,65,252,233,105,2,0,35,149,195,225,206,5,70,240,97,86,161,
+6,224,190,4,64,21,1,56,32,64,100,225,202,10,1,66,121,154,51,225,
+66,3,129,69,64,13,176,34,1,95,54,87,186,96,223,129,46,167,47,108,
+17,96,179,226,46,20,11,85,110,114,101,99,111,103,110,105,122,101,100,82,
+163,2,109,97,110,187,114,224,82,9,194,238,81,114,96,10,71,119,144,126,
+112,34,120,60,64,25,0,85,64,107,0,49,128,177,80,231,226,223,13,119,
+241,152,82,232,224,5,8,65,109,98,105,103,117,111,117,115,192,144,189,20,
+116,12,67,14,115,198,1,54,55,173,212,224,169,12,64,0,64,118,0,55,
+81,239,64,8,81,16,1,56,56,106,227,112,25,0,54,129,59,0,52,223,
+175,0,54,193,73,192,87,65,116,111,13,65,111,143,75,91,237,234,7,3,
+2,105,116,32,96,0,96,9,169,127,105,117,0,56,130,112,160,147,175,147,
+224,61,5,4,99,108,101,97,114,96,61,128,9,13,97,108,108,32,100,101,
+102,105,110,105,116,105,111,110,224,70,0,228,57,2,0,50,86,96,105,92,
+105,72,227,189,3,2,56,49,49,129,100,73,62,0,56,76,73,169,61,233,
+82,0,0,49,85,197,201,82,169,130,1,95,55,153,188,225,63,12,224,173,
+5,5,114,101,108,111,97,100,64,173,160,9,5,109,111,100,117,108,101,224,
+166,0,227,172,5,100,174,227,195,9,163,219,227,194,19,1,95,56,113,75,
+226,48,8,64,224,224,204,0,224,224,3,225,6,4,165,92,226,14,14,224,
+209,5,9,100,101,108,101,116,101,32,100,32,32,192,9,225,124,0,3,40,
+115,41,32,99,4,224,134,8,97,131,64,8,0,54,182,151,194,90,64,192,
+66,105,128,26,0,52,84,191,226,110,4,66,96,120,62,225,109,12,224,153,
+5,0,116,69,193,0,101,65,107,4,115,104,111,119,32,96,14,2,111,102,
+32,100,11,228,90,9,227,252,12,224,81,6,4,107,105,110,100,32,98,171,
+96,81,96,14,2,111,102,32,125,141,224,81,8,108,28,224,81,23,13,109,
+97,105,110,32,97,114,103,115,32,114,117,110,32,96,13,101,245,7,97,114,
+103,117,109,101,110,116,98,24,224,90,9,66,131,224,90,23,3,100,101,102,
+115,131,86,96,172,166,97,227,27,23,0,50,115,9,225,248,9,224,91,5,
+70,250,128,91,7,116,104,105,115,32,116,101,120,97,3,224,76,5,229,37,
+0,100,150,64,91,121,13,0,49,77,216,100,120,176,84,153,233,132,46,228,
+44,0,227,78,14,174,73,64,0,68,78,147,132,224,151,1,0,67,132,231,
+3,115,58,94,42,120,83,128,0,8,101,118,97,108,117,97,116,101,32,64,
+19,1,101,115,77,212,5,94,42,100,101,102,110,160,31,11,97,100,100,32,
+116,111,112,32,108,101,118,101,228,60,3,2,94,42,34,110,78,64,183,231,
+107,9,0,56,111,227,195,113,133,130,96,45,250,6,2,70,176,229,150,8,
+0,95,65,225,0,65,65,243,101,141,103,100,248,28,3,1,49,50,65,25,
+64,4,0,51,67,37,98,243,69,81,231,84,2,98,41,134,94,64,113,238,
+238,0,224,161,11,228,39,14,1,50,49,111,79,103,121,150,8,250,27,0,
+118,128,97,105,65,142,128,130,0,80,228,91,0,64,57,64,141,0,75,228,
+150,13,230,149,10,1,49,53,91,7,64,103,0,50,154,219,0,52,133,125,
+231,138,1,128,198,216,152,80,7,111,249,103,123,185,159,2,80,32,79,64,
+109,240,154,1,231,65,4,199,69,224,13,1,0,85,224,13,2,96,25,245,
+19,0,104,113,0,64,91,220,103,111,136,119,0,55,122,44,161,15,248,220,
+1,128,18,64,184,69,42,1,50,50,100,171,96,172,248,220,2,0,75,65,
+85,64,19,138,165,225,240,8,100,121,199,121,163,11,96,252,224,41,8,250,
+209,0,161,147,225,139,3,128,98,137,246,224,49,1,74,166,1,95,105,67,
+125,0,58,128,84,226,8,80,93,253,226,8,65,0,49,81,42,162,8,0,
+48,248,123,0,128,228,69,139,226,8,51,225,250,64,131,195,153,43,225,249,
+0,64,185,202,51,0,56,82,21,0,56,93,99,189,230,146,127,64,43,251,
+118,0,64,220,64,19,210,166,1,95,57,114,38,96,5,64,23,131,188,226,
+8,6,136,22,98,12,130,49,0,56,92,175,226,40,2,14,119,104,101,114,
+101,94,42,105,109,112,111,114,116,32,83,108,69,12,46,73,79,46,80,114,
+105,110,116,79,114,82,117,132,226,25,97,117,108,116,32,78,117,109,32,40,
+73,110,116,101,103,101,114,44,32,68,111,117,98,108,101,41,224,30,1,1,
+73,115,147,132,1,32,40,128,7,224,26,2,0,83,70,57,3,40,40,41,
+41,101,10,128,199,195,165,226,99,13,161,103,1,32,83,108,57,75,208,1,
+48,54,72,75,2,50,49,57,66,43,178,252,198,201,98,122,65,210,226,83,
+7,1,64,90,133,64,69,0,0,95,202,159,65,144,0,90,66,63,156,164,
+96,84,64,97,0,50,73,126,64,44,105,169,226,228,53,118,156,226,228,10,
+66,1,168,119,72,179,192,26,222,46,224,86,0,227,185,16,70,10,97,55,
+224,157,4,227,36,2,2,56,55,54,93,190,150,73,2,95,51,55,68,112,
+237,109,2,224,42,0,0,80,96,205,148,54,64,72,180,72,224,61,1,224,
+32,0,244,25,9,128,70,0,51,65,195,130,219,0,48,96,79,131,135,226,
+102,0,193,24,94,100,64,192,65,23,152,34,160,202,221,200,108,168,99,150,
+0,83,126,51,148,220,0,55,75,229,64,102,91,78,229,12,9,18,114,97,
+110,115,108,97,116,101,58,32,110,111,116,32,102,111,117,110,100,98,231,221,
+147,161,78,0,55,105,230,255,91,0,97,197,0,49,141,12,228,11,3,97,
+96,228,3,3,99,218,130,3,163,203,159,188,80,89,130,82,0,57,255,190,
+0,192,0,214,74,65,14,191,26,162,71,0,83,128,110,98,210,194,91,189,
+171,64,14,96,86,196,87,193,89,129,108,99,247,196,141,131,21,64,76,64,
+17,128,13,254,28,3,128,67,224,32,13,130,98,164,194,224,32,11,225,52,
+0,160,135,252,244,0,192,24,0,85,64,155,99,56,128,165,253,165,18,5,
+100,121,110,115,121,109,136,89,160,42,106,16,0,50,104,221,128,0,224,103,
+8,96,161,0,85,225,251,31,65,247,6,32,112,114,105,109,111,112,161,247,
+232,245,1,200,240,67,70,5,54,55,57,32,95,51,76,136,98,128,229,150,
+0,175,31,255,68,5,86,195,129,125,2,95,52,48,66,243,1,50,48,202,
+70,96,255,96,250,64,21,196,75,161,202,225,79,11,230,13,0,255,177,11,
+237,121,1,225,1,3,96,21,0,85,193,255,224,116,5,2,49,51,54,170,
+188,224,32,3,225,36,24,69,217,5,115,115,105,98,108,101,175,181,161,38,
+0,49,196,15,0,58,130,202,70,59,106,47,152,124,203,88,129,183,96,24,
+81,240,219,219,96,53,135,94,3,95,52,48,50,128,43,67,231,224,57,0,
+0,50,66,27,137,245,1,95,50,98,33,1,52,54,161,74,64,59,134,252,
+76,13,2,79,32,35,69,119,67,59,67,121,160,18,83,102,64,18,0,79,
+224,18,2,0,53,128,18,128,22,236,70,3,1,67,39,172,222,224,43,0,
+64,106,64,39,65,152,192,18,160,62,68,8,224,62,5,0,83,96,62,99,
+139,160,43,68,255,64,43,67,236,192,125,0,51,128,18,67,148,192,37,160,
+18,67,77,192,18,160,100,67,172,192,18,160,201,0,89,224,119,8,0,66,
+96,119,0,66,224,119,2,0,57,160,119,72,109,192,62,0,50,128,18,0,
+82,224,62,8,1,75,50,64,62,100,31,224,24,6,0,51,96,24,65,223,
+224,24,6,0,52,96,24,69,131,225,64,7,0,66,129,65,225,129,2,66,
+84,64,120,0,43,224,18,2,160,221,0,45,224,18,2,160,158,0,42,224,
+83,8,91,150,64,84,64,7,224,28,8,1,114,101,100,28,2,114,101,109,
+224,26,8,0,117,192,56,96,8,224,30,9,160,58,64,7,224,28,8,1,
+110,101,124,2,2,110,101,103,224,26,8,179,71,2,97,110,100,224,26,8,
+1,111,114,64,25,1,111,114,224,24,8,0,120,128,25,0,120,224,26,10,
+2,105,110,118,64,26,2,105,110,118,224,26,8,2,115,104,108,64,26,2,
+115,104,108,224,26,10,96,80,1,115,104,224,80,9,0,97,160,27,64,7,
+224,55,9,2,117,98,116,85,233,96,60,160,11,224,36,8,6,112,111,112,
+99,111,117,110,96,36,192,11,224,36,8,2,99,108,122,64,31,2,99,108,
+122,224,26,9,0,116,128,26,0,116,224,26,9,1,61,61,64,25,68,162,
+224,24,6,0,47,96,24,0,47,192,24,67,102,162,194,0,60,224,43,8,
+0,60,96,43,0,60,224,43,3,162,60,0,62,224,43,8,0,62,96,43,
+0,62,224,112,9,1,117,60,64,24,0,117,224,93,9,0,117,128,94,0,
+117,224,95,0,224,26,2,0,62,96,25,224,101,9,0,117,128,102,0,117,
+224,103,10,1,111,114,98,46,1,111,114,226,46,9,0,99,129,168,0,99,
+225,167,10,1,102,43,64,25,0,102,195,50,224,24,2,0,45,96,24,195,
+56,224,24,2,107,16,0,102,227,62,9,1,102,47,96,24,0,47,224,24,
+9,129,140,0,102,225,141,10,0,102,129,142,0,102,225,143,0,224,26,2,
+97,55,0,102,225,55,9,0,102,129,55,0,102,225,55,10,0,102,97,55,
+0,102,225,55,9,0,102,129,55,0,102,225,55,10,0,102,163,130,64,7,
+224,28,9,82,65,96,29,114,74,224,30,8,2,114,101,97,97,117,96,8,
+224,30,8,3,105,116,111,102,64,29,64,7,224,28,8,2,115,101,113,64,
+27,2,115,101,113,224,26,11,1,117,97,131,146,96,9,224,32,8,224,31,
+0,224,30,13,2,115,99,109,121,159,64,7,224,148,9,160,28,64,7,224,
+28,8,0,117,160,28,64,7,224,28,8,1,114,110,96,205,1,114,110,224,
+204,9,3,73,79,46,62,129,98,128,9,224,32,13,224,31,0,224,30,11,
+4,114,101,116,117,114,113,218,224,12,0,224,38,11,0,112,77,230,160,37,
+96,11,224,36,11,7,115,101,114,105,97,108,105,122,116,241,224,15,3,224,
+44,11,1,100,101,224,46,7,224,17,2,224,93,12,1,116,100,146,131,192,
+11,224,36,14,1,111,117,192,168,128,12,224,38,14,1,101,114,99,157,224,
+12,0,224,38,11,7,103,101,116,65,114,103,82,101,97,128,224,15,3,225,
+34,12,7,101,114,102,111,114,109,73,79,193,38,192,15,224,89,12,0,99,
+192,82,0,99,225,240,9,2,97,105,115,97,19,96,8,224,30,8,4,99,
+97,116,99,104,64,30,96,8,224,30,8,235,81,1,128,9,224,32,8,4,
+110,101,119,67,65,143,121,1,76,101,97,80,224,17,5,224,48,8,4,112,
+97,99,107,67,128,30,64,45,224,14,2,224,42,19,160,91,224,17,5,224,
+48,8,2,116,111,73,130,87,96,8,224,30,10,1,80,116,97,166,96,8,
+224,30,10,1,68,98,99,144,96,8,224,30,10,2,70,117,110,224,64,0,
+128,11,224,36,8,5,65,46,97,108,108,111,97,142,160,10,224,34,10,3,
+99,111,112,121,128,33,64,9,224,32,10,0,115,162,198,128,9,224,32,10,
+196,178,128,9,224,32,10,3,119,114,105,116,160,66,96,10,224,34,10,133,
+208,64,7,224,28,8,2,98,115,43,102,82,64,7,224,28,12,0,46,192,
+29,0,46,224,30,10,128,88,64,7,224,28,10,134,43,64,7,224,28,10,
+102,45,1,98,115,230,46,9,1,98,115,134,47,64,7,224,28,10,100,148,
+1,98,115,228,146,9,1,98,115,132,208,64,7,224,28,10,165,40,96,8,
+224,30,10,66,109,128,31,64,9,224,32,10,1,117,110,224,34,1,128,11,
+224,36,10,6,114,101,112,108,105,99,97,129,142,224,14,2,224,42,10,4,
+108,101,110,103,116,99,141,192,11,224,36,10,3,115,117,98,115,130,133,192,
+11,224,36,10,4,105,110,100,101,120,128,35,96,10,224,34,8,192,9,64,
+35,224,21,0,224,36,7,1,116,111,192,34,128,9,224,32,8,3,104,101,
+97,100,192,34,192,11,224,69,9,2,97,105,108,224,71,0,160,11,224,143,
+9,0,112,136,196,0,112,232,197,10,1,112,50,97,166,64,7,224,28,10,
+1,110,101,135,220,64,8,224,30,10,0,102,133,230,96,8,224,90,11,0,
+98,122,72,96,8,225,71,10,1,50,102,162,33,1,50,102,224,123,9,5,
+73,79,46,102,111,114,97,255,160,10,224,34,11,2,116,104,105,99,171,160,
+10,225,30,9,2,104,110,117,101,97,96,8,224,65,13,4,114,111,119,116,
+111,224,68,0,96,13,224,40,11,3,121,105,101,108,192,107,96,11,224,36,
+11,5,110,101,119,109,118,97,198,174,160,13,224,118,12,2,97,107,101,224,
+41,2,192,14,224,42,11,2,112,117,116,224,41,2,160,13,224,40,11,68,
+174,224,41,2,192,14,224,126,12,1,114,121,224,129,7,224,17,1,224,48,
+14,224,135,5,224,16,1,224,46,14,224,141,6,224,17,2,225,134,14,6,
+101,97,100,100,101,108,97,101,189,224,17,5,224,48,17,4,115,116,97,116,
+117,98,100,224,18,6,224,50,8,1,105,115,169,22,96,8,176,115,224,0,
+128,81,63,0,54,152,60,219,243,185,87,149,124,149,102,242,14,6,1,32,
+61,83,44,0,110,151,211,114,9,224,44,0,0,50,246,102,10,86,192,250,
+32,4,2,95,105,116,105,2,64,27,252,39,0,224,65,2,242,128,9,250,
+132,20,64,70,152,1,224,98,4,160,96,150,227,3,95,49,57,55,86,152,
+2,48,49,50,64,5,0,56,146,75,2,49,51,54,128,36,251,37,0,0,
+56,86,72,0,66,88,42,0,56,96,41,1,49,57,86,124,0,51,151,103,
+147,60,184,85,64,54,149,155,6,95,56,49,51,32,75,32,85,192,149,245,
+148,16,64,172,1,56,52,180,60,64,47,96,75,224,139,2,1,49,51,151,
+177,128,132,120,140,129,135,211,203,186,47,64,80,115,223,83,185,0,57,210,
+142,64,4,64,53,146,253,214,108,150,88,224,59,1,122,107,128,10,64,213,
+0,85,83,59,83,58,116,74,0,80,118,82,0,79,96,169,193,86,0,51,
+175,71,128,4,4,90,32,90,32,83,182,6,1,85,32,96,14,0,67,64,
+48,161,220,65,31,4,51,32,95,49,51,224,229,0,224,109,2,2,95,55,
+48,115,245,85,51,96,33,0,35,64,232,224,34,2,119,15,1,51,52,152,
+106,2,54,54,50,192,72,4,66,32,95,52,52,88,106,2,53,55,55,117,
+193,0,49,96,13,0,55,65,241,91,14,91,32,128,41,120,14,192,0,247,
+9,0,184,246,160,101,148,69,0,56,181,197,193,31,194,234,0,49,88,190,
+96,59,224,17,6,96,9,151,8,161,188,0,54,180,102,226,100,2,86,50,
+3,105,116,105,118,104,5,224,25,3,1,99,97,139,158,224,19,4,2,108,
+97,115,100,49,224,20,3,3,100,97,116,97,224,19,8,154,233,224,22,9,
+2,114,105,118,171,96,224,23,4,102,67,224,17,3,1,101,108,224,125,9,
+4,102,111,114,97,108,107,8,224,21,6,2,101,105,103,103,75,224,22,3,
+0,105,108,205,224,17,4,123,212,224,21,8,224,57,9,2,110,102,105,104,
+162,224,20,8,224,123,8,96,21,101,165,224,21,5,4,115,116,97,110,99,
+224,191,8,1,108,101,224,125,8,156,144,224,21,7,5,110,101,119,116,121,
+112,224,22,8,143,239,224,17,3,4,112,97,116,116,101,142,215,224,22,3,
+1,116,104,140,149,224,19,4,224,80,10,124,237,64,20,229,207,18,66,54,
+132,252,68,28,0,90,67,243,157,216,64,24,196,249,250,55,0,163,154,154,
+58,0,39,87,174,192,17,117,77,99,48,0,83,90,75,248,43,6,154,87,
+0,55,67,63,0,54,158,183,160,79,0,51,91,224,227,24,1,64,56,224,
+55,1,99,71,68,218,64,35,2,95,49,57,96,42,0,64,224,131,1,96,
+114,250,177,1,164,86,254,140,2,64,195,221,120,128,150,157,128,120,12,3,
+67,32,95,52,89,39,2,95,52,54,195,120,195,242,192,34,64,240,188,10,
+160,117,252,61,4,2,52,56,55,101,137,0,39,220,120,65,57,252,125,2,
+1,95,54,123,141,96,0,193,49,69,192,69,181,156,126,0,56,131,200,225,
+59,0,224,91,0,165,76,121,179,221,180,93,212,1,50,49,96,82,65,208,
+97,212,153,49,161,58,224,93,5,96,85,2,95,56,53,64,188,0,55,159,
+135,253,25,4,129,30,134,123,96,103,65,250,65,111,132,217,128,239,129,124,
+64,40,198,127,164,178,192,102,1,95,52,93,66,0,51,126,166,225,68,1,
+225,102,1,64,84,164,163,64,10,70,151,64,77,220,50,98,91,187,166,229,
+29,0,102,77,255,20,0,155,194,224,24,3,224,25,11,155,229,96,0,224,
+71,0,224,29,3,224,61,2,224,33,2,224,42,3,224,69,6,224,37,11,
+224,2,4,224,40,1,224,113,17,224,23,0,224,44,2,64,189,224,87,19,
+224,48,9,225,31,8,128,34,224,5,2,64,2,224,49,31,224,17,6,224,
+53,3,225,189,0,224,1,9,224,94,5,225,27,23,224,2,3,224,56,5,
+224,57,4,225,9,24,225,6,5,225,249,16,224,61,15,224,125,9,224,65,
+42,224,68,11,225,40,2,224,55,12,224,2,7,224,64,9,224,134,6,101,
+49,224,86,3,224,145,22,224,86,15,225,184,9,224,1,7,0,83,232,158,
+3,0,35,132,127,224,0,6,224,195,13,224,2,17,225,103,12,224,138,40,
+133,221,224,0,6,224,108,13,224,2,21,224,138,57,233,178,2,224,0,1,
+225,177,3,192,108,161,182,224,96,6,224,177,19,224,89,8,224,143,13,224,
+1,1,224,153,5,230,79,0,224,0,2,226,209,12,224,2,19,224,131,54,
+234,114,0,224,0,2,224,116,25,192,2,227,82,15,224,131,37,198,110,224,
+65,31,224,114,11,224,47,19,225,119,8,72,137,224,0,7,224,223,19,224,
+2,9,224,126,52,231,179,0,224,63,15,224,115,28,224,106,13,128,1,224,
+112,6,237,46,3,128,0,224,97,13,192,2,226,228,19,224,118,34,228,143,
+9,224,115,31,224,118,52,227,240,9,227,75,14,195,240,224,92,8,224,41,
+7,224,80,5,224,130,11,128,1,229,3,6,227,223,8,227,220,11,228,117,
+28,224,129,5,224,124,13,225,7,8,224,126,7,230,156,1,96,44,225,19,
+7,225,13,16,227,228,9,224,122,9,224,124,7,112,178,224,0,0,224,202,
+3,231,31,10,136,183,224,14,15,224,154,1,224,110,3,192,142,224,19,3,
+225,126,6,227,228,1,224,73,3,64,38,1,64,67,64,134,3,95,49,51,
+51,143,225,0,52,112,11,64,179,112,143,108,77,80,75,128,18,228,46,4,
+224,127,1,64,65,235,159,1,64,0,193,70,128,106,145,241,75,28,96,99,
+236,199,0,224,69,3,235,90,12,234,83,8,224,253,7,1,67,32,64,80,
+1,56,52,160,233,1,64,35,236,153,5,224,88,17,160,152,224,83,0,192,
+43,231,48,6,224,46,7,64,14,224,40,12,160,210,224,37,0,224,34,10,
+129,58,210,159,224,25,3,229,245,5,0,73,192,13,173,218,64,5,233,77,
+2,96,126,65,82,224,220,5,97,116,64,16,1,64,80,225,59,1,226,228,
+8,130,62,160,236,98,93,224,248,1,224,25,2,77,125,177,136,165,48,225,
+208,3,224,74,10,226,203,11,65,10,192,139,224,18,2,226,44,5,2,95,
+51,54,224,192,1,226,55,19,242,38,0,109,198,224,85,5,179,108,224,16,
+20,77,143,224,16,4,143,167,1,50,48,240,88,2,31,92,34,109,104,115,
+47,83,121,115,116,101,109,47,67,111,110,115,111,108,101,47,83,105,109,112,
+108,101,82,101,97,100,108,13,105,110,101,46,104,115,92,34,44,49,55,57,
+58,53,80,129,224,136,6,163,85,225,117,1,224,233,17,224,138,5,238,121,
+18,224,41,9,226,206,10,225,227,0,228,89,0,64,5,225,144,8,227,45,
+8,192,62,130,181,192,65,128,8,130,204,66,70,227,220,5,226,150,1,224,
+2,0,239,252,11,224,120,3,224,67,4,64,45,64,35,116,250,0,56,84,
+156,235,34,1,225,255,2,96,128,160,5,64,136,224,132,3,245,115,2,6,
+32,95,56,48,32,95,55,97,8,112,168,160,71,64,53,128,31,148,147,245,
+60,3,224,42,3,64,41,64,230,226,96,12,224,0,1,224,199,0,145,108,
+224,238,10,161,98,97,64,224,171,2,97,177,128,36,99,86,224,163,3,196,
+44,209,5,210,115,160,54,64,219,224,243,1,128,43,128,5,224,48,5,224,
+55,1,100,58,164,63,224,6,3,225,133,10,241,164,2,192,87,129,251,193,
+111,227,123,18,224,168,2,128,44,225,162,9,224,235,5,224,181,11,224,174,
+5,224,127,0,166,226,160,175,162,143,224,147,1,128,107,134,175,2,95,52,
+50,67,36,160,6,225,130,1,231,38,0,128,15,247,136,5,225,3,12,226,
+170,2,227,135,1,3,50,49,56,54,151,149,224,234,1,228,193,10,98,137,
+96,252,194,135,96,246,236,210,0,229,68,2,2,64,64,85,244,26,0,225,
+58,1,224,241,2,161,75,227,81,5,1,85,32,237,30,1,227,31,8,226,
+63,3,231,93,6,224,95,12,225,12,2,226,204,9,224,105,2,224,32,2,
+227,223,15,225,51,31,97,195,243,198,9,211,226,225,55,15,224,220,8,224,
+22,2,225,196,4,96,115,228,151,1,224,171,9,226,139,5,228,126,8,162,
+60,164,50,130,116,64,179,225,148,2,101,14,192,35,134,213,129,246,100,95,
+148,94,244,88,3,128,43,160,72,128,2,167,9,225,223,0,97,18,103,102,
+160,120,227,135,3,160,83,225,207,1,224,93,7,245,64,0,131,22,192,5,
+64,166,99,38,64,185,227,213,14,97,134,224,95,7,64,97,160,8,200,126,
+224,169,0,224,180,7,130,123,136,33,224,228,6,166,113,160,118,224,117,1,
+224,169,7,211,159,227,245,2,227,180,4,161,18,196,56,195,117,128,219,128,
+81,197,220,192,200,229,221,0,215,80,96,199,155,79,138,200,224,135,6,225,
+43,1,192,80,162,114,192,83,227,77,4,193,21,160,155,230,142,7,228,88,
+14,225,211,3,229,82,3,165,72,166,142,230,87,19,130,128,224,13,3,65,
+120,129,31,227,57,6,230,90,2,91,199,93,251,194,227,3,95,52,48,49,
+64,18,1,51,32,64,199,232,240,1,4,94,40,32,94,40,200,199,157,99,
+161,61,251,167,0,165,242,128,135,0,82,224,10,1,224,178,10,195,136,228,
+166,7,235,251,12,192,20,128,200,228,63,5,175,165,224,26,5,233,22,4,
+97,178,70,7,247,248,0,134,41,67,101,107,120,167,244,249,203,3,64,23,
+249,216,1,101,10,96,4,161,164,162,194,64,210,102,93,125,11,94,38,166,
+94,98,26,107,181,0,51,89,94,4,64,64,95,53,56,96,24,226,123,1,
+231,192,3,98,48,64,207,164,94,0,58,152,37,122,144,160,123,225,97,5,
+64,32,158,135,130,134,89,166,96,20,158,102,3,95,51,56,56,160,255,64,
+20,0,54,128,20,234,10,2,0,52,233,170,6,68,70,2,52,49,52,66,
+206,129,123,77,199,122,18,0,35,64,4,3,95,51,52,51,234,250,2,12,
+103,101,116,82,97,119,32,102,97,105,108,101,100,130,17,225,94,3,1,95,
+52,138,106,64,122,155,86,7,94,71,69,84,82,65,87,32,64,17,155,79,
+5,85,32,75,50,32,65,153,8,1,56,51,128,159,0,54,219,120,1,95,
+55,66,87,64,25,153,153,64,25,126,30,1,54,55,103,195,0,56,95,145,
+64,30,153,143,3,95,49,49,49,96,90,153,80,226,108,0,224,208,1,2,
+95,50,49,96,204,195,10,224,246,17,81,5,160,242,1,57,57,129,116,224,
+247,1,1,83,97,93,216,6,32,99,97,99,104,101,32,64,247,3,95,49,
+49,56,65,231,64,159,126,185,1,95,55,187,71,96,115,2,55,56,32,192,
+16,1,58,50,95,96,64,158,64,131,64,143,66,45,3,50,49,55,55,96,
+201,64,215,64,201,2,50,49,54,97,5,1,55,54,128,22,161,206,5,49,
+48,55,57,32,85,228,254,2,98,74,229,15,4,161,133,128,1,64,215,123,
+141,64,0,192,33,204,102,224,30,5,227,125,2,224,23,3,129,41,251,213,
+0,131,142,97,125,224,10,3,70,8,64,228,0,49,97,7,2,50,49,54,
+172,35,192,22,0,48,68,116,3,49,48,56,55,125,54,192,13,124,201,1,
+50,49,139,134,224,46,2,2,50,49,55,100,184,224,41,1,131,255,65,8,
+162,194,225,8,8,225,14,1,225,16,8,225,22,1,225,24,1,225,28,8,
+230,86,17,224,44,11,224,40,7,192,37,225,39,1,225,111,11,199,72,0,
+66,225,93,2,232,229,2,161,96,130,154,157,67,225,62,0,188,177,193,30,
+130,91,225,93,7,201,64,225,152,3,225,164,10,193,94,225,157,16,0,54,
+130,145,226,192,0,160,32,2,49,49,57,224,44,14,2,49,49,50,233,108,
+1,65,165,131,237,225,165,7,226,120,1,224,255,38,131,93,0,49,181,16,
+224,21,6,0,48,135,78,226,130,7,193,133,224,22,7,160,45,64,165,132,
+129,224,165,4,224,139,47,225,21,5,96,29,64,108,234,210,0,225,106,15,
+96,13,103,60,224,13,5,128,0,64,164,165,19,96,164,0,67,160,139,70,
+38,64,27,165,21,227,12,9,226,148,4,227,226,5,225,135,51,192,161,128,
+78,224,21,5,193,17,225,40,2,226,101,25,224,53,1,225,34,51,197,253,
+129,6,224,71,7,129,240,64,39,134,22,128,39,0,80,225,239,33,226,245,
+27,224,116,7,168,176,160,22,1,50,49,147,173,224,83,37,0,58,133,71,
+224,178,0,224,99,4,1,50,49,148,26,64,36,166,51,192,36,0,56,71,
+127,128,30,64,29,134,58,145,217,64,23,0,53,98,63,64,25,0,54,96,
+25,224,255,2,128,97,96,27,131,193,161,16,64,111,103,38,4,32,95,55,
+52,57,77,22,0,53,169,239,232,60,5,136,111,85,241,160,30,69,53,192,
+60,2,95,55,53,103,96,0,54,194,113,239,17,7,64,27,136,54,70,238,
+160,219,131,163,64,135,1,95,51,69,252,128,38,64,94,64,29,131,28,11,
+73,79,46,115,101,114,105,97,108,105,122,101,71,255,64,30,72,108,18,97,
+100,100,95,108,122,55,55,95,99,111,109,112,114,101,115,115,111,114,96,30,
+130,47,3,85,32,75,52,64,2,0,90,224,1,4,0,75,226,143,0,160,
+128,162,52,75,52,67,139,6,95,56,48,53,32,95,56,118,217,160,221,96,
+23,65,90,1,53,54,85,71,4,66,32,95,55,57,131,255,0,53,65,245,
+0,75,65,240,160,37,172,16,2,58,50,49,74,13,97,124,64,38,78,9,
+0,56,65,188,0,56,72,186,96,30,201,212,104,126,0,64,232,127,6,13,
+42,42,42,32,69,120,99,101,112,116,105,111,110,58,104,129,96,52,129,234,
+168,216,160,174,1,52,51,64,14,64,91,0,53,203,32,224,204,7,0,53,
+97,145,193,233,224,25,3,0,52,174,56,205,202,224,88,1,64,70,128,230,
+2,56,53,51,137,31,1,95,56,66,27,224,165,1,2,46,104,115,244,237,
+0,132,122,225,45,1,128,109,96,64,128,10,0,56,75,168,128,254,129,227,
+0,53,96,133,160,179,97,85,225,69,0,3,64,95,52,57,64,23,68,242,
+64,60,203,150,162,173,224,163,4,64,255,1,64,95,167,11,224,31,7,64,
+102,72,124,224,92,6,75,114,224,0,2,65,89,0,54,225,89,0,90,22,
+83,99,0,49,66,185,1,49,53,65,1,0,51,154,42,64,39,166,248,4,
+56,49,51,32,75,107,179,145,60,2,95,56,52,128,200,64,35,130,210,245,
+118,0,247,139,2,64,80,0,49,64,201,1,83,32,66,41,192,61,224,7,
+3,77,200,172,128,64,14,243,63,5,64,19,5,67,32,95,57,53,55,195,
+115,1,50,49,99,169,194,71,172,62,225,163,1,13,99,111,109,98,105,110,
+97,116,111,114,115,58,94,42,97,174,68,131,169,145,237,41,2,225,9,0,
+131,114,1,80,32,94,249,132,71,64,97,224,208,14,129,229,100,252,128,30,
+226,1,2,97,229,66,96,2,95,49,57,65,95,241,138,5,193,192,0,89,
+165,160,226,152,5,1,50,49,65,214,160,96,69,61,227,96,5,193,48,192,
+81,196,105,192,121,130,7,107,240,0,55,103,163,235,241,4,226,218,0,225,
+53,19,2,112,105,108,76,2,14,117,115,101,100,32,98,111,111,116,32,109,
+111,100,117,108,140,13,64,164,194,66,225,166,1,224,249,18,246,98,2,226,
+163,11,67,86,129,139,160,64,96,163,0,85,98,242,241,106,4,145,109,226,
+17,7,237,1,4,224,233,8,224,225,13,17,116,111,116,97,108,32,105,109,
+112,111,114,116,32,116,105,109,101,32,64,0,96,220,64,96,110,131,65,38,
+3,51,57,32,35,146,106,105,94,0,57,98,56,224,70,1,0,109,228,1,
+1,129,149,239,125,4,251,168,2,128,140,65,203,64,7,143,147,1,95,56,
+116,18,64,102,124,96,0,48,69,255,98,210,131,75,209,93,66,130,168,2,
+206,31,1,56,48,114,248,68,82,111,45,110,71,96,40,133,206,226,87,18,
+246,223,1,72,28,224,158,1,64,45,1,83,32,239,215,2,226,83,5,65,
+73,89,170,225,180,1,211,33,226,154,4,1,83,39,192,121,1,80,32,97,
+244,98,29,146,182,129,31,117,107,243,33,1,96,24,97,215,129,238,1,95,
+49,78,63,1,95,55,145,181,128,237,0,50,240,65,0,128,33,253,42,1,
+129,57,2,50,49,52,240,79,1,66,76,134,253,70,235,79,121,96,21,134,
+111,0,85,231,3,2,64,21,134,80,128,138,229,188,13,162,96,0,55,65,
+249,1,95,57,101,8,113,3,4,48,32,95,57,52,145,77,64,29,82,78,
+0,56,79,25,64,140,164,93,193,231,65,58,67,206,226,132,8,17,67,97,
+110,110,111,116,32,102,105,110,100,32,112,97,99,107,97,103,227,95,7,163,
+5,225,141,7,230,155,0,0,52,168,73,1,95,57,161,215,64,212,0,54,
+96,212,230,167,2,3,112,107,103,34,100,201,64,153,226,70,4,81,210,64,
+60,144,133,64,67,143,156,1,51,57,72,72,64,180,169,64,226,73,3,0,
+55,173,94,187,79,226,221,2,128,11,2,95,56,48,97,142,128,13,246,40,
+0,161,101,228,167,29,167,177,231,175,7,0,56,233,119,2,231,6,5,75,
+6,225,96,8,0,91,64,10,129,82,227,213,3,1,52,50,73,104,249,191,
+0,163,81,65,113,4,79,32,79,32,35,65,37,66,187,132,180,4,79,32,
+35,57,51,251,36,1,96,107,128,70,224,107,5,132,75,69,51,229,34,7,
+226,94,20,2,32,95,57,83,216,224,71,1,200,84,128,53,68,47,230,89,
+8,1,95,57,67,230,216,42,99,199,96,82,227,174,4,224,98,0,242,38,
+10,225,102,5,166,213,229,84,27,161,126,229,84,14,0,32,149,53,225,89,
+1,242,53,7,65,76,83,215,193,76,96,71,224,12,0,230,0,4,64,129,
+72,11,230,226,2,205,214,224,231,182,246,217,1,234,113,9,105,125,1,95,
+57,140,125,167,72,118,170,199,72,160,79,1,50,49,149,30,225,254,15,227,
+89,26,227,49,13,226,197,1,115,252,0,100,226,204,7,234,73,4,134,57,
+0,67,102,203,0,57,101,130,0,95,75,163,119,125,4,95,51,50,50,32,
+135,132,64,0,68,77,233,70,0,232,174,41,224,172,23,104,161,224,170,5,
+227,117,37,3,46,104,115,45,64,68,213,228,131,122,229,185,16,233,17,3,
+101,194,3,111,117,110,100,172,168,229,188,2,202,206,225,239,22,1,50,49,
+171,61,225,240,3,0,48,76,237,225,59,0,135,255,103,161,107,153,0,49,
+66,109,235,153,0,65,65,135,22,133,187,128,51,136,10,103,8,64,110,0,
+58,128,26,229,208,0,97,15,229,212,1,5,57,52,32,95,52,51,96,78,
+192,188,224,184,5,225,73,0,230,125,0,0,57,75,44,128,0,224,40,2,
+227,169,1,157,140,189,146,225,241,30,102,90,234,160,7,225,125,6,6,112,
+97,114,115,105,110,103,161,111,192,0,168,202,97,246,148,221,224,148,1,104,
+96,250,230,5,224,143,7,204,87,128,18,1,95,57,110,219,235,41,24,64,
+138,1,101,100,236,90,2,112,192,214,30,224,152,6,192,2,128,157,233,123,
+7,96,13,224,161,0,251,142,1,233,138,8,162,217,225,61,2,228,251,1,
+217,164,1,49,48,82,13,1,95,56,153,104,0,95,88,141,201,83,97,122,
+98,214,128,10,224,208,5,194,212,7,97,109,101,32,100,111,101,115,98,222,
+12,97,103,114,101,101,32,119,105,116,104,32,102,105,160,29,193,125,161,203,
+133,8,130,250,160,14,0,79,158,243,154,4,231,14,1,225,20,14,221,38,
+224,25,10,193,211,226,173,17,64,0,225,237,4,224,2,3,230,59,4,228,
+15,6,65,175,0,55,211,14,197,26,2,49,48,55,227,164,3,1,57,49,
+64,218,132,192,224,0,2,227,69,1,224,1,1,157,255,224,31,17,106,252,
+224,31,18,64,1,224,229,21,224,56,18,233,46,8,1,49,48,128,233,224,
+0,3,130,60,226,140,9,224,70,2,184,75,224,88,3,224,41,3,224,128,
+9,224,29,5,225,193,14,225,202,1,225,3,22,226,203,0,229,41,9,129,
+155,0,52,95,103,0,75,231,79,1,224,0,0,226,1,16,226,10,4,227,
+248,22,1,49,48,121,175,227,249,24,9,116,121,112,101,32,99,104,101,99,
+107,227,255,1,232,17,2,2,48,55,55,100,9,67,127,224,52,1,0,45,
+64,0,160,44,224,187,8,225,54,20,225,94,2,226,57,49,224,97,20,64,
+2,235,210,0,229,237,4,242,59,2,245,224,36,224,0,4,224,180,15,64,
+1,227,54,3,224,43,23,224,228,24,224,230,19,225,69,1,224,88,9,225,
+1,3,187,104,224,80,10,248,121,4,224,83,3,224,74,9,224,2,4,224,
+80,4,224,31,10,224,94,3,224,79,8,192,85,226,4,2,224,30,9,128,
+118,224,103,3,224,102,16,224,36,0,229,51,17,128,41,128,103,109,190,224,
+8,12,231,219,14,227,82,7,0,49,107,93,227,82,24,6,100,101,115,117,
+103,97,114,231,79,3,131,70,243,176,0,224,0,4,196,40,232,112,13,224,
+5,9,225,0,1,228,5,6,64,0,102,198,225,1,4,234,144,17,64,0,
+225,117,1,138,156,224,19,6,234,168,15,2,100,111,110,175,227,224,116,9,
+231,68,5,224,79,2,224,77,6,0,44,224,64,0,128,30,236,135,6,178,
+164,192,29,231,223,7,0,115,172,189,64,31,231,187,4,224,60,4,224,57,
+10,1,32,43,160,119,224,53,16,224,50,16,224,161,12,237,35,6,224,0,
+6,128,100,227,19,0,96,203,254,95,0,224,8,27,225,225,5,234,22,1,
+96,26,233,59,17,1,95,55,122,88,129,85,96,17,82,113,233,62,1,3,
+95,56,52,56,224,225,2,10,73,110,116,101,114,97,99,116,105,118,101,225,
+85,0,1,95,52,81,72,226,50,8,96,120,140,127,96,10,99,3,225,104,
+11,3,108,111,97,100,205,121,233,94,18,225,102,2,174,143,160,38,225,88,
+16,228,100,3,225,44,6,235,51,0,128,14,225,61,6,1,64,67,196,15,
+138,152,228,25,0,199,152,224,13,0,1,49,49,244,63,2,164,106,68,15,
+80,199,242,115,3,83,186,0,50,105,123,160,165,250,67,8,224,137,1,240,
+23,6,192,194,64,27,224,94,3,72,19,115,238,128,37,81,210,142,138,132,
+129,84,84,228,69,2,128,187,224,33,0,224,46,4,64,0,65,245,0,55,
+65,245,192,17,224,16,7,224,32,8,0,83,64,169,70,141,85,124,212,255,
+212,252,193,15,180,188,64,192,79,53,0,49,255,66,6,253,86,0,0,51,
+179,99,2,85,32,75,192,32,224,247,4,229,199,2,224,23,2,196,231,160,
+120,112,54,128,62,2,95,49,51,148,150,121,121,110,15,160,0,224,171,11,
+249,142,1,170,178,224,10,4,224,201,4,65,121,192,0,224,248,11,202,111,
+161,4,7,32,67,32,61,61,32,64,35,129,246,64,84,143,33,245,214,5,
+225,203,4,193,2,64,204,172,205,1,57,54,237,102,0,78,240,162,67,78,
+224,222,42,7,57,55,48,32,95,53,49,53,64,4,64,43,0,57,97,103,
+64,44,156,185,67,39,96,7,0,54,116,249,64,66,189,5,0,53,87,90,
+2,95,54,49,72,218,128,53,155,134,224,186,0,80,56,2,64,95,53,75,
+96,0,53,111,138,128,37,227,142,1,2,101,111,102,131,187,64,197,3,95,
+51,54,51,64,84,0,50,226,216,1,64,111,0,54,224,111,6,1,50,48,
+146,132,99,28,119,107,192,53,96,247,92,227,228,119,4,3,77,97,105,110,
+96,100,0,79,64,128,1,57,56,224,31,7,0,109,192,31,164,6,64,115,
+219,187,0,50,192,116,3,49,57,55,51,237,250,8,135,120,224,152,0,1,
+49,57,66,224,170,17,96,18,64,158,225,89,9,129,113,1,49,57,92,230,
+5,49,57,55,55,32,35,112,211,64,11,74,42,96,37,2,95,50,48,86,
+25,192,31,130,225,192,13,137,198,224,250,5,3,67,39,32,79,96,47,93,
+55,128,200,131,183,224,194,15,3,119,104,101,114,229,136,1,138,44,225,96,
+10,194,208,224,107,3,193,104,225,163,1,188,199,81,115,64,239,1,64,67,
+224,9,30,224,49,21,224,79,33,0,67,160,9,2,95,50,48,121,222,1,
+95,49,192,172,110,182,1,52,57,64,215,78,156,2,95,49,54,86,146,97,
+13,129,126,225,19,3,3,100,97,116,97,129,212,2,50,49,49,131,73,0,
+50,75,191,128,242,224,82,1,224,92,10,0,49,122,103,224,86,13,5,110,
+101,119,116,121,112,162,46,2,50,48,57,99,188,226,0,4,0,54,103,47,
+224,87,12,1,54,56,64,37,89,126,128,5,64,146,194,236,0,56,93,220,
+1,49,48,64,248,0,54,100,23,1,50,55,65,8,96,28,244,93,5,130,
+50,69,44,0,50,70,135,71,32,236,12,0,224,227,13,224,217,3,104,142,
+224,217,11,224,214,28,1,50,48,196,118,224,85,3,0,57,127,47,224,85,
+12,138,3,193,136,202,208,136,101,226,239,2,224,13,2,176,158,224,176,0,
+182,228,128,94,224,9,2,64,39,192,113,224,119,9,5,102,111,114,101,105,
+103,132,12,224,147,18,103,227,194,112,224,38,6,4,99,99,97,108,108,128,
+37,224,26,8,2,97,112,105,224,63,0,67,100,73,66,224,35,6,4,117,
+110,115,97,102,195,149,224,37,1,2,50,48,53,161,160,1,50,48,64,117,
+193,55,1,50,48,78,65,225,96,4,226,164,11,225,212,13,113,201,225,6,
+11,3,99,108,97,115,153,89,65,213,134,71,161,222,228,205,13,225,239,0,
+1,49,50,65,120,1,95,53,110,242,96,31,97,122,225,166,12,71,13,97,
+69,117,138,128,214,225,159,1,1,50,48,85,180,224,32,9,224,123,4,96,
+124,229,30,2,228,162,1,163,42,96,184,0,54,125,22,96,78,226,226,16,
+156,149,226,140,13,5,110,115,116,97,110,99,226,230,0,129,106,224,87,1,
+161,121,226,143,19,0,55,97,59,226,123,3,228,116,4,4,101,102,97,117,
+108,162,90,225,243,1,229,142,1,99,238,205,135,230,87,0,1,49,57,68,
+24,225,14,4,96,131,75,127,0,51,98,46,157,101,224,104,1,1,40,41,
+194,152,0,49,192,71,161,18,5,57,56,53,32,95,54,115,7,198,125,64,
+230,225,94,5,225,60,15,0,50,106,199,224,219,13,228,31,4,170,95,226,
+185,5,110,238,96,23,192,80,0,85,97,86,96,192,224,83,12,5,112,97,
+116,116,101,114,163,165,1,50,49,85,55,225,216,17,0,54,84,137,64,65,
+231,113,3,224,77,16,226,184,2,161,118,225,2,5,160,182,228,211,3,227,
+103,24,86,61,225,248,15,4,114,105,118,105,110,94,112,227,89,13,227,173,
+3,73,191,224,69,12,1,118,105,198,178,0,48,135,176,69,206,160,155,227,
+16,1,141,90,224,65,13,226,225,13,130,100,82,54,129,229,2,48,56,57,
+114,187,2,54,54,48,160,78,195,100,130,216,129,96,224,5,3,226,8,13,
+224,24,6,1,114,111,169,71,226,34,1,231,216,12,224,54,6,5,110,111,
+109,105,110,97,229,105,14,6,112,104,97,110,116,111,109,165,70,224,113,8,
+11,101,112,114,101,115,101,110,116,97,116,105,111,224,67,0,228,90,6,72,
+212,159,210,233,23,3,67,199,108,21,207,8,67,113,225,184,8,233,121,11,
+199,12,233,107,9,124,12,96,21,227,226,27,66,240,143,37,233,150,11,143,
+1,76,68,0,32,140,110,96,34,0,49,105,18,140,138,0,79,160,89,0,
+50,123,57,110,101,66,16,1,48,52,116,144,0,52,185,141,239,15,2,224,
+202,8,1,57,52,225,75,2,1,60,45,161,61,224,213,15,175,147,235,16,
+3,100,223,224,213,5,229,26,15,234,163,2,128,56,131,152,244,199,0,225,
+3,13,238,243,5,111,78,73,11,65,55,239,82,0,96,0,65,228,157,105,
+96,93,169,77,132,255,120,193,109,199,137,85,186,17,64,50,156,96,0,85,
+74,238,109,177,3,64,67,32,60,187,142,224,18,6,64,241,224,18,6,65,
+96,237,35,4,132,232,100,197,1,85,32,237,63,6,131,101,160,27,2,95,
+54,56,82,16,193,255,128,235,238,39,6,224,44,17,224,42,4,103,165,192,
+42,0,75,125,35,193,82,0,67,224,174,5,64,22,237,210,5,224,58,3,
+161,221,146,13,160,108,224,116,2,109,212,224,90,0,65,58,157,103,129,182,
+2,80,32,35,70,232,161,198,193,170,0,58,133,251,160,37,2,80,32,35,
+103,183,0,80,110,122,70,103,67,145,229,42,19,139,228,0,48,108,157,65,
+211,159,106,230,26,23,229,248,4,0,48,69,62,163,180,133,248,229,247,8,
+64,140,175,7,224,140,9,2,50,48,57,66,106,233,118,14,166,14,230,143,
+15,232,13,3,160,138,224,126,13,0,54,96,126,97,174,232,123,5,164,150,
+232,140,5,224,139,9,112,78,75,134,106,79,225,82,10,229,250,0,159,95,
+71,148,0,48,224,168,2,5,83,79,85,82,67,69,165,128,233,121,3,1,
+57,53,169,106,130,74,101,38,165,197,233,37,6,234,12,5,64,121,170,4,
+224,177,13,179,26,192,38,99,233,64,21,160,91,224,132,4,232,21,0,229,
+152,5,235,121,5,225,125,9,0,97,170,247,1,49,57,182,168,0,83,192,
+47,233,223,17,138,200,230,168,1,225,55,1,66,249,224,97,7,2,104,105,
+100,199,242,224,178,13,169,141,240,12,5,107,88,226,146,4,128,42,224,107,
+21,8,113,117,97,108,105,102,105,101,100,161,165,230,224,6,77,88,130,66,
+231,110,0,239,91,20,225,146,10,225,224,1,92,170,250,19,0,114,233,217,
+100,96,65,229,67,2,2,95,49,57,70,109,134,204,105,254,178,180,2,50,
+49,50,130,21,1,57,57,99,189,193,8,64,104,96,237,227,80,10,128,51,
+224,50,0,236,1,10,224,45,6,141,78,179,63,224,26,9,234,35,25,160,
+106,224,144,24,235,13,22,128,129,224,176,10,225,165,8,145,91,2,90,32,
+90,115,255,64,17,136,152,67,38,212,123,64,7,197,61,134,209,0,90,128,
+21,192,50,134,179,103,103,1,48,57,160,171,66,220,0,53,65,151,160,108,
+100,17,135,178,230,157,11,128,31,0,90,161,203,140,98,96,0,64,95,133,
+216,2,95,53,48,64,206,229,12,4,88,198,64,34,80,98,192,130,235,12,
+23,108,237,233,87,9,228,61,15,2,95,51,52,64,80,0,56,116,110,235,
+55,48,229,177,15,64,85,235,83,2,224,117,2,1,51,53,107,17,241,105,
+5,166,251,239,41,12,237,102,27,228,239,3,149,232,241,247,0,192,168,65,
+77,135,10,227,177,23,235,190,1,0,49,240,110,11,4,115,116,111,99,107,
+235,38,0,224,44,3,164,110,235,114,4,242,197,2,224,47,8,235,162,10,
+2,97,110,121,240,73,1,226,235,6,1,50,49,79,213,226,235,8,65,99,
+5,10,65,32,75,52,32,64,12,0,54,128,12,0,51,87,36,64,15,132,
+174,1,75,50,118,228,64,16,131,25,0,75,64,34,96,15,235,176,13,135,
+34,66,217,193,33,66,94,96,16,230,151,5,193,119,67,73,226,51,1,242,
+198,0,238,28,6,97,152,96,30,144,245,96,226,0,50,168,237,245,155,6,
+152,192,208,146,226,211,4,64,183,131,177,0,85,250,78,3,245,178,23,245,
+175,11,143,209,235,17,8,140,171,0,80,114,252,66,178,96,165,234,67,0,
+217,94,64,25,64,129,2,95,49,52,73,23,66,123,2,49,56,57,123,33,
+87,129,236,17,1,64,176,132,77,120,181,138,2,248,187,0,224,2,1,70,
+16,128,169,224,1,1,134,46,7,95,49,53,54,57,32,95,56,108,150,224,
+36,9,64,1,68,182,128,0,224,82,3,224,2,7,224,36,0,166,121,254,
+218,22,192,152,219,191,128,19,170,224,192,29,232,126,0,134,130,235,250,2,
+220,95,245,100,2,188,230,203,59,129,108,224,2,3,224,104,2,161,1,128,
+16,96,74,254,205,1,128,149,128,39,64,33,91,46,75,149,0,54,65,193,
+97,102,101,204,160,9,236,34,9,0,51,150,172,165,192,0,83,64,79,157,
+89,2,95,49,50,120,70,224,32,0,238,14,0,64,66,137,78,109,251,224,
+0,5,224,175,1,129,200,224,79,0,98,31,124,31,74,226,206,64,0,55,
+109,236,128,0,225,255,1,226,5,3,225,182,9,251,152,0,67,121,1,54,
+56,128,130,225,22,1,3,83,32,95,52,75,238,154,8,64,172,65,74,193,
+129,1,52,54,93,113,97,119,96,14,0,55,69,162,253,50,5,224,153,7,
+96,56,0,52,96,181,64,114,99,8,128,59,101,23,0,52,188,68,224,172,
+7,226,212,1,224,72,1,224,204,4,224,25,1,206,236,96,21,254,55,0,
+224,224,31,219,221,224,207,0,251,233,3,224,219,5,224,134,1,158,196,4,
+64,95,53,54,53,129,33,130,38,66,82,65,215,186,141,128,9,128,18,69,
+15,80,102,120,79,2,56,57,51,98,206,64,67,0,79,68,199,227,232,0,
+96,149,226,26,5,161,60,160,140,64,154,100,40,128,36,93,157,224,42,0,
+98,197,64,100,1,57,48,195,229,224,106,4,193,25,255,154,6,15,66,97,
+100,32,71,65,68,84,32,114,101,115,117,108,116,32,230,108,2,160,47,70,
+245,68,231,0,56,98,187,3,95,49,50,54,69,132,135,246,64,13,96,28,
+232,150,0,202,127,172,55,128,0,68,189,168,171,72,145,3,95,51,51,57,
+224,53,0,133,128,96,149,0,79,155,147,129,12,162,117,97,107,128,131,168,
+105,224,194,8,1,58,58,96,176,225,153,0,128,45,128,167,65,97,91,185,
+229,73,0,0,95,75,128,192,123,0,58,128,7,105,32,0,89,103,195,132,
+18,96,245,0,57,73,118,163,220,161,10,0,52,102,140,207,90,222,54,228,
+234,1,0,95,214,113,74,14,255,25,1,160,61,65,41,1,57,57,96,229,
+0,52,224,145,1,224,69,2,224,63,8,126,168,195,70,224,62,12,224,44,
+3,222,143,128,0,82,109,129,161,65,253,64,233,175,199,246,226,6,230,250,
+4,174,242,230,231,5,103,157,96,130,224,20,3,243,64,0,224,23,3,234,
+137,9,143,116,1,50,49,87,20,242,199,7,1,45,62,200,165,192,73,224,
+99,5,245,18,1,224,29,0,242,116,4,224,25,1,196,221,224,11,0,192,
+8,255,253,3,65,3,240,62,16,246,80,12,224,9,11,234,39,0,225,183,
+2,132,121,196,112,96,168,196,244,0,66,83,252,0,67,64,4,161,177,193,
+80,193,67,161,27,96,7,102,216,192,15,224,135,30,160,117,224,86,11,96,
+216,0,50,124,169,96,252,0,54,96,252,0,83,234,169,2,224,68,0,0,
+52,72,117,233,126,4,194,62,145,52,224,40,0,71,34,82,130,67,47,64,
+232,0,80,130,163,161,3,96,250,133,61,227,255,3,235,126,4,224,195,10,
+169,250,242,18,36,0,49,81,211,235,197,8,160,186,132,240,131,30,224,227,
+1,129,146,64,125,147,57,124,176,235,14,8,65,46,100,169,224,167,13,2,
+50,48,57,109,158,140,23,64,47,139,16,224,47,26,0,55,128,47,171,48,
+226,131,9,2,50,48,57,140,1,76,177,162,14,64,48,138,169,190,121,1,
+49,57,75,94,64,6,0,49,128,78,138,22,227,155,4,0,57,134,130,192,
+18,1,64,80,81,79,0,51,64,91,172,205,227,75,8,97,171,64,77,206,
+82,242,153,19,208,245,2,55,32,35,184,252,241,81,8,0,58,128,133,224,
+74,14,226,83,5,237,113,10,70,113,0,48,65,197,64,12,154,193,1,50,
+48,123,244,239,187,9,64,106,244,162,17,132,126,0,48,176,102,1,57,52,
+101,63,231,113,0,224,77,13,132,36,237,219,1,66,69,225,220,16,185,60,
+194,84,0,48,113,77,227,190,15,192,59,131,46,114,195,228,33,8,192,67,
+161,233,224,15,1,226,167,5,109,101,226,71,26,160,69,64,48,162,216,224,
+48,12,129,31,0,56,109,227,96,62,64,41,1,54,48,149,48,0,50,252,
+208,3,4,85,73,100,101,110,117,42,247,55,11,138,243,100,33,173,236,171,
+222,139,31,0,54,66,29,1,95,52,72,243,235,30,10,137,33,89,10,1,
+50,32,192,30,98,151,96,159,224,187,16,245,247,16,0,50,97,7,1,50,
+48,67,42,224,24,3,2,50,48,55,66,194,2,50,48,54,238,109,5,160,
+107,227,111,4,153,85,64,6,0,52,129,27,205,134,239,249,11,224,97,0,
+247,16,11,229,190,15,247,17,50,224,83,14,124,54,229,105,15,240,179,22,
+156,106,64,118,239,4,3,4,105,110,102,105,120,219,180,224,45,3,0,57,
+222,134,224,45,8,0,114,240,179,10,2,49,54,54,240,227,10,96,46,128,
+45,239,166,5,241,207,11,226,147,12,3,100,105,103,105,226,146,11,97,126,
+194,146,0,75,109,231,112,152,185,60,82,67,128,237,242,77,11,65,28,160,
+32,224,33,8,170,239,160,91,194,190,224,36,0,160,0,228,94,4,224,64,
+12,240,225,7,0,48,193,78,230,212,2,227,247,7,249,206,1,0,80,160,
+71,121,168,97,243,66,183,187,83,194,62,128,12,101,76,0,54,238,160,5,
+131,103,138,207,64,63,133,69,240,84,0,230,63,1,130,195,0,54,135,223,
+205,49,65,76,237,71,1,239,124,0,233,126,1,64,68,145,3,205,221,224,
+30,3,228,26,0,192,14,112,125,160,74,96,56,224,16,0,149,105,224,67,
+2,182,235,233,131,4,253,120,0,230,214,3,165,101,233,127,3,107,148,203,
+153,224,8,0,224,91,0,112,59,160,159,225,2,5,160,21,0,66,133,234,
+226,168,6,224,29,2,233,68,3,245,174,0,224,169,2,0,39,131,160,105,
+35,174,186,233,57,0,103,78,247,184,5,137,92,241,0,3,240,251,3,160,
+115,253,139,6,96,101,198,93,167,92,238,204,9,65,242,166,234,225,71,2,
+224,242,2,64,166,66,204,237,4,2,232,102,3,229,60,9,178,17,225,70,
+5,255,93,2,224,18,0,255,99,10,121,206,64,132,192,221,224,218,22,76,
+223,161,152,96,201,0,54,160,201,206,128,160,138,241,223,0,180,115,142,160,
+81,93,224,17,0,129,133,229,45,1,229,46,5,231,220,4,0,56,176,175,
+224,50,8,234,104,3,242,48,2,154,165,176,48,101,10,71,147,224,83,12,
+225,13,5,247,116,7,232,66,40,80,124,224,8,1,65,32,250,119,29,224,
+9,29,236,67,2,226,16,2,68,112,248,67,18,192,185,103,152,181,200,226,
+66,1,127,29,193,13,225,247,5,241,18,2,233,138,13,0,83,98,18,160,
+38,64,34,0,54,72,200,224,54,0,250,61,0,252,135,1,1,50,48,188,
+106,103,74,131,85,231,63,3,104,166,254,48,6,69,146,102,11,248,76,5,
+104,30,236,134,11,80,119,161,245,224,89,0,64,73,0,48,158,141,0,48,
+108,126,224,100,10,136,173,230,22,5,224,100,16,219,22,233,1,16,184,35,
+224,194,6,2,50,48,56,136,72,224,126,3,1,50,48,105,151,128,109,224,
+197,19,2,49,51,48,230,56,0,224,92,4,114,204,227,40,3,224,52,9,
+108,30,224,52,4,149,244,224,51,13,0,54,68,12,225,35,10,128,197,225,
+35,16,165,119,224,194,5,231,72,7,64,111,137,231,224,93,7,174,251,225,
+231,2,227,4,2,230,21,3,226,142,13,165,113,131,16,227,235,4,90,64,
+251,103,20,227,35,2,0,53,103,178,249,17,9,193,186,227,35,6,1,50,
+48,198,21,0,95,250,35,2,0,48,131,8,241,119,5,1,46,46,233,108,
+11,193,44,239,74,10,65,44,139,128,114,101,64,14,252,239,10,96,128,136,
+128,2,55,57,32,64,15,174,76,237,208,6,86,30,0,58,96,35,235,210,
+14,192,243,173,173,0,53,164,214,227,160,5,74,224,2,50,48,55,198,168,
+64,8,64,84,251,161,19,224,9,11,228,199,0,1,50,48,117,75,70,215,
+139,172,2,50,48,54,98,69,64,25,203,116,161,41,1,50,48,86,184,226,
+79,7,64,130,239,137,6,65,177,243,31,21,1,50,48,138,47,230,235,8,
+1,95,53,64,12,150,69,134,226,64,159,224,219,47,194,58,224,219,48,174,
+59,224,201,1,225,181,9,226,254,1,75,13,64,72,145,161,226,141,0,107,
+44,64,47,254,130,4,0,111,246,110,0,230,75,4,91,92,1,48,53,162,
+233,118,216,232,70,0,232,64,13,83,116,106,220,119,225,225,82,12,1,49,
+54,130,47,96,209,238,227,19,4,81,117,97,108,68,96,152,238,227,19,96,
+151,106,168,238,203,3,74,171,224,7,3,97,135,255,189,1,224,249,8,238,
+232,0,169,25,64,12,105,183,152,46,2,52,48,55,240,179,5,192,0,64,
+195,131,148,231,151,2,232,54,4,228,157,15,1,50,52,190,149,132,89,237,
+138,4,0,102,128,147,196,100,132,149,64,41,224,9,3,231,70,0,229,109,
+3,224,74,7,3,116,104,101,110,164,103,192,77,224,76,49,2,101,108,115,
+184,150,224,154,1,228,15,4,111,208,224,237,13,114,248,224,237,22,130,110,
+99,113,246,163,16,242,44,9,230,83,9,64,7,109,156,2,80,32,35,95,
+41,69,26,64,22,165,25,224,160,14,233,12,4,224,160,3,1,108,101,110,
+213,224,161,1,189,189,224,206,14,129,111,193,33,64,119,217,117,224,119,13,
+226,6,16,1,99,97,161,110,232,40,4,224,39,9,0,111,225,64,7,97,
+21,0,58,132,94,228,47,4,1,49,57,70,29,187,36,230,211,2,160,208,
+142,25,235,167,2,141,144,226,204,2,235,115,0,231,34,3,103,79,100,230,
+135,112,136,66,160,96,232,206,0,226,202,3,224,61,1,2,50,48,54,164,
+142,224,255,21,224,217,3,231,51,7,64,233,180,123,241,108,13,233,76,0,
+141,46,128,146,96,54,237,121,0,232,77,1,64,36,157,238,230,66,3,86,
+11,161,247,228,209,10,98,221,128,81,0,54,224,81,0,232,92,9,225,117,
+3,224,232,3,3,119,104,101,114,227,88,1,98,177,245,19,12,0,54,236,
+61,0,225,168,7,110,156,97,127,96,173,106,142,237,13,4,0,39,76,151,
+92,56,96,75,100,195,69,16,99,252,227,204,2,227,72,6,65,8,99,72,
+225,88,15,226,68,3,1,49,50,96,184,234,14,5,70,59,160,31,168,211,
+224,120,10,64,105,165,68,111,42,96,200,0,89,248,215,0,223,2,222,126,
+184,219,64,41,110,125,240,88,3,161,133,180,60,225,193,3,0,48,232,4,
+25,140,141,97,223,224,39,20,138,64,96,40,239,27,7,198,107,143,128,167,
+6,64,169,104,66,65,16,96,59,145,178,168,93,109,39,224,186,0,244,217,
+9,237,239,1,232,115,31,232,135,20,228,124,2,109,154,2,95,50,48,97,
+79,224,25,10,205,178,64,35,237,159,53,65,231,226,7,5,192,13,236,217,
+11,173,156,237,148,14,0,50,181,209,160,19,237,123,20,2,50,48,53,230,
+120,4,237,123,2,74,250,128,69,120,156,0,53,171,232,224,147,5,224,82,
+13,239,55,7,192,82,0,53,139,8,192,82,64,97,224,82,7,227,149,3,
+194,14,167,135,130,161,224,87,8,229,90,3,130,121,225,58,18,64,58,0,
+51,65,121,0,53,188,57,0,49,111,125,224,85,1,228,119,3,8,95,112,
+114,105,109,105,116,105,118,229,102,0,211,42,225,140,3,0,56,72,224,224,
+150,4,208,38,186,119,228,52,7,166,238,233,211,12,5,115,116,114,105,110,
+103,233,211,10,97,217,246,36,1,169,130,131,19,64,149,231,207,0,65,1,
+135,207,65,59,248,34,3,65,193,68,91,1,56,52,211,182,3,95,56,52,
+56,236,189,4,96,54,133,244,67,169,64,79,96,102,149,187,65,215,237,12,
+13,173,54,226,14,11,138,32,135,89,235,103,2,64,117,0,52,128,117,193,
+174,130,247,64,103,133,199,192,129,97,198,160,129,171,15,228,184,2,67,57,
+229,241,10,224,16,33,243,99,0,226,92,7,209,228,224,108,6,103,245,106,
+197,182,41,64,167,224,85,0,224,23,40,244,214,4,225,54,0,229,61,0,
+177,129,212,84,165,219,160,6,226,251,2,224,185,8,230,181,1,232,166,0,
+224,92,1,71,241,164,113,96,53,239,121,11,224,64,10,193,188,128,64,144,
+244,239,180,12,166,37,229,250,3,224,205,3,244,12,9,249,84,8,243,142,
+10,218,130,231,81,41,233,85,9,86,163,224,253,34,224,250,2,64,60,128,
+136,224,249,16,224,247,3,224,244,0,224,236,3,233,159,8,69,176,195,193,
+131,226,96,21,203,167,96,23,100,76,163,6,231,4,7,244,234,2,235,69,
+12,0,55,73,52,64,112,101,119,220,43,207,93,241,170,0,244,181,18,0,
+55,94,216,129,195,0,55,98,184,172,18,229,59,15,236,20,15,237,74,5,
+224,55,9,236,30,6,97,45,224,200,4,136,38,96,28,229,89,7,65,250,
+241,172,15,225,172,4,1,60,45,128,100,209,189,1,56,53,64,157,97,156,
+0,58,129,23,146,17,1,52,55,82,33,65,46,242,33,3,98,135,0,50,
+104,1,64,29,177,80,224,116,11,226,94,0,242,33,23,78,235,131,84,0,
+53,128,84,0,54,228,231,9,235,116,6,233,160,12,98,240,132,105,248,209,
+3,129,183,248,206,10,154,63,0,49,99,202,144,145,64,131,164,248,241,235,
+21,96,166,133,168,0,85,233,208,1,2,67,32,60,166,172,0,83,224,18,
+5,126,18,230,209,4,96,17,181,159,102,210,192,121,224,39,6,134,55,160,
+38,0,90,224,38,3,80,211,220,36,64,141,245,42,0,134,239,73,145,231,
+69,6,100,47,149,221,64,114,1,85,32,224,165,6,65,134,224,48,4,136,
+36,224,48,0,160,135,224,162,13,224,37,10,225,40,0,131,223,226,153,13,
+234,37,13,88,124,64,23,107,116,224,19,3,96,79,228,25,4,97,14,132,
+25,65,201,160,24,96,26,129,171,64,12,70,121,89,136,64,36,221,156,71,
+93,64,82,132,110,66,139,219,103,237,240,2,99,194,0,57,237,241,7,100,
+42,226,237,9,159,251,255,249,1,226,69,8,3,83,32,95,51,151,3,0,
+52,130,244,96,121,163,97,225,30,9,224,113,2,73,176,227,0,4,225,75,
+9,255,194,2,111,85,227,123,0,242,151,0,224,35,2,1,50,48,70,62,
+241,74,17,231,53,9,73,60,0,52,106,85,64,224,135,128,160,9,64,196,
+164,8,246,72,0,133,101,91,85,64,29,0,54,224,29,0,0,52,68,84,
+64,22,227,225,6,74,46,227,225,23,138,82,227,155,23,64,95,131,12,236,
+245,149,65,50,192,30,236,245,24,64,73,140,248,128,9,103,83,184,197,242,
+233,0,237,19,17,98,144,192,19,160,191,230,63,6,65,92,2,10,65,32,
+71,76,0,83,106,25,166,251,0,52,83,25,191,133,64,121,161,209,175,68,
+235,199,12,6,108,105,116,101,114,97,108,139,200,228,100,11,224,18,5,201,
+20,228,168,5,245,194,1,101,190,64,12,144,0,76,193,98,192,223,185,224,
+35,18,0,51,199,70,0,83,64,207,229,144,2,224,90,19,1,49,51,170,
+95,228,231,10,224,149,22,2,49,50,57,192,149,129,84,196,145,68,108,228,
+107,1,228,130,2,65,15,128,21,64,207,226,180,6,248,30,2,121,229,227,
+192,2,2,56,52,56,227,184,9,210,189,224,41,18,0,61,224,41,1,98,
+19,226,5,6,67,183,232,69,28,192,71,232,69,0,0,54,77,113,200,69,
+64,91,224,70,28,192,184,232,140,2,173,24,96,70,0,54,224,70,18,170,
+234,230,57,14,93,85,226,241,0,198,57,65,68,251,34,2,69,2,135,51,
+64,63,232,195,12,233,157,3,4,102,111,114,97,108,98,213,224,175,2,0,
+55,67,138,165,94,76,140,228,179,7,0,50,193,88,231,4,17,195,228,133,
+97,100,64,68,107,2,95,49,49,122,239,64,69,124,166,71,15,68,64,234,
+227,11,128,55,224,40,1,230,142,4,0,50,132,80,64,133,163,182,100,17,
+64,15,182,245,225,167,24,1,58,58,224,247,7,79,119,225,167,0,194,208,
+248,221,5,235,72,4,0,83,116,104,174,116,67,137,174,131,239,234,7,129,
+191,233,24,1,136,89,211,22,100,135,68,148,128,20,99,134,230,42,8,235,
+206,5,224,134,2,72,2,96,176,71,210,225,249,1,165,118,96,121,1,50,
+48,67,112,64,34,227,9,16,128,34,161,141,1,50,48,96,177,64,48,162,
+243,137,129,1,49,57,66,117,69,173,154,242,1,49,57,101,139,64,39,162,
+212,229,58,12,4,76,73,100,101,110,108,60,250,214,19,225,72,1,0,67,
+65,72,79,81,97,83,1,95,49,167,70,0,54,109,165,0,52,100,12,251,
+117,0,2,50,48,48,134,176,251,10,2,164,195,144,168,129,95,250,237,0,
+128,173,208,142,64,233,0,50,100,148,139,97,146,147,132,253,230,216,2,239,
+148,4,255,231,1,250,67,13,238,11,9,77,170,102,133,66,28,85,35,133,
+9,136,138,97,214,65,122,0,53,64,73,64,74,96,54,64,29,72,15,160,
+23,160,191,64,76,166,210,247,111,15,236,36,0,160,148,0,49,115,22,64,
+171,233,255,0,224,37,12,104,103,245,218,5,224,40,11,82,235,224,77,8,
+232,224,0,1,54,49,225,254,0,204,138,236,180,1,65,246,0,66,99,54,
+65,95,96,14,98,5,96,121,5,66,32,85,32,64,90,162,4,220,185,0,
+49,70,84,0,35,86,219,228,246,0,128,12,97,102,3,50,48,48,57,97,
+129,132,9,224,187,6,97,43,203,84,1,95,56,66,67,0,85,96,45,64,
+192,64,27,132,37,197,54,64,22,128,42,0,52,72,75,98,17,4,95,52,
+57,53,32,99,161,2,95,53,48,160,54,0,48,230,208,9,246,143,51,0,
+57,214,38,239,55,9,4,109,111,100,117,108,180,167,172,52,64,9,229,40,
+11,0,57,78,38,201,197,197,81,0,57,138,226,224,51,29,252,99,10,224,
+45,5,0,57,138,251,168,68,224,26,9,224,194,12,5,112,97,116,116,101,
+114,175,255,234,100,0,224,144,22,224,71,10,2,116,121,112,245,176,0,170,
+195,224,176,22,1,50,48,194,179,224,77,9,5,100,101,102,97,117,108,176,
+204,192,149,232,51,7,78,131,3,10,65,32,90,96,1,0,85,64,33,64,
+20,232,1,16,1,50,48,128,138,165,62,73,55,96,48,0,54,224,48,18,
+67,214,0,50,106,245,64,41,172,61,229,64,12,136,80,229,60,19,138,123,
+0,83,244,139,1,255,249,11,237,9,0,128,35,195,101,96,37,232,166,5,
+229,46,0,142,118,196,148,64,152,139,213,224,23,15,128,245,239,182,4,168,
+213,230,52,10,65,1,230,52,17,0,81,230,53,28,192,202,230,40,40,224,
+194,22,132,57,140,56,4,67,32,95,54,50,97,214,64,122,224,162,1,178,
+217,224,36,21,4,100,101,114,105,118,184,1,224,42,22,4,99,108,97,115,
+115,128,39,209,195,225,163,4,224,42,2,248,200,6,224,38,15,254,80,0,
+64,224,101,39,224,89,24,3,100,97,116,97,224,83,20,227,62,3,224,87,
+2,224,217,20,234,101,2,224,128,25,0,111,224,126,20,1,101,108,224,210,
+40,5,102,111,114,101,105,103,161,172,224,44,23,1,105,102,224,126,20,4,
+105,109,112,111,114,224,252,0,224,254,30,3,110,101,119,116,196,194,226,82,
+23,3,102,105,120,114,224,169,30,64,43,224,172,21,224,77,1,225,45,33,
+6,105,110,115,116,97,110,99,160,173,224,45,23,214,21,224,31,15,230,197,
+2,225,46,32,2,116,104,101,225,172,30,0,111,225,172,21,230,127,3,225,
+0,33,225,170,0,224,32,15,3,119,104,101,114,224,210,0,68,44,172,112,
+0,52,192,43,68,227,0,57,204,26,224,5,3,160,24,160,137,172,6,160,
+6,224,45,25,224,52,3,224,45,18,224,84,3,160,52,224,45,25,224,98,
+4,0,53,114,238,97,149,1,95,53,105,99,232,254,0,137,38,5,115,99,
+109,112,32,58,128,66,167,37,2,66,32,90,73,97,65,17,136,18,148,120,
+235,70,6,233,23,21,243,237,1,0,57,210,151,249,145,12,64,24,138,175,
+2,49,57,56,197,190,168,244,178,226,0,57,242,130,0,231,217,5,137,22,
+230,117,16,5,83,121,109,79,112,101,99,50,241,229,8,64,113,230,136,4,
+111,141,231,129,2,220,141,98,52,138,187,211,221,96,229,224,23,2,0,49,
+102,156,236,180,1,134,134,1,67,32,140,179,0,79,75,144,244,225,0,224,
+31,12,64,88,192,30,224,150,6,237,85,37,103,29,96,96,0,56,73,199,
+135,53,98,250,2,49,55,57,194,251,64,29,64,7,237,102,34,97,106,0,
+54,225,106,18,231,223,36,109,155,224,160,1,231,196,27,130,35,139,211,1,
+49,57,76,42,98,91,86,175,0,53,97,136,130,17,108,120,76,170,224,129,
+7,175,163,236,152,4,225,71,0,228,26,5,128,251,239,212,0,160,125,169,
+5,240,134,11,75,205,226,178,1,194,152,169,14,233,54,4,137,45,64,29,
+212,156,226,73,5,1,64,35,82,162,83,164,74,156,64,39,164,140,225,115,
+13,226,223,200,233,255,11,226,210,45,226,75,18,97,87,132,249,0,79,242,
+63,8,224,17,3,0,60,124,134,224,17,3,132,179,224,17,3,139,133,224,
+17,3,148,118,0,79,242,130,5,128,14,235,146,0,128,14,244,143,0,225,
+26,1,0,58,128,199,176,18,155,248,139,0,0,54,66,143,64,30,197,140,
+239,169,2,70,5,64,47,252,82,4,65,18,252,80,8,239,86,4,64,77,
+133,62,222,69,0,54,119,181,240,172,5,79,50,64,41,0,54,230,4,0,
+145,87,64,6,248,61,5,229,168,0,108,17,99,16,131,177,0,90,65,192,
+96,6,224,7,0,114,231,64,35,227,87,18,0,55,178,195,160,248,163,80,
+240,158,0,2,49,57,56,71,247,66,201,247,174,0,134,123,189,54,206,63,
+66,44,100,102,4,51,53,32,95,56,248,203,0,96,232,128,203,97,45,224,
+205,7,242,38,6,249,1,13,157,159,192,104,0,85,226,7,2,1,91,93,
+102,223,224,88,4,152,236,160,11,175,63,165,114,242,103,6,128,246,224,239,
+4,241,142,3,250,95,5,77,37,0,55,112,231,0,79,195,103,64,64,215,
+217,97,126,192,4,199,212,80,170,144,250,146,198,97,51,64,73,135,189,64,
+141,160,189,100,145,239,161,8,3,58,49,57,55,130,169,117,83,0,66,129,
+68,244,209,10,154,2,97,79,224,106,20,131,251,226,195,3,96,125,163,213,
+240,32,8,64,127,131,10,230,17,7,83,75,230,18,4,1,95,53,96,135,
+2,53,57,56,64,25,2,50,32,75,132,118,100,122,230,50,13,151,153,230,
+50,4,229,165,3,96,0,64,128,168,124,224,179,0,64,19,0,54,229,177,
+18,0,85,231,38,39,99,245,231,37,35,67,51,164,30,0,66,68,17,97,
+44,96,47,2,52,48,55,68,117,253,107,1,100,66,0,50,92,232,226,55,
+5,64,78,231,104,78,231,102,4,231,101,10,66,196,100,13,3,50,48,32,
+85,64,107,0,54,67,48,0,80,96,117,0,49,64,79,247,138,7,99,79,
+65,134,1,64,85,147,219,160,71,131,59,0,75,65,234,64,14,167,69,3,
+49,57,54,57,74,232,67,242,191,133,148,32,100,69,96,170,97,21,64,97,
+2,64,95,52,69,173,224,25,9,132,104,192,30,99,83,192,25,0,66,96,
+53,98,60,0,53,144,159,161,122,153,242,192,19,160,15,0,58,96,142,129,
+173,192,2,64,31,224,13,5,64,180,66,189,0,51,127,142,0,73,96,207,
+0,54,130,248,0,75,224,39,2,97,96,227,92,1,1,95,52,196,106,0,
+54,64,142,96,131,133,179,0,54,139,82,0,52,103,46,64,75,130,195,88,
+200,227,198,0,98,20,3,66,32,95,55,88,48,132,90,160,201,64,25,231,
+50,2,1,94,42,139,195,224,27,10,11,32,32,102,111,117,110,100,58,32,
+32,32,32,128,36,129,37,224,92,0,98,212,66,227,96,16,133,156,99,168,
+231,77,4,2,69,79,70,64,61,167,33,160,62,72,113,0,48,162,177,224,
+120,10,8,101,120,112,101,99,116,101,100,58,128,120,96,200,77,29,2,55,
+50,49,233,227,1,226,43,0,65,16,194,12,1,49,57,96,29,129,74,65,
+44,64,249,160,25,0,54,129,238,1,95,55,236,231,1,90,171,125,52,96,
+4,65,110,197,26,65,117,216,36,158,171,243,206,0,199,5,69,136,243,232,
+6,233,191,7,64,22,247,96,13,224,65,0,162,127,110,10,233,179,6,198,
+95,224,69,12,196,251,224,69,5,138,22,96,22,163,177,224,91,6,97,61,
+225,107,1,240,15,5,159,129,192,114,133,247,102,154,104,197,130,69,3,64,
+83,32,83,67,169,67,172,64,100,0,66,227,88,2,224,159,3,102,18,132,
+69,161,251,65,85,196,153,0,89,155,175,224,176,0,224,13,1,104,87,164,
+253,1,85,32,99,53,224,174,1,7,108,97,121,111,117,116,76,83,160,176,
+128,240,225,125,6,64,144,192,25,224,2,0,128,47,64,37,128,1,225,169,
+4,128,170,224,132,0,96,199,160,43,224,59,0,224,56,12,120,188,224,29,
+1,98,117,225,3,3,224,31,6,103,185,135,66,192,99,129,63,64,7,64,
+247,226,192,0,69,58,215,70,167,249,129,99,0,80,97,201,71,8,217,136,
+224,52,1,192,0,224,140,14,192,229,224,139,2,65,37,64,91,225,57,0,
+66,49,96,239,196,194,225,9,1,228,209,2,193,240,192,202,224,24,2,225,
+36,0,100,135,93,143,162,119,0,53,169,110,128,34,192,91,96,11,241,16,
+1,1,32,95,94,147,0,54,231,161,0,224,245,3,72,20,120,218,98,135,
+224,252,13,96,121,224,44,10,128,32,64,73,228,32,0,228,28,0,64,0,
+64,11,138,49,227,43,0,128,28,198,192,96,0,224,213,0,96,7,130,114,
+195,107,226,21,3,129,183,193,100,226,128,1,104,16,129,103,64,5,102,132,
+163,57,161,123,97,47,64,125,1,54,53,161,6,163,230,192,122,225,8,11,
+96,33,224,219,4,72,22,128,192,232,23,2,224,230,3,129,165,132,201,161,
+235,193,140,161,201,225,164,0,96,185,225,22,1,224,152,0,128,226,224,151,
+24,160,106,225,164,0,129,209,193,94,64,81,170,91,224,158,3,224,88,43,
+128,172,192,88,234,207,1,64,94,226,59,13,96,46,64,30,1,95,55,125,
+234,224,0,0,128,89,229,182,14,225,60,1,99,65,228,197,2,99,43,224,
+29,0,131,15,192,13,239,165,5,189,221,224,31,0,225,94,1,229,253,11,
+129,50,132,30,224,240,1,64,97,226,165,1,2,48,54,32,162,41,64,0,
+227,188,3,98,96,229,35,1,192,23,227,150,3,5,95,49,53,55,32,95,
+109,171,2,51,50,50,224,72,2,160,59,224,122,7,227,57,2,0,67,131,
+110,74,230,0,56,230,86,3,133,167,7,32,101,114,114,111,114,32,125,205,
+70,84,187,96,59,132,220,228,226,1,128,0,224,232,13,227,169,5,160,146,
+96,38,64,23,170,170,228,4,1,164,147,226,3,2,160,239,102,87,225,216,
+3,97,191,224,16,3,96,89,128,22,225,184,0,131,33,224,13,9,225,71,
+1,64,159,1,56,52,164,224,193,59,224,166,3,76,190,0,50,231,64,3,
+229,176,8,161,69,108,45,226,165,0,225,76,1,5,115,121,110,116,97,120,
+129,76,225,74,25,71,101,139,132,64,125,139,96,0,85,138,116,171,83,0,
+50,75,65,68,214,170,53,0,65,168,241,139,83,0,73,64,29,64,157,96,
+29,229,220,1,194,84,130,217,228,51,3,199,194,162,198,192,39,225,40,0,
+225,101,0,96,8,74,219,2,49,57,53,129,10,224,70,3,234,73,0,96,
+22,165,51,226,202,3,64,36,65,157,97,92,68,216,129,72,80,240,131,12,
+0,53,115,191,0,53,111,241,151,71,141,113,237,120,0,229,14,2,199,122,
+226,37,6,163,235,229,194,5,224,7,3,162,4,226,102,1,226,13,0,165,
+195,64,178,64,60,224,88,4,226,90,2,224,57,6,129,32,160,45,98,45,
+230,54,0,224,38,13,130,44,101,26,161,245,105,181,137,186,173,65,128,226,
+205,78,164,32,0,64,66,7,65,235,64,7,206,64,100,6,0,55,64,118,
+238,13,9,64,91,238,13,4,174,18,184,92,138,114,164,71,0,55,80,171,
+224,0,3,129,153,225,148,6,66,140,64,12,145,252,78,61,78,39,225,160,
+2,3,95,56,52,56,233,238,2,5,80,114,101,108,117,100,170,158,66,150,
+141,54,224,37,6,8,77,104,115,46,66,117,105,108,116,158,0,64,39,141,
+18,0,75,98,202,0,54,236,29,0,129,73,64,75,224,11,2,192,8,210,
+207,0,53,210,243,1,80,32,97,1,131,59,66,101,160,69,160,44,64,20,
+195,103,128,1,132,57,226,177,7,194,29,233,57,0,64,12,134,50,102,48,
+160,36,192,153,130,220,227,20,3,99,56,160,37,2,95,49,51,69,167,97,
+94,65,118,0,56,144,66,165,37,110,96,64,42,228,209,2,195,72,163,83,
+227,89,1,227,209,2,233,199,1,128,76,224,25,10,97,29,228,251,3,224,
+174,3,64,201,160,17,128,6,224,60,0,128,32,64,154,150,2,1,55,50,
+81,83,0,50,85,246,226,54,2,1,95,54,114,162,110,83,0,48,142,91,
+110,76,1,49,57,113,172,1,95,56,132,21,224,32,1,194,191,224,15,1,
+130,215,128,159,1,95,49,110,45,160,241,1,95,55,98,251,128,146,0,95,
+64,10,129,108,3,95,51,54,56,226,183,1,1,67,39,76,146,64,25,0,
+80,128,91,160,252,227,224,1,171,32,141,101,132,42,64,18,64,44,131,128,
+160,162,161,12,163,114,128,143,129,166,135,178,0,56,112,174,2,95,49,51,
+85,143,96,0,163,167,161,5,5,66,32,95,56,51,52,67,32,0,55,232,
+2,0,77,114,96,202,77,63,2,95,49,53,131,77,0,54,78,189,64,14,
+80,1,64,7,84,17,100,35,103,28,96,96,64,6,97,60,226,63,0,0,
+48,233,46,3,65,102,132,85,106,143,177,233,65,175,152,197,128,164,192,68,
+66,116,233,41,0,194,182,225,111,1,224,20,4,0,89,225,74,0,197,105,
+194,56,161,25,194,81,64,0,96,24,234,129,2,224,36,0,128,53,232,133,
+0,64,129,1,52,57,226,246,1,224,100,11,192,9,96,10,246,176,3,192,
+153,199,196,226,228,0,192,107,226,233,1,2,95,55,50,238,19,0,224,0,
+1,194,148,140,202,67,255,135,80,111,14,73,227,192,128,224,117,7,224,7,
+3,224,205,2,64,18,134,86,131,244,227,119,2,224,2,7,224,140,0,128,
+15,227,176,1,224,36,12,224,37,20,224,40,4,224,41,34,235,147,0,0,
+39,131,240,228,194,2,97,87,199,231,195,44,132,182,225,118,1,141,44,100,
+170,128,92,167,46,224,5,3,231,58,1,192,148,235,83,4,99,189,161,227,
+132,86,0,53,236,206,0,66,181,2,52,54,50,227,209,1,131,133,242,154,
+1,196,51,3,95,55,52,50,64,12,93,29,224,22,2,192,228,224,88,3,
+224,85,9,192,50,165,117,66,144,236,190,0,229,12,1,224,2,17,226,244,
+3,225,25,2,161,53,225,113,5,224,28,19,225,176,3,230,72,0,161,24,
+229,250,4,224,20,0,224,8,2,1,95,49,247,4,1,225,171,0,225,109,
+1,224,198,3,64,15,226,31,3,0,89,160,32,224,102,0,225,251,7,171,
+101,160,42,192,19,197,173,96,130,160,173,226,106,7,192,92,160,62,192,196,
+98,27,224,5,3,193,66,224,57,3,162,48,224,25,10,160,2,224,25,17,
+226,168,1,225,113,3,192,164,64,19,226,246,1,225,39,5,133,233,69,98,
+233,0,6,160,68,231,182,2,130,139,238,234,0,224,224,7,68,213,165,164,
+64,39,134,176,64,53,202,116,228,56,0,64,126,156,84,71,241,230,193,7,
+224,28,16,71,73,228,208,4,102,181,150,141,192,0,224,246,2,226,20,3,
+232,163,4,128,210,160,247,224,128,7,224,215,0,224,236,3,224,218,0,198,
+231,224,249,2,200,48,226,93,11,226,193,1,228,1,2,226,92,255,226,92,
+45,226,90,1,96,0,226,2,14,225,67,3,64,13,226,8,29,159,201,224,
+166,3,96,27,193,5,231,205,4,128,156,192,150,74,20,64,28,244,241,3,
+64,0,96,150,64,107,227,3,14,0,51,72,136,224,121,8,224,138,11,237,
+138,3,96,59,174,100,227,108,19,128,215,160,187,79,221,157,68,92,198,226,
+241,4,230,205,2,160,3,234,69,5,225,79,2,224,90,1,232,142,3,98,
+150,225,178,3,240,166,1,226,249,3,200,181,229,238,1,161,8,98,124,227,
+145,17,64,84,243,98,3,128,0,225,105,4,128,179,64,40,0,80,138,3,
+239,120,4,232,148,3,204,136,233,105,1,193,42,224,98,1,226,85,6,233,
+160,1,224,89,8,163,82,64,251,64,66,65,62,135,86,224,80,4,224,75,
+16,225,207,1,161,172,203,143,64,67,196,18,224,72,2,203,100,2,52,48,
+49,76,52,0,51,124,108,238,67,1,2,110,111,116,90,117,4,111,114,116,
+101,100,217,13,128,0,73,231,223,135,0,82,64,108,110,250,66,71,2,56,
+57,48,202,138,0,95,75,213,1,95,56,124,21,129,116,219,36,251,111,6,
+0,32,145,192,0,56,139,133,128,93,191,199,225,22,4,225,116,3,132,96,
+229,37,0,228,143,4,226,218,5,164,66,224,26,0,224,69,0,225,205,1,
+64,0,224,71,3,224,25,5,227,234,1,229,23,0,193,179,224,46,0,226,
+148,0,224,11,1,84,222,168,83,229,158,28,162,188,228,238,0,98,0,144,
+116,247,202,1,128,1,243,142,5,163,48,128,16,96,142,229,200,2,165,188,
+192,156,227,62,4,228,129,2,96,56,172,77,0,49,86,21,224,0,3,230,
+139,5,225,85,0,230,132,7,224,38,50,225,92,5,64,38,228,53,21,225,
+39,14,99,42,192,108,244,202,0,164,39,224,21,14,165,147,161,11,129,246,
+65,186,133,137,245,142,7,225,74,1,225,181,25,250,232,6,225,182,5,224,
+146,2,237,125,1,224,13,11,245,122,14,161,42,230,71,2,98,148,224,185,
+1,224,0,3,230,55,0,224,183,29,224,182,18,224,171,88,224,170,37,225,
+97,19,224,170,93,96,142,226,209,4,224,84,0,227,232,1,224,19,3,232,
+232,3,128,1,224,219,14,224,109,1,224,60,1,192,183,224,19,5,233,201,
+2,224,23,0,228,7,14,224,137,4,132,13,224,75,5,231,24,2,224,20,
+1,96,254,249,159,0,229,94,2,224,180,0,179,160,198,119,129,16,232,156,
+1,137,15,2,54,53,49,228,249,0,159,153,75,153,0,50,72,247,1,48,
+52,230,145,5,196,132,102,54,2,49,53,53,117,28,113,226,224,0,4,210,
+15,2,95,49,50,119,211,163,191,193,146,128,8,160,5,239,71,4,192,184,
+169,182,160,191,137,129,146,56,177,213,224,137,0,196,9,225,236,0,102,30,
+230,47,1,192,173,192,123,224,238,3,192,68,210,59,0,90,83,233,128,176,
+96,240,84,193,182,88,82,83,0,58,113,208,230,255,4,192,97,230,166,5,
+160,17,96,196,100,200,153,49,243,143,2,2,95,55,57,64,102,231,153,18,
+231,142,8,15,117,110,100,101,102,105,110,101,100,32,109,111,100,117,108,101,
+231,158,7,111,233,97,192,0,79,225,141,0,192,244,199,104,226,34,4,231,
+188,6,128,2,162,143,224,21,6,160,81,226,80,1,96,69,163,123,3,95,
+49,48,48,134,153,131,160,80,179,231,133,0,201,253,104,222,245,69,2,1,
+49,57,162,89,225,68,1,96,61,65,29,202,233,99,85,96,209,236,89,7,
+224,149,1,171,97,99,5,192,136,244,185,1,137,92,1,90,32,254,90,3,
+130,202,64,12,226,58,4,171,230,246,167,0,213,8,224,78,4,96,203,248,
+203,0,224,134,38,1,64,75,224,58,0,192,64,66,81,152,38,97,187,118,
+116,0,56,224,94,1,194,38,96,39,152,38,248,78,6,1,46,46,184,69,
+65,77,247,243,8,65,157,160,20,237,26,5,132,62,2,95,51,55,96,93,
+224,11,2,129,223,128,12,138,195,65,46,197,29,170,79,133,151,64,20,192,
+65,128,0,224,48,16,224,40,7,131,122,73,131,64,164,152,173,226,146,1,
+226,17,1,226,67,1,224,9,4,224,29,1,224,9,4,233,251,1,234,5,
+2,228,68,3,107,184,75,119,65,153,2,51,55,57,167,83,98,200,1,50,
+57,130,209,118,29,98,194,1,95,54,215,212,1,95,56,109,192,64,0,66,
+155,6,51,54,53,32,95,57,49,151,243,0,50,245,224,1,141,234,0,57,
+66,1,147,182,97,3,250,128,3,133,94,128,21,224,23,10,140,88,246,39,
+13,167,11,228,197,1,169,22,132,91,226,222,2,161,93,233,30,8,224,148,
+6,224,128,0,96,15,225,216,6,224,7,9,235,36,27,224,166,2,96,16,
+231,179,1,239,85,3,161,181,229,231,1,238,69,1,133,142,193,79,66,253,
+182,217,224,223,8,224,0,3,65,133,128,236,2,95,57,49,101,205,0,57,
+217,81,225,173,19,195,178,225,176,36,225,24,5,239,78,4,97,35,130,106,
+0,80,225,196,13,224,84,1,129,79,193,6,129,1,192,39,227,168,7,64,
+195,0,52,67,35,243,23,0,226,3,30,160,228,224,85,25,150,21,226,89,
+50,68,182,69,243,165,175,224,239,9,228,53,6,193,250,193,75,226,54,1,
+224,13,5,199,65,96,153,160,43,236,159,2,236,162,1,226,72,5,160,34,
+224,61,0,126,168,227,85,15,236,119,0,226,241,7,160,132,224,10,2,225,
+175,1,133,99,225,49,6,70,228,173,33,166,20,233,72,9,193,73,66,233,
+206,60,161,65,0,56,123,71,0,57,126,98,160,119,163,92,224,157,13,241,
+140,17,192,54,193,57,227,124,1,225,52,0,193,41,133,19,64,52,224,93,
+2,0,83,160,53,124,177,226,121,3,0,85,96,43,235,228,4,0,95,105,
+31,0,85,101,244,192,216,227,194,1,64,0,226,151,12,224,166,26,160,146,
+64,169,228,23,7,224,80,6,228,40,2,224,0,2,64,180,97,98,229,213,
+5,89,66,105,41,133,2,227,167,16,225,218,6,124,164,224,213,2,224,104,
+4,1,51,50,138,36,0,52,102,38,161,195,130,179,224,5,0,64,64,0,
+57,121,223,131,64,224,6,5,224,14,0,100,173,102,120,87,26,160,9,66,
+64,166,130,2,95,55,54,64,7,71,54,0,51,103,54,3,85,32,75,52,
+96,191,64,18,155,226,64,183,93,77,228,249,1,2,56,51,48,167,12,132,
+4,129,214,126,186,93,142,65,103,160,18,157,79,0,48,66,183,169,159,64,
+188,137,148,228,51,0,98,216,224,57,26,160,212,98,27,204,64,98,230,64,
+171,210,166,128,72,64,17,146,90,122,181,98,130,77,223,96,117,96,11,138,
+152,128,13,227,98,1,227,230,2,184,80,65,162,96,150,1,49,50,97,150,
+225,129,0,96,31,0,50,98,40,227,162,2,96,87,65,63,64,160,228,220,
+1,160,85,64,204,0,49,76,50,0,50,165,35,64,87,224,18,2,192,48,
+128,167,129,113,1,49,52,190,181,77,32,97,10,160,251,64,101,94,211,0,
+51,102,117,129,246,157,165,0,56,64,251,64,94,226,142,1,131,149,130,127,
+132,71,133,97,105,255,204,28,2,79,32,35,64,71,99,12,6,95,49,49,
+56,32,95,50,70,205,96,13,1,53,53,206,23,7,95,50,49,50,32,95,
+50,56,159,142,75,71,124,102,2,50,50,32,240,82,0,96,103,67,208,224,
+43,2,81,181,67,68,96,249,0,58,131,77,129,177,2,56,56,55,127,156,
+99,19,0,50,107,206,1,56,48,137,204,68,39,94,101,65,116,137,136,161,
+174,230,131,0,161,137,182,215,164,204,0,83,97,141,64,251,65,26,234,224,
+3,1,45,62,148,225,129,175,107,63,0,48,99,69,0,57,99,16,196,7,
+160,68,128,71,164,56,224,74,7,0,61,160,74,225,254,2,64,36,0,57,
+66,145,192,72,228,122,3,160,76,160,162,192,79,3,79,32,35,49,65,250,
+192,121,226,142,5,192,41,1,53,55,99,174,135,104,226,68,4,228,190,1,
+79,189,0,55,70,6,66,41,96,8,64,6,162,128,128,94,225,25,5,0,
+55,100,208,225,9,1,96,15,64,192,65,74,224,48,11,160,175,3,56,53,
+57,52,192,176,225,71,20,224,200,1,224,241,6,3,56,54,53,56,224,242,
+0,225,62,16,193,18,225,19,1,98,223,224,16,3,98,19,238,99,22,65,
+52,135,97,97,63,227,116,8,230,1,3,136,0,163,120,97,67,65,77,0,
+50,220,64,64,36,227,114,7,226,234,23,101,23,240,255,6,225,199,20,102,
+96,1,57,57,96,5,64,98,225,215,0,199,20,65,223,99,190,65,116,103,
+53,128,87,99,203,66,79,0,48,195,196,67,65,141,231,3,35,49,53,32,
+64,13,0,54,133,20,160,96,99,212,160,6,64,29,141,223,129,166,4,95,
+49,54,56,56,128,22,141,81,224,52,6,224,65,9,96,43,134,70,0,75,
+233,12,0,0,83,163,71,130,74,224,5,4,65,34,132,49,193,164,0,95,
+175,197,102,97,64,134,0,50,96,5,66,17,224,37,0,175,91,224,41,20,
+96,137,134,189,203,150,0,51,100,229,1,49,48,69,0,1,95,52,97,114,
+154,48,100,120,0,35,192,77,196,119,134,78,71,221,0,75,64,83,64,18,
+166,79,0,54,71,4,0,54,239,56,7,10,80,114,105,109,105,116,105,118,
+101,115,46,164,98,98,204,70,30,2,95,54,49,165,35,229,45,15,224,79,
+21,164,103,224,79,25,200,77,0,58,142,126,97,134,0,75,96,206,64,54,
+175,184,129,15,0,56,65,46,1,50,53,104,95,1,51,54,65,65,96,12,
+82,152,174,154,253,156,2,66,171,224,34,0,66,109,0,56,203,226,224,78,
+24,0,56,234,127,3,166,213,224,74,5,0,56,169,84,131,152,224,76,6,
+102,182,3,67,32,95,57,64,232,192,96,0,49,82,225,131,38,0,56,80,
+206,242,217,8,10,101,120,112,97,110,100,101,100,58,94,42,146,210,2,49,
+48,54,201,207,134,59,64,84,66,129,218,204,224,190,2,0,49,147,46,224,
+171,11,105,136,166,111,224,164,3,104,116,224,41,1,64,40,98,94,0,49,
+67,221,160,35,135,81,224,15,4,97,152,131,157,100,147,225,133,3,0,55,
+73,169,148,44,224,179,2,96,147,235,103,1,192,13,96,5,237,147,2,164,
+234,161,79,144,160,0,60,247,240,1,192,21,80,213,224,35,9,129,175,227,
+104,1,248,230,7,99,213,238,211,0,237,124,5,165,103,235,4,9,199,170,
+128,44,246,250,6,196,41,192,69,64,7,238,207,9,130,31,237,139,0,224,
+26,7,240,15,0,0,83,69,71,133,254,66,126,0,50,239,232,16,160,78,
+224,228,6,193,34,224,146,1,237,184,2,237,64,2,237,195,0,166,89,224,
+83,1,238,3,2,224,38,0,160,13,240,221,7,224,27,1,162,253,137,155,
+205,36,105,10,227,28,0,206,177,2,95,55,50,67,255,148,187,181,28,192,
+0,226,98,2,248,181,0,128,1,226,93,10,86,130,96,0,203,21,238,197,
+0,131,25,96,54,2,49,57,50,101,83,247,31,0,132,14,135,135,167,131,
+129,212,137,157,247,254,9,107,58,1,54,52,236,187,0,108,186,0,56,98,
+77,222,52,131,51,192,142,109,78,142,84,245,105,3,225,229,1,138,229,1,
+54,55,237,163,0,67,72,0,54,99,72,0,80,70,228,64,73,195,84,1,
+49,51,96,38,129,93,1,95,56,71,162,1,49,57,66,21,1,95,51,151,
+152,226,75,0,101,133,96,136,99,160,64,71,134,247,3,85,32,75,51,70,
+5,77,223,102,12,160,29,134,233,3,95,56,49,51,110,3,193,105,225,216,
+1,225,125,1,224,1,7,226,50,2,224,37,16,224,35,4,224,32,23,224,
+29,20,224,26,17,224,23,14,180,205,224,0,0,64,237,135,77,70,253,235,
+174,2,7,52,48,49,32,95,52,48,51,111,175,229,128,1,1,37,84,139,
+25,231,78,0,66,201,231,139,0,230,44,16,1,57,48,97,145,237,170,0,
+164,163,248,100,5,229,146,3,233,207,2,1,48,55,224,85,1,130,59,65,
+240,64,150,133,176,226,221,1,227,235,1,128,67,130,87,0,57,87,98,234,
+8,2,164,230,64,1,82,210,220,128,96,165,130,119,236,142,2,171,224,98,
+110,1,52,56,87,101,229,69,2,163,43,64,30,128,144,160,145,160,221,160,
+57,229,132,4,232,239,0,229,168,19,193,1,196,29,224,213,3,145,70,128,
+29,196,199,129,41,225,244,2,196,125,96,24,243,22,2,207,25,96,46,129,
+29,74,218,1,64,95,96,219,184,111,0,57,163,61,160,0,128,81,224,136,
+4,64,196,192,135,160,31,101,24,128,88,228,112,5,235,157,3,148,188,80,
+7,167,69,0,55,111,131,106,247,121,84,0,50,197,23,224,253,10,224,252,
+13,225,164,3,224,225,0,160,77,224,200,4,142,100,74,154,0,52,73,50,
+71,216,65,188,100,59,146,19,0,67,68,120,0,57,250,59,3,97,210,102,
+177,64,94,182,206,128,105,161,110,230,253,14,234,213,2,230,51,4,166,110,
+224,180,3,230,243,9,135,230,232,197,0,192,36,226,143,3,254,15,1,129,
+36,129,85,181,142,205,52,128,246,99,89,77,48,161,109,231,50,5,227,101,
+0,227,122,1,105,124,96,13,132,6,66,225,227,132,4,65,88,224,224,4,
+227,246,2,64,27,133,236,226,11,0,227,213,3,227,206,7,224,61,9,0,
+48,98,16,64,70,132,165,96,33,1,51,54,77,149,1,50,53,96,27,170,
+19,192,154,96,0,225,26,1,64,112,124,17,226,35,0,206,74,128,17,227,
+140,10,128,20,98,10,227,133,9,227,130,12,0,49,76,128,64,27,220,116,
+160,4,100,87,225,90,1,227,53,11,160,58,226,193,2,201,25,64,43,146,
+225,227,24,3,224,129,8,224,128,8,230,144,3,65,93,116,81,252,14,0,
+129,115,116,212,233,187,82,178,124,64,17,206,201,192,0,70,34,141,94,133,
+236,110,225,78,118,221,229,1,49,52,101,68,213,19,166,35,224,162,5,225,
+189,12,229,171,1,229,71,23,192,178,230,31,7,230,9,4,191,205,224,49,
+14,128,108,161,241,128,1,235,213,17,161,22,133,120,195,157,236,111,4,0,
+53,81,36,161,100,129,64,236,64,4,160,62,3,95,49,56,48,245,48,0,
+0,49,192,91,128,55,226,179,12,98,208,224,187,8,96,21,0,85,66,6,
+0,50,96,132,239,74,0,224,231,10,225,24,2,128,89,197,200,224,191,3,
+138,10,1,55,32,232,23,2,13,116,121,112,101,32,115,105,103,110,97,116,
+117,114,101,136,35,128,218,249,54,4,231,240,21,130,20,0,55,120,222,0,
+49,233,195,0,161,73,237,202,5,155,191,224,153,6,225,135,7,225,91,11,
+132,34,1,49,48,96,14,225,88,9,96,0,224,49,4,0,58,132,139,148,
+207,224,106,8,0,52,95,56,64,85,79,195,235,161,5,228,20,1,64,133,
+224,238,5,64,56,225,172,5,103,140,0,52,158,67,1,57,51,88,194,175,
+136,239,1,6,26,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,97,117,245,49,0,149,229,2,
+49,50,54,133,12,224,70,6,2,94,42,32,64,0,14,102,117,108,108,121,
+32,113,117,97,108,105,102,105,101,100,160,67,79,187,171,189,64,0,65,1,
+144,101,195,155,82,183,156,12,249,112,5,0,73,106,18,65,80,213,254,97,
+142,115,66,150,190,150,90,0,52,70,91,234,68,2,64,74,114,134,225,65,
+3,64,23,139,238,105,92,229,227,2,227,198,5,230,32,6,233,233,2,154,
+133,245,163,1,96,9,225,133,4,66,197,128,188,226,202,21,194,75,162,206,
+160,13,238,61,0,192,91,65,124,227,231,4,0,57,165,199,192,61,192,63,
+167,151,192,211,224,32,1,160,14,224,31,3,97,117,99,1,226,125,2,0,
+52,164,64,224,92,5,96,129,66,105,240,195,5,98,90,120,226,102,12,1,
+57,52,193,176,251,166,11,101,8,193,208,0,85,101,28,83,43,192,108,224,
+115,10,231,161,7,160,32,225,176,1,191,223,224,5,3,215,214,128,156,0,
+57,97,201,103,187,2,32,95,55,66,47,72,114,197,13,225,46,18,150,9,
+64,9,131,64,160,51,225,52,0,96,31,228,66,1,0,49,117,238,236,11,
+4,100,13,0,53,71,79,116,17,96,21,174,133,64,79,117,124,2,49,52,
+54,173,51,137,75,192,73,0,79,117,37,201,84,64,63,0,65,96,38,161,
+45,252,126,4,110,250,128,21,2,95,49,54,225,130,1,224,0,1,66,239,
+142,150,119,115,0,55,224,168,2,64,26,142,147,97,47,228,240,18,242,60,
+2,140,194,133,197,226,16,4,97,30,165,133,107,17,1,49,55,132,113,96,
+143,64,159,0,56,158,114,214,212,129,164,229,19,2,138,97,253,193,6,64,
+214,182,42,66,245,68,46,64,49,0,49,96,173,169,56,64,213,64,31,213,
+131,226,126,4,160,35,226,127,5,227,193,2,224,251,7,227,3,0,225,224,
+0,179,193,230,86,5,0,89,133,93,102,95,64,4,107,87,97,246,0,55,
+91,126,2,95,49,53,87,84,194,12,230,242,15,119,212,225,38,1,133,164,
+1,49,50,194,24,128,157,237,5,4,132,109,1,49,53,224,206,1,226,72,
+2,224,52,7,192,223,137,205,226,238,7,128,82,224,154,1,195,67,245,79,
+7,0,85,227,137,4,166,133,99,96,0,48,87,209,107,210,64,134,71,98,
+128,147,234,144,0,224,131,2,225,99,3,0,57,203,100,128,209,224,132,3,
+235,217,6,97,33,236,56,0,70,67,98,59,230,233,0,225,24,1,109,168,
+228,218,3,228,46,1,128,13,160,38,225,199,6,133,94,1,49,57,65,173,
+100,209,81,254,227,99,3,128,234,128,118,106,102,87,77,254,99,1,160,115,
+103,108,96,106,171,118,226,53,13,160,76,211,25,97,201,0,53,64,79,1,
+48,54,97,68,128,204,132,197,165,31,229,38,1,232,230,2,225,163,5,96,
+191,96,63,128,82,227,83,2,128,136,155,81,2,95,49,54,83,252,224,220,
+1,160,88,0,85,132,96,2,95,49,56,131,240,130,149,1,55,52,64,130,
+132,122,97,178,211,121,100,198,0,56,139,86,160,0,67,124,139,142,76,35,
+72,108,112,184,0,58,98,33,228,96,0,237,146,10,225,36,9,161,33,193,
+241,205,143,101,134,237,227,2,228,108,0,98,55,237,141,53,225,192,0,232,
+1,5,198,165,86,187,228,32,9,96,167,230,160,4,225,106,1,0,80,239,
+16,11,224,99,6,192,151,237,236,1,224,247,12,162,16,224,251,10,130,107,
+237,147,0,224,163,49,0,75,224,35,4,133,77,64,0,142,47,230,80,5,
+224,198,8,225,41,0,225,35,53,229,159,5,226,23,0,232,112,5,74,31,
+2,54,56,48,224,38,0,66,69,0,52,192,32,230,162,2,236,199,20,226,
+7,51,131,24,92,63,229,174,3,139,83,235,75,8,31,105,110,102,101,114,
+32,114,101,99,117,114,115,105,118,101,32,112,97,116,116,101,114,110,32,115,
+121,110,111,110,121,109,32,74,16,0,115,202,7,225,91,12,173,97,128,215,
+225,11,4,237,116,5,247,196,9,226,114,13,196,132,110,158,99,56,96,210,
+228,78,11,229,202,9,224,100,12,225,184,9,229,231,11,141,26,241,160,4,
+236,190,21,198,21,224,30,5,229,167,20,96,147,232,149,10,234,152,4,229,
+29,8,229,19,10,64,0,162,125,197,244,209,252,96,62,128,162,128,10,147,
+224,163,161,0,52,86,153,0,53,163,138,230,70,8,230,90,12,160,182,128,
+0,69,44,141,15,0,83,168,78,224,170,6,242,17,1,235,183,8,174,53,
+95,186,196,236,136,39,225,10,2,252,116,5,0,95,77,5,65,112,102,54,
+229,231,0,96,204,224,93,5,225,150,9,239,51,5,0,52,134,52,225,91,
+12,1,52,52,230,219,1,235,238,3,230,78,1,64,245,141,216,236,237,2,
+89,240,70,101,103,110,65,158,171,16,64,57,2,53,54,53,96,134,64,35,
+170,72,225,131,0,1,50,51,75,87,117,104,129,145,0,50,181,119,64,11,
+65,171,246,11,0,64,118,0,54,142,29,225,70,2,0,54,71,118,0,75,
+225,89,9,0,54,149,214,166,244,239,158,0,226,189,7,244,205,4,194,39,
+230,245,4,1,53,57,64,47,133,96,225,46,5,0,95,131,208,232,86,2,
+64,162,142,168,193,148,130,255,130,214,65,6,96,34,139,219,0,67,129,220,
+64,195,128,22,139,215,154,205,0,67,218,199,1,52,51,74,153,154,199,67,
+215,64,135,64,44,139,87,236,2,18,166,113,229,98,1,222,66,199,110,229,
+81,8,97,32,224,25,12,104,250,229,133,13,169,2,229,133,7,162,162,194,
+126,128,117,128,146,130,148,96,9,67,174,243,107,0,224,68,8,96,117,66,
+130,228,16,4,224,43,13,96,187,2,85,32,83,192,157,96,169,64,1,253,
+215,1,161,15,2,95,49,50,185,220,228,203,9,137,228,64,21,255,235,6,
+137,169,162,63,224,27,3,101,120,237,195,10,128,134,224,240,1,193,116,225,
+56,1,128,45,192,153,225,61,5,224,27,1,254,160,21,195,127,224,98,0,
+249,240,1,224,13,3,228,33,0,222,4,230,63,8,254,32,2,105,146,160,
+64,238,22,12,224,122,3,196,46,0,54,121,198,224,119,1,224,23,4,232,
+158,1,224,85,0,2,95,49,52,74,101,67,106,67,159,218,8,66,188,64,
+149,253,255,0,234,178,3,193,38,128,95,0,53,172,83,238,120,3,128,51,
+1,49,56,133,32,224,112,1,68,66,227,19,0,224,66,1,0,54,161,221,
+224,66,4,128,129,219,3,254,134,9,0,64,253,145,7,225,161,17,130,250,
+226,9,0,225,112,6,129,91,161,139,226,82,3,225,70,2,146,34,245,42,
+5,225,164,2,224,40,1,225,170,16,226,39,4,164,143,225,178,5,225,149,
+1,182,105,224,30,17,199,93,161,72,129,75,193,99,1,51,54,177,41,97,
+217,225,185,1,225,182,40,226,4,20,226,97,2,161,211,224,139,4,216,196,
+192,33,138,209,251,182,18,184,209,176,50,161,141,155,62,193,192,224,80,0,
+80,235,240,233,6,130,204,74,223,0,55,152,186,130,61,70,190,102,210,99,
+211,136,116,99,213,115,88,224,0,0,226,122,38,222,87,226,45,7,192,75,
+192,19,175,237,248,209,0,128,249,234,12,8,232,92,5,236,214,2,237,224,
+15,245,34,11,2,63,63,63,139,15,2,95,49,56,106,116,160,70,0,67,
+226,138,11,160,0,70,190,145,246,96,87,230,192,15,160,135,174,43,1,67,
+32,164,161,66,229,64,144,101,73,224,99,6,226,26,6,226,13,1,152,167,
+199,221,0,49,100,113,97,89,96,215,77,140,147,140,83,193,0,51,201,88,
+64,44,168,217,168,181,243,17,2,96,242,146,230,64,21,226,21,4,64,224,
+175,90,82,213,96,179,77,8,1,56,50,169,147,233,235,0,3,49,54,57,
+48,180,111,227,250,0,130,117,163,71,98,142,96,160,0,85,64,34,96,153,
+128,158,192,38,99,81,64,35,100,204,244,175,16,64,63,96,125,160,230,0,
+58,128,200,104,135,106,186,168,30,225,116,1,226,251,0,163,49,166,156,128,
+195,130,18,238,39,5,96,35,212,177,65,40,98,197,162,204,160,14,192,58,
+68,217,229,25,0,136,89,227,202,2,228,228,9,128,237,229,54,2,130,22,
+128,26,96,40,224,53,5,224,26,0,192,207,246,152,8,228,151,3,130,95,
+192,232,192,75,128,85,181,73,203,111,241,225,7,203,134,97,168,0,50,66,
+185,64,9,108,121,105,224,0,56,170,206,98,121,1,49,52,93,148,236,78,
+2,225,160,1,192,80,100,153,192,84,99,168,64,4,224,245,5,224,232,42,
+224,226,0,225,95,4,115,112,224,18,0,96,92,128,7,224,229,5,224,6,
+0,160,234,224,162,3,102,21,64,246,224,179,4,186,126,0,55,68,248,66,
+17,226,11,0,75,237,160,180,102,141,230,113,11,224,29,1,80,59,97,30,
+160,18,224,42,6,224,30,0,98,205,141,136,130,249,90,106,5,51,32,95,
+53,50,51,184,204,64,32,250,140,0,228,113,9,154,228,129,8,228,248,10,
+0,48,64,36,160,18,1,67,39,230,79,6,161,155,234,227,1,65,86,233,
+147,2,193,184,233,222,1,193,153,128,31,250,73,5,193,137,160,19,230,152,
+1,198,149,228,32,0,234,160,3,236,198,4,94,82,233,172,5,64,196,237,
+230,2,160,189,192,222,128,42,132,219,230,82,3,225,203,0,225,50,11,0,
+55,65,90,224,65,1,165,7,104,4,110,166,156,20,96,0,65,123,0,54,
+193,123,108,221,64,42,140,222,0,56,81,13,172,222,96,40,141,62,6,95,
+56,49,51,32,75,32,76,64,224,1,13,138,216,192,0,64,85,226,8,1,
+141,94,132,197,97,56,71,87,101,248,77,202,128,237,253,90,4,104,107,124,
+3,0,49,253,24,2,5,101,120,112,111,114,116,102,221,64,85,0,51,96,
+85,82,82,251,43,11,2,51,52,51,224,58,2,6,116,121,81,73,100,101,
+110,128,60,1,64,85,117,88,160,70,237,183,11,0,50,166,153,115,46,1,
+51,55,110,252,1,50,53,181,67,67,209,116,45,161,246,74,69,97,123,1,
+95,51,102,137,97,217,129,140,128,97,135,90,1,80,32,72,112,125,60,64,
+246,134,140,226,222,13,156,16,224,29,15,245,214,24,70,215,160,47,224,45,
+9,226,154,6,0,56,123,234,164,29,240,146,3,240,230,3,1,49,56,80,
+63,97,186,232,158,3,224,92,25,0,56,224,134,32,0,56,169,84,2,58,
+49,56,68,65,222,89,232,48,3,195,172,229,187,0,227,64,1,242,35,4,
+104,238,231,208,0,224,176,15,2,49,53,53,129,172,227,156,11,186,44,229,
+152,1,230,251,1,229,222,3,160,2,192,24,224,43,2,192,5,227,168,11,
+1,53,54,199,119,224,112,1,98,106,231,232,6,225,250,4,192,94,135,165,
+161,17,0,64,246,182,0,113,228,245,83,1,64,235,88,254,227,0,1,85,
+76,7,97,32,99,108,97,115,115,32,99,4,1,95,56,72,205,234,167,5,
+224,147,9,225,14,2,224,25,10,227,243,0,224,48,7,228,12,1,236,234,
+5,224,2,4,224,237,3,251,46,6,64,219,224,5,0,212,55,73,69,210,
+16,0,85,98,26,241,49,14,133,144,240,137,4,213,128,248,42,3,1,95,
+54,66,116,128,125,101,201,0,67,74,130,0,57,232,30,0,192,192,224,76,
+4,131,95,224,76,9,224,68,21,225,101,4,100,123,247,7,15,1,49,50,
+68,109,235,207,2,26,115,117,112,101,114,102,108,111,117,115,32,105,110,115,
+116,97,110,99,101,32,98,105,110,100,105,110,103,246,247,3,64,0,64,133,
+129,13,161,89,129,151,219,182,225,112,0,225,175,0,187,222,128,1,109,55,
+240,129,5,225,208,1,3,95,49,53,56,163,33,227,22,6,159,230,224,69,
+1,224,95,0,195,25,224,9,0,0,67,235,185,4,1,64,64,248,186,3,
+224,105,1,224,115,3,226,152,8,232,168,6,224,2,6,160,138,128,79,192,
+160,239,16,0,225,6,30,128,68,128,11,139,235,246,218,7,232,250,0,140,
+61,239,131,1,128,28,225,29,4,225,32,1,224,82,0,160,60,0,48,192,
+215,224,240,3,2,53,49,55,206,108,128,26,227,60,4,64,32,66,121,101,
+239,140,77,0,49,236,251,0,160,216,165,45,220,254,64,43,76,129,103,108,
+224,57,2,71,238,140,20,1,55,56,140,62,224,138,1,128,48,192,13,255,
+2,2,177,78,132,217,234,77,0,224,166,1,64,191,65,9,192,205,1,54,
+51,253,161,0,224,120,0,128,64,96,29,107,15,128,26,1,56,50,128,11,
+237,182,4,74,198,225,88,1,64,40,227,91,7,133,102,0,89,224,114,0,
+169,255,193,106,225,229,2,204,217,130,13,249,204,6,192,48,233,247,2,191,
+197,129,193,240,126,0,160,73,0,66,75,66,230,10,2,204,179,104,44,1,
+52,56,65,8,1,52,52,128,90,224,179,8,0,89,224,166,0,192,160,224,
+154,14,135,150,192,148,160,140,64,234,130,98,128,115,96,166,96,139,224,135,
+2,160,174,0,67,128,24,224,0,2,193,159,160,0,250,129,3,253,106,5,
+106,121,0,56,130,133,228,150,0,96,144,2,95,49,54,88,15,240,66,2,
+71,176,139,232,97,214,98,85,162,125,64,68,175,225,128,14,0,52,71,121,
+194,146,97,46,0,54,89,109,64,136,1,35,54,175,11,0,56,139,249,96,
+87,140,31,69,247,0,57,72,20,64,28,119,176,96,35,172,90,0,57,66,
+52,0,49,128,21,138,170,229,59,1,69,48,0,34,128,26,170,130,1,32,
+83,65,115,179,230,161,87,246,5,10,128,20,230,93,8,0,49,96,163,193,
+127,232,145,1,96,22,188,219,233,208,18,68,41,64,42,104,217,230,87,6,
+96,67,2,95,53,48,65,38,0,54,77,24,224,197,1,69,237,165,234,98,
+12,229,2,2,232,209,3,69,89,129,58,65,39,230,124,4,162,200,246,209,
+9,224,79,20,175,54,128,86,202,107,192,209,234,111,3,96,65,64,116,64,
+18,105,158,251,159,5,224,103,64,192,99,135,126,128,36,234,6,13,65,242,
+140,31,227,216,2,195,229,224,126,4,224,112,1,224,31,0,224,117,6,128,
+119,3,48,32,95,51,174,39,64,92,204,53,98,33,225,240,2,0,83,101,
+30,133,105,2,53,54,57,195,42,67,81,106,112,0,75,239,165,0,136,194,
+99,179,0,83,142,93,64,77,116,252,160,7,132,95,0,83,173,51,224,77,
+2,1,95,53,139,46,192,217,224,56,3,225,17,5,128,19,135,125,100,41,
+2,95,54,54,231,79,4,128,91,232,134,11,65,21,226,132,1,9,109,97,
+108,102,111,114,109,101,100,32,72,131,11,100,97,108,111,110,101,32,100,101,
+114,105,118,232,136,2,128,127,225,107,6,235,2,11,0,54,101,239,224,52,
+1,230,230,1,227,66,10,131,133,170,17,139,135,138,247,162,85,64,26,227,
+197,11,226,243,13,78,193,201,177,225,40,3,165,204,64,46,104,165,140,102,
+226,200,6,224,60,15,224,56,3,226,156,1,224,85,0,225,96,17,235,168,
+13,12,100,97,116,97,47,110,101,119,116,121,112,101,32,235,173,5,64,0,
+225,89,1,171,152,160,187,230,20,3,233,0,0,96,33,232,143,1,224,173,
+0,131,177,109,9,229,204,1,163,162,151,87,152,25,96,0,66,241,246,32,
+1,224,123,6,97,148,224,96,0,237,40,0,166,216,198,222,192,11,192,82,
+224,20,0,224,64,0,224,55,20,83,240,224,56,6,130,20,225,15,2,128,
+22,64,32,224,40,8,224,94,1,233,130,0,0,66,192,30,65,179,0,51,
+163,100,0,49,71,170,0,51,110,25,107,209,158,13,230,242,2,0,79,225,
+170,2,4,68,97,116,97,46,224,4,0,65,167,224,29,8,7,84,121,112,
+101,97,98,108,101,224,8,0,224,37,7,11,71,72,67,46,71,101,110,101,
+114,105,99,115,192,8,224,35,7,29,76,97,110,103,117,97,103,101,46,72,
+97,115,107,101,108,108,46,84,72,46,83,121,110,116,97,120,46,76,105,102,
+112,211,224,46,3,17,84,101,120,116,46,82,101,97,100,46,73,110,116,101,
+114,110,97,108,96,13,224,38,12,3,83,104,111,119,96,4,64,29,232,3,
+4,228,56,0,96,5,73,139,153,41,226,74,1,226,92,4,233,3,0,224,
+48,2,100,163,72,255,71,219,153,104,229,67,0,224,93,14,225,157,3,65,
+160,226,99,3,224,115,58,160,36,99,74,224,106,7,105,128,224,108,7,160,
+20,224,110,36,195,79,2,95,49,56,102,223,67,60,145,239,200,32,239,219,
+11,96,79,0,52,104,229,107,255,230,217,6,108,71,153,94,138,96,64,35,
+129,176,0,58,128,209,163,156,192,212,224,183,9,225,65,5,224,27,25,224,
+2,4,195,156,224,25,7,128,22,197,126,205,108,227,179,4,195,158,163,151,
+224,14,2,225,4,4,193,6,192,141,128,8,64,20,224,118,2,240,47,0,
+1,49,54,147,114,1,49,56,111,47,65,144,152,21,230,253,5,91,109,241,
+27,6,227,1,1,2,66,97,100,230,194,8,239,169,4,224,150,1,225,15,
+9,192,2,224,195,6,128,49,224,194,5,224,5,27,228,223,1,234,157,6,
+164,163,224,67,23,252,31,12,1,56,52,70,99,236,6,3,198,41,225,74,
+2,239,24,30,239,36,4,224,244,5,225,156,98,96,0,192,133,224,141,0,
+249,96,7,227,221,7,231,26,7,207,186,207,37,250,59,0,64,0,230,149,
+6,102,22,239,225,1,224,119,4,82,152,242,149,0,96,8,79,16,159,115,
+154,87,170,212,239,210,1,160,68,193,135,224,150,6,107,192,92,104,160,110,
+227,73,2,248,109,2,102,147,0,51,168,227,96,62,0,85,240,53,0,226,
+160,0,112,118,224,44,4,192,227,224,95,2,97,162,97,53,225,67,5,162,
+34,64,2,244,193,21,233,184,2,160,166,228,215,7,194,201,135,173,180,176,
+64,182,225,247,4,244,175,49,193,140,239,186,0,240,168,1,224,10,17,212,
+161,225,229,3,230,88,10,193,3,227,227,6,192,67,236,71,21,129,179,236,
+72,5,192,55,128,172,224,95,0,225,39,1,224,21,9,232,229,0,228,136,
+12,224,25,17,132,54,224,144,3,192,1,129,212,243,92,10,128,30,229,201,
+11,0,83,243,231,2,227,87,3,243,29,10,225,244,2,236,222,0,96,17,
+162,85,67,76,2,32,95,53,66,5,127,247,160,5,224,88,2,151,249,197,
+6,164,85,254,237,9,171,251,107,225,130,78,0,52,89,167,80,90,111,138,
+96,17,0,50,66,180,82,120,73,218,240,251,2,192,238,67,54,64,80,64,
+45,0,51,101,45,99,11,250,59,4,14,109,107,77,101,116,104,111,100,58,
+32,97,114,105,116,121,228,140,2,225,118,12,128,2,244,139,4,225,88,0,
+163,43,96,2,244,2,2,224,74,40,224,1,1,3,95,49,50,51,66,131,
+228,96,4,96,55,226,196,0,229,232,4,225,100,0,230,66,9,2,95,49,
+52,81,38,110,170,1,50,49,240,129,3,4,99,111,101,114,99,106,186,224,
+134,7,68,63,226,219,2,132,214,224,33,2,64,31,193,176,224,17,1,242,
+219,1,225,129,1,128,63,225,134,1,130,44,101,158,174,179,240,84,7,225,
+194,0,0,54,178,101,101,65,101,169,98,223,244,73,13,96,64,128,69,191,
+32,165,253,0,83,147,143,98,118,238,53,3,130,112,98,111,0,90,96,177,
+67,188,194,218,224,42,5,209,84,239,149,1,180,131,225,117,2,224,47,9,
+224,48,2,110,91,96,4,78,74,66,202,3,95,49,52,54,237,249,1,160,
+0,8,95,49,50,54,52,32,67,32,80,160,224,64,15,134,57,174,85,130,
+208,97,23,80,119,196,152,161,35,238,245,4,194,97,170,89,129,25,144,112,
+0,55,229,158,3,129,200,193,189,144,196,192,141,244,19,5,238,224,5,161,
+100,96,57,134,161,129,20,64,138,69,132,132,223,197,108,64,121,224,19,2,
+96,18,64,14,3,80,32,64,83,64,4,193,81,233,35,6,128,39,6,64,
+66,32,82,32,64,75,96,134,148,220,224,51,4,239,186,0,225,107,2,224,
+47,0,128,0,128,11,160,17,228,6,6,175,143,2,68,101,114,163,8,75,
+119,148,249,100,176,227,116,1,226,58,6,0,80,227,158,0,66,105,137,141,
+64,59,148,221,190,187,149,59,0,52,99,135,104,109,73,208,135,156,65,140,
+82,126,97,79,64,30,126,142,2,48,48,55,225,115,0,98,72,128,241,1,
+95,55,120,17,64,95,0,54,224,155,9,224,153,6,2,85,32,75,127,242,
+162,52,64,52,149,66,117,155,3,49,52,51,54,149,156,64,183,227,201,0,
+64,37,149,77,66,165,1,35,49,64,110,0,85,117,100,68,9,159,74,105,
+19,135,232,147,219,133,137,128,19,64,41,255,116,0,224,41,8,0,50,64,
+116,224,41,2,240,118,1,243,45,2,127,151,1,49,56,99,25,205,102,228,
+99,2,135,22,224,11,2,192,8,225,124,1,255,128,0,151,157,239,242,19,
+64,104,0,56,96,224,64,111,5,10,65,32,79,32,80,239,231,7,6,66,
+111,117,110,100,101,100,192,7,66,33,64,151,64,196,224,45,10,5,69,110,
+117,109,95,67,72,219,96,10,192,45,65,94,224,45,10,240,97,4,64,39,
+78,116,224,85,11,3,113,46,69,113,160,35,0,54,65,17,224,35,10,6,
+70,117,110,99,116,111,114,192,7,192,45,224,167,14,4,73,120,46,73,120,
+224,35,22,2,79,114,100,64,3,192,37,65,49,224,37,10,241,7,12,64,
+47,68,133,224,47,5,241,17,15,224,131,13,241,27,26,64,56,225,90,9,
+1,84,101,241,37,16,64,48,67,17,224,48,10,241,47,4,64,39,239,134,
+1,192,0,66,39,217,16,164,198,237,194,5,128,11,0,83,101,182,0,55,
+137,10,144,57,162,168,130,231,226,183,0,234,195,9,133,42,238,126,11,176,
+66,168,58,246,66,0,224,12,0,165,101,111,204,224,13,1,234,251,4,224,
+20,7,224,21,7,234,143,14,236,167,0,192,28,224,29,4,224,83,1,170,
+92,253,219,14,224,49,7,224,2,3,233,6,2,234,44,2,224,2,8,166,
+199,224,83,26,233,87,6,224,81,11,201,164,221,46,226,13,1,7,115,104,
+111,119,115,80,114,101,98,154,224,109,21,221,79,192,104,224,1,1,138,232,
+224,25,11,140,158,224,22,17,224,104,11,178,191,237,147,2,224,202,4,240,
+45,7,106,56,130,33,82,90,97,15,137,10,226,207,4,224,210,12,128,2,
+192,34,224,208,2,235,241,1,208,75,64,22,71,112,103,131,67,49,235,133,
+2,224,220,5,224,224,4,224,28,22,224,243,3,128,28,245,231,1,96,2,
+240,244,1,224,67,14,224,65,8,241,6,0,224,8,13,64,44,160,218,97,
+67,130,29,2,56,50,54,65,53,226,23,5,4,80,97,114,101,110,194,23,
+192,100,128,70,141,0,128,52,2,79,32,35,69,46,161,109,161,31,0,50,
+90,182,103,210,228,18,3,162,155,96,51,88,95,193,161,169,54,169,78,253,
+248,0,225,105,4,223,208,2,85,32,35,152,211,224,150,1,224,2,0,241,
+245,4,128,239,64,71,192,235,64,8,236,44,4,161,252,225,238,2,193,70,
+128,75,132,118,128,137,235,198,1,128,146,3,79,32,35,49,82,30,226,101,
+0,128,116,64,50,96,223,73,4,224,223,1,96,215,163,64,128,13,111,59,
+228,215,1,224,111,27,70,55,192,82,1,85,32,229,108,0,64,12,96,141,
+0,53,225,133,1,65,159,108,129,139,125,0,54,149,225,160,44,138,201,127,
+29,72,47,96,59,0,48,236,147,4,96,10,64,4,161,177,104,225,3,64,
+95,55,49,187,175,0,95,209,122,224,31,1,1,49,48,64,110,226,67,7,
+2,83,116,114,242,248,1,194,27,105,218,224,59,4,0,56,226,127,11,228,
+151,3,226,86,6,224,51,2,65,106,0,54,224,188,0,2,95,49,51,112,
+191,137,146,173,70,174,8,235,211,8,175,82,2,56,52,56,97,63,87,94,
+228,51,3,169,145,71,8,138,227,68,233,68,114,0,54,89,103,1,95,52,
+64,127,177,240,64,132,193,65,0,67,161,183,64,19,225,176,1,69,33,137,
+149,64,79,0,54,160,79,198,71,193,250,66,160,231,78,7,234,24,0,130,
+55,64,128,126,61,134,117,64,29,143,51,227,7,0,231,78,15,96,110,237,
+56,16,64,128,166,116,128,17,101,92,230,54,14,3,114,101,97,100,225,157,
+0,128,46,64,61,239,195,2,128,61,66,18,238,206,0,239,145,10,2,101,
+114,114,137,189,176,186,65,187,130,32,224,107,9,0,32,124,82,3,101,102,
+105,110,138,152,64,0,226,167,0,128,4,225,222,5,136,195,140,9,3,75,
+32,75,52,224,249,3,204,202,64,33,140,5,0,75,133,85,109,131,168,218,
+225,140,18,173,251,221,68,244,90,8,0,51,142,36,65,27,132,125,232,43,
+8,228,185,3,135,194,232,126,0,240,122,2,232,6,0,163,44,161,83,197,
+39,98,222,65,57,240,37,2,224,92,4,181,62,167,42,225,205,14,6,116,
+121,112,101,82,101,112,161,84,192,120,4,53,49,55,32,79,127,239,229,221,
+2,128,87,160,128,96,83,241,108,15,8,109,107,84,121,67,111,110,65,112,
+224,87,1,137,178,224,55,29,128,52,177,74,195,210,132,58,131,70,224,30,
+26,78,93,66,15,1,48,48,65,251,242,90,0,226,47,0,130,46,1,56,
+57,231,202,1,66,14,0,51,234,244,119,64,43,226,49,10,225,211,7,227,
+176,2,227,198,2,225,233,21,5,99,111,109,112,97,114,179,2,70,36,0,
+55,116,247,97,151,160,153,235,109,14,235,119,4,249,68,2,96,234,235,17,
+0,128,5,245,99,0,167,241,64,22,201,167,64,49,100,110,243,5,3,241,
+6,5,0,83,184,128,247,150,4,134,123,229,214,0,193,241,228,97,24,1,
+60,62,234,217,1,160,140,96,48,0,53,68,24,224,78,41,225,64,4,64,
+0,199,77,224,53,20,1,69,81,192,48,200,106,225,173,0,225,26,1,97,
+17,227,112,6,224,84,19,1,76,84,233,155,4,224,79,8,75,15,160,76,
+225,109,3,224,82,19,0,71,192,82,161,152,180,82,232,49,22,160,37,224,
+29,5,232,170,2,227,111,0,229,159,8,231,100,5,145,76,1,75,52,96,
+195,230,226,9,229,189,14,145,88,227,174,205,1,61,61,227,169,0,64,38,
+104,86,99,182,106,73,230,170,2,0,67,227,190,3,171,220,235,77,0,227,
+120,0,237,27,2,64,46,237,40,7,227,133,82,1,38,38,227,133,68,193,
+23,64,0,227,128,28,2,84,114,117,227,179,0,226,205,22,226,198,15,232,
+229,5,227,90,0,227,176,34,3,70,97,108,115,192,133,128,45,227,25,31,
+179,229,65,134,94,108,226,183,0,97,254,78,34,2,95,49,53,64,116,111,
+134,98,8,193,252,140,114,96,10,235,15,1,164,38,138,190,98,114,231,9,
+5,244,195,1,105,142,92,28,1,50,57,192,152,74,241,4,49,50,32,95,
+50,183,149,0,55,149,209,4,95,51,50,50,32,184,9,72,254,84,119,85,
+224,64,4,128,0,0,58,129,86,1,10,65,96,193,163,125,234,202,22,64,
+137,227,117,11,227,108,5,129,154,65,113,99,94,164,29,161,183,64,118,146,
+199,64,52,1,56,53,65,6,128,54,253,172,8,11,87,97,114,110,105,110,
+103,58,32,99,97,110,138,108,4,114,105,118,101,32,97,178,227,127,0,129,
+15,184,169,224,66,8,4,32,121,101,116,44,128,49,99,45,225,91,0,225,
+218,2,64,145,204,80,130,109,99,214,96,210,97,194,64,32,0,54,246,47,
+0,10,73,79,46,112,101,114,102,111,114,109,73,203,167,65,182,65,130,97,
+53,5,51,57,48,32,95,52,143,37,97,21,96,22,96,68,183,5,229,27,
+51,115,99,129,174,229,20,0,224,31,3,132,216,3,64,95,54,56,65,21,
+0,56,159,119,229,55,5,239,149,5,225,207,12,232,114,12,132,205,224,13,
+2,211,149,164,168,224,2,2,229,124,7,224,130,1,224,2,6,168,154,128,
+142,171,83,128,2,243,112,3,192,218,235,142,7,241,73,0,197,212,129,192,
+189,0,128,189,66,178,164,214,249,175,4,172,42,65,64,160,234,199,247,96,
+149,163,155,164,131,102,43,205,13,174,243,64,0,3,95,53,54,54,163,122,
+239,254,1,129,59,160,168,128,165,224,5,0,230,100,26,1,116,111,215,188,
+96,194,230,104,4,224,207,29,97,90,230,110,6,225,110,1,224,204,10,132,
+242,196,141,224,216,12,229,110,14,96,57,128,205,238,91,59,128,251,12,58,
+32,111,117,116,32,111,102,32,114,97,110,103,230,39,0,164,63,97,231,231,
+2,2,170,223,194,34,225,86,16,6,101,110,117,109,70,114,111,225,88,1,
+161,14,235,37,0,233,246,3,198,60,135,21,237,27,16,192,83,1,84,111,
+160,164,224,255,3,96,127,241,203,6,192,195,227,5,13,224,215,3,131,67,
+224,203,22,1,84,104,244,16,1,224,83,14,236,7,0,130,61,224,17,7,
+247,88,0,196,14,195,100,236,31,20,96,22,193,55,164,87,224,110,0,194,
+122,162,240,224,78,0,0,52,233,135,0,201,14,242,113,3,225,98,15,0,
+62,200,90,129,90,98,51,231,53,0,224,17,7,192,151,160,183,102,193,163,
+172,192,176,224,27,9,124,173,0,90,64,130,0,48,206,145,225,199,9,224,
+144,1,1,120,49,225,235,15,224,35,2,0,50,232,86,3,193,53,64,7,
+4,67,32,95,53,56,95,15,224,114,6,226,92,19,2,104,101,110,194,96,
+224,106,9,64,9,228,47,1,232,183,21,92,9,166,196,225,59,0,64,31,
+97,123,64,31,0,51,96,31,2,85,32,75,64,67,104,51,106,114,202,120,
+64,34,140,20,129,72,235,222,57,198,192,226,76,0,230,158,32,226,189,3,
+230,172,1,224,16,0,224,13,13,128,173,224,93,2,230,170,13,224,48,3,
+128,2,198,166,128,51,198,165,230,162,2,193,10,130,215,128,92,230,147,0,
+94,84,230,147,2,224,81,1,0,82,241,200,7,160,23,224,52,20,4,66,
+32,82,32,64,130,69,226,95,3,96,5,226,31,9,2,109,97,120,126,60,
+226,63,15,2,109,105,110,224,31,2,226,63,6,119,21,138,225,97,139,244,
+80,3,128,243,64,20,106,234,129,1,0,95,100,52,234,111,9,230,91,4,
+128,104,226,149,1,174,49,133,191,0,90,116,232,165,202,2,52,51,48,211,
+69,224,152,7,233,233,8,0,67,234,35,9,167,0,1,53,55,115,149,96,
+171,228,47,7,96,128,203,206,129,100,162,205,120,139,192,138,231,90,2,232,
+162,0,226,154,3,66,151,131,113,194,89,2,95,51,54,96,175,201,128,194,
+57,87,39,94,53,165,7,101,26,0,56,236,5,1,128,58,138,215,183,211,
+96,18,1,55,50,64,108,0,52,128,40,3,67,39,32,89,128,146,0,80,
+142,60,96,92,233,23,2,239,54,14,96,2,224,37,2,0,66,64,70,194,
+188,229,182,4,154,230,224,50,3,128,47,128,121,224,206,0,192,52,128,46,
+195,3,142,243,195,108,96,190,0,52,89,125,160,10,100,75,130,45,6,49,
+52,54,50,32,95,55,98,35,97,239,1,55,48,231,128,4,153,44,2,49,
+52,54,152,160,225,53,1,224,97,15,225,34,2,97,237,193,229,65,99,130,
+180,64,9,202,86,132,252,224,36,0,171,174,161,210,0,58,132,106,3,10,
+65,32,80,129,145,1,95,56,88,102,217,192,160,14,160,20,96,45,140,213,
+0,83,96,151,109,138,1,54,57,194,189,99,72,193,47,69,235,1,50,48,
+64,132,115,238,224,155,1,224,250,1,64,78,140,146,0,83,149,162,233,226,
+1,3,95,49,54,56,85,85,2,49,54,49,98,71,96,43,0,54,165,184,
+97,10,226,150,0,246,252,7,129,195,241,22,7,161,202,195,199,108,247,246,
+189,3,161,132,0,56,89,80,192,111,140,200,138,199,227,5,3,2,53,53,
+52,160,56,2,95,49,54,89,143,69,34,96,124,193,174,229,207,3,64,123,
+128,21,224,181,11,0,53,89,229,128,182,165,91,193,245,129,96,3,64,95,
+55,57,130,56,155,188,64,7,203,205,224,7,13,128,55,128,43,225,80,1,
+199,146,0,64,132,230,225,30,4,98,218,104,32,194,34,192,0,163,170,228,
+162,19,228,160,6,68,157,7,97,32,99,108,97,115,115,32,100,158,2,95,
+56,48,130,215,80,12,92,16,132,172,224,79,0,82,12,177,75,97,90,96,
+44,192,237,225,183,0,243,8,7,98,127,228,198,1,210,139,150,80,64,5,
+64,4,78,213,192,3,226,23,1,111,71,69,13,1,95,49,192,154,196,239,
+98,118,224,233,1,66,18,0,85,223,12,66,57,226,233,0,227,69,6,224,
+92,0,229,14,5,64,162,161,123,1,49,56,106,24,79,66,0,49,97,2,
+97,10,2,95,49,54,97,220,160,0,66,115,232,188,3,2,80,32,35,162,
+253,97,5,2,32,64,64,64,139,64,37,0,51,163,9,98,91,5,32,67,
+32,61,61,32,190,244,224,150,2,96,246,67,45,129,69,160,69,168,46,224,
+9,0,64,154,192,131,64,90,136,250,128,128,96,211,227,104,16,228,168,0,
+229,119,0,235,30,3,128,2,229,135,4,192,123,239,75,9,224,55,3,224,
+27,0,134,56,128,104,224,143,1,129,8,224,46,16,192,28,233,46,5,224,
+107,9,192,82,240,79,4,160,16,246,9,6,230,8,1,98,88,67,236,114,
+182,230,243,2,104,53,0,50,97,22,224,101,1,237,115,3,138,90,224,132,
+0,104,226,224,161,0,147,75,228,142,3,136,80,69,35,224,23,6,250,79,
+1,224,121,0,128,70,239,136,1,224,187,5,98,148,227,57,1,99,86,128,
+228,132,182,224,201,1,128,197,136,51,251,218,8,96,0,192,190,231,41,4,
+243,44,8,162,20,226,112,3,65,2,232,39,4,192,70,160,32,224,29,5,
+224,28,3,224,25,4,160,43,227,192,0,66,187,0,51,128,174,0,48,73,
+138,194,166,1,53,53,224,187,3,224,15,6,224,43,4,131,65,228,21,4,
+99,99,224,67,7,193,29,229,52,4,64,125,83,105,231,190,7,64,23,160,
+11,65,71,64,10,238,241,0,71,186,64,68,102,54,160,85,1,51,54,96,
+63,132,139,132,45,134,164,230,147,7,192,47,245,93,0,198,16,64,196,100,
+166,224,103,20,135,82,224,97,10,245,163,0,232,132,4,162,161,180,127,232,
+27,2,3,64,64,64,89,233,149,0,201,146,163,125,162,27,228,147,0,234,
+46,1,224,171,1,137,92,225,229,2,233,140,1,227,135,2,168,215,0,67,
+197,127,192,146,231,184,7,68,179,139,91,0,85,110,108,130,192,64,21,138,
+240,162,69,69,110,96,87,0,83,69,130,104,143,107,196,0,51,84,254,224,
+142,2,2,95,57,49,97,8,167,151,0,58,129,203,1,10,65,64,53,2,
+51,32,75,168,125,224,1,5,180,158,64,0,224,28,9,128,1,228,117,0,
+224,37,18,224,35,4,224,32,23,64,210,225,170,0,64,165,246,109,0,98,
+30,97,111,193,144,64,59,65,69,249,195,2,3,95,51,54,56,202,147,128,
+253,224,25,14,96,91,214,55,224,134,3,224,11,2,192,8,97,169,64,47,
+0,54,169,212,0,73,128,131,164,113,69,204,2,67,32,60,70,169,64,40,
+224,157,1,230,193,1,128,77,247,101,4,242,168,3,100,187,236,162,5,227,
+186,4,98,218,180,70,241,201,2,98,198,2,49,56,51,113,123,241,224,6,
+224,82,46,160,78,193,32,202,41,232,95,5,0,52,83,252,197,15,228,119,
+4,128,64,0,51,104,9,140,244,2,50,55,57,96,5,193,122,136,32,227,
+105,11,233,213,3,142,71,0,83,134,66,181,27,67,93,227,92,1,64,24,
+224,57,1,64,1,67,136,224,243,0,229,159,1,99,109,227,107,5,224,222,
+0,136,148,133,42,163,163,224,79,1,96,245,232,36,22,128,2,231,158,0,
+232,54,6,110,132,226,243,4,232,16,1,232,41,13,224,83,1,224,89,1,
+232,126,0,161,201,224,23,1,224,61,8,160,62,224,29,7,96,2,238,212,
+9,128,0,129,103,241,188,11,224,16,0,224,192,2,224,42,0,162,59,128,
+0,193,58,96,105,225,65,1,224,81,8,145,136,161,10,65,156,0,54,73,
+150,226,127,3,229,232,2,143,105,160,40,134,69,64,55,64,24,130,181,225,
+212,3,224,236,6,245,146,0,128,105,101,117,167,199,224,35,0,166,111,226,
+61,13,192,7,201,70,162,138,160,57,247,149,12,64,100,2,53,51,50,240,
+160,1,166,91,215,108,241,235,0,224,172,3,234,71,2,233,83,0,224,91,
+33,209,9,160,87,96,69,163,23,0,64,228,239,6,167,17,131,124,128,0,
+224,141,8,224,139,1,130,65,129,124,224,5,18,143,183,235,174,6,97,182,
+1,95,49,102,127,212,140,226,113,4,96,101,225,88,2,226,126,6,227,46,
+3,129,31,224,18,3,194,68,225,242,5,224,60,11,243,223,2,226,85,0,
+128,2,241,197,0,228,38,0,160,250,162,197,160,151,64,38,0,55,96,230,
+246,41,5,64,23,128,88,101,68,153,11,185,12,160,131,143,145,225,176,9,
+232,145,14,225,236,9,248,58,4,64,112,96,44,249,198,19,192,104,96,12,
+230,9,0,225,36,3,224,2,6,193,71,224,249,3,225,79,18,245,122,5,
+225,94,85,0,51,138,24,225,94,63,228,31,20,96,148,135,29,225,116,7,
+0,51,200,43,224,55,0,228,51,57,64,38,225,184,0,228,66,49,228,67,
+8,224,12,3,128,157,165,167,128,119,224,116,3,232,43,5,192,53,193,11,
+129,118,228,62,6,96,152,1,49,57,229,171,5,228,152,26,228,118,16,128,
+66,205,246,224,47,0,65,116,96,162,98,51,107,207,73,164,246,241,2,6,
+114,101,99,83,101,108,69,252,141,1,145,183,1,56,57,128,111,242,255,9,
+1,56,48,130,76,71,239,0,51,232,206,2,224,37,1,3,95,56,52,56,
+241,233,2,2,103,101,116,215,78,224,74,3,64,63,144,67,224,42,1,6,
+115,101,116,70,105,101,108,87,126,64,30,139,174,224,30,1,13,68,97,116,
+97,46,82,101,99,111,114,100,115,46,83,224,43,5,139,196,224,117,4,224,
+30,2,67,238,224,74,17,2,72,97,115,224,43,3,203,33,128,215,250,23,
+0,0,56,77,34,64,31,234,229,1,192,29,160,7,64,28,0,54,172,98,
+225,204,18,227,85,10,64,57,138,27,66,84,237,144,0,64,22,209,232,107,
+37,175,146,235,14,7,97,145,97,132,235,15,11,98,138,243,231,2,227,95,
+1,247,37,4,96,175,233,159,19,224,38,1,224,106,5,160,28,195,248,164,
+179,214,72,248,72,6,128,5,137,201,233,87,3,117,252,224,101,3,100,12,
+224,13,0,231,17,4,164,191,64,130,239,121,6,224,56,11,224,90,1,224,
+112,3,224,248,4,138,16,228,2,2,97,101,193,60,228,10,15,233,20,4,
+165,68,233,128,8,254,198,3,239,108,6,160,57,207,111,234,141,1,246,124,
+22,229,149,15,224,191,3,202,25,160,241,229,54,0,165,67,161,253,233,197,
+0,97,92,224,56,0,194,187,0,50,68,43,64,143,164,242,244,147,4,96,
+184,84,149,65,113,181,154,245,151,0,196,130,2,95,49,49,122,110,64,15,
+0,54,100,121,97,22,0,67,133,73,100,139,228,111,3,164,92,246,37,3,
+5,77,101,116,104,111,100,228,159,2,64,89,224,180,1,1,95,54,77,15,
+165,86,240,109,32,130,181,64,228,131,22,162,130,236,219,9,96,173,67,250,
+97,127,130,134,1,95,55,217,179,224,125,46,0,49,240,236,7,224,126,16,
+96,0,224,87,3,0,83,192,87,199,16,224,92,8,172,68,130,90,231,80,
+12,96,195,250,12,1,96,0,244,47,5,100,119,133,219,98,130,153,97,0,
+56,95,144,64,25,133,181,108,176,2,95,49,52,78,193,225,176,1,2,100,
+102,108,101,237,64,39,133,190,228,84,18,96,205,245,142,1,227,89,1,239,
+254,3,244,133,0,224,28,6,225,145,2,235,42,1,139,41,192,110,215,207,
+111,187,206,218,163,14,163,121,117,139,244,197,11,225,157,1,232,142,7,224,
+23,5,193,187,0,56,71,205,245,15,13,224,74,66,65,86,242,174,2,225,
+88,8,0,54,130,168,161,254,64,74,104,40,146,172,64,61,64,90,129,148,
+146,234,73,157,146,229,0,49,116,162,146,229,64,40,135,5,242,205,8,64,
+168,192,95,224,1,9,242,121,3,224,37,15,224,35,4,224,32,23,224,29,
+20,224,26,17,224,23,14,224,20,11,224,17,8,243,49,4,96,0,65,14,
+231,244,3,0,52,98,53,170,15,225,131,0,64,57,2,55,57,48,227,152,
+0,247,95,5,106,236,247,96,2,64,43,99,171,160,43,224,70,2,99,158,
+242,3,2,65,156,65,214,96,124,227,75,9,0,56,196,78,130,217,96,7,
+252,90,8,97,225,0,52,224,17,0,98,120,197,230,247,39,3,0,52,96,
+105,193,23,224,196,6,64,108,216,159,224,162,5,232,158,1,199,41,228,239,
+3,104,158,241,45,6,163,149,131,192,171,113,232,63,2,128,123,225,20,18,
+224,193,17,199,236,192,196,128,1,241,172,8,160,223,97,244,131,121,128,189,
+123,238,67,5,229,136,6,224,105,6,65,79,0,53,128,245,192,242,228,134,
+1,97,145,71,21,71,16,241,214,5,254,33,5,223,167,88,69,192,37,66,
+109,0,54,162,109,0,89,220,167,230,82,5,159,241,229,45,7,128,104,224,
+33,18,238,69,5,224,177,4,192,25,255,152,2,136,173,224,184,1,224,49,
+5,230,196,0,97,198,64,43,202,10,224,44,11,224,43,1,234,190,1,203,
+60,133,165,160,248,245,32,1,69,25,231,64,5,175,52,233,78,1,65,240,
+128,13,130,27,96,35,160,55,194,132,65,208,64,39,162,93,70,29,225,218,
+2,224,96,34,69,8,192,103,234,74,2,224,57,41,226,231,1,128,140,2,
+64,95,57,173,220,97,1,253,216,1,85,160,128,160,192,100,66,172,199,252,
+0,80,141,207,5,49,32,64,95,55,54,96,89,224,245,23,0,95,166,13,
+224,67,1,224,251,9,224,8,10,160,205,224,244,0,142,219,99,46,160,5,
+224,68,8,224,50,19,224,44,18,225,25,1,225,31,4,98,82,166,170,232,
+181,1,65,43,168,163,142,220,195,39,195,203,193,60,163,13,128,113,227,16,
+5,225,14,9,227,89,13,128,134,161,242,224,33,12,196,212,226,250,9,228,
+238,2,96,223,64,34,145,173,228,180,0,67,11,0,55,75,0,1,95,49,
+167,237,132,41,248,9,5,128,216,229,22,6,193,51,155,170,105,167,1,55,
+57,105,92,227,96,0,240,12,0,244,87,6,98,18,1,53,48,73,196,0,
+54,64,50,233,196,1,2,98,105,110,79,11,228,195,0,237,234,6,1,64,
+64,107,2,7,95,49,53,50,49,32,95,53,74,41,224,59,1,2,78,117,
+109,171,167,228,79,7,64,251,253,166,6,229,81,6,179,0,64,161,69,18,
+0,52,64,19,141,43,224,213,0,233,222,3,128,0,226,96,2,225,189,0,
+129,98,193,155,210,252,228,27,0,131,163,162,137,130,134,69,244,192,39,226,
+134,5,225,169,4,0,85,97,169,235,42,0,228,4,8,129,182,230,104,4,
+224,159,3,224,29,8,225,27,33,134,147,96,8,96,32,225,7,5,231,29,
+12,97,235,195,13,98,114,224,96,17,101,17,110,16,226,114,3,224,18,13,
+232,94,9,66,66,0,53,226,66,4,5,102,117,110,100,101,112,98,9,93,
+108,226,65,8,224,176,9,136,64,227,138,0,163,202,230,222,7,192,216,231,
+248,10,1,56,48,96,95,233,79,9,226,79,4,1,48,54,128,45,135,151,
+231,121,3,227,188,1,227,36,2,177,251,225,107,5,224,130,16,111,253,224,
+130,50,225,29,1,228,71,8,215,32,160,123,226,54,3,224,129,1,97,5,
+103,202,224,112,18,128,0,193,104,133,54,228,209,9,230,229,0,229,20,15,
+234,117,3,224,169,4,232,24,4,225,37,18,224,162,22,224,89,10,229,74,
+2,195,85,163,183,227,92,0,229,84,5,0,51,133,84,0,56,157,95,96,
+9,230,64,1,167,251,228,50,12,160,104,228,49,4,228,46,12,228,45,4,
+228,42,8,224,205,1,225,177,3,227,138,7,224,189,11,64,96,181,202,1,
+56,48,235,115,13,72,88,167,31,224,171,119,0,54,140,131,227,212,7,224,
+187,0,224,188,22,227,98,7,3,95,51,52,54,114,166,71,227,144,109,106,
+253,130,76,167,8,227,100,9,128,156,224,132,7,192,21,241,11,8,96,42,
+224,62,0,80,201,163,134,128,26,130,30,237,69,8,66,175,182,230,166,155,
+66,197,0,55,89,75,230,26,3,192,96,162,255,224,69,1,229,214,6,115,
+65,236,8,0,224,58,4,160,178,224,16,3,143,124,232,9,1,230,124,0,
+197,149,64,16,192,231,206,134,133,252,166,2,238,146,3,129,200,0,52,174,
+22,65,222,2,67,32,95,83,180,99,139,0,35,98,51,96,243,2,52,51,
+48,208,136,147,173,2,49,50,55,65,240,229,238,1,11,66,97,100,32,100,
+101,114,105,118,105,110,103,231,254,1,224,168,0,231,31,4,192,163,226,104,
+4,234,78,6,224,171,8,225,197,4,162,198,213,38,97,97,245,25,15,0,
+67,82,168,227,244,1,195,1,96,250,239,159,6,143,60,202,73,160,5,64,
+4,70,152,192,3,242,95,9,128,127,226,191,3,0,67,255,74,0,128,238,
+238,199,5,64,44,226,69,8,226,59,0,95,154,64,174,233,119,4,205,34,
+64,58,3,55,52,32,95,97,125,117,141,224,6,0,224,223,3,224,112,3,
+0,83,161,111,224,212,20,226,148,5,65,69,1,56,48,66,208,186,103,133,
+55,246,133,1,231,14,6,224,253,8,67,220,98,61,171,166,148,8,1,80,
+32,64,11,146,189,0,90,160,1,130,225,0,58,128,110,108,246,133,219,169,
+161,96,2,64,79,2,52,51,52,140,238,1,50,55,96,13,135,56,0,52,
+83,11,96,0,236,152,11,91,97,100,150,233,165,27,228,243,3,224,29,8,
+224,20,0,228,243,5,98,85,233,144,1,240,96,5,151,104,129,28,225,90,
+1,0,52,82,31,129,111,233,174,11,231,44,8,233,150,0,2,53,52,56,
+96,209,0,48,64,255,231,199,2,224,96,8,152,74,224,96,14,131,63,163,
+133,232,63,11,160,129,0,54,138,16,130,197,224,126,19,96,0,65,190,251,
+51,3,1,80,32,231,64,2,67,234,165,202,70,208,3,10,65,32,83,108,
+57,128,79,64,86,64,25,0,54,224,62,0,1,80,32,135,230,0,80,128,
+24,240,15,1,96,26,201,5,224,87,5,239,50,1,64,122,96,156,160,62,
+142,32,225,13,7,237,44,8,64,42,134,103,128,105,128,72,162,92,128,16,
+229,86,0,192,120,96,52,214,226,241,156,0,138,188,239,177,1,244,30,5,
+0,54,153,29,192,100,130,253,128,11,101,218,236,155,7,226,194,0,197,19,
+192,86,230,153,6,199,25,129,176,224,94,5,230,41,7,192,29,231,60,8,
+229,173,9,79,158,236,66,0,2,95,49,52,102,228,254,30,3,64,19,100,
+181,0,67,83,95,165,128,103,11,0,85,154,16,64,0,235,255,12,97,61,
+132,11,68,241,2,57,32,58,128,55,225,199,2,98,67,97,199,110,23,96,
+41,69,220,1,95,56,254,94,4,19,80,114,105,109,105,116,105,118,101,115,
+46,67,111,110,115,116,114,97,105,110,158,112,64,56,245,182,1,64,82,226,
+89,1,111,110,161,186,237,37,2,164,43,235,17,45,238,104,0,193,69,239,
+106,1,192,25,3,85,32,64,90,129,236,167,202,234,230,22,160,37,138,167,
+194,4,234,164,3,163,216,224,80,0,224,15,7,230,175,10,224,34,1,237,
+201,9,64,211,2,95,51,52,68,17,105,14,225,185,5,3,67,32,95,55,
+104,175,99,56,198,193,64,0,65,80,227,170,3,233,87,3,254,71,6,171,
+118,98,101,64,70,0,51,132,134,99,163,144,167,99,99,152,254,192,91,227,
+225,1,224,93,22,226,222,0,247,42,19,236,254,4,232,127,10,227,180,5,
+237,158,0,224,90,1,64,172,183,10,226,18,1,131,157,227,57,2,229,100,
+2,65,181,96,237,65,61,130,109,93,104,183,111,158,42,230,130,6,255,34,
+0,132,17,64,60,65,108,225,28,6,224,75,14,161,54,132,254,0,75,96,
+177,218,105,192,102,212,117,186,27,96,47,133,3,224,47,7,1,66,32,224,
+43,11,132,250,132,120,233,173,6,65,30,1,52,51,84,153,137,149,136,69,
+233,12,12,231,7,39,0,55,156,139,134,136,0,52,177,178,128,72,226,169,
+1,2,95,49,55,123,66,253,147,34,138,33,224,247,1,160,171,253,146,7,
+64,248,132,181,194,64,71,43,232,161,25,96,207,66,130,154,58,64,161,98,
+62,0,58,128,208,224,79,1,232,238,21,135,86,64,60,0,55,100,196,64,
+67,101,23,2,55,56,54,69,65,64,22,181,16,132,163,224,9,1,161,166,
+213,26,161,7,230,79,2,160,39,226,230,1,228,219,11,226,236,2,224,47,
+22,195,105,224,47,0,165,53,224,47,15,219,113,160,89,224,47,23,184,176,
+225,207,1,224,47,23,204,2,128,27,229,115,9,224,31,5,174,44,129,62,
+103,250,66,115,232,16,2,224,64,9,160,144,192,61,231,202,16,227,230,5,
+234,147,1,231,140,4,161,226,224,27,0,206,31,249,147,2,224,136,15,193,
+73,192,136,197,233,100,54,77,201,237,182,6,15,116,121,112,101,32,97,112,
+112,108,105,99,97,116,105,111,110,237,190,1,225,183,0,232,55,2,247,73,
+15,93,31,224,51,1,193,52,128,40,230,181,5,229,76,4,173,206,160,194,
+128,56,184,125,104,114,129,5,132,96,1,49,53,64,218,0,67,68,236,100,
+228,5,67,32,95,53,54,51,64,47,246,232,0,118,139,96,0,105,226,65,
+147,224,236,1,1,36,120,192,218,225,26,1,194,249,237,161,9,235,82,2,
+146,61,228,171,7,2,95,49,53,68,226,192,79,128,248,230,57,6,0,51,
+79,90,1,53,51,128,242,225,26,1,108,26,226,10,5,224,237,2,137,73,
+1,49,53,129,232,226,9,0,225,53,2,225,243,9,195,109,225,85,2,237,
+69,4,224,155,7,128,227,254,199,0,225,1,6,243,153,18,244,173,3,227,
+122,3,144,132,128,126,171,44,224,13,0,128,30,64,57,226,154,2,224,1,
+1,200,168,234,169,3,160,85,255,163,9,182,211,224,49,12,224,131,5,69,
+248,96,36,225,116,0,232,238,9,96,46,160,28,129,108,131,228,84,163,97,
+125,0,75,104,223,128,5,225,231,0,133,247,224,70,1,145,35,0,53,70,
+239,241,29,3,0,79,74,195,0,53,231,145,1,225,237,5,225,243,5,197,
+168,64,73,176,174,195,55,71,219,96,97,117,54,226,254,1,231,250,2,65,
+20,2,95,49,48,194,150,0,49,102,52,96,86,96,41,233,88,0,192,0,
+227,216,0,227,205,16,160,240,227,205,11,224,40,5,161,70,228,39,1,129,
+162,160,7,224,42,4,222,98,229,31,0,160,128,128,49,228,99,0,199,157,
+165,130,128,1,160,31,225,39,2,225,181,2,225,243,3,226,29,2,224,42,
+4,224,123,0,224,36,5,225,147,2,224,181,1,160,29,225,155,0,226,4,
+3,194,10,192,56,160,36,67,77,1,50,51,65,251,1,48,48,128,5,67,
+249,129,131,64,43,0,79,77,155,236,190,2,2,79,32,35,75,47,162,26,
+233,179,0,160,161,227,191,6,226,54,6,227,170,7,129,100,162,178,64,136,
+0,54,70,43,226,138,4,145,229,64,0,131,84,194,244,244,26,3,64,26,
+160,33,235,25,32,0,50,227,208,8,142,115,224,68,20,224,74,21,224,75,
+2,224,77,0,226,94,5,244,36,4,227,243,5,227,222,9,78,161,130,251,
+224,67,11,194,71,228,57,7,228,35,8,129,48,128,170,192,80,226,60,5,
+224,70,0,160,67,97,76,224,79,0,244,202,5,64,67,234,23,1,234,187,
+5,64,29,1,50,52,192,121,64,0,195,16,224,182,4,232,45,6,0,54,
+81,72,232,91,32,160,45,224,124,26,64,32,236,56,4,225,182,6,1,54,
+55,160,8,230,164,0,228,9,27,242,29,1,224,91,21,168,242,224,91,0,
+128,176,230,221,10,0,80,66,255,0,50,255,166,1,224,132,1,160,51,196,
+235,225,145,0,130,89,225,90,2,96,170,164,84,229,24,2,71,10,67,40,
+163,247,192,140,136,128,233,84,13,19,98,97,100,32,102,105,110,97,108,32,
+100,111,32,115,116,97,116,101,109,101,176,145,226,100,4,166,247,224,16,8,
+231,86,3,192,138,229,179,3,228,205,9,163,185,224,74,2,230,165,10,65,
+80,230,5,0,229,27,4,224,2,0,224,29,3,241,10,0,169,142,97,5,
+224,8,40,230,226,3,160,90,224,158,1,160,32,128,47,226,172,0,192,66,
+96,68,169,217,193,140,224,16,2,128,34,240,51,5,74,158,112,189,160,15,
+239,38,1,160,0,128,52,160,129,234,80,8,224,33,5,109,126,0,51,228,
+2,1,193,38,227,85,2,0,50,109,152,226,53,1,71,139,128,168,136,123,
+128,161,1,54,51,105,213,1,49,54,144,163,231,188,0,0,80,106,241,0,
+79,64,182,70,27,0,53,118,56,224,48,0,97,213,129,195,128,242,224,236,
+0,138,218,0,49,255,109,4,2,97,105,108,162,96,64,160,2,95,49,51,
+74,179,2,95,49,50,83,82,249,167,3,3,98,105,110,100,160,40,64,135,
+230,162,0,102,73,224,86,8,2,62,62,61,128,44,235,77,11,0,98,194,
+209,193,21,226,77,0,226,2,5,226,11,13,229,189,1,160,34,225,236,69,
+225,109,0,224,213,12,225,42,0,230,159,9,237,120,4,130,2,144,249,192,
+80,224,0,2,228,234,5,196,98,128,171,233,37,4,171,157,227,216,1,224,
+39,14,229,66,4,195,231,224,39,10,160,230,224,79,0,237,107,15,231,157,
+4,233,79,2,197,65,160,2,224,101,14,162,250,224,141,24,174,248,224,39,
+11,224,141,4,161,5,224,130,2,225,128,11,226,40,9,96,17,177,24,114,
+74,225,202,1,9,70,114,111,109,84,104,101,110,84,111,226,253,2,0,66,
+203,51,0,66,64,7,227,222,5,224,125,23,235,143,2,96,16,224,115,18,
+163,25,224,101,83,160,213,224,99,13,225,151,24,174,156,225,151,24,236,220,
+2,224,179,12,192,173,64,18,224,169,14,96,167,224,159,4,224,77,2,196,
+199,228,31,0,233,93,5,229,61,0,0,89,224,44,3,192,127,64,53,147,
+252,224,147,1,234,58,12,96,23,232,202,3,136,21,241,46,1,230,206,0,
+231,86,7,224,21,1,96,18,128,185,231,86,13,224,124,5,183,35,160,0,
+226,204,17,96,77,96,97,224,249,7,160,25,105,146,74,16,111,148,84,114,
+79,254,207,211,225,179,1,96,95,65,130,0,55,205,119,224,66,1,101,101,
+229,71,0,68,179,128,40,211,39,226,108,0,172,81,236,69,17,0,48,64,
+177,236,69,20,98,9,128,115,128,107,64,104,160,174,224,101,4,96,25,176,
+254,224,52,11,149,12,139,17,229,117,0,228,170,4,201,169,194,37,232,38,
+14,235,95,5,128,44,234,1,1,128,135,125,166,225,97,11,97,213,226,58,
+5,102,108,92,61,149,133,79,121,224,0,1,224,151,2,130,53,194,219,173,
+72,95,163,189,230,128,1,226,50,12,195,14,232,79,1,247,69,6,224,200,
+40,227,73,0,226,102,4,199,73,242,186,2,240,223,0,224,247,5,224,244,
+0,142,191,160,237,224,85,77,128,67,129,69,229,236,1,225,89,5,231,92,
+0,162,156,116,125,65,92,186,249,227,200,1,168,16,96,146,87,50,81,139,
+2,64,95,56,224,5,1,224,198,18,130,237,1,55,52,243,217,3,177,253,
+224,200,5,64,191,231,201,1,172,125,227,213,7,96,75,120,156,192,52,206,
+217,194,12,226,207,5,162,0,224,29,0,226,204,9,226,4,8,226,252,0,
+226,13,2,162,178,0,53,105,31,64,82,74,2,65,115,160,253,224,202,17,
+160,206,164,254,160,130,230,28,1,249,23,5,229,157,4,195,218,227,154,8,
+238,110,7,129,221,128,161,227,101,2,233,91,0,224,96,2,196,207,229,232,
+18,224,43,5,164,105,236,231,4,0,55,99,184,224,76,1,225,245,8,160,
+18,226,189,5,101,46,174,251,224,171,12,193,143,225,50,2,160,2,224,51,
+0,64,1,231,131,4,196,55,230,118,0,64,2,224,46,17,192,98,230,165,
+1,230,149,8,224,46,3,195,77,192,28,130,90,128,11,110,76,192,24,253,
+12,13,227,140,0,224,154,1,224,160,2,226,162,3,160,2,167,51,224,158,
+4,199,159,224,47,6,96,18,224,39,4,224,245,7,133,47,224,79,2,224,
+2,7,192,157,224,196,1,160,57,225,47,9,224,67,6,224,153,0,224,67,
+27,227,7,2,224,35,3,96,199,247,99,3,224,39,14,129,115,64,19,240,
+146,5,226,195,12,192,44,128,128,236,57,2,225,120,4,224,132,2,224,193,
+0,224,114,11,224,239,2,228,67,4,226,52,0,224,53,2,224,242,4,201,
+18,225,142,5,248,80,4,225,56,9,160,117,224,16,1,245,147,0,224,70,
+3,228,30,1,224,75,0,220,57,225,55,15,224,79,77,225,81,1,104,220,
+130,109,1,95,49,67,197,103,210,3,55,32,95,55,134,32,2,49,55,51,
+100,87,224,22,8,233,129,1,64,13,102,83,224,0,1,224,121,8,224,120,
+3,128,173,224,78,6,111,223,96,0,195,38,64,239,160,89,64,6,226,205,
+1,230,95,17,133,219,101,9,103,88,240,16,15,8,114,111,109,83,116,114,
+105,110,103,251,206,0,224,174,5,224,97,5,239,135,2,229,187,6,1,52,
+57,229,17,1,224,238,12,146,180,225,111,0,194,122,229,200,2,217,84,64,
+166,207,224,224,0,1,224,88,1,227,113,8,225,15,1,224,125,10,224,192,
+2,227,106,19,227,105,12,224,209,4,227,99,0,224,100,10,128,1,227,29,
+8,226,129,0,224,50,16,226,4,14,1,56,52,92,86,0,55,149,126,96,
+0,226,10,10,104,66,155,123,1,55,53,92,9,0,55,171,125,128,0,226,
+27,60,0,82,125,234,0,97,210,52,226,29,144,224,89,2,226,32,10,227,
+145,2,224,39,3,229,146,114,224,17,1,226,52,17,224,56,12,230,187,6,
+224,121,1,224,45,4,0,83,228,85,9,245,211,1,66,75,224,67,46,226,
+143,1,230,83,15,225,10,11,224,73,11,217,197,224,56,6,229,14,10,0,
+56,225,16,0,229,92,1,227,13,21,0,53,75,86,1,55,54,192,172,136,
+144,226,89,0,133,178,0,54,128,49,1,50,56,104,233,64,49,163,60,64,
+127,2,52,48,56,99,85,211,201,224,110,14,224,60,9,128,0,227,121,60,
+6,73,110,116,101,103,101,114,227,120,152,193,148,6,80,32,75,32,95,51,
+54,112,5,70,193,1,95,51,158,28,64,231,68,204,2,50,53,48,64,75,
+0,57,64,20,2,95,49,52,80,52,128,199,224,118,2,128,146,0,83,167,
+223,226,98,0,160,2,224,184,5,232,170,6,241,4,6,228,4,10,224,33,
+8,129,9,225,6,2,226,189,0,226,49,0,170,126,193,3,183,47,226,35,
+3,0,52,141,86,224,122,21,233,37,8,224,122,62,234,214,2,250,214,0,
+81,122,250,227,1,192,100,96,112,192,109,67,84,160,30,192,27,233,65,1,
+226,68,10,1,54,55,129,180,207,125,161,153,131,15,160,242,192,95,96,66,
+234,65,8,224,132,10,192,7,225,254,1,64,96,120,141,248,107,1,224,55,
+2,228,177,1,224,106,1,0,83,64,166,0,48,77,126,0,55,204,164,228,
+213,1,224,38,5,0,48,130,141,227,56,3,224,232,6,3,95,49,54,53,
+238,55,0,224,172,2,160,211,224,42,2,2,83,32,73,184,197,129,51,193,
+230,0,50,98,98,242,33,6,0,85,65,205,64,67,0,95,143,236,67,74,
+2,95,55,50,68,156,2,95,49,52,178,243,160,236,227,10,2,195,117,64,
+0,128,19,64,45,252,63,4,29,95,32,99,97,110,110,111,116,32,98,101,
+32,117,115,101,100,32,97,115,32,97,32,118,97,114,105,97,98,108,101,164,
+56,224,189,9,110,209,0,52,106,75,115,180,0,56,126,166,225,66,1,128,
+132,242,99,8,194,212,96,209,0,90,64,24,130,98,64,75,64,247,240,56,
+8,153,130,224,220,1,1,95,51,79,52,187,13,224,197,1,6,116,99,69,
+120,112,114,58,192,203,7,104,97,110,100,108,101,58,32,96,190,64,132,123,
+59,96,92,100,69,0,54,96,93,244,109,4,160,82,4,79,32,35,51,50,
+182,88,224,45,0,224,131,0,224,50,4,8,58,49,55,56,54,32,64,10,
+65,97,220,86,79,226,93,12,130,200,228,140,6,230,237,2,224,49,2,226,
+42,1,228,151,6,228,29,0,226,152,0,228,205,27,226,21,0,225,117,1,
+192,33,240,68,19,241,37,3,228,134,10,224,31,6,226,225,0,226,115,1,
+0,55,70,209,224,34,0,224,64,8,160,150,192,60,231,232,4,224,109,9,
+224,108,9,99,8,163,122,228,102,15,192,85,128,56,196,151,163,208,160,104,
+228,95,7,224,144,0,118,58,182,251,118,219,224,130,3,224,134,0,230,118,
+2,232,254,4,224,38,1,228,88,10,224,52,1,228,245,2,192,58,224,55,
+3,196,105,228,106,2,228,109,19,224,59,0,230,19,3,160,92,228,115,89,
+225,81,2,226,219,3,175,98,96,210,225,215,7,164,149,224,180,2,192,38,
+233,190,10,2,56,52,56,227,235,2,8,68,97,116,97,46,70,117,110,99,
+76,84,1,46,36,232,219,0,0,82,192,8,160,141,226,141,8,64,25,67,
+206,0,52,137,199,64,104,89,180,163,224,248,119,1,224,38,31,225,157,1,
+227,94,1,225,157,5,244,67,2,227,41,21,68,75,0,53,100,75,100,133,
+69,14,0,50,101,172,65,117,64,28,0,52,228,104,0,132,106,230,130,6,
+150,150,226,214,0,228,94,7,227,81,4,243,199,19,224,207,4,162,230,192,
+39,96,95,169,85,225,243,4,162,202,250,135,7,186,207,224,40,25,96,31,
+64,27,193,110,224,197,0,96,13,1,83,32,154,9,169,246,0,85,96,44,
+233,21,1,65,97,170,38,1,85,32,160,35,224,0,1,196,44,224,2,0,
+225,170,1,245,167,13,196,32,140,110,0,52,70,127,134,134,2,95,49,49,
+204,253,227,248,0,224,63,6,108,61,88,117,71,119,72,126,2,95,49,53,
+153,128,251,188,7,224,148,2,105,159,193,101,160,86,2,49,52,55,65,165,
+128,13,94,94,0,80,252,235,0,183,136,0,53,242,32,6,231,113,2,98,
+91,226,30,5,96,99,225,109,1,226,164,5,1,55,56,161,50,225,230,1,
+225,249,4,228,159,0,161,32,192,2,98,134,226,30,5,64,1,160,22,229,
+31,8,130,56,224,39,1,224,20,2,226,99,7,65,252,128,0,224,114,6,
+224,138,0,199,74,197,69,231,82,4,251,172,1,128,36,225,165,4,97,65,
+224,73,1,224,87,0,97,172,139,35,1,52,53,202,58,229,124,4,226,60,
+3,226,188,4,237,155,7,109,148,247,236,2,3,66,32,95,57,92,176,2,
+95,49,54,145,139,254,39,2,227,167,8,227,31,13,224,98,3,224,94,7,
+64,176,233,37,2,96,206,226,226,1,192,2,161,105,225,104,2,254,111,6,
+225,170,0,233,177,5,205,73,225,201,7,160,52,230,65,5,192,22,230,73,
+4,129,112,3,95,49,54,48,67,170,128,71,226,211,7,170,13,224,53,3,
+128,0,225,172,4,128,113,225,169,0,96,0,163,75,1,95,53,110,52,174,
+90,0,67,169,241,128,0,2,95,54,49,143,91,236,72,5,64,1,196,239,
+192,75,225,46,5,225,26,5,225,70,3,225,72,4,225,7,4,252,115,2,
+225,137,2,228,230,4,96,50,226,164,1,239,108,14,224,97,0,131,140,160,
+231,255,120,9,185,15,225,69,0,160,28,227,226,4,0,52,230,178,2,237,
+25,1,255,110,6,70,102,0,51,102,102,2,75,32,89,96,121,67,202,128,
+131,104,56,226,92,11,226,11,12,161,3,199,207,136,209,0,52,123,126,96,
+240,232,103,5,71,92,227,16,0,192,240,131,71,233,130,6,224,225,29,160,
+224,64,206,0,50,167,53,161,60,251,185,14,224,31,3,240,101,1,66,101,
+0,49,220,144,102,136,87,187,101,220,76,33,161,48,0,49,135,180,2,49,
+51,57,149,107,0,57,135,174,0,48,224,22,6,0,56,96,22,82,175,224,
+22,3,82,25,64,22,0,56,96,22,232,225,1,15,80,114,105,109,105,116,
+105,118,101,115,46,87,111,114,100,34,128,37,0,55,224,60,5,168,25,70,
+147,64,22,93,153,0,95,146,175,3,95,50,49,52,65,175,64,14,0,57,
+96,103,97,144,224,22,0,1,54,57,114,218,224,21,6,245,254,0,96,22,
+64,89,168,144,192,89,0,55,96,36,0,55,101,34,1,55,55,106,214,134,
+165,243,154,2,6,57,50,54,32,95,53,51,98,96,64,31,65,40,224,31,
+19,65,128,224,31,16,67,182,8,54,57,54,32,80,32,95,53,57,69,63,
+0,53,165,62,160,56,109,217,224,227,4,115,23,147,183,135,126,0,49,80,
+228,224,22,11,139,53,224,61,4,96,111,128,34,2,38,49,46,66,1,1,
+38,48,96,6,224,39,6,128,28,224,27,14,96,21,192,27,65,68,137,184,
+64,114,5,32,95,51,50,50,32,100,131,128,9,64,35,64,34,131,116,224,
+34,2,98,125,224,34,4,130,200,67,70,64,108,67,134,96,209,2,64,95,
+55,102,178,224,88,0,96,44,130,147,2,102,47,32,64,12,130,137,4,85,
+32,75,32,75,65,140,0,58,128,64,64,111,2,52,49,32,225,252,0,0,
+56,67,23,129,29,226,17,3,0,52,224,21,10,0,52,224,42,11,225,58,
+1,226,103,4,68,94,224,21,7,1,50,51,224,43,11,225,159,3,96,164,
+131,19,96,164,1,49,55,70,223,64,6,130,130,73,73,64,6,3,57,32,
+64,83,130,59,105,158,0,55,75,177,193,123,114,192,224,149,3,68,157,108,
+88,0,54,130,205,224,43,2,225,248,9,192,25,160,14,64,28,0,54,99,
+109,64,35,97,78,199,231,96,140,1,80,32,128,40,128,162,162,3,160,73,
+0,64,69,74,0,80,160,20,196,106,192,211,96,8,0,54,66,218,112,145,
+130,169,64,82,128,22,64,21,1,95,50,244,27,2,96,130,0,54,96,130,
+3,105,116,111,102,65,224,64,61,97,40,99,61,0,57,66,18,103,191,128,
+225,64,7,128,152,0,54,155,246,1,54,50,128,6,86,115,160,103,96,39,
+0,53,98,194,96,11,64,84,130,181,2,102,62,61,96,98,0,51,160,13,
+96,12,130,138,1,102,60,128,26,162,107,0,60,96,12,130,107,3,102,110,
+101,103,64,14,65,159,64,14,0,42,96,12,164,227,0,45,96,12,129,69,
+1,102,43,96,12,128,207,0,85,66,159,0,65,128,126,82,10,101,183,1,
+80,32,112,0,0,85,97,123,87,150,192,21,69,151,160,21,128,156,229,106,
+1,133,83,77,62,96,44,240,239,1,134,199,102,176,241,64,1,241,10,20,
+203,177,166,223,166,239,240,200,7,160,30,244,151,8,230,109,3,235,255,1,
+184,54,224,87,19,98,175,224,87,51,130,103,192,220,192,25,203,201,205,197,
+225,25,6,224,248,3,135,192,240,214,1,224,32,8,135,108,224,32,18,231,
+56,0,224,220,7,192,24,135,201,249,38,2,245,175,0,160,27,101,220,0,
+52,71,252,2,95,49,53,73,214,224,44,4,233,102,0,224,73,11,192,28,
+224,159,18,136,110,224,32,18,131,116,224,192,10,192,24,224,118,9,226,15,
+1,224,27,9,218,169,224,27,10,104,108,128,0,245,15,0,66,193,163,90,
+232,21,11,2,73,110,116,136,20,64,59,224,36,4,0,68,81,28,185,245,
+4,95,84,121,112,101,192,12,128,47,64,135,224,84,15,5,70,108,111,97,
+116,87,160,39,232,146,7,96,87,3,66,121,116,101,159,231,96,85,3,114,
+110,97,108,224,19,2,160,57,131,219,137,163,65,89,139,98,139,178,1,95,
+56,185,185,152,134,64,46,0,54,227,190,6,0,52,128,69,132,1,224,167,
+12,2,67,104,97,192,205,241,21,1,67,37,225,172,1,3,95,49,55,49,
+104,90,234,174,2,238,244,6,70,133,128,141,128,29,234,147,3,139,82,64,
+96,132,92,202,30,140,197,98,193,1,95,53,69,120,64,34,132,104,154,184,
+112,133,139,59,138,196,66,80,226,127,18,131,254,240,205,3,103,249,179,251,
+224,70,1,96,217,235,12,5,96,26,128,57,3,95,49,50,50,68,11,160,
+55,179,68,163,235,137,87,112,45,0,95,74,173,192,38,241,41,2,235,48,
+1,75,133,224,204,5,241,109,7,224,64,1,0,85,132,70,224,192,6,136,
+186,219,180,224,162,0,243,208,6,2,49,55,51,241,182,2,224,139,3,128,
+134,235,62,5,0,53,65,134,0,58,128,51,197,211,96,121,65,230,1,54,
+32,167,97,78,75,228,218,5,97,250,160,128,96,156,245,42,1,130,46,64,
+1,112,174,226,39,2,109,169,98,0,173,174,130,29,97,119,0,67,128,24,
+224,0,1,231,206,0,236,86,3,239,155,2,64,160,132,214,132,105,128,151,
+239,96,3,77,23,228,139,0,96,109,128,41,238,20,4,160,130,239,243,2,
+210,108,1,49,56,193,7,0,57,225,7,34,133,189,225,7,3,209,206,225,
+8,47,238,159,0,109,42,2,95,49,54,159,111,224,200,5,225,26,7,207,
+161,64,10,201,247,86,86,97,227,0,95,99,89,64,26,137,121,64,33,96,
+24,118,150,70,182,230,179,11,226,141,6,137,2,134,89,162,141,0,90,129,
+149,162,111,224,45,4,161,143,64,45,1,85,32,69,163,0,79,240,161,0,
+96,129,0,54,96,129,74,112,0,66,119,69,224,131,14,230,49,8,96,21,
+84,155,1,55,50,97,12,0,57,166,159,224,40,8,97,217,0,85,226,222,
+1,225,58,3,0,54,73,161,228,176,2,129,185,0,90,131,128,226,49,7,
+206,171,128,48,238,176,0,228,232,8,2,95,49,48,162,98,128,0,224,28,
+3,64,241,133,133,229,203,1,64,85,136,117,137,101,79,14,250,255,2,131,
+81,241,83,3,128,58,226,252,3,130,140,192,141,192,1,231,93,1,231,216,
+0,131,50,208,107,229,67,5,96,8,99,59,200,78,224,122,0,225,6,2,
+252,163,7,2,49,50,54,102,99,0,50,99,112,230,91,1,4,102,99,110,
+83,34,192,118,160,236,160,2,128,171,224,167,1,244,74,10,230,26,1,0,
+55,179,4,160,42,227,176,5,97,59,193,134,98,137,194,65,0,85,64,201,
+243,47,5,254,220,5,192,79,224,35,3,224,163,0,83,73,224,33,0,1,
+50,51,77,69,169,73,246,2,2,64,25,152,206,0,79,131,213,160,36,221,
+96,130,229,64,67,65,51,115,58,2,95,49,54,101,163,160,105,64,102,162,
+45,163,18,195,25,96,0,193,31,210,171,160,156,169,95,132,245,226,205,3,
+0,53,76,56,224,58,5,128,125,96,199,225,194,2,193,193,225,173,4,0,
+68,225,173,0,228,120,2,245,158,3,162,131,97,160,104,123,0,56,201,127,
+225,219,7,160,121,117,11,192,133,225,228,5,96,151,96,138,224,173,1,225,
+139,19,229,199,0,99,154,249,153,1,128,144,225,20,1,224,113,1,120,240,
+224,202,0,203,162,183,179,129,212,161,186,161,175,193,129,98,78,128,5,229,
+128,2,224,49,17,231,55,1,226,14,26,225,247,23,227,83,11,225,33,1,
+98,8,131,173,227,253,1,128,34,224,21,2,225,130,2,247,245,0,225,111,
+4,160,27,102,236,1,53,49,132,27,225,144,9,193,78,161,2,100,169,245,
+255,2,68,168,137,200,64,44,191,168,228,90,8,192,128,192,189,194,187,64,
+163,64,224,0,54,137,83,192,18,128,153,231,166,6,98,108,74,90,160,71,
+229,108,6,97,151,225,37,3,219,78,64,11,227,174,2,160,76,130,13,226,
+176,0,224,41,0,224,22,1,0,64,161,82,192,21,224,83,3,224,22,4,
+192,75,253,130,10,224,63,7,185,251,225,122,2,96,147,109,142,129,130,226,
+25,1,99,158,71,167,228,13,1,224,52,4,68,77,248,77,3,128,134,81,
+236,108,250,130,109,192,7,64,0,193,94,67,144,106,51,225,49,1,96,30,
+192,247,69,250,80,215,130,131,229,209,8,23,66,97,100,32,114,101,113,117,
+105,114,101,100,32,116,121,112,101,32,97,114,103,117,109,101,109,54,128,0,
+66,20,208,35,225,240,0,193,128,161,199,109,208,225,244,24,229,234,8,64,
+58,97,92,128,27,226,2,2,128,210,166,226,64,129,139,111,192,129,193,59,
+64,209,229,123,2,224,123,16,2,95,49,54,75,42,224,103,9,236,192,0,
+64,135,71,193,162,221,72,132,201,13,192,104,149,32,224,118,3,129,165,65,
+151,129,150,0,58,128,23,136,9,0,83,130,65,135,133,129,225,229,216,4,
+0,50,232,166,1,96,32,205,152,96,44,129,212,141,155,224,103,0,128,18,
+239,208,2,224,83,5,98,120,64,231,160,86,64,167,0,54,77,249,248,190,
+5,120,159,98,251,64,77,199,136,137,8,0,56,224,146,0,192,32,0,50,
+202,111,64,254,5,10,65,32,90,32,90,96,169,64,17,202,104,0,89,230,
+74,0,165,145,100,31,0,67,120,175,249,67,0,227,88,2,160,44,228,211,
+2,225,172,4,226,185,1,89,224,249,123,6,192,49,195,126,192,84,227,179,
+0,225,53,1,224,114,0,162,23,101,10,110,33,225,179,3,160,221,0,54,
+225,254,4,71,211,139,190,224,153,2,242,78,5,0,54,101,54,224,188,5,
+3,95,49,51,55,85,96,0,52,155,92,225,247,10,65,147,0,52,88,221,
+6,95,51,51,53,32,95,56,69,110,224,41,17,249,98,0,1,95,52,112,
+6,236,23,7,250,63,1,96,135,231,107,6,100,90,66,224,229,226,3,96,
+236,212,53,224,185,3,0,50,84,53,230,114,1,226,171,4,1,55,50,130,
+19,229,97,4,161,89,162,234,224,132,0,139,186,0,52,164,168,128,18,100,
+248,199,83,239,114,2,4,67,32,95,55,57,174,231,79,152,236,130,2,96,
+56,2,50,51,54,183,173,160,72,97,179,129,41,1,54,56,195,143,64,25,
+0,54,69,39,224,244,0,1,95,51,118,231,0,51,130,51,128,163,229,94,
+4,129,46,1,53,57,68,19,229,164,1,64,21,71,226,0,49,90,42,129,
+129,125,38,229,119,0,101,187,226,4,8,0,75,226,1,16,225,147,5,1,
+95,52,100,66,224,0,4,226,162,0,65,167,224,168,10,64,73,118,150,130,
+110,168,195,224,85,2,225,49,3,0,95,69,222,176,57,160,89,163,154,142,
+236,201,83,229,64,0,164,156,225,112,0,75,67,227,95,10,175,106,231,18,
+3,200,196,224,44,11,231,89,2,224,61,0,129,249,231,85,13,192,53,231,
+81,0,224,70,14,227,230,4,205,5,226,216,0,224,67,5,237,69,0,233,
+56,4,64,10,230,181,0,241,237,0,96,32,242,50,4,224,0,0,157,203,
+227,208,1,67,60,141,201,3,85,32,75,52,160,2,87,139,128,26,201,59,
+226,15,9,0,53,153,91,64,134,230,231,6,98,191,142,19,128,174,226,9,
+1,161,171,230,21,0,173,211,68,149,0,51,74,76,161,233,128,86,212,61,
+128,196,225,43,3,166,138,163,106,0,66,67,29,0,51,106,220,68,22,232,
+10,1,16,103,101,116,83,117,112,101,114,67,108,97,115,115,101,115,58,32,
+104,1,1,95,49,68,133,1,56,49,193,173,193,98,175,81,237,127,9,64,
+7,128,125,64,121,173,34,68,1,81,116,65,101,1,53,55,230,161,0,160,
+217,91,173,115,152,240,72,2,144,127,132,57,224,0,5,97,147,230,87,0,
+65,118,136,157,3,95,56,57,52,90,111,172,17,230,55,0,97,103,0,90,
+64,30,230,71,4,64,56,200,84,240,71,12,0,55,125,17,162,59,98,85,
+194,70,234,119,4,169,189,97,106,160,33,227,193,4,229,39,0,2,95,52,
+49,92,37,0,50,89,112,193,34,1,95,49,84,72,3,66,32,95,52,103,
+167,164,32,224,15,7,97,72,105,199,214,22,224,203,3,225,193,1,30,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,86,135,4,32,98,105,110,100,150,130,
+160,0,224,189,1,96,144,231,136,2,65,172,232,78,2,226,190,11,225,73,
+0,244,135,1,86,45,112,242,83,104,97,93,162,128,226,134,8,227,36,2,
+153,155,224,94,8,179,59,229,36,0,224,157,3,161,62,104,159,244,9,9,
+149,72,0,53,70,211,67,18,156,155,0,53,91,46,96,7,129,86,224,111,
+13,64,186,136,235,0,83,93,112,225,29,1,242,166,5,224,56,4,252,230,
+1,97,151,97,226,231,192,5,178,204,83,240,165,216,225,70,4,64,116,137,
+78,93,168,195,93,163,98,228,78,9,0,51,163,249,228,23,0,230,221,10,
+0,51,103,18,130,177,2,95,56,49,64,31,0,51,84,108,1,95,51,153,
+57,132,70,4,53,32,95,57,49,96,4,228,252,0,64,84,225,75,2,160,
+217,224,96,2,224,93,0,224,88,14,224,220,7,160,223,0,54,170,64,96,
+215,170,67,74,127,171,215,228,64,3,65,136,64,29,133,107,244,65,6,227,
+104,1,230,150,8,228,165,3,64,1,230,150,3,226,134,0,163,92,1,49,
+50,131,224,160,225,205,133,117,145,235,5,0,232,27,0,0,67,103,161,132,
+155,237,248,1,161,27,228,54,3,161,223,229,193,0,246,198,16,224,149,0,
+224,62,4,233,224,2,96,141,226,65,0,65,19,252,196,1,224,62,0,224,
+176,6,227,44,14,75,20,140,255,155,84,183,19,249,217,1,96,0,149,238,
+224,18,0,65,128,198,209,0,89,239,211,0,230,157,1,232,70,1,69,111,
+101,20,224,242,0,240,196,0,193,137,161,187,185,211,235,203,1,247,204,2,
+253,96,12,177,46,177,26,224,33,12,130,101,96,23,161,115,192,25,150,160,
+0,75,243,233,1,129,179,232,67,7,192,64,84,95,230,113,0,236,205,0,
+224,81,4,166,181,0,85,166,166,224,9,1,64,0,167,178,224,170,0,224,
+253,15,224,139,1,241,94,3,225,79,2,224,112,2,130,209,64,23,66,117,
+70,218,208,180,225,123,0,233,151,4,160,91,192,48,228,67,1,128,216,128,
+50,97,204,0,80,96,185,130,222,1,95,53,75,77,128,200,253,90,0,160,
+72,103,78,224,189,2,68,39,225,84,5,162,85,128,48,225,208,23,140,178,
+226,34,1,224,32,8,130,224,243,251,1,224,32,8,218,156,227,253,8,250,
+181,9,207,83,228,38,12,225,240,6,163,215,165,82,225,250,8,169,191,224,
+50,3,224,87,8,184,191,0,75,67,194,226,113,0,226,23,3,128,67,226,
+17,9,128,42,226,60,0,224,39,15,231,134,2,226,197,9,224,27,1,64,
+199,235,115,4,169,235,160,30,226,10,0,226,83,9,160,225,226,150,1,160,
+55,139,7,128,28,0,82,224,220,4,234,78,16,7,112,97,116,86,97,114,
+115,32,170,69,1,50,54,131,243,111,95,64,209,112,173,72,253,165,136,2,
+95,49,48,189,110,106,193,96,113,68,129,242,122,1,235,87,13,228,246,0,
+227,73,0,177,112,231,18,6,2,95,51,54,229,103,3,1,53,56,128,194,
+101,10,230,236,19,64,42,66,146,231,176,10,138,62,93,118,64,46,2,55,
+48,57,136,247,137,11,229,51,2,66,230,229,25,1,64,63,229,65,5,129,
+247,130,112,186,14,160,43,96,2,202,110,226,16,1,225,234,1,226,36,10,
+229,92,0,160,68,224,121,5,224,54,16,246,151,1,224,54,3,228,201,0,
+224,54,16,231,227,0,129,58,228,206,1,160,57,224,51,11,168,106,128,47,
+226,199,7,224,28,2,228,193,2,0,90,64,34,3,95,49,54,57,243,53,
+0,227,98,4,224,75,14,160,156,192,75,228,202,0,225,106,1,161,137,66,
+140,1,50,57,227,34,0,112,29,4,49,54,32,95,53,230,28,0,189,248,
+96,229,65,147,0,80,248,22,1,84,170,2,56,32,79,106,112,0,50,165,
+70,66,15,68,102,204,205,225,23,0,222,24,96,113,85,56,253,61,4,236,
+222,0,1,55,48,239,98,1,161,89,228,146,8,230,141,2,64,34,235,32,
+8,123,60,192,206,226,189,4,225,43,1,160,89,138,250,3,95,49,51,48,
+232,14,1,225,54,1,164,151,245,92,14,99,210,119,99,163,121,201,201,232,
+219,7,244,242,14,228,170,1,232,179,6,0,52,76,229,224,47,3,128,49,
+227,235,3,224,149,5,237,119,4,116,10,0,48,232,207,2,161,126,236,95,
+9,224,27,0,236,145,8,226,30,2,224,241,4,96,21,77,29,233,65,1,
+2,95,49,52,68,0,224,100,9,0,67,106,57,160,100,161,170,224,236,8,
+96,78,100,65,3,95,49,53,48,230,107,1,128,216,225,191,33,162,195,192,
+0,227,254,9,192,80,228,50,5,195,72,195,244,235,98,2,128,138,160,178,
+226,123,2,171,106,128,26,239,30,2,239,75,12,0,54,255,147,2,224,132,
+2,160,56,224,16,1,136,68,162,241,139,145,224,76,7,224,46,3,128,61,
+192,44,224,2,3,224,126,5,1,55,48,192,57,228,165,6,130,176,247,161,
+2,239,185,7,101,124,192,49,242,117,5,137,39,226,93,5,168,111,98,64,
+0,57,235,149,3,224,182,4,225,204,33,242,144,6,224,41,1,233,240,7,
+199,182,161,231,224,139,1,254,79,8,227,131,2,224,37,1,227,179,1,192,
+15,224,239,5,64,100,224,239,15,129,81,135,72,1,49,53,90,42,65,72,
+100,218,71,246,110,252,101,23,224,199,3,242,55,7,163,81,227,254,4,2,
+53,51,52,80,75,224,61,1,85,155,224,131,5,224,78,1,225,24,9,163,
+8,224,212,3,227,118,7,228,160,7,1,55,48,64,113,64,92,131,133,208,
+50,176,51,224,119,2,225,177,3,239,126,7,96,28,64,66,1,55,48,87,
+226,160,51,152,153,252,74,2,161,174,194,96,161,188,231,111,23,249,253,0,
+227,218,0,244,225,2,227,229,21,206,57,228,128,0,128,167,224,60,3,235,
+99,6,192,152,225,89,5,224,27,2,227,249,4,224,10,0,225,139,8,228,
+43,2,225,138,1,229,109,10,225,86,24,160,238,229,218,7,114,9,71,86,
+73,139,170,103,226,80,8,101,98,252,126,3,193,143,117,250,0,55,115,135,
+96,151,227,157,4,227,154,7,129,60,79,139,185,146,128,6,96,130,0,48,
+68,102,64,6,225,164,0,192,0,196,168,228,120,6,237,243,13,195,209,225,
+44,1,249,143,8,98,155,161,59,180,167,225,132,3,161,219,229,198,2,97,
+231,192,22,160,25,160,26,231,55,7,225,103,2,128,168,231,72,8,129,37,
+0,53,121,19,131,246,0,51,96,249,0,56,246,142,0,225,67,3,66,63,
+100,155,0,80,101,201,97,47,109,35,128,41,192,15,152,161,193,72,160,19,
+151,90,64,0,161,162,160,0,226,99,10,129,115,97,0,128,91,64,0,230,
+255,3,226,240,2,224,251,2,161,94,231,11,2,224,100,4,230,89,0,192,
+59,224,47,8,193,18,224,144,8,192,24,103,242,226,140,7,2,95,49,54,
+66,137,230,31,13,130,45,192,13,199,19,64,1,227,174,0,143,191,229,166,
+6,148,229,69,129,160,119,146,31,88,232,0,55,129,155,117,20,75,233,237,
+167,1,5,110,101,103,97,116,101,246,15,1,235,101,19,224,158,2,225,83,
+1,192,146,151,199,141,196,161,121,195,201,226,229,1,243,123,6,224,108,15,
+193,120,231,198,12,161,151,232,97,18,192,165,227,188,4,231,221,11,64,113,
+0,56,224,56,4,226,185,3,0,67,124,13,64,146,236,107,5,206,37,224,
+155,9,84,220,224,65,28,96,106,239,56,13,5,116,99,80,97,116,58,119,
+191,7,104,97,110,100,108,101,100,32,97,157,68,4,111,141,96,98,116,23,
+0,54,96,123,248,216,4,160,78,2,79,32,35,66,7,172,138,160,45,245,
+225,4,103,178,100,89,170,52,133,31,69,62,99,130,67,221,226,46,10,1,
+61,61,162,42,236,162,1,224,128,5,0,58,138,198,143,24,0,50,199,52,
+239,30,1,65,248,149,211,65,152,131,24,87,111,100,82,128,40,64,167,68,
+83,102,104,133,179,96,57,151,32,3,85,32,75,51,128,15,0,54,246,29,
+0,96,2,105,53,195,37,137,128,228,243,4,234,69,6,192,41,130,195,64,
+47,70,64,0,55,97,165,82,221,225,197,0,144,252,64,112,150,172,234,225,
+0,161,33,2,52,51,52,128,8,67,104,1,49,52,113,48,64,7,194,102,
+96,41,0,95,184,170,102,162,66,251,64,79,150,222,66,34,0,53,64,59,
+195,4,226,63,1,64,36,0,51,224,229,2,196,129,109,114,224,237,10,224,
+16,3,0,56,65,62,64,64,209,65,225,212,17,2,84,114,117,132,1,64,
+46,219,20,224,46,17,3,70,97,108,115,224,47,1,208,238,156,197,229,104,
+1,232,139,7,253,205,2,232,235,1,232,176,34,224,46,2,224,43,10,240,
+83,36,68,116,160,92,224,47,12,224,27,0,133,137,224,37,0,225,132,1,
+224,130,11,230,253,0,224,81,10,224,27,2,203,51,79,49,104,122,235,228,
+1,193,5,230,0,3,129,71,98,94,248,175,12,230,84,5,0,53,99,51,
+224,231,10,101,108,168,102,66,156,75,150,228,56,11,225,229,1,2,66,97,
+100,252,53,0,97,236,228,71,7,0,58,101,186,65,252,206,54,232,102,3,
+193,40,227,128,3,64,242,242,220,6,130,199,161,52,161,82,179,3,193,13,
+234,128,8,131,72,224,34,3,225,169,0,192,14,128,139,132,20,68,46,232,
+18,0,224,49,1,225,221,5,192,126,198,47,96,133,233,24,6,225,122,2,
+192,2,164,215,224,69,3,97,149,165,83,89,156,136,152,192,23,109,32,164,
+115,96,16,1,54,57,204,115,97,174,64,53,233,11,0,160,0,64,87,129,
+42,233,148,1,64,19,244,225,6,65,31,0,66,245,188,1,225,46,1,96,
+129,96,238,0,90,123,126,200,145,224,36,9,101,91,228,250,8,192,0,65,
+251,1,52,32,102,211,165,212,130,11,255,85,2,225,77,5,231,193,8,0,
+54,238,209,0,225,133,8,224,16,1,99,28,224,151,4,1,95,53,77,73,
+3,49,54,57,55,228,134,3,94,202,232,183,1,224,81,17,233,64,3,128,
+95,65,74,227,56,5,0,52,233,136,0,224,39,1,227,254,11,240,14,3,
+225,242,2,230,89,5,242,208,2,229,176,1,67,116,96,252,64,14,236,99,
+4,101,177,200,39,224,111,0,139,251,225,70,13,1,53,54,252,66,3,236,
+178,7,192,174,164,167,128,184,71,28,130,131,252,205,6,64,97,167,247,165,
+241,224,0,2,225,10,8,192,241,160,149,225,17,2,226,140,4,98,136,0,
+89,105,250,66,66,64,31,251,155,13,176,33,128,90,194,148,225,254,2,96,
+231,226,119,26,96,160,182,37,99,86,3,55,52,32,95,128,28,235,209,2,
+160,0,193,19,228,151,3,225,193,5,234,58,4,242,36,5,129,71,0,89,
+192,13,160,212,132,181,225,137,6,179,247,225,51,2,96,16,228,104,10,224,
+5,10,226,160,8,245,11,2,224,85,1,128,1,226,167,1,228,159,5,224,
+100,0,239,8,5,240,137,6,224,73,11,224,254,16,226,247,1,69,184,160,
+6,224,49,6,225,200,0,224,91,1,141,118,224,249,5,130,147,250,154,0,
+224,10,3,98,138,228,82,1,96,0,192,70,129,85,192,172,224,182,2,193,
+203,224,161,7,227,162,11,248,9,2,193,190,224,193,7,236,45,13,243,213,
+3,227,118,5,227,115,0,138,74,225,172,2,128,131,224,45,7,224,205,3,
+224,0,6,231,62,1,253,77,0,80,112,2,54,32,95,131,44,161,71,133,
+198,64,150,1,54,53,160,26,229,187,8,132,120,224,180,0,236,102,2,16,
+111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,165,75,224,
+49,20,2,102,101,119,224,48,8,232,71,5,112,5,72,26,139,231,2,95,
+53,48,74,252,96,145,140,240,64,27,139,201,100,28,227,244,10,134,139,225,
+47,4,222,112,130,19,64,66,0,54,136,121,109,11,2,57,32,64,76,240,
+0,55,140,240,64,29,139,169,0,75,161,70,232,156,1,162,155,224,11,8,
+194,59,138,95,224,13,1,165,69,234,214,4,234,217,0,224,39,5,224,75,
+0,224,25,3,230,37,4,224,34,8,170,79,224,69,2,160,88,226,2,0,
+224,23,0,224,105,3,226,50,1,224,31,3,252,41,0,227,116,0,232,53,
+3,224,24,6,64,1,226,122,0,224,154,1,192,92,228,70,2,160,23,162,
+177,192,8,72,216,65,139,96,69,81,176,234,102,0,224,233,3,134,108,227,
+89,6,129,121,192,86,64,72,108,101,80,60,0,54,93,148,251,15,1,231,
+17,0,224,96,0,82,47,76,232,3,95,51,51,53,109,55,144,236,128,98,
+0,79,201,81,0,56,109,110,239,116,1,160,62,96,58,192,83,137,97,240,
+112,8,229,58,3,96,74,66,138,128,240,0,50,102,178,129,34,107,142,0,
+50,158,22,241,31,4,224,71,1,2,95,49,52,90,29,1,49,54,204,124,
+224,26,17,129,22,72,223,99,221,1,95,51,67,206,186,78,224,58,4,224,
+148,41,64,57,224,110,5,224,13,4,224,40,1,225,182,2,97,179,160,114,
+136,54,96,107,1,56,48,167,81,147,231,67,173,161,177,103,97,213,228,161,
+136,130,23,0,53,82,122,72,89,3,51,50,50,32,160,33,170,219,106,106,
+128,11,171,7,0,49,115,243,0,51,147,244,232,155,2,116,104,97,241,111,
+71,104,163,3,95,49,52,54,161,30,2,85,32,75,202,187,0,50,180,86,
+64,229,0,54,133,126,228,32,3,79,219,160,113,224,21,3,0,56,192,21,
+64,52,68,109,68,64,143,154,224,39,3,65,117,196,94,0,51,164,191,235,
+112,26,234,12,0,129,160,234,4,2,230,190,6,241,17,0,167,33,224,78,
+6,224,43,4,64,8,74,214,227,167,4,224,96,4,224,46,8,130,100,224,
+24,1,96,11,192,8,230,133,9,233,115,24,65,6,144,89,131,187,0,50,
+80,103,234,197,1,0,85,131,10,67,162,113,87,142,230,161,230,128,61,144,
+104,234,23,0,134,231,225,75,7,130,51,192,201,194,232,98,234,244,214,0,
+150,127,159,171,194,134,129,206,65,186,64,106,208,163,248,38,0,64,6,64,
+5,78,208,0,51,70,142,64,44,100,98,0,58,128,53,1,10,65,239,10,
+2,13,80,114,105,109,105,116,105,118,101,115,46,61,62,34,96,82,64,44,
+114,140,64,174,245,129,11,0,85,224,164,26,64,71,135,10,225,147,14,64,
+32,0,54,224,32,2,0,80,195,68,224,36,7,134,239,160,34,132,86,0,
+80,128,167,130,200,2,83,32,83,162,170,166,100,64,42,240,189,5,135,90,
+224,33,18,82,4,230,115,1,224,33,12,136,219,129,249,0,83,98,245,224,
+30,4,98,25,163,23,236,179,6,230,35,0,226,246,1,167,248,65,181,112,
+119,0,53,124,74,0,54,161,77,249,201,2,64,20,235,184,1,224,115,6,
+161,139,162,140,224,72,0,97,143,64,27,224,60,1,224,37,13,239,200,1,
+192,98,128,213,162,173,225,64,2,160,221,236,232,7,64,70,224,90,15,163,
+19,192,90,225,3,8,128,83,0,85,228,68,0,224,63,3,69,53,98,203,
+1,54,56,67,159,250,135,3,250,228,4,1,53,51,237,0,1,131,63,225,
+150,6,0,49,164,145,225,150,11,227,198,2,96,22,65,49,225,144,6,0,
+52,73,212,224,197,1,2,95,51,54,224,42,1,128,0,226,83,18,217,181,
+128,31,224,28,6,152,34,160,178,224,25,4,101,250,228,43,8,178,251,110,
+9,240,227,11,99,58,226,80,7,102,82,251,184,4,226,91,17,142,177,224,
+16,0,130,229,225,75,4,142,213,225,33,6,122,206,224,86,18,167,123,224,
+170,3,250,205,2,81,179,227,44,7,224,52,0,226,133,9,225,51,16,135,
+14,227,101,8,129,19,225,229,25,87,132,225,229,2,224,204,3,226,221,11,
+68,152,225,59,5,224,100,26,141,243,224,100,2,227,116,3,228,53,12,96,
+66,249,71,13,9,100,115,69,70,105,101,108,100,115,32,244,189,11,69,26,
+135,197,165,52,131,106,165,52,215,50,69,76,64,106,0,85,128,22,215,26,
+96,198,238,79,0,3,95,49,51,55,66,69,0,51,107,17,225,100,2,239,
+203,2,238,75,3,91,251,98,170,64,36,238,150,2,161,30,224,42,2,64,
+83,137,207,224,245,4,64,138,230,209,0,1,51,54,224,65,1,3,66,32,
+95,57,153,68,0,53,111,223,0,58,128,105,160,179,212,124,128,11,145,234,
+96,130,151,223,225,62,6,3,101,110,117,109,173,224,64,70,134,238,193,43,
+99,73,129,43,73,84,168,4,199,193,229,27,10,97,25,224,26,12,134,85,
+226,177,13,226,178,14,194,179,140,69,97,79,133,72,225,37,0,2,95,49,
+49,196,244,142,57,128,33,229,159,18,224,36,4,229,135,9,96,191,0,85,
+99,137,224,37,0,228,184,17,98,74,224,210,12,228,210,0,224,94,4,96,
+21,100,90,160,91,228,164,8,72,38,228,65,8,224,136,1,238,224,3,228,
+16,11,228,98,11,192,24,228,98,0,1,54,55,108,118,236,206,0,227,114,
+0,224,24,7,225,105,5,98,83,66,8,0,54,162,34,0,89,222,240,192,
+143,185,249,239,36,5,131,69,224,170,10,230,158,0,232,166,19,224,207,11,
+192,25,96,181,224,73,1,224,245,16,96,154,242,24,4,225,83,0,205,105,
+106,234,73,199,249,164,4,166,91,161,220,254,210,5,224,82,10,254,153,2,
+160,119,0,90,164,21,246,5,5,159,176,246,252,4,129,245,255,209,2,128,
+119,149,207,160,71,96,4,239,11,0,0,90,64,127,77,123,98,50,0,75,
+66,46,239,35,0,129,231,130,75,0,64,89,22,224,27,3,64,0,227,65,
+13,225,237,9,97,238,189,12,65,219,208,172,247,29,0,230,93,4,224,235,
+9,97,92,246,114,6,96,222,226,199,1,226,41,1,160,9,130,4,226,55,
+2,253,205,7,101,62,129,181,0,50,255,209,3,100,226,148,88,128,71,78,
+223,90,22,224,56,1,129,203,130,166,96,91,226,51,13,236,131,1,165,221,
+162,225,141,121,1,57,51,224,118,2,229,178,7,243,86,18,91,103,13,115,
+101,99,116,105,111,110,32,102,105,120,105,116,121,243,136,2,0,53,77,252,
+224,43,1,1,36,120,128,27,147,114,0,56,217,77,65,142,139,231,215,113,
+195,107,225,145,14,128,30,225,149,6,195,108,70,61,0,57,64,210,209,135,
+195,14,135,158,134,60,225,187,4,96,29,96,170,224,152,3,224,182,9,225,
+228,57,128,203,225,227,6,162,96,99,163,214,29,227,160,0,248,160,0,225,
+214,14,160,84,239,39,2,100,60,224,21,6,224,60,30,64,58,249,253,8,
+85,161,226,28,4,128,174,227,251,4,225,115,9,224,0,1,226,57,87,233,
+6,1,232,213,13,160,234,224,215,3,225,152,6,194,31,236,119,2,227,46,
+0,246,193,0,148,135,224,100,5,197,31,225,73,0,161,75,224,13,0,251,
+187,7,227,86,7,128,21,132,242,160,14,100,7,180,150,228,91,0,100,4,
+1,49,54,123,55,64,7,228,246,4,226,134,1,193,181,66,96,64,42,96,
+142,129,125,227,211,8,65,58,177,0,96,51,226,204,10,102,232,224,13,5,
+160,174,128,2,160,14,227,9,13,0,89,225,21,3,103,85,225,10,3,129,
+78,241,58,0,64,5,71,47,128,58,131,97,129,18,245,105,0,128,36,96,
+117,166,100,73,59,0,52,80,236,191,30,96,5,255,41,0,224,184,2,224,
+2,3,192,29,192,130,199,159,224,2,0,214,109,225,154,0,238,113,3,99,
+222,129,142,2,85,32,95,74,59,128,141,97,5,169,155,128,58,65,249,224,
+7,7,101,161,227,35,6,224,9,0,224,165,2,250,122,2,160,252,96,86,
+224,210,6,96,17,194,47,64,92,65,225,182,29,228,88,2,192,224,228,71,
+2,224,229,0,160,99,183,182,224,113,2,97,24,1,85,32,71,100,224,72,
+2,162,15,96,35,232,86,7,225,235,3,193,91,248,13,0,224,26,3,224,
+143,4,219,125,225,173,15,129,10,224,66,9,226,132,0,224,127,14,224,106,
+0,96,170,224,35,21,128,1,169,114,192,0,233,236,1,96,2,128,178,226,
+154,0,160,14,224,50,4,224,88,15,0,67,98,56,224,0,3,224,234,14,
+224,2,3,224,246,0,64,0,228,130,9,253,116,16,193,217,128,122,225,231,
+0,130,35,128,181,2,95,49,51,97,212,227,129,0,147,229,0,53,101,38,
+123,116,224,227,0,2,95,49,52,96,21,224,42,2,1,56,52,100,135,96,
+65,64,44,190,174,64,65,192,22,64,8,181,242,128,0,163,32,168,116,253,
+137,0,226,232,5,224,173,2,225,74,2,161,98,192,44,224,62,4,128,166,
+225,32,6,224,181,12,252,121,1,96,223,225,13,0,96,186,225,13,23,224,
+225,14,213,167,163,126,227,13,7,160,190,227,166,13,96,16,154,9,170,237,
+252,130,3,8,95,52,48,49,32,95,52,48,51,105,9,231,2,1,28,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,167,57,226,92,10,161,83,96,127,64,228,129,
+57,96,21,224,244,1,88,232,225,33,2,224,213,10,224,176,42,9,98,97,
+100,32,112,114,101,102,105,120,224,168,11,228,251,2,3,95,51,50,48,239,
+186,2,14,92,34,115,114,99,47,77,105,99,114,111,72,115,47,70,104,25,
+9,46,104,115,92,34,44,54,53,58,55,192,64,251,28,0,250,43,3,97,
+214,171,45,170,236,3,95,55,52,50,164,205,235,35,1,129,28,247,213,1,
+0,54,78,33,0,54,177,91,96,0,0,80,89,139,79,87,96,167,165,234,
+1,64,89,100,83,64,230,229,40,3,233,85,1,96,64,139,163,64,79,249,
+176,0,202,56,128,113,96,122,192,115,141,117,64,9,0,57,225,87,6,103,
+198,194,103,154,177,135,8,233,168,0,171,247,100,96,64,139,198,147,64,34,
+0,80,192,180,130,138,193,200,96,183,242,170,1,128,7,193,62,224,63,3,
+225,28,0,224,34,1,225,7,1,161,29,186,234,160,21,72,81,146,98,77,
+206,99,34,1,35,54,145,100,248,192,1,104,211,137,224,0,49,233,224,3,
+5,110,101,103,97,116,101,97,220,0,58,129,11,4,10,65,32,65,32,64,
+11,145,187,0,90,65,66,64,14,145,176,0,75,96,26,0,54,233,251,2,
+234,247,0,67,98,184,88,0,54,223,72,0,65,128,59,140,101,2,95,52,
+56,99,6,139,15,143,156,64,178,78,50,174,34,206,41,128,24,64,11,174,
+81,224,24,11,160,49,142,113,1,95,51,121,155,132,42,64,115,202,159,0,
+89,165,162,98,62,227,167,2,225,163,1,240,77,11,227,183,0,248,143,20,
+79,190,188,79,226,152,13,128,41,244,106,14,10,103,101,116,65,112,112,67,
+111,110,58,32,244,107,11,160,99,167,33,0,85,128,191,96,218,212,103,5,
+66,32,95,55,50,56,225,246,1,253,57,7,222,9,3,67,32,95,55,123,
+64,64,60,130,42,1,75,50,97,200,194,32,235,194,13,134,78,129,47,107,
+114,154,241,0,53,67,59,0,58,139,129,115,195,65,148,224,214,1,3,118,
+97,108,117,98,81,224,18,1,2,116,121,112,130,99,224,18,1,3,107,105,
+110,100,224,18,6,3,115,111,114,116,64,18,64,90,244,56,1,245,51,25,
+102,83,129,105,224,12,1,64,167,64,242,65,146,171,138,236,196,5,164,154,
+131,115,238,207,7,66,199,100,29,0,53,89,43,236,252,5,128,160,180,191,
+228,12,0,68,224,170,204,233,241,4,162,52,129,74,231,49,0,226,84,19,
+128,145,159,162,64,129,160,234,226,96,1,226,94,0,247,238,4,90,153,196,
+49,224,43,10,132,208,224,96,2,140,229,64,96,203,186,98,166,225,142,2,
+9,101,116,83,76,111,99,69,120,112,114,196,31,65,13,81,189,96,245,210,
+78,129,97,1,50,50,150,114,128,78,128,98,0,54,97,81,224,98,0,192,
+20,64,182,192,20,64,84,252,133,1,235,189,7,196,82,96,38,208,170,179,
+6,64,35,164,110,64,102,96,26,129,8,0,56,83,89,96,23,227,40,1,
+241,130,0,96,83,200,134,237,76,1,64,8,0,95,86,246,189,119,193,204,
+228,41,1,224,12,1,224,25,0,6,95,53,49,53,32,95,55,179,13,96,
+19,177,225,224,25,4,163,124,160,6,67,180,64,8,3,95,49,54,52,131,
+160,96,48,103,229,128,10,228,37,5,9,117,110,100,101,102,105,110,101,100,
+32,135,130,97,110,103,106,224,42,8,196,71,0,56,196,148,130,135,140,105,
+96,228,72,67,237,187,3,128,33,224,126,0,192,13,224,86,5,233,1,1,
+208,40,179,51,135,240,224,49,10,160,136,168,27,128,39,160,149,160,14,2,
+79,32,35,65,28,103,166,130,21,80,169,96,33,71,236,0,80,104,1,232,
+56,1,194,18,232,61,0,95,127,207,205,224,0,2,160,220,65,251,217,117,
+228,154,3,1,91,93,96,151,224,229,2,2,79,32,35,65,140,169,18,225,
+194,1,224,219,0,166,62,0,80,73,105,233,110,2,64,55,0,51,244,13,
+2,224,82,2,224,40,8,66,142,238,111,0,131,47,224,97,1,128,0,64,
+176,133,139,0,83,66,91,0,95,69,227,67,208,97,54,68,254,0,53,120,
+112,128,13,106,44,0,83,65,203,192,175,71,216,107,41,64,49,0,35,144,
+190,90,19,73,163,1,95,56,126,138,96,99,66,112,131,191,203,184,241,84,
+5,1,52,57,67,57,128,203,113,81,238,51,2,236,3,3,241,198,7,130,
+205,131,55,231,97,18,1,95,52,100,36,225,47,1,229,219,5,0,54,248,
+43,0,128,102,235,57,1,224,111,3,96,53,1,49,52,191,95,235,252,0,
+231,125,1,161,97,224,17,6,251,76,5,96,20,64,254,1,51,54,77,89,
+156,86,192,158,229,59,0,134,58,68,15,234,32,5,226,239,8,21,110,111,
+116,32,112,111,108,121,109,111,114,112,104,105,99,32,101,110,111,117,103,104,
+163,5,67,240,83,165,1,95,51,66,28,227,155,1,242,24,6,107,51,106,
+166,64,149,0,56,228,136,1,224,42,9,97,202,135,33,167,17,1,54,32,
+128,93,1,49,54,138,96,105,10,66,7,231,43,0,64,50,134,179,90,143,
+0,90,160,47,0,56,141,134,96,29,0,54,160,29,137,179,64,71,103,220,
+2,95,49,52,88,162,130,218,1,49,54,72,201,224,248,1,3,66,111,111,
+108,198,28,66,230,1,10,65,225,21,2,4,68,97,116,97,46,64,33,6,
+95,84,121,112,101,46,34,128,87,197,171,67,83,0,35,96,154,156,17,76,
+46,130,155,251,25,3,71,186,65,226,65,137,0,53,64,34,2,95,49,55,
+152,137,226,165,21,221,65,226,222,4,0,53,104,185,195,131,66,92,194,95,
+226,27,3,130,189,226,25,4,64,134,97,77,171,135,64,66,163,68,64,5,
+224,101,2,96,167,73,99,226,49,5,227,23,4,143,46,227,66,3,232,25,
+1,226,177,1,164,255,64,182,100,211,227,104,2,229,170,0,246,14,14,173,
+8,103,225,228,120,0,129,163,133,21,224,136,0,227,200,6,128,83,0,54,
+97,113,227,210,0,0,85,102,237,97,147,0,32,163,34,224,123,8,143,171,
+64,55,64,62,128,174,244,247,8,64,183,2,10,65,32,229,223,11,160,141,
+131,206,131,119,0,48,164,20,0,51,129,179,96,65,64,89,128,190,0,79,
+101,66,2,49,50,51,68,245,174,145,1,54,51,64,7,0,75,98,77,64,
+53,128,41,64,36,0,52,193,20,75,42,96,45,64,126,128,10,64,44,131,
+24,234,105,11,0,52,141,133,96,240,226,36,1,3,95,49,53,57,64,42,
+164,176,96,176,226,3,3,228,215,6,133,232,161,94,224,98,15,231,86,0,
+226,145,9,129,110,64,114,107,203,230,56,0,225,134,8,149,187,161,43,0,
+54,132,32,224,111,14,72,19,129,205,224,217,8,168,165,224,56,8,0,53,
+90,45,227,31,0,226,57,2,129,186,247,198,2,234,102,0,224,40,5,64,
+123,96,66,194,105,235,118,5,64,255,64,193,64,131,202,147,224,64,5,111,
+139,98,161,125,59,240,137,3,160,6,0,85,230,55,1,225,66,3,193,61,
+239,189,0,226,202,2,225,109,6,2,95,51,54,224,112,0,95,92,72,81,
+250,51,1,96,234,255,97,0,225,141,1,225,229,0,251,194,9,224,19,5,
+194,52,65,161,197,98,172,9,100,83,64,161,225,32,15,235,16,2,160,33,
+154,167,228,92,5,164,98,225,64,1,224,28,10,228,181,5,225,224,0,0,
+56,224,180,3,204,206,192,49,235,50,0,64,2,224,39,1,128,136,128,1,
+226,193,1,64,205,233,58,0,169,229,195,238,64,147,229,178,1,160,64,136,
+45,160,59,165,110,164,243,246,240,6,224,117,6,224,150,0,228,203,4,96,
+137,64,74,129,10,129,229,1,52,50,146,5,224,152,25,136,65,64,143,142,
+9,224,132,4,65,235,96,101,238,24,4,111,158,177,155,96,0,225,62,6,
+245,100,8,163,172,129,55,201,45,160,9,128,147,162,232,155,153,224,126,0,
+224,65,1,154,244,129,226,232,232,1,192,2,244,129,3,224,32,0,201,195,
+237,14,0,192,99,228,87,3,224,26,0,253,27,2,224,31,4,224,131,2,
+176,158,224,84,1,224,133,1,224,219,0,128,192,160,203,224,92,5,163,243,
+251,116,1,97,68,97,151,68,112,252,190,0,131,48,136,97,0,79,75,141,
+0,54,73,74,102,111,1,50,50,195,225,64,7,64,28,203,14,137,65,2,
+95,56,52,67,176,0,52,137,7,64,39,64,105,224,39,16,1,53,57,99,
+159,3,95,49,54,49,68,31,224,39,16,0,54,71,106,96,39,107,154,224,
+39,17,83,112,130,52,253,204,1,96,194,64,29,178,220,1,54,49,198,148,
+192,234,137,38,227,115,1,64,26,129,113,250,55,5,130,89,161,163,225,249,
+2,160,43,96,17,226,105,2,128,1,227,250,10,79,218,128,0,224,38,1,
+230,25,6,0,54,171,189,232,174,1,64,5,236,31,8,233,115,13,230,221,
+0,224,51,35,224,139,0,229,212,14,1,54,50,226,145,0,227,109,0,239,
+180,2,224,63,3,169,59,0,50,171,125,65,142,65,182,228,212,3,225,86,
+3,225,102,1,225,15,2,164,37,229,85,6,134,82,224,41,6,131,0,251,
+5,0,64,19,229,66,4,224,106,0,227,52,13,185,31,107,125,163,24,224,
+11,3,224,191,1,207,199,128,60,225,70,3,105,67,231,147,7,234,180,13,
+2,95,49,52,192,51,128,1,230,195,6,192,253,130,71,64,122,204,153,224,
+42,5,64,13,66,223,128,224,73,107,1,48,48,76,52,134,241,248,50,1,
+192,0,160,187,2,95,49,50,67,6,66,245,209,176,67,174,73,180,206,195,
+163,69,64,34,138,193,225,238,3,229,248,4,229,13,3,148,181,99,90,64,
+18,0,79,64,80,254,5,0,225,194,4,225,142,0,64,1,133,86,224,71,
+13,65,6,0,79,97,153,254,78,1,77,76,0,54,107,236,179,74,64,166,
+138,235,129,9,64,166,230,212,0,111,224,135,238,226,180,2,225,125,1,160,
+29,180,22,233,233,2,192,144,243,210,0,224,28,3,64,179,243,26,0,129,
+133,160,225,64,173,0,80,240,128,4,224,74,10,184,238,224,73,37,160,215,
+200,133,224,204,182,99,220,132,105,247,191,4,2,95,51,49,97,213,96,76,
+131,169,160,118,224,40,14,224,120,0,195,214,160,48,2,95,49,51,84,18,
+99,58,128,15,79,228,113,227,167,89,228,159,1,228,169,2,128,0,96,187,
+163,65,0,58,128,28,235,220,12,1,54,50,64,131,88,114,234,197,3,171,
+143,224,178,9,227,188,1,152,93,235,184,0,179,110,165,166,97,64,224,12,
+4,192,4,193,124,64,121,99,168,0,51,68,114,71,156,68,192,137,113,112,
+142,128,15,224,24,6,224,0,6,1,95,56,104,34,64,223,215,255,131,64,
+64,93,132,96,97,56,230,189,17,128,32,65,91,198,26,166,57,1,95,57,
+124,36,67,131,64,242,0,54,192,126,64,107,218,217,142,57,64,25,164,131,
+2,51,55,56,132,131,0,49,65,123,1,54,50,76,116,0,51,154,110,64,
+40,139,190,6,95,56,49,51,32,75,32,65,100,193,56,224,134,0,224,1,
+7,235,54,2,224,37,16,224,35,4,224,32,23,224,29,20,224,26,17,224,
+23,14,224,20,11,224,17,8,224,14,5,65,36,226,168,4,129,26,215,171,
+0,89,165,93,97,200,108,221,232,154,1,167,76,192,79,138,72,231,234,2,
+96,13,230,176,2,227,228,5,230,129,1,128,1,133,180,224,173,1,171,27,
+224,65,3,224,68,9,253,229,0,224,55,8,195,187,64,62,96,233,166,43,
+132,231,164,41,199,166,233,245,3,176,189,0,49,248,74,1,102,205,93,138,
+230,51,3,224,0,3,139,1,66,152,64,13,128,8,65,68,138,2,75,13,
+1,75,52,115,179,64,1,0,75,139,68,161,103,135,47,243,114,6,5,67,
+111,101,114,99,101,128,6,2,105,98,108,91,121,64,43,231,56,4,161,134,
+168,228,128,250,206,76,96,11,225,119,15,224,126,0,225,106,10,128,1,193,
+200,224,30,10,224,85,16,236,88,10,224,85,12,231,148,2,65,127,104,144,
+75,178,74,47,216,209,128,0,167,176,64,248,135,138,225,36,6,84,146,13,
+76,105,116,115,46,75,110,111,119,110,83,121,109,98,116,201,0,58,139,215,
+225,40,144,194,246,225,40,75,76,239,253,116,18,1,53,56,231,88,2,224,
+34,6,224,44,2,0,50,91,168,0,83,163,58,242,198,10,0,50,124,208,
+99,37,133,87,0,52,105,225,133,87,69,108,0,48,158,194,2,64,35,49,
+88,235,96,161,234,141,2,64,47,236,134,0,225,40,0,161,37,134,44,187,
+94,241,114,1,199,152,224,185,0,129,50,225,225,5,233,149,0,224,5,7,
+209,73,192,60,192,1,236,13,1,224,28,8,224,149,5,228,109,8,224,77,
+11,225,199,0,64,0,164,108,224,2,4,192,108,224,52,5,229,187,12,64,
+22,236,122,0,224,77,13,224,56,9,226,114,3,102,245,156,174,224,36,1,
+224,58,7,224,17,8,224,14,5,192,157,133,15,1,54,49,92,2,1,49,
+54,103,133,160,62,236,58,17,108,106,243,216,5,96,0,226,185,0,224,143,
+74,133,81,67,10,115,147,76,189,66,146,0,75,123,136,96,119,101,135,192,
+12,64,43,0,54,235,227,0,192,2,241,231,11,162,63,224,38,3,128,2,
+2,95,49,54,162,225,192,46,224,168,4,64,157,162,242,226,202,9,192,47,
+128,109,225,187,5,193,8,128,8,64,120,128,126,166,202,161,236,66,218,250,
+241,1,239,155,1,238,23,11,224,205,0,238,24,12,193,187,225,151,2,224,
+84,0,64,102,68,124,129,117,0,48,86,122,241,235,0,128,165,75,136,64,
+182,149,249,1,54,49,69,55,231,36,1,224,116,8,224,110,2,162,168,226,
+42,1,224,51,2,138,191,128,7,160,221,90,74,242,79,1,96,71,251,197,
+5,31,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,0,114,222,214,128,131,
+1,53,55,138,81,0,53,242,185,1,98,21,138,22,255,117,1,96,217,130,
+185,69,17,128,47,64,64,5,51,48,51,32,95,53,146,189,104,41,75,131,
+64,65,201,61,225,150,3,0,83,100,72,129,215,141,82,160,93,173,122,228,
+111,10,171,1,64,173,237,7,2,249,2,1,230,6,1,139,252,193,207,149,
+33,226,195,4,181,42,224,19,4,228,255,1,227,121,3,160,2,160,26,227,
+24,3,227,27,18,96,12,246,247,1,163,6,162,72,160,244,66,27,0,50,
+76,204,245,97,0,192,68,201,250,227,91,5,181,47,96,101,161,30,66,41,
+137,164,224,104,3,161,101,181,232,91,249,77,141,67,156,74,216,180,140,192,
+0,165,164,65,165,137,158,195,75,198,70,141,248,96,71,67,72,1,54,48,
+97,101,139,7,227,127,1,193,200,128,232,160,15,131,194,224,202,1,231,190,
+0,141,119,64,1,224,83,3,96,162,227,158,1,97,42,128,157,144,142,174,
+106,161,237,110,18,224,21,0,227,53,7,128,93,236,187,2,236,198,4,64,
+104,0,53,64,58,231,70,4,129,39,131,180,166,41,65,22,209,194,64,1,
+97,45,193,33,192,197,209,177,192,198,224,99,1,110,192,224,21,0,134,133,
+3,49,54,48,55,98,179,64,235,226,185,1,239,15,3,192,0,192,174,224,
+98,7,64,7,244,80,5,132,154,225,97,0,224,142,3,192,139,220,230,252,
+173,9,128,205,193,149,131,89,248,164,6,2,95,49,51,219,212,224,151,4,
+225,132,5,224,28,4,64,79,181,167,227,246,3,163,139,128,35,195,133,160,
+49,163,78,64,11,224,147,5,227,76,0,234,26,1,215,247,227,28,9,227,
+5,9,194,250,224,0,0,225,139,1,0,49,232,195,2,65,236,140,83,129,
+164,192,74,64,66,64,27,139,118,122,6,129,253,100,176,229,154,7,195,229,
+96,197,128,209,228,46,0,163,86,225,36,1,166,182,146,78,203,96,228,96,
+3,224,46,18,78,147,160,47,225,9,1,231,112,0,224,44,7,242,170,37,
+64,31,1,95,55,103,75,3,67,32,95,54,77,251,0,53,233,60,3,114,
+57,128,69,144,129,160,23,224,90,8,128,163,96,48,197,158,224,174,1,227,
+63,1,224,168,1,196,205,224,73,8,192,24,149,244,162,234,167,129,229,239,
+2,64,104,128,12,149,133,252,233,1,65,195,66,6,191,177,135,199,231,121,
+1,228,160,2,228,232,5,224,42,8,226,169,0,227,119,1,98,132,228,3,
+3,128,222,229,35,1,197,177,85,54,225,78,2,129,169,200,109,128,11,250,
+163,5,228,38,3,129,62,224,8,4,128,25,64,217,204,235,188,11,162,254,
+125,240,160,59,224,22,2,224,25,6,224,26,6,224,29,7,199,136,192,37,
+192,183,128,11,224,196,0,252,212,4,64,146,202,122,151,183,67,134,128,170,
+0,54,227,72,7,100,41,64,234,66,46,160,87,1,95,53,72,120,128,72,
+136,129,112,56,70,31,64,18,136,82,65,157,96,71,192,145,228,66,0,227,
+112,5,128,29,227,109,11,252,206,0,245,228,27,128,154,227,55,5,237,140,
+7,100,162,130,23,225,251,9,227,76,6,161,57,229,66,4,228,209,4,137,
+107,96,22,224,99,1,224,131,4,64,198,245,168,8,169,25,212,224,224,50,
+35,194,183,116,164,82,5,0,57,96,151,192,47,229,238,8,160,157,242,93,
+7,225,72,10,228,36,0,224,144,8,224,96,3,225,70,4,192,41,226,102,
+2,224,58,20,224,35,0,233,65,4,226,185,8,227,169,4,160,101,232,108,
+1,224,19,0,199,9,225,68,12,70,55,225,68,10,225,63,9,147,51,225,
+63,20,66,207,137,124,1,95,49,160,28,1,85,32,160,49,64,168,117,224,
+135,249,224,62,2,64,53,136,155,229,138,0,87,122,0,56,131,99,179,28,
+227,200,1,83,107,96,151,0,67,193,150,96,245,1,83,32,237,51,0,64,
+232,202,141,202,37,64,195,0,55,99,121,0,85,115,173,0,85,225,5,10,
+157,243,86,47,2,95,56,56,72,242,248,2,0,3,95,49,53,54,64,11,
+2,49,52,53,103,103,1,95,56,238,31,0,96,0,0,83,104,12,65,61,
+168,9,129,138,231,52,5,196,101,238,12,1,77,60,0,55,229,66,1,82,
+6,2,57,32,95,64,105,0,64,105,195,1,95,54,86,231,96,0,128,45,
+228,153,0,166,39,65,32,199,205,5,80,32,95,51,52,51,237,53,2,18,
+109,105,110,105,109,117,109,58,32,101,109,112,116,121,32,108,105,115,116,205,
+37,2,95,51,54,75,73,1,54,57,64,106,0,58,96,118,128,68,98,85,
+238,74,4,192,19,133,217,131,212,166,243,224,13,1,99,220,194,226,166,203,
+128,8,0,54,65,53,0,49,64,95,160,226,96,27,64,203,0,51,69,13,
+8,95,49,49,52,54,32,79,32,35,82,88,203,207,240,95,6,64,159,134,
+20,244,41,20,1,78,97,64,222,64,44,133,174,162,37,97,57,140,3,132,
+191,206,244,163,84,128,187,229,98,1,68,222,183,18,64,174,72,18,65,151,
+100,107,160,7,193,19,67,125,243,136,5,0,55,165,140,192,91,99,141,224,
+9,0,97,246,64,250,1,53,57,171,159,240,62,9,128,45,253,56,3,97,
+52,254,46,77,1,52,56,194,79,224,42,5,193,239,128,183,254,46,20,226,
+50,25,224,116,1,224,70,4,224,69,1,226,69,0,80,112,228,196,0,111,
+155,192,102,254,143,4,201,9,65,234,0,54,228,55,1,193,108,0,83,169,
+87,97,194,133,38,191,158,65,120,132,138,128,7,192,222,252,97,74,225,128,
+1,169,181,194,113,160,65,188,228,192,252,252,243,8,128,237,252,89,3,98,
+51,104,60,224,125,4,135,186,146,250,68,221,164,196,128,49,136,91,131,8,
+226,84,21,163,185,226,74,9,225,221,8,231,201,0,226,50,19,138,104,96,
+100,99,229,132,204,228,16,0,196,214,68,197,226,7,1,64,177,198,61,3,
+52,55,52,32,64,15,134,23,227,105,10,0,54,160,116,246,198,1,64,20,
+226,164,2,253,102,2,87,33,0,55,235,64,1,64,87,134,85,64,160,252,
+74,5,0,52,87,35,252,74,1,0,53,69,32,229,24,0,227,242,12,0,
+54,128,84,226,198,1,237,233,6,96,54,247,108,3,242,245,1,64,149,235,
+33,0,76,168,225,126,1,161,143,224,55,2,64,46,65,53,227,210,6,3,
+58,49,53,56,197,188,224,204,7,1,53,54,224,204,5,64,63,96,40,190,
+74,226,19,5,67,37,100,190,229,11,3,143,177,103,88,99,71,128,95,251,
+45,1,64,100,163,90,132,75,64,102,133,127,234,184,0,226,119,3,180,110,
+0,53,139,70,98,13,196,32,224,40,4,143,220,229,32,3,161,215,128,153,
+201,162,0,64,193,108,238,186,3,224,7,3,241,47,4,233,138,0,199,140,
+237,147,6,224,38,7,231,194,0,192,52,228,37,0,252,237,31,243,137,0,
+224,64,2,144,60,252,236,29,96,67,172,206,134,60,200,51,0,55,137,141,
+2,49,53,55,162,8,64,44,163,231,226,109,3,102,110,232,69,0,224,0,
+4,162,99,1,49,56,96,45,137,1,236,250,3,160,194,224,80,5,65,232,
+197,140,1,53,56,172,216,97,251,127,169,96,81,227,36,9,0,56,128,164,
+128,81,64,15,231,70,0,238,38,4,64,73,132,229,227,106,18,226,190,0,
+243,11,8,98,253,225,125,4,227,8,11,232,197,8,128,42,192,131,160,134,
+133,58,97,61,64,118,1,75,50,106,79,64,25,132,162,227,59,7,229,76,
+2,74,64,233,241,3,196,21,224,103,3,65,148,246,242,1,231,206,3,134,
+187,134,199,224,170,1,162,206,128,13,129,233,64,52,224,33,16,128,27,128,
+113,236,116,0,232,255,1,226,160,64,224,219,4,237,50,4,250,232,0,192,
+49,232,139,10,64,58,202,58,177,136,2,32,95,57,95,59,162,183,74,54,
+232,110,3,247,25,2,128,10,160,16,224,149,5,224,165,1,224,117,8,224,
+249,2,243,214,1,192,16,128,123,1,95,55,102,91,226,38,4,168,155,244,
+0,2,234,241,0,161,42,207,39,138,93,246,170,0,70,199,128,73,224,17,
+6,135,40,0,95,70,178,128,59,149,246,0,54,160,241,0,53,128,242,0,
+95,69,93,1,95,50,131,46,0,64,232,31,4,227,103,13,97,169,128,247,
+0,53,100,33,0,67,139,235,6,95,57,49,53,32,95,56,89,102,1,57,
+51,211,111,98,206,214,21,227,111,21,0,90,225,80,2,227,102,32,192,30,
+193,237,227,99,7,135,132,227,99,1,0,51,107,190,64,195,71,243,2,56,
+49,56,72,2,66,3,167,129,235,112,17,192,154,0,53,126,159,99,93,169,
+53,64,171,234,33,7,239,222,2,160,10,160,13,227,123,0,202,61,224,228,
+3,192,13,241,104,9,131,236,99,234,162,82,195,254,192,23,224,71,1,245,
+7,5,230,197,2,226,183,4,230,160,8,238,109,1,224,36,1,227,132,0,
+199,177,160,186,224,112,5,224,98,62,230,135,2,160,217,225,48,4,64,32,
+2,95,49,51,67,56,174,154,192,95,192,131,225,44,3,92,223,0,54,94,
+199,128,115,242,87,0,225,161,1,65,226,66,182,192,34,164,27,242,76,8,
+224,22,13,224,174,0,192,121,193,235,224,44,13,224,198,0,233,186,10,243,
+77,2,232,12,3,225,63,18,225,57,5,224,136,37,224,102,2,232,112,22,
+224,99,2,128,94,64,5,225,167,5,224,55,12,224,56,5,192,155,118,254,
+131,51,225,126,0,160,14,224,0,2,160,199,163,208,128,59,148,11,173,96,
+229,32,1,70,218,230,223,0,2,95,56,57,85,250,0,50,131,156,96,70,
+253,224,6,1,105,110,93,217,20,105,115,116,101,110,116,32,116,121,112,101,
+32,101,113,117,97,108,105,116,121,32,208,178,65,49,64,52,96,153,138,54,
+224,68,6,1,32,126,128,44,192,32,160,0,64,234,141,146,1,83,32,66,
+155,194,130,195,183,211,213,96,156,194,6,225,54,1,96,22,252,107,0,225,
+247,16,193,84,164,63,96,103,143,237,117,39,0,55,101,140,227,28,0,1,
+64,64,77,13,107,111,2,95,49,50,122,210,68,171,139,56,64,26,0,57,
+75,212,2,95,49,48,82,26,64,25,0,54,233,21,32,234,249,1,229,171,
+47,224,194,1,229,173,3,65,188,233,17,6,65,19,64,25,137,43,3,95,
+49,51,57,74,74,0,52,73,194,64,22,169,40,128,50,0,55,113,71,239,
+249,2,64,33,198,123,0,89,199,252,224,2,0,133,38,224,21,7,224,24,
+1,229,170,4,224,28,8,224,55,10,64,2,224,29,21,229,242,0,64,0,
+193,47,225,55,1,192,25,96,42,232,241,2,192,57,224,99,6,224,39,9,
+233,134,0,224,57,4,224,148,3,229,195,2,192,23,224,129,1,162,172,96,
+8,160,5,3,95,49,50,50,232,215,0,224,178,8,226,44,13,227,211,4,
+229,120,3,192,126,230,40,11,165,152,224,24,4,234,44,3,3,32,64,95,
+55,79,82,128,0,228,84,2,224,8,0,128,54,239,17,15,160,79,3,95,
+52,49,52,96,21,100,52,163,23,228,82,2,1,49,50,66,180,129,28,101,
+54,3,95,55,50,57,110,38,0,50,78,132,1,95,56,189,4,68,106,96,
+250,164,112,226,199,1,225,25,0,234,21,5,226,4,3,201,232,225,162,7,
+225,179,0,193,198,227,32,0,162,214,233,156,0,192,100,192,1,199,66,225,
+162,11,108,193,224,28,26,128,123,193,158,128,30,224,19,0,231,248,5,224,
+75,13,239,132,4,224,36,16,238,11,1,1,95,52,81,184,224,0,0,225,
+15,2,226,199,9,226,50,8,97,232,224,97,6,242,111,5,224,30,8,232,
+103,8,224,89,2,192,234,221,36,194,67,176,63,98,42,232,189,7,159,232,
+235,63,2,231,56,3,139,139,128,10,171,144,96,94,64,50,178,172,171,138,
+224,84,5,192,90,236,82,14,96,146,166,121,192,17,226,60,23,224,0,1,
+192,49,129,245,224,83,3,225,148,11,225,252,0,225,26,0,225,93,6,224,
+64,1,237,170,0,225,87,6,225,84,5,102,27,2,49,53,54,114,99,166,
+173,68,55,225,69,6,248,246,2,64,70,135,146,124,208,224,152,0,224,21,
+2,173,174,185,140,167,69,142,251,128,14,153,164,3,95,49,53,53,65,109,
+70,19,185,239,96,219,191,185,227,250,12,131,243,99,235,203,243,65,177,64,
+66,140,64,0,75,253,84,8,97,8,225,53,1,193,139,232,8,7,128,179,
+64,23,134,82,224,31,6,100,148,130,166,232,3,0,97,52,182,3,241,186,
+6,246,39,21,96,33,96,90,241,123,3,231,204,0,182,62,234,35,2,246,
+15,1,64,237,172,217,199,62,65,50,2,49,53,49,98,184,227,177,0,247,
+85,0,98,158,130,64,197,162,225,28,2,186,184,224,183,0,224,51,2,96,
+151,224,13,0,131,115,136,221,161,143,250,198,3,2,95,49,49,233,125,2,
+66,11,72,111,98,60,65,248,1,32,95,65,174,4,95,51,50,50,32,162,
+75,64,62,1,55,52,128,23,225,125,0,64,139,192,107,3,95,56,52,56,
+233,230,2,1,36,120,105,229,65,1,141,219,98,103,1,75,52,96,2,130,
+253,64,27,137,75,242,145,16,175,227,192,213,79,135,160,14,242,145,7,66,
+102,233,123,28,126,119,192,80,239,36,51,236,18,3,64,128,137,121,3,95,
+56,49,51,124,190,192,82,224,1,3,230,42,2,224,114,0,224,1,7,232,
+155,1,224,37,17,224,35,4,64,197,197,4,64,135,243,19,7,131,223,64,
+25,137,234,0,85,65,127,161,136,130,230,64,27,189,218,119,92,155,76,92,
+224,64,25,131,234,225,217,1,3,97,100,105,99,187,195,64,34,125,246,0,
+73,162,219,141,9,195,75,0,50,145,85,1,32,83,64,85,1,51,54,132,
+19,131,26,242,46,0,65,40,96,171,100,90,224,222,2,130,223,65,98,227,
+115,3,68,141,224,48,16,160,46,100,214,225,15,0,64,38,240,153,17,0,
+53,128,89,233,98,0,227,163,3,232,252,8,67,134,233,250,5,192,126,238,
+114,1,175,228,160,154,228,146,4,242,81,0,224,32,15,129,47,166,134,228,
+209,8,122,67,225,102,0,225,100,1,236,250,0,230,241,2,236,192,0,98,
+244,161,230,224,58,8,96,110,99,151,224,58,11,162,233,224,236,0,224,174,
+8,131,27,232,93,1,238,196,6,96,122,240,95,1,225,78,4,224,159,2,
+133,97,197,197,228,171,0,138,169,224,151,8,99,67,116,180,69,143,66,86,
+71,112,110,185,0,56,92,102,1,64,64,226,168,1,14,98,97,100,32,115,
+121,110,111,110,121,109,32,117,115,101,142,162,96,0,156,161,133,6,225,227,
+4,143,82,0,53,98,154,66,59,242,150,3,65,253,160,158,194,34,225,34,
+0,148,82,0,85,250,215,0,236,249,8,172,243,130,47,97,73,203,194,226,
+53,3,224,2,0,224,45,8,225,119,4,226,222,0,134,32,236,23,1,160,
+197,224,51,10,162,90,64,29,224,46,0,231,90,15,130,81,225,254,2,226,
+110,9,225,184,3,97,144,2,95,49,53,124,220,224,183,2,240,188,0,194,
+1,74,111,128,5,154,170,226,146,2,80,154,236,153,0,224,119,12,192,244,
+224,119,4,224,48,5,225,62,0,162,176,225,65,18,224,169,5,227,146,18,
+195,145,240,79,8,244,209,1,224,141,0,192,12,225,195,1,224,78,8,128,
+196,224,222,10,192,24,0,85,219,179,227,86,21,254,130,5,224,197,0,224,
+47,11,192,30,242,75,2,116,9,242,219,1,224,69,4,224,42,0,192,44,
+192,193,97,81,96,16,174,76,227,164,0,136,28,225,255,0,224,69,5,192,
+49,242,234,0,230,31,8,227,140,0,224,169,6,129,225,195,65,232,234,1,
+160,136,227,91,7,129,196,192,38,160,28,161,49,249,184,3,128,129,148,183,
+70,191,235,71,2,224,66,4,65,179,233,246,1,1,52,52,202,17,97,55,
+172,141,204,140,128,61,225,4,1,160,81,236,163,12,64,67,235,40,26,235,
+142,7,0,75,103,112,68,153,135,194,2,52,32,90,224,1,0,0,75,248,
+42,3,70,209,113,231,73,150,1,95,56,233,148,4,13,80,114,105,109,105,
+116,105,118,101,115,46,84,121,112,133,17,64,50,178,52,240,17,5,3,95,
+51,52,55,229,28,1,3,95,49,53,52,96,198,69,31,152,2,95,132,103,
+89,147,177,164,84,225,169,0,225,230,6,128,83,231,129,2,237,47,1,1,
+49,53,128,6,135,147,0,51,156,175,193,238,229,162,5,101,250,67,79,129,
+153,64,58,65,106,128,175,1,51,53,136,192,65,171,64,25,193,178,65,130,
+90,49,97,149,142,76,0,48,65,119,255,32,1,198,144,98,124,129,84,238,
+63,8,64,241,137,65,161,91,139,66,64,22,211,33,0,83,227,245,0,254,
+225,3,228,220,0,64,42,137,77,0,85,128,98,98,31,0,54,170,131,64,
+29,137,79,106,234,160,196,1,52,56,96,98,65,123,141,112,130,200,96,231,
+90,34,203,214,1,49,52,104,245,3,95,49,52,50,247,139,2,101,90,0,
+55,95,234,64,74,172,146,64,82,105,181,102,131,228,173,18,128,151,224,32,
+18,165,148,232,210,25,224,33,19,132,130,228,191,10,224,25,0,0,85,232,
+194,17,128,95,0,85,224,60,0,161,107,192,237,224,51,12,214,44,98,9,
+0,52,98,139,224,45,6,232,239,13,131,197,230,11,10,192,24,198,11,192,
+7,224,40,8,246,132,5,66,47,156,136,99,46,220,149,130,244,0,52,69,
+154,130,8,77,137,247,155,5,224,176,0,253,105,2,104,125,224,199,0,167,
+228,225,112,12,225,145,23,129,178,235,18,2,199,33,160,31,96,98,96,194,
+128,22,64,118,65,170,192,186,1,51,48,65,83,224,177,4,133,16,165,15,
+225,108,1,231,87,148,226,107,9,64,28,66,106,161,161,87,24,192,205,80,
+196,143,155,204,14,198,131,218,64,140,204,224,253,3,128,0,101,40,227,84,
+4,113,116,192,101,113,246,192,53,224,61,2,224,174,4,134,79,109,93,121,
+203,230,77,8,67,245,134,58,98,82,70,165,66,98,151,224,65,188,184,208,
+128,19,64,102,0,52,128,26,248,78,0,0,56,141,181,0,53,67,47,64,
+24,184,77,77,107,86,224,1,57,32,235,120,2,1,91,93,70,89,64,37,
+133,47,97,16,2,95,49,53,192,111,174,107,235,75,0,235,81,4,96,44,
+224,251,2,64,27,160,10,0,83,98,109,95,40,67,25,64,174,211,20,160,
+9,128,8,78,104,98,149,0,50,68,9,162,135,1,54,56,236,33,10,8,
+99,111,109,112,111,115,101,83,101,78,207,161,86,65,30,89,213,1,53,56,
+178,66,226,181,0,67,189,1,95,54,176,146,103,145,102,54,136,191,187,68,
+64,222,243,27,0,224,149,23,128,143,224,142,1,7,104,97,115,70,105,101,
+108,100,128,140,64,42,0,50,129,48,175,102,224,81,41,2,115,101,116,224,
+81,12,64,225,97,152,131,190,0,51,65,219,224,64,2,1,95,56,117,169,
+224,71,1,10,114,101,99,67,111,110,69,114,114,111,114,161,218,0,51,166,
+68,164,37,244,162,2,66,185,68,4,160,167,0,53,124,13,252,3,5,26,
+67,111,110,116,114,111,108,46,69,120,99,101,112,116,105,111,110,46,73,110,
+116,101,114,110,97,108,46,193,136,128,88,64,62,101,7,0,67,180,173,252,
+79,9,4,44,32,97,116,32,188,81,136,83,193,161,64,165,130,244,133,13,
+165,237,224,160,3,3,95,49,50,57,144,70,83,116,0,51,161,89,0,48,
+137,155,0,79,225,104,3,193,103,224,196,2,1,104,97,97,12,130,9,128,
+110,131,73,67,233,103,60,0,85,129,108,131,68,234,134,0,247,229,3,64,
+85,0,57,194,60,132,216,235,0,2,172,228,224,21,8,64,193,228,150,1,
+132,25,232,173,0,244,189,0,224,56,4,196,205,96,62,235,87,2,139,61,
+224,29,7,128,100,64,2,139,53,239,188,3,132,174,89,214,1,48,54,67,
+133,235,76,4,244,60,7,133,91,67,171,70,1,232,235,0,165,215,211,144,
+107,2,0,90,161,163,0,51,254,145,6,226,211,7,7,78,101,115,116,101,
+100,32,102,66,215,11,115,32,110,111,116,32,97,108,108,111,119,101,162,228,
+96,0,241,10,13,198,52,240,138,4,96,22,0,32,71,60,224,50,5,160,
+162,224,147,19,226,140,9,4,101,120,116,114,97,128,154,2,40,115,41,130,
+150,3,66,32,95,55,85,236,132,71,131,89,192,145,234,153,4,234,14,5,
+193,189,64,36,234,137,4,224,22,1,226,52,0,102,44,131,201,96,18,96,
+30,153,61,64,26,247,163,1,254,232,7,160,0,64,56,97,189,132,234,1,
+51,57,94,246,169,126,231,181,0,0,51,235,9,0,98,212,212,102,230,189,
+0,0,85,104,191,229,21,15,64,61,70,48,84,133,164,41,64,21,203,57,
+64,71,108,70,75,23,224,242,5,235,167,4,224,26,6,99,164,84,94,0,
+53,80,151,227,173,0,197,188,160,53,64,255,227,114,14,226,131,1,200,208,
+163,7,227,94,5,133,104,226,6,8,167,94,229,39,4,11,111,114,100,32,
+119,105,108,100,99,97,114,100,226,157,9,138,117,224,193,1,84,84,200,57,
+231,242,0,0,54,107,149,160,212,224,254,0,160,219,225,176,4,225,143,2,
+134,117,67,73,153,175,64,3,0,75,64,163,203,246,64,48,107,246,64,88,
+0,56,236,24,0,0,58,97,14,129,133,96,127,225,41,0,69,47,202,218,
+231,160,0,252,161,4,97,251,97,80,96,152,228,69,3,224,39,3,64,32,
+64,132,226,204,8,247,189,0,64,143,184,7,245,164,9,0,52,69,197,128,
+93,148,80,96,26,75,197,224,78,5,86,186,96,41,227,48,5,64,94,200,
+251,0,90,66,166,96,17,0,54,224,242,0,237,170,3,64,144,64,29,197,
+177,168,100,135,19,65,72,64,28,130,249,231,141,42,0,103,231,141,14,0,
+50,131,27,0,83,161,98,119,46,102,169,165,143,199,89,176,185,102,185,96,
+117,102,188,228,82,0,230,172,19,4,80,114,111,120,121,165,32,224,156,3,
+64,125,195,131,97,77,0,57,105,39,138,217,142,73,224,248,1,130,98,1,
+95,56,240,83,4,1,66,64,168,17,64,45,111,28,0,53,71,134,96,212,
+0,58,154,230,208,91,97,30,0,49,138,152,1,53,49,128,84,0,49,245,
+98,3,91,4,2,95,49,50,72,91,144,239,64,36,160,155,2,80,32,35,
+194,51,64,24,129,191,239,15,13,0,52,121,193,97,37,239,15,1,226,221,
+9,208,110,177,61,130,228,231,26,3,85,241,229,93,1,101,71,109,162,104,
+153,244,176,0,128,88,203,246,237,123,1,224,2,3,128,24,242,137,4,96,
+2,165,58,65,121,69,32,239,204,15,64,205,195,250,247,81,1,245,79,1,
+224,5,0,102,174,227,161,3,64,19,0,83,128,154,238,141,13,228,246,0,
+128,24,128,127,0,55,134,143,220,35,67,88,198,148,193,71,1,49,52,197,
+24,64,12,100,73,64,8,107,227,64,72,3,80,32,95,55,153,231,98,157,
+2,95,49,52,111,118,96,20,224,0,0,193,89,161,92,65,38,66,25,180,
+84,207,22,64,158,193,149,173,77,177,228,224,68,7,148,100,225,1,4,224,
+172,3,224,11,3,64,234,96,181,128,179,192,159,224,152,0,130,2,244,117,
+0,215,235,135,76,2,49,53,49,98,106,230,152,1,64,42,254,33,7,224,
+164,3,248,24,0,66,187,196,93,226,142,13,128,61,226,116,0,232,172,3,
+97,97,0,49,105,227,2,51,53,32,135,112,192,44,224,244,2,166,72,224,
+56,2,71,211,129,134,232,74,4,64,140,173,200,1,51,54,224,138,1,1,
+57,49,103,240,106,70,64,34,132,158,224,175,21,194,22,128,103,235,190,1,
+0,48,196,79,136,237,64,83,230,200,1,64,92,228,125,1,224,96,15,193,
+151,225,148,18,251,171,5,64,187,96,133,225,23,27,104,41,225,23,10,167,
+79,99,160,68,21,64,203,69,109,128,188,64,33,211,172,224,185,25,192,35,
+97,32,136,154,231,45,4,135,68,0,48,169,161,129,37,128,134,64,114,255,
+32,0,210,93,3,66,32,95,57,129,65,128,82,255,9,5,64,70,3,10,
+65,32,90,64,46,64,14,173,2,253,163,14,129,39,131,249,0,48,97,156,
+106,66,240,230,2,147,78,163,118,228,135,0,0,85,228,44,7,0,56,230,
+21,4,2,75,105,110,235,143,0,64,132,0,54,130,101,118,81,100,220,131,
+238,168,86,227,222,0,96,9,66,57,164,66,110,102,0,95,110,174,224,6,
+6,106,100,64,3,100,223,192,76,0,83,123,132,143,170,192,32,224,106,19,
+109,71,224,108,1,111,247,64,114,224,108,31,0,82,224,108,26,65,70,96,
+100,0,83,172,89,224,110,6,160,103,224,117,2,224,106,9,224,63,3,224,
+113,2,173,139,151,14,192,147,224,40,0,224,108,18,224,115,2,128,67,224,
+61,13,160,106,3,95,51,50,48,225,219,2,31,92,34,115,114,99,47,77,
+105,99,114,111,72,115,47,84,67,77,111,110,97,100,46,104,115,92,34,44,
+50,51,55,58,50,0,51,237,136,2,130,51,67,92,199,143,1,53,48,231,
+157,3,1,53,48,74,162,224,13,1,0,52,224,13,1,0,53,79,204,192,
+11,0,57,224,11,0,66,77,197,64,74,9,73,242,64,19,172,143,132,35,
+231,197,1,96,61,101,230,102,86,130,222,64,47,132,212,224,47,11,224,57,
+2,0,54,99,17,160,57,224,64,6,242,197,1,224,54,7,224,152,1,224,
+53,9,242,28,0,224,2,0,131,184,241,72,2,228,225,2,231,204,5,70,
+68,227,246,0,239,215,3,224,50,4,71,0,229,14,4,64,55,229,253,11,
+64,22,0,57,128,149,228,202,1,72,243,128,71,254,163,2,232,203,4,133,
+17,96,112,64,0,192,44,130,230,249,242,5,160,59,196,230,233,10,0,160,
+94,130,186,68,16,132,84,224,96,4,96,17,224,137,1,164,158,224,38,4,
+96,35,224,75,6,192,37,193,20,96,150,97,35,225,20,9,0,56,99,6,
+225,20,4,192,112,156,188,128,85,252,83,1,230,121,11,225,160,6,0,57,
+224,71,5,192,73,96,26,239,216,7,224,100,72,192,14,162,135,224,17,0,
+224,15,0,224,133,3,224,47,2,159,74,164,170,226,128,31,64,115,224,104,
+1,224,141,3,224,143,0,224,19,2,191,173,226,13,6,98,68,128,32,226,
+24,2,129,175,131,12,0,64,162,103,224,73,1,234,199,8,226,108,2,224,
+37,1,224,131,18,224,70,0,195,112,192,136,224,119,0,134,216,124,89,184,
+185,96,5,64,0,226,87,9,226,93,12,231,222,7,199,228,130,115,242,87,
+0,126,70,64,74,248,63,11,236,82,0,224,189,2,224,21,15,160,132,248,
+107,6,201,103,192,0,254,174,2,252,222,8,226,0,57,69,155,100,81,228,
+224,0,226,212,10,196,57,128,12,224,94,6,160,222,192,86,66,173,81,205,
+2,49,52,57,204,53,192,54,129,202,164,193,96,119,136,245,128,243,232,140,
+6,12,99,97,110,110,111,116,45,104,97,112,112,101,110,102,156,64,48,246,
+26,0,237,144,1,64,13,224,144,3,64,95,250,144,1,128,1,162,86,197,
+6,226,60,0,192,34,67,181,224,46,0,237,142,7,224,178,1,161,23,226,
+35,6,236,186,11,0,57,65,177,64,38,0,79,236,114,5,229,252,30,224,
+103,0,75,227,71,94,0,50,159,23,96,93,0,52,148,21,84,31,66,57,
+0,67,64,35,0,56,244,30,4,225,137,0,64,18,225,82,1,5,83,117,
+98,115,117,109,119,187,11,32,99,104,101,99,107,32,102,97,105,108,101,201,
+243,226,93,7,65,111,0,54,199,47,224,227,2,3,95,49,48,55,224,173,
+0,77,47,131,15,241,213,6,95,173,96,66,135,247,2,75,32,89,97,120,
+65,49,134,162,252,171,0,134,95,64,218,166,16,254,133,4,225,112,1,228,
+59,7,97,214,84,120,161,41,226,3,6,244,41,0,64,60,238,96,8,116,
+65,129,172,230,74,7,71,219,184,184,224,0,1,225,249,3,224,136,0,240,
+76,2,188,235,0,67,232,14,0,197,10,230,221,0,229,69,1,226,47,7,
+195,147,226,85,3,226,129,4,192,36,128,177,224,179,7,228,2,0,164,225,
+224,191,3,242,133,0,160,168,225,14,40,164,150,65,81,76,214,224,0,1,
+224,42,5,0,80,212,179,162,55,137,216,64,80,232,155,1,108,205,229,141,
+11,228,91,2,230,31,8,163,45,194,32,64,112,129,78,160,174,224,197,0,
+240,239,1,225,37,0,224,27,10,227,125,0,162,107,230,1,7,227,156,8,
+68,25,232,117,1,129,3,225,39,8,207,210,225,151,6,226,160,31,228,27,
+0,65,57,138,226,250,117,12,227,118,3,117,99,0,57,109,230,1,52,54,
+129,152,225,192,13,65,52,96,159,129,245,166,190,130,50,166,90,184,44,160,
+71,160,13,230,134,1,64,149,207,240,225,83,4,118,104,224,115,8,224,186,
+0,158,125,249,122,3,160,117,98,155,181,1,160,14,2,79,32,35,64,20,
+97,9,156,18,0,50,101,66,192,127,139,129,225,217,11,246,110,4,227,168,
+1,170,105,228,100,0,96,42,114,45,193,38,0,52,146,213,75,229,160,105,
+96,58,225,239,2,96,121,213,32,4,52,56,56,32,58,128,24,226,217,2,
+230,81,1,129,98,97,111,132,197,134,96,226,111,0,226,114,0,199,122,192,
+204,224,50,2,132,248,249,229,1,227,41,6,171,67,224,172,1,224,60,10,
+192,203,224,32,1,228,181,8,224,34,9,135,30,160,77,167,25,232,12,5,
+192,231,231,53,4,227,173,2,192,82,128,21,129,66,226,129,1,224,101,3,
+235,58,8,225,61,0,225,62,2,85,170,92,167,150,5,224,24,1,142,241,
+102,219,0,54,252,189,1,226,124,0,132,95,224,133,11,224,18,11,224,23,
+0,234,156,8,246,36,4,96,182,133,8,104,110,224,13,5,224,56,12,224,
+57,3,235,60,3,228,87,1,228,119,6,192,184,160,58,134,16,64,9,226,
+192,0,224,103,5,129,23,224,42,1,197,35,193,28,241,226,1,253,85,12,
+225,81,0,165,145,162,88,228,251,2,225,183,1,225,227,13,96,195,227,133,
+8,247,150,0,167,214,226,239,1,227,6,4,96,35,224,17,9,225,52,2,
+65,165,67,157,241,17,1,225,69,1,171,146,64,220,96,133,253,204,5,138,
+54,6,32,117,110,105,102,121,32,136,216,228,117,4,2,49,50,54,132,4,
+224,55,6,3,32,97,110,100,128,47,192,34,224,236,3,162,3,226,66,9,
+68,17,138,196,234,147,1,229,180,5,0,52,129,227,193,76,64,16,128,93,
+64,70,69,21,64,66,217,49,64,19,153,15,133,60,1,49,52,116,142,64,
+34,0,54,96,34,250,28,3,10,105,109,105,116,105,118,101,115,46,126,34,
+80,16,96,42,250,19,0,135,246,224,9,0,197,207,64,38,231,155,1,230,
+101,12,0,52,146,97,235,44,4,134,224,64,142,0,50,162,201,229,38,6,
+65,16,229,160,0,226,86,8,228,58,32,235,204,7,133,167,0,57,235,67,
+6,160,39,229,226,6,66,248,107,8,110,2,102,159,131,38,226,59,33,4,
+121,99,108,105,99,226,53,10,110,92,66,20,252,173,0,226,63,9,0,61,
+226,61,17,229,96,5,233,125,7,225,113,1,192,216,0,67,129,112,224,193,
+0,192,192,161,112,224,132,0,161,122,247,140,3,227,147,18,225,6,8,126,
+140,128,141,163,27,1,52,56,101,80,224,217,6,5,101,114,114,111,114,58,
+161,22,96,113,222,182,2,67,32,80,224,40,2,3,116,121,112,101,64,36,
+224,17,1,0,107,214,80,224,18,1,3,115,111,114,116,224,18,6,4,114,
+101,97,108,109,156,143,96,128,236,112,47,65,68,0,58,130,46,153,28,0,
+53,140,115,235,147,5,226,150,3,129,201,226,78,1,167,67,225,48,1,224,
+39,21,202,163,193,180,234,165,0,224,36,4,130,13,231,135,17,98,29,130,
+203,128,107,205,208,130,199,250,156,1,230,221,3,140,13,0,90,64,208,0,
+90,64,49,192,25,224,100,8,237,42,2,0,75,179,138,169,29,165,153,224,
+215,10,230,254,2,224,79,8,236,242,9,64,29,128,34,160,25,64,106,128,
+11,2,95,49,50,65,163,154,74,129,164,100,169,65,170,164,239,0,51,64,
+11,68,239,0,49,65,225,0,52,118,241,0,51,156,76,64,40,133,24,78,
+60,96,165,132,88,196,81,196,84,163,85,236,58,7,200,49,140,54,148,175,
+99,35,235,186,9,225,82,1,231,174,3,237,34,5,67,118,80,216,106,208,
+2,49,50,55,163,229,64,45,141,231,237,105,1,225,161,6,130,123,235,254,
+6,192,63,160,232,0,54,163,82,161,136,143,228,236,5,24,87,109,236,246,
+5,237,191,9,242,178,2,235,239,12,64,0,224,53,3,64,141,134,73,4,
+83,32,85,32,95,127,250,1,90,32,76,198,0,89,249,35,3,129,143,97,
+127,227,80,1,231,202,5,226,86,6,212,195,226,127,0,224,46,21,253,218,
+0,133,137,224,47,2,224,44,10,225,243,1,168,84,227,138,49,162,187,96,
+11,160,238,227,42,0,160,92,160,135,224,13,0,232,194,0,225,6,0,224,
+53,2,224,175,2,140,138,0,39,241,194,0,97,132,0,48,241,186,8,96,
+59,226,217,3,226,230,4,127,187,129,209,193,75,64,30,129,37,98,59,1,
+49,52,91,255,4,64,95,53,54,53,148,119,0,90,64,49,222,214,226,19,
+4,224,35,1,194,171,166,122,136,46,160,0,128,121,64,172,0,50,160,172,
+64,11,194,118,96,145,144,111,104,225,192,10,178,4,242,254,11,230,134,3,
+96,171,97,10,160,211,224,57,0,130,167,1,56,51,169,108,1,67,39,66,
+129,64,137,149,116,226,130,3,128,161,247,20,1,193,21,161,19,129,190,107,
+175,100,109,3,49,49,55,57,225,118,3,129,84,221,38,239,4,1,227,34,
+2,229,11,11,226,53,2,96,180,0,52,160,169,139,244,226,132,13,207,171,
+196,104,224,77,0,239,196,1,209,234,228,145,5,235,252,14,207,223,227,37,
+0,64,12,129,174,0,48,91,47,224,11,0,111,246,64,32,2,79,32,64,
+193,143,198,18,224,198,5,0,55,236,198,1,226,205,1,225,101,1,227,83,
+5,128,42,227,208,5,224,39,10,231,83,0,173,55,116,8,128,50,160,33,
+169,87,178,137,64,177,65,94,97,136,192,141,225,129,8,230,221,10,227,221,
+11,224,37,1,229,222,1,64,231,145,129,128,98,64,15,193,190,128,69,97,
+79,224,166,8,97,27,224,75,8,133,251,231,161,9,98,88,0,55,195,237,
+0,54,226,117,5,96,41,1,95,51,66,53,234,79,8,3,115,117,98,115,
+108,198,8,109,112,108,101,109,101,110,116,101,236,158,0,81,29,2,49,50,
+54,226,172,1,69,177,203,212,179,224,66,4,64,22,0,51,234,27,0,1,
+80,32,129,7,0,80,135,129,202,52,1,80,32,101,151,0,85,128,21,137,
+216,169,58,99,55,129,216,130,96,228,234,3,129,226,128,16,176,234,245,208,
+3,226,11,1,227,154,0,227,5,10,229,48,2,227,197,2,226,106,16,231,
+113,0,161,145,232,191,15,0,50,161,26,160,24,225,195,9,0,50,226,107,
+1,229,237,0,193,179,160,10,217,162,160,167,224,43,3,224,223,1,224,226,
+20,230,191,0,224,227,22,224,153,5,230,199,0,224,143,4,64,141,160,43,
+175,78,64,13,65,9,171,186,228,174,8,224,93,2,228,180,12,224,242,25,
+225,89,1,228,167,11,224,244,1,236,219,5,224,13,3,228,185,14,224,44,
+14,174,100,194,102,197,189,228,211,0,224,155,0,228,180,3,225,142,7,193,
+145,224,98,0,228,134,13,226,205,3,161,151,224,49,0,225,210,18,205,117,
+129,126,128,26,226,132,2,225,201,4,237,210,2,225,101,0,232,15,4,224,
+19,5,228,221,30,224,179,0,230,97,1,224,236,17,228,103,0,229,157,1,
+224,53,26,225,93,0,192,29,229,79,14,225,199,8,225,21,0,129,186,129,
+194,134,114,68,36,231,206,7,225,7,4,227,32,1,192,56,225,25,3,128,
+36,227,244,1,160,105,64,146,250,251,5,128,31,130,5,224,27,6,196,8,
+152,66,201,126,237,89,2,224,4,1,128,116,229,152,14,9,102,114,101,101,
+84,121,86,97,114,115,175,18,229,144,7,97,50,166,88,208,10,2,85,32,
+65,101,100,100,65,0,75,134,108,174,181,133,120,142,246,96,32,0,58,131,
+198,1,10,65,190,95,254,101,1,128,246,128,180,119,95,0,56,166,124,2,
+54,32,35,125,108,247,57,7,7,64,95,53,54,54,32,95,50,80,2,162,
+13,224,67,11,233,161,4,1,95,50,141,137,1,54,55,67,235,64,4,1,
+49,50,65,240,64,150,189,174,5,50,48,55,32,95,50,85,160,128,38,3,
+64,95,50,52,108,137,160,12,88,195,1,95,50,176,170,2,54,52,32,122,
+28,64,27,64,6,96,155,64,8,0,54,224,23,11,1,50,56,132,199,128,
+72,0,56,224,98,1,64,126,253,252,0,98,33,227,126,1,227,251,5,162,
+132,119,241,1,52,50,246,68,0,243,159,1,64,8,135,243,65,220,80,76,
+161,152,193,188,96,85,74,200,1,49,51,161,60,224,64,2,64,50,0,53,
+224,50,0,139,21,162,39,78,182,129,233,128,0,224,114,90,66,200,224,114,
+3,224,43,6,224,15,7,65,69,0,54,193,196,0,57,66,42,1,51,32,
+101,149,128,9,4,49,49,49,52,49,111,124,64,40,206,4,132,52,180,218,
+224,196,13,196,66,130,60,160,191,64,206,143,18,131,18,224,13,1,224,192,
+17,128,81,64,125,136,208,0,95,121,116,64,44,213,31,0,54,108,125,71,
+193,64,24,250,151,0,0,53,160,80,0,51,76,183,2,95,57,50,174,201,
+64,45,192,57,0,53,98,144,192,57,131,113,196,175,78,232,156,191,64,171,
+199,110,192,7,143,8,188,223,224,32,9,255,138,0,103,144,0,51,98,175,
+128,0,0,58,128,117,122,64,100,36,0,53,76,214,147,191,187,64,64,34,
+209,14,73,163,65,34,137,141,64,36,96,22,244,47,8,179,0,251,8,12,
+176,132,166,223,140,32,164,250,1,95,54,81,79,101,76,0,90,150,138,237,
+228,0,164,22,224,101,4,96,7,133,116,248,174,4,246,196,1,65,86,243,
+131,3,0,48,192,79,0,85,112,47,224,28,14,96,219,130,133,132,139,114,
+3,161,104,210,8,1,53,52,242,8,1,238,51,3,197,179,213,32,96,237,
+64,80,130,173,7,95,56,49,51,32,75,32,85,230,218,0,224,1,5,142,
+30,160,0,224,34,13,233,0,2,96,0,64,158,168,242,64,102,130,150,129,
+2,143,7,1,53,50,129,173,130,163,230,40,1,2,100,105,99,84,233,64,
+26,245,161,1,253,63,9,160,134,241,183,5,97,142,65,118,98,115,64,13,
+246,136,0,64,7,64,117,186,250,253,41,7,64,148,1,10,65,125,79,0,
+54,101,212,64,19,188,195,224,123,2,0,50,64,200,0,83,83,51,135,250,
+130,100,225,229,3,128,148,0,50,161,231,3,83,32,95,51,110,22,193,159,
+120,158,193,159,254,248,5,83,205,80,212,64,57,2,95,49,53,90,138,106,
+162,2,50,50,32,200,146,64,64,181,174,65,4,166,250,82,101,224,1,3,
+0,75,233,173,0,128,219,64,50,225,227,3,66,99,225,194,27,224,35,26,
+224,32,23,224,29,20,224,26,17,224,23,14,224,20,11,224,17,8,224,14,
+5,224,11,2,192,8,96,5,226,158,2,224,0,2,65,44,132,61,3,95,
+57,51,50,181,129,64,20,0,54,193,108,0,52,192,2,96,59,64,26,131,
+64,0,67,145,81,231,79,1,64,109,234,85,5,228,96,0,224,33,15,172,
+196,228,130,3,224,33,7,128,67,234,91,11,192,25,112,7,250,13,5,217,
+41,132,172,0,80,64,252,226,118,2,229,39,15,228,193,10,64,26,101,136,
+227,115,3,96,0,0,85,224,145,0,64,98,0,95,71,141,1,49,50,67,
+191,233,57,1,229,199,0,96,70,99,19,245,147,3,64,65,224,40,11,64,
+67,192,146,64,0,224,11,2,225,4,8,129,98,68,196,115,170,224,72,2,
+70,222,64,57,224,198,0,192,78,235,217,1,225,176,9,225,175,23,204,103,
+237,175,8,192,24,139,127,180,33,128,12,226,32,18,225,219,16,225,218,2,
+84,145,225,124,5,238,170,11,224,47,19,96,0,224,50,13,225,130,0,226,
+12,11,224,24,14,129,178,224,98,2,247,207,3,224,132,17,248,225,4,67,
+69,253,92,1,1,80,32,161,199,145,113,65,178,3,10,65,32,80,72,207,
+66,12,251,178,0,71,244,225,104,1,65,193,177,188,66,91,231,35,20,249,
+44,3,225,10,0,2,95,49,51,67,67,64,30,104,135,64,72,165,255,231,
+27,13,231,19,0,224,22,5,224,1,1,229,76,127,228,234,6,0,58,129,
+0,250,71,0,0,54,145,15,73,254,1,49,51,65,121,193,2,64,40,134,
+57,196,247,230,90,0,64,26,133,39,130,51,226,71,4,2,95,51,49,65,
+213,0,85,215,31,224,32,15,196,172,96,38,129,196,224,41,3,131,183,128,
+41,227,75,2,128,33,68,153,0,49,65,232,78,148,0,49,232,61,2,1,
+61,62,222,78,224,22,4,255,245,2,160,33,224,91,5,1,95,49,98,137,
+0,67,177,49,225,43,3,0,54,130,4,1,52,56,103,243,97,44,111,37,
+96,132,96,7,77,143,66,77,66,66,99,26,224,6,3,224,33,0,64,13,
+128,39,224,33,21,160,26,224,40,3,224,33,13,224,40,3,3,64,95,51,
+48,100,225,117,245,64,182,134,150,0,75,98,11,254,221,17,98,39,0,83,
+64,208,96,39,111,186,128,10,239,189,5,22,97,115,115,101,114,116,84,67,
+77,111,100,101,58,32,101,120,112,101,99,116,101,100,61,255,242,13,175,215,
+96,142,160,190,139,231,0,79,96,18,0,51,160,8,1,50,48,192,8,0,
+49,248,232,2,224,122,8,4,44,32,103,111,116,128,105,160,90,160,85,225,
+162,1,132,60,1,75,51,68,35,64,94,108,55,3,49,57,32,75,191,107,
+3,95,50,57,57,224,81,2,5,84,67,69,120,112,114,128,81,224,25,7,
+0,84,191,140,224,26,10,0,75,223,149,224,26,9,0,83,223,157,98,121,
+70,252,128,163,65,117,224,12,0,64,156,132,192,122,202,1,49,52,231,35,
+0,65,3,86,225,0,57,66,243,135,189,3,49,52,51,48,197,31,157,58,
+1,56,57,157,136,225,30,6,15,77,117,108,116,105,112,108,121,32,100,101,
+102,105,110,101,100,209,93,1,56,48,99,243,1,95,52,117,213,64,123,182,
+164,2,56,57,48,97,39,205,200,64,124,3,56,32,64,95,77,54,0,58,
+96,136,192,162,112,234,250,58,0,194,139,132,94,141,218,193,136,196,116,250,
+70,0,224,2,1,194,102,200,27,64,16,96,20,194,185,128,10,80,251,64,
+125,254,225,0,226,178,15,226,207,15,199,36,224,31,15,242,101,2,235,180,
+8,64,31,148,119,179,43,232,250,8,101,42,65,158,162,80,78,16,68,128,
+167,10,125,236,96,20,224,100,19,1,52,49,192,100,140,165,231,77,1,224,
+183,18,167,75,129,65,0,66,112,75,224,185,12,224,214,13,98,81,195,160,
+224,140,10,232,29,9,64,25,0,57,98,20,238,118,2,79,252,210,193,196,
+139,99,191,163,189,96,7,98,170,68,65,249,141,3,2,99,99,32,227,30,
+3,210,241,96,92,129,69,161,74,131,53,128,23,1,49,52,131,54,128,13,
+178,219,192,12,100,87,194,212,64,7,130,173,178,49,252,234,8,226,120,0,
+175,0,145,129,96,0,201,183,128,29,2,52,50,52,241,130,0,177,114,160,
+6,64,103,133,78,77,109,71,10,98,246,64,22,132,121,210,111,224,123,33,
+96,20,244,100,1,224,106,4,132,192,1,75,50,81,221,64,15,132,51,1,
+75,50,180,228,65,111,101,217,64,133,64,15,213,3,237,252,4,0,58,97,
+198,195,225,105,5,78,95,137,0,0,49,238,132,2,64,40,238,31,6,130,
+140,224,1,1,239,253,1,224,25,7,192,1,232,234,101,232,208,5,64,192,
+244,225,0,66,242,249,215,1,1,51,57,66,44,0,48,118,181,86,162,0,
+79,132,198,0,57,98,130,0,49,65,40,0,79,129,250,72,9,97,165,115,
+5,96,33,131,9,81,77,1,49,52,106,143,214,131,96,112,0,54,129,49,
+96,48,3,95,56,52,56,232,106,13,226,247,0,64,50,130,65,224,39,12,
+166,89,64,37,203,7,224,203,24,66,189,0,79,64,181,224,210,1,1,51,
+57,97,21,158,170,128,22,150,75,0,48,68,5,96,191,224,52,9,1,52,
+48,98,6,224,52,1,96,16,224,52,24,135,215,224,52,2,104,153,224,52,
+22,100,101,224,52,3,145,207,224,52,1,128,27,128,52,0,52,126,199,224,
+45,3,161,140,64,175,225,140,0,130,44,225,194,15,97,82,236,64,2,64,
+36,97,183,1,52,49,69,106,96,121,224,12,7,96,141,64,43,167,47,3,
+49,52,48,57,96,59,231,48,2,67,205,128,6,64,5,129,123,132,198,64,
+164,96,62,71,126,128,46,128,36,119,153,114,151,64,28,163,113,96,173,64,
+15,165,95,109,59,64,15,194,95,193,57,0,52,128,54,226,67,18,0,45,
+74,214,64,35,130,65,224,35,12,1,78,97,179,89,65,120,224,36,15,5,
+83,121,109,98,111,108,160,39,129,47,224,39,12,8,67,111,110,115,116,114,
+97,105,110,192,83,193,47,227,19,21,233,69,0,64,50,129,82,224,39,12,
+169,136,0,58,130,196,100,158,1,52,55,193,104,64,21,161,66,2,53,50,
+50,224,64,2,6,98,117,105,108,116,105,110,64,96,76,64,64,3,64,43,
+214,17,108,111,142,38,67,79,64,20,167,27,0,57,144,32,154,13,1,51,
+57,71,21,1,51,57,69,44,1,51,57,133,80,224,21,12,64,70,181,64,
+76,31,134,5,0,90,69,106,224,9,0,176,212,0,50,83,206,123,81,64,
+60,199,157,199,118,171,189,128,85,64,84,129,196,77,66,240,146,8,0,83,
+168,158,255,147,3,73,139,120,152,138,48,135,241,237,115,6,231,152,4,5,
+103,101,116,73,100,101,97,186,182,118,224,142,3,1,85,32,123,207,64,136,
+130,40,65,32,70,235,216,6,65,4,129,60,187,172,64,32,110,59,0,56,
+74,87,2,64,95,55,88,86,64,39,248,71,1,230,131,5,0,51,122,230,
+230,131,0,104,168,230,131,7,216,45,224,1,11,239,92,127,224,23,14,224,
+20,11,224,17,8,224,14,5,224,11,2,244,156,11,0,58,129,50,225,76,
+14,231,208,4,106,18,231,208,13,167,202,224,16,1,224,1,5,225,85,170,
+225,43,8,64,255,208,155,1,75,51,247,24,15,64,37,0,54,192,37,0,
+50,144,220,224,34,4,64,32,233,244,5,96,2,192,26,227,160,0,227,104,
+3,64,135,235,81,2,99,68,129,125,235,217,10,172,45,139,181,1,51,54,
+236,12,2,141,57,65,214,107,82,1,49,49,70,4,195,217,160,127,195,151,
+226,12,0,97,28,242,227,0,1,51,56,70,204,242,227,8,0,57,72,184,
+64,29,226,41,0,131,199,97,3,248,68,17,64,40,206,61,226,82,0,180,
+212,224,1,11,226,70,170,224,17,8,224,14,5,224,11,2,192,8,227,164,
+11,97,41,200,39,224,1,15,225,29,5,225,68,245,243,110,7,97,82,164,
+227,0,50,91,147,71,174,198,140,66,230,236,233,2,226,173,15,96,42,199,
+241,160,70,103,71,64,108,64,75,64,31,0,54,130,206,0,49,78,143,64,
+15,131,234,99,65,1,49,49,81,42,96,162,171,123,0,49,143,70,96,17,
+1,49,49,113,135,176,34,0,55,120,159,67,92,66,14,67,222,0,56,177,
+248,0,48,64,98,160,140,246,220,1,148,195,152,1,248,77,11,148,92,224,
+25,6,106,201,224,25,12,74,147,64,80,231,238,5,185,58,191,150,104,243,
+231,76,1,149,109,161,139,102,14,239,6,3,65,147,241,3,1,160,119,241,
+204,6,206,237,128,7,96,54,128,148,174,229,228,111,1,112,176,96,32,65,
+122,129,37,228,204,2,64,12,131,65,128,74,2,95,49,49,65,42,161,132,
+65,77,165,29,1,49,49,69,138,2,95,49,49,147,45,161,148,154,94,96,
+0,224,164,3,159,181,64,0,226,125,0,133,79,0,53,72,168,128,229,0,
+39,128,145,224,196,0,224,110,3,161,229,79,169,224,100,0,160,186,64,157,
+224,120,5,160,99,148,251,128,39,96,111,0,89,232,186,0,176,12,224,119,
+0,224,50,0,161,44,96,50,96,227,229,229,2,73,205,243,254,0,160,103,
+1,95,50,69,217,112,46,254,29,13,0,95,133,213,130,227,76,107,235,129,
+3,1,36,102,137,234,64,122,0,89,224,150,0,192,237,64,138,82,32,94,
+41,244,97,8,1,36,120,245,124,2,255,52,1,195,16,224,150,23,242,125,
+0,254,219,0,139,6,192,173,241,55,10,226,165,2,130,89,193,56,226,227,
+0,243,21,0,64,1,67,84,226,208,3,128,10,65,130,251,29,2,225,241,
+0,226,235,0,209,148,231,95,8,224,0,3,227,89,4,176,21,139,113,195,
+198,226,120,0,0,79,64,63,161,206,98,239,162,141,0,64,65,111,94,31,
+65,213,0,50,220,233,235,157,5,149,73,68,217,224,29,6,131,203,160,29,
+0,67,236,72,5,225,225,5,237,59,2,1,73,79,182,140,192,0,97,35,
+130,135,130,218,64,5,99,68,1,52,54,224,66,2,9,73,79,46,112,101,
+114,102,111,114,109,224,65,1,98,76,225,151,0,131,26,162,235,225,74,3,
+0,50,111,220,67,102,0,55,85,195,97,239,111,79,176,177,98,210,229,164,
+1,224,227,4,64,22,225,86,0,131,144,96,233,82,249,160,23,193,219,100,
+161,137,28,1,54,52,128,38,0,49,75,22,226,173,2,0,103,224,251,5,
+228,17,1,64,67,237,77,8,194,158,101,91,237,88,4,181,151,0,85,225,
+225,7,196,51,132,210,229,5,1,64,146,137,93,0,54,128,177,3,95,49,
+51,53,67,21,247,189,2,240,180,1,229,179,7,229,178,7,0,90,201,97,
+96,11,160,13,224,133,1,128,9,64,130,229,81,7,225,214,0,2,79,32,
+35,68,211,160,111,209,43,128,0,224,98,3,133,232,229,35,8,227,86,2,
+65,120,162,215,64,2,225,246,1,224,127,8,64,0,229,252,7,65,163,1,
+51,55,227,242,2,164,15,101,50,65,0,0,95,119,245,90,9,66,230,96,
+168,225,10,1,133,236,0,54,106,225,64,71,74,220,65,101,96,22,0,56,
+89,236,192,0,245,78,2,99,53,130,185,64,0,71,130,242,4,1,64,67,
+64,11,134,207,97,205,1,67,39,91,4,5,95,49,56,52,32,95,72,45,
+128,58,231,165,8,89,34,1,95,54,131,145,1,50,56,165,168,1,51,54,
+139,245,1,51,55,96,116,118,206,64,100,139,47,166,146,225,177,0,128,116,
+193,97,230,246,4,160,21,226,82,1,100,54,0,39,98,154,96,139,230,218,
+1,128,61,156,128,130,75,192,51,225,175,2,231,5,1,224,29,5,230,227,
+2,0,53,76,136,228,8,11,2,115,101,113,250,206,0,230,238,0,224,82,
+1,192,13,194,7,103,251,160,196,128,92,108,211,103,19,195,177,64,5,164,
+190,97,98,96,246,131,19,230,68,4,97,187,64,41,1,55,52,166,47,198,
+71,232,11,28,230,246,16,230,244,1,198,93,193,42,160,87,231,3,46,65,
+250,65,65,226,125,7,98,4,140,10,0,90,161,212,136,214,97,37,129,231,
+166,26,225,227,143,128,65,1,51,54,67,123,128,79,117,156,166,1,67,3,
+245,208,2,224,42,0,225,146,5,228,238,0,225,127,104,65,128,67,155,131,
+133,234,82,1,226,68,10,226,51,6,215,179,96,206,240,0,4,236,114,19,
+69,245,180,79,100,54,104,212,229,92,3,65,227,136,143,132,247,65,217,65,
+15,154,77,64,55,192,162,199,111,170,134,225,114,0,129,99,115,102,118,165,
+192,121,0,54,172,95,1,80,32,139,252,0,85,100,130,64,40,250,156,2,
+225,100,0,96,106,0,80,134,169,193,192,0,83,234,178,35,64,11,0,83,
+201,78,194,36,160,73,220,163,1,49,50,69,155,183,142,196,253,134,185,96,
+124,128,34,97,132,160,34,230,161,1,167,250,96,195,187,96,1,32,83,128,
+196,229,147,8,71,169,96,62,224,25,12,108,93,224,25,12,125,185,108,106,
+231,244,4,181,77,97,156,64,134,96,195,245,89,2,131,82,104,151,245,111,
+4,133,3,65,114,236,74,1,64,63,71,255,227,15,4,70,89,235,129,30,
+3,79,32,35,49,91,220,167,17,226,249,7,235,120,25,96,0,197,167,232,
+106,1,96,249,74,102,160,24,214,161,93,75,193,201,224,7,7,64,0,203,
+135,242,238,4,206,96,169,38,225,103,9,225,253,0,224,131,4,128,130,226,
+59,3,128,61,79,144,96,208,1,48,48,94,15,1,48,48,74,170,136,11,
+96,0,64,51,64,35,116,239,155,23,224,159,0,192,237,224,131,8,96,62,
+224,131,8,96,21,128,79,65,177,230,56,16,2,95,53,54,64,138,238,16,
+2,224,42,14,224,145,10,139,204,74,8,225,91,2,160,168,131,69,224,171,
+7,195,144,224,197,9,208,31,96,25,226,180,4,98,19,161,135,64,107,0,
+55,234,14,0,106,122,1,49,50,103,70,193,244,138,233,101,129,198,150,163,
+210,224,109,8,224,32,19,139,213,132,207,225,87,4,192,24,176,119,229,100,
+2,161,198,224,49,8,96,107,161,137,196,230,102,91,1,95,50,203,53,227,
+170,10,65,41,88,247,1,51,54,131,130,226,100,15,64,33,195,16,236,188,
+0,160,24,75,159,192,59,226,186,37,224,140,0,196,150,224,37,10,96,255,
+145,241,193,113,236,61,0,165,89,237,231,4,229,79,0,235,121,0,224,52,
+22,180,126,224,52,6,224,10,0,224,52,13,233,77,0,224,41,2,192,229,
+139,179,107,148,238,104,17,9,68,97,116,97,46,76,105,115,116,95,91,163,
+2,46,43,43,237,112,0,128,83,230,87,3,227,210,1,224,0,6,196,117,
+163,86,228,109,9,65,159,233,214,2,5,49,50,54,52,32,67,94,24,98,
+218,64,15,143,188,162,220,70,43,139,227,138,140,231,55,1,110,236,227,181,
+9,96,197,4,82,97,116,105,111,128,198,2,95,109,107,96,13,1,110,97,
+92,251,64,0,128,201,127,12,0,49,142,196,224,17,4,65,124,64,117,140,
+77,70,161,159,179,66,183,67,130,0,53,69,202,2,95,54,49,76,54,102,
+70,96,20,128,10,2,51,53,57,69,222,0,48,76,246,160,5,204,250,129,
+29,140,107,96,66,165,211,7,50,49,52,55,52,56,51,54,163,69,224,219,
+25,11,73,110,116,101,103,101,114,46,95,105,110,116,65,173,1,84,111,160,
+17,224,222,2,101,72,237,100,0,195,127,233,217,0,64,237,226,152,0,224,
+111,30,161,77,1,105,110,224,112,12,227,223,6,230,183,0,64,0,65,76,
+173,53,129,76,131,138,0,95,93,153,225,9,3,96,145,195,86,103,57,97,
+101,64,70,227,119,0,0,85,225,122,3,64,0,0,89,169,120,148,92,108,
+133,0,51,127,177,225,149,1,224,92,1,229,158,0,234,151,2,224,170,1,
+2,85,32,65,96,36,99,156,74,27,161,177,5,50,51,50,32,95,53,103,
+161,65,225,208,246,129,176,64,220,140,13,3,83,32,85,32,224,107,2,128,
+150,99,128,64,2,163,141,160,250,237,46,1,224,226,7,224,255,0,224,229,
+2,99,204,104,132,137,237,83,113,128,26,65,69,224,12,0,224,156,0,3,
+95,49,57,55,64,138,101,99,224,254,3,0,58,98,160,64,172,128,21,2,
+51,50,55,75,10,64,22,139,17,143,51,170,211,224,194,4,64,184,132,186,
+64,8,3,95,49,51,48,64,175,129,169,1,50,50,96,201,138,26,96,54,
+0,79,227,251,0,202,241,110,52,232,78,0,206,96,177,107,170,66,64,85,
+0,55,233,23,0,0,51,164,36,64,157,139,130,134,178,98,66,234,188,1,
+165,74,96,13,229,24,13,196,164,128,47,165,27,224,13,0,192,63,224,64,
+3,241,12,0,224,67,0,106,183,224,69,4,192,71,193,20,129,44,224,88,
+4,97,42,231,109,0,192,178,225,93,3,193,7,210,198,147,1,1,48,49,
+231,232,14,128,32,171,94,0,49,90,144,131,115,65,127,98,85,0,51,104,
+142,1,48,48,72,174,233,93,1,225,144,9,226,151,1,178,250,96,89,0,
+80,97,156,128,42,0,48,232,108,0,236,51,1,0,95,110,48,200,246,235,
+218,4,64,0,142,225,160,248,135,66,182,0,181,180,99,124,114,107,236,99,
+0,224,51,1,226,96,0,131,1,198,99,0,49,132,177,192,130,232,184,5,
+68,79,225,113,0,193,200,225,87,14,65,140,129,144,224,16,1,218,1,96,
+142,132,152,160,93,128,156,192,200,0,95,78,49,199,52,1,49,49,114,180,
+224,164,11,224,17,3,231,26,0,142,6,96,29,226,159,0,132,121,0,51,
+77,212,0,80,67,139,0,48,229,116,2,7,92,34,92,34,44,48,58,48,
+101,93,161,97,96,219,224,41,21,132,187,96,0,69,255,0,49,234,200,3,
+0,109,229,169,0,96,118,0,52,64,204,250,250,2,67,155,0,83,91,141,
+225,58,7,180,7,160,239,160,62,155,39,96,11,1,52,48,66,151,212,95,
+66,23,133,36,224,126,6,0,112,245,185,2,123,89,64,41,97,49,67,219,
+0,54,174,228,132,26,251,63,14,131,143,227,210,4,245,86,4,66,220,202,
+218,224,39,2,133,22,182,129,226,240,1,129,135,174,173,245,204,10,161,117,
+64,157,239,107,0,96,152,128,105,111,163,65,0,144,229,234,11,1,177,188,
+248,60,3,194,73,227,114,2,238,81,7,230,150,0,164,66,99,63,64,58,
+97,8,165,107,250,65,0,154,145,243,31,6,96,14,140,148,101,84,204,177,
+227,197,1,229,81,3,149,6,169,169,132,51,162,218,225,184,6,210,72,129,
+38,143,247,0,53,173,82,227,251,1,65,38,143,206,100,131,0,49,105,248,
+65,115,64,24,137,187,76,4,66,38,141,45,100,61,64,7,64,116,64,36,
+181,184,236,194,3,194,4,193,57,133,214,97,22,100,41,194,170,96,45,202,
+95,131,106,128,5,225,80,1,161,117,229,126,4,152,96,129,14,64,21,138,
+1,97,141,98,250,133,136,1,52,57,96,242,144,199,193,6,120,253,133,124,
+136,31,160,200,161,9,136,233,73,116,0,52,143,120,225,83,6,0,118,210,
+132,64,72,98,248,165,36,164,204,164,225,224,179,0,253,151,4,228,207,0,
+133,46,160,186,64,15,231,125,0,131,43,160,2,229,221,1,133,114,128,21,
+64,43,67,44,224,35,1,128,30,65,210,230,55,0,211,253,0,80,73,42,
+73,170,213,214,177,223,229,252,0,225,169,0,229,57,2,229,141,1,128,13,
+237,71,8,210,229,192,192,231,147,3,161,181,64,166,0,48,225,58,3,0,
+68,74,141,13,66,111,111,108,46,111,116,104,101,114,119,105,115,101,228,88,
+0,212,220,224,249,0,245,107,4,65,132,129,28,245,87,0,225,53,1,129,
+220,128,24,0,58,129,243,191,212,99,69,1,80,32,91,189,0,90,101,174,
+202,133,64,11,0,50,149,228,244,250,15,250,214,1,255,61,0,192,0,133,
+131,74,164,72,215,96,115,137,125,68,39,77,30,196,215,122,39,96,4,161,
+252,196,60,183,128,64,47,216,209,229,183,1,167,93,226,65,1,194,243,107,
+34,102,201,215,168,0,51,89,114,192,208,96,19,96,246,128,221,132,135,66,
+29,161,233,224,144,5,224,37,0,163,156,226,197,0,97,247,199,234,192,151,
+225,4,0,100,249,96,8,232,160,2,65,15,170,233,64,107,203,136,64,22,
+128,53,65,35,234,3,3,163,210,232,72,2,96,144,0,51,102,168,224,28,
+0,190,41,128,1,212,252,224,16,0,233,248,4,192,1,169,211,224,19,2,
+65,198,224,16,16,197,223,232,80,1,193,235,192,21,101,142,224,163,3,143,
+51,229,240,5,194,180,224,176,4,169,52,226,211,3,226,220,4,224,42,2,
+228,33,0,68,111,70,89,205,221,224,60,4,248,69,2,194,18,128,33,224,
+191,1,161,58,128,24,196,134,235,107,2,227,229,1,229,129,1,220,15,220,
+21,96,27,64,42,67,194,76,170,249,236,4,224,100,1,192,198,224,71,8,
+167,4,96,70,100,51,250,51,9,1,95,49,245,159,0,162,197,225,255,0,
+227,148,13,241,70,2,195,159,161,201,225,186,6,129,173,224,0,0,129,89,
+224,198,1,224,43,0,237,96,1,224,159,4,245,178,8,167,113,66,248,99,
+46,164,250,96,68,224,53,0,103,126,245,221,4,167,163,224,222,0,226,220,
+0,64,183,249,25,8,224,116,7,229,93,1,73,174,0,51,129,151,129,10,
+163,189,196,156,224,20,2,162,215,64,0,67,110,0,54,134,199,73,216,0,
+80,103,202,79,225,230,175,3,70,24,131,194,225,205,1,128,9,128,90,227,
+11,1,64,60,215,239,94,12,0,57,97,174,2,52,52,49,193,182,111,176,
+1,51,52,97,31,64,44,0,51,195,234,64,28,103,131,100,242,64,35,0,
+49,128,139,136,49,250,125,13,225,207,4,166,248,64,0,64,62,0,48,128,
+62,135,164,132,34,128,203,100,28,194,225,195,138,195,26,98,157,164,106,229,
+104,0,226,48,5,229,76,0,160,171,64,101,199,224,100,243,246,50,0,1,
+50,52,173,194,1,64,67,69,93,228,149,0,161,226,101,221,96,181,229,33,
+0,0,58,129,5,111,182,67,221,1,57,49,105,220,0,50,176,145,88,219,
+64,34,134,68,136,185,0,51,114,204,0,51,142,15,169,139,65,102,225,131,
+3,224,169,1,64,38,64,93,3,49,51,51,52,95,73,64,22,168,196,146,
+65,223,166,72,98,64,31,201,238,132,223,128,97,129,118,70,47,0,80,160,
+213,240,77,0,228,123,6,64,72,131,23,192,33,227,166,1,224,27,0,230,
+211,3,192,20,129,143,134,255,0,85,162,230,160,149,224,28,8,198,226,169,
+21,224,29,6,96,98,224,29,16,96,20,224,29,1,100,60,130,38,131,185,
+228,14,1,145,127,131,196,227,132,6,238,0,0,65,48,130,209,99,59,132,
+82,103,143,232,44,5,229,197,2,236,80,3,192,7,236,22,2,107,5,225,
+50,0,123,66,230,56,4,230,162,0,225,68,2,64,56,234,51,4,224,56,
+1,224,19,3,224,62,2,161,22,111,176,230,32,3,160,108,192,28,64,16,
+115,203,198,116,130,231,232,244,0,128,41,227,142,0,225,252,1,128,0,238,
+211,8,27,115,114,99,47,77,105,99,114,111,72,115,47,73,110,116,77,97,
+112,46,104,115,92,34,44,55,51,58,49,238,72,2,97,86,132,6,131,21,
+64,129,130,212,64,135,0,95,67,141,64,34,131,234,236,128,5,64,20,75,
+216,64,145,64,35,195,168,80,226,97,243,132,0,129,13,231,148,0,193,159,
+81,38,227,159,4,160,40,234,114,0,235,15,0,160,239,0,49,213,218,225,
+225,2,193,80,235,62,0,0,80,244,115,2,226,250,4,253,218,0,64,73,
+0,56,64,37,137,29,192,7,167,108,192,60,97,112,192,92,64,131,96,130,
+134,170,228,165,1,160,12,0,50,67,215,0,58,132,14,132,0,1,49,57,
+96,46,132,49,64,30,128,22,1,50,50,68,23,64,22,193,40,96,42,160,
+224,68,137,70,175,64,34,0,54,224,50,0,0,52,114,48,64,19,198,57,
+165,87,194,103,136,223,224,237,3,164,15,225,46,1,243,55,2,99,124,96,
+88,130,103,224,47,5,131,193,193,118,245,96,2,160,25,96,237,237,32,2,
+133,138,199,40,229,246,0,226,226,3,233,25,10,160,24,236,240,1,232,199,
+2,227,88,3,128,134,224,133,1,231,160,15,224,75,59,232,54,2,224,75,
+23,167,158,224,75,17,227,152,2,224,248,1,229,156,0,181,249,117,237,137,
+160,160,36,236,122,1,224,32,7,224,124,0,228,53,4,96,41,224,40,6,
+224,41,8,224,11,0,160,48,224,47,7,98,204,65,209,64,7,133,108,66,
+107,168,104,161,174,111,40,225,139,27,224,40,26,129,104,244,221,0,225,69,
+23,128,175,131,59,96,12,224,6,1,194,200,224,30,7,224,31,1,187,171,
+224,34,2,224,35,14,192,37,224,30,8,224,38,1,136,91,66,235,225,49,
+6,65,46,134,152,0,75,131,222,201,85,64,1,171,28,224,10,6,225,144,
+1,0,32,200,250,64,56,133,100,234,93,4,64,28,64,26,133,91,0,73,
+64,95,68,48,3,10,65,32,80,96,11,232,173,0,177,161,128,157,137,229,
+64,183,0,75,74,187,65,114,64,44,132,119,224,44,3,133,88,147,10,1,
+52,51,250,179,10,70,55,0,33,134,47,0,73,96,234,68,248,162,25,133,
+197,171,145,194,193,192,132,249,154,1,128,31,204,107,228,32,9,228,27,11,
+231,40,7,129,54,228,16,33,224,63,0,163,116,227,254,32,128,56,166,88,
+227,229,28,225,66,1,224,11,5,224,12,17,227,113,7,65,85,133,219,91,
+38,0,50,74,46,102,104,72,251,64,27,244,21,1,237,47,1,192,27,130,
+120,0,90,73,90,64,14,194,122,0,90,104,252,64,17,188,50,132,47,243,
+197,3,234,52,3,64,5,128,25,245,45,0,151,122,169,179,89,28,0,52,
+231,51,1,251,94,1,168,50,136,39,134,0,192,99,108,243,226,240,1,247,
+222,9,128,21,0,51,126,59,149,57,64,118,149,92,237,149,2,129,212,109,
+199,231,157,0,64,54,0,57,128,223,188,53,103,249,235,102,4,96,11,136,
+135,0,58,128,46,225,7,3,198,188,127,9,166,184,246,78,5,96,223,160,
+143,3,67,32,95,54,151,24,128,135,237,49,3,128,82,253,8,0,0,56,
+82,133,118,16,0,53,94,195,0,49,67,185,96,180,65,0,2,32,95,50,
+125,0,128,0,3,95,50,49,50,238,122,14,162,142,64,184,210,212,105,73,
+193,57,138,115,230,165,1,192,176,226,233,0,151,244,200,165,224,40,24,134,
+18,227,157,3,224,40,15,229,12,0,168,42,227,42,2,160,33,248,78,1,
+237,148,0,194,104,252,8,7,184,174,101,89,0,48,160,89,224,20,3,225,
+45,0,96,108,72,196,224,111,10,185,129,224,52,2,235,51,3,224,120,6,
+161,17,224,158,3,225,29,25,172,131,224,39,24,170,199,246,105,2,204,94,
+224,38,4,73,240,64,22,204,86,224,156,0,192,24,249,10,1,251,197,1,
+224,40,4,201,186,64,243,105,149,203,186,1,49,48,80,95,128,6,85,149,
+131,76,1,49,50,78,248,224,0,0,64,88,224,82,8,235,131,2,64,116,
+129,221,195,24,1,53,54,93,63,96,91,226,240,1,1,51,48,249,241,0,
+221,90,131,198,131,35,224,104,15,161,76,224,229,3,242,86,0,254,121,13,
+162,3,224,41,4,226,125,0,104,72,237,56,1,146,3,197,154,128,196,128,
+174,1,48,48,67,214,192,11,132,220,142,170,236,209,1,91,136,64,6,235,
+220,0,160,0,128,72,230,79,9,163,101,161,141,226,108,9,225,166,1,238,
+66,1,193,71,193,37,226,138,4,65,171,199,174,95,196,99,249,0,80,143,
+5,133,208,64,155,168,93,160,23,72,35,64,24,204,30,97,68,69,177,65,
+210,128,179,161,198,1,49,50,108,169,131,225,248,176,5,64,141,205,137,65,
+1,144,161,65,38,231,236,2,80,243,199,13,243,128,0,224,25,9,138,94,
+67,139,0,56,176,209,1,95,50,81,86,69,238,244,130,5,0,35,149,198,
+232,124,7,10,116,117,112,108,101,67,111,110,115,116,114,174,170,85,3,64,
+75,224,35,1,1,40,41,218,1,64,171,225,17,1,132,89,161,18,187,17,
+225,123,0,161,163,120,201,227,108,1,65,212,164,245,242,177,0,224,52,0,
+227,231,1,137,167,224,40,0,160,226,2,49,50,57,82,110,188,206,147,142,
+194,249,130,108,1,50,53,115,152,74,130,0,50,157,175,128,58,181,219,239,
+226,0,239,8,0,250,236,8,0,120,224,234,0,243,113,0,166,185,230,162,
+0,225,32,9,16,67,111,110,116,114,111,108,46,69,120,99,101,112,116,105,
+111,110,73,206,8,101,114,110,97,108,46,112,97,116,64,9,8,77,97,116,
+99,104,70,97,105,108,129,100,135,14,0,53,128,84,1,50,57,114,218,70,
+178,1,49,50,155,209,96,128,207,227,1,80,32,99,150,98,147,96,43,193,
+103,161,53,64,65,73,51,103,133,2,49,50,57,153,162,97,43,240,71,1,
+207,175,100,195,0,75,200,29,196,4,188,226,212,227,90,63,71,255,227,42,
+0,193,68,167,182,0,50,138,95,224,46,7,255,208,5,1,57,51,103,185,
+143,52,224,106,1,225,214,2,230,248,5,242,40,1,192,5,128,74,230,10,
+1,224,55,0,230,25,1,96,0,128,66,224,1,1,231,69,5,202,110,64,
+0,226,158,9,224,140,5,224,77,9,224,75,5,199,55,228,131,4,248,78,
+5,216,18,253,189,3,231,176,6,96,23,69,92,124,236,224,116,4,192,83,
+231,189,7,224,34,2,153,240,161,3,129,21,224,84,0,96,66,96,111,128,
+17,231,70,12,243,124,6,231,26,8,235,217,2,224,115,5,224,165,3,138,
+123,1,95,52,67,25,2,95,49,48,152,41,224,34,0,219,210,225,112,3,
+249,42,2,221,217,131,144,234,137,0,128,0,99,203,241,68,1,237,182,1,
+233,49,6,225,188,3,228,50,0,193,114,225,208,0,192,77,64,80,115,6,
+249,224,15,242,182,4,1,50,57,128,214,223,71,192,10,234,116,11,0,54,
+234,116,16,96,142,169,43,196,214,171,86,192,102,117,189,227,55,1,128,41,
+226,162,4,64,27,129,84,231,8,10,243,161,10,233,173,16,224,129,14,0,
+54,224,129,5,225,64,1,231,93,9,226,183,0,97,77,226,129,0,224,83,
+5,231,117,0,160,85,243,244,16,224,81,4,163,9,135,146,1,95,56,187,
+43,135,53,235,176,12,165,193,248,113,2,100,248,230,156,2,96,253,102,156,
+96,228,224,25,2,96,64,160,25,199,201,231,226,6,98,0,236,11,1,193,
+59,245,69,5,226,169,0,225,10,19,225,95,1,225,9,17,64,111,199,89,
+166,109,128,6,134,37,64,5,0,54,230,164,2,2,115,101,113,167,171,64,
+56,250,88,1,192,168,226,15,1,0,85,231,13,8,227,195,0,151,50,224,
+13,9,132,44,228,70,0,128,197,224,66,2,134,2,141,236,224,65,3,160,
+119,2,39,32,85,79,55,247,32,17,6,68,101,115,117,103,97,114,151,33,
+5,52,49,49,58,49,48,247,35,2,227,212,3,129,85,227,204,3,64,0,
+240,212,4,224,2,6,224,71,1,230,52,3,229,39,1,192,83,230,58,1,
+224,191,1,224,197,6,192,10,111,127,224,85,11,229,68,8,224,96,4,224,
+102,8,224,103,6,224,55,5,230,170,11,224,50,14,96,98,230,32,4,224,
+52,26,224,195,3,224,31,11,253,72,2,225,95,12,249,116,13,224,23,1,
+205,96,233,198,3,194,60,224,8,10,96,242,224,11,2,169,183,195,25,128,
+68,228,148,8,225,154,1,131,114,230,85,4,192,66,128,11,226,174,2,101,
+217,163,81,0,51,169,92,192,83,229,109,5,231,189,4,138,167,198,74,146,
+83,236,170,2,192,165,225,6,1,128,204,140,228,228,25,2,76,236,120,221,
+64,187,199,105,187,155,157,253,228,69,3,225,215,11,64,41,141,188,0,90,
+209,238,216,87,237,59,4,204,205,194,177,64,77,196,126,229,114,1,192,209,
+1,95,54,152,106,96,15,64,164,224,103,2,128,137,224,136,5,180,226,224,
+38,5,66,54,1,95,57,251,27,4,226,96,12,226,179,8,248,76,2,224,
+48,12,226,175,2,224,26,7,226,170,1,226,159,7,192,33,226,180,9,226,
+155,26,226,134,27,226,48,13,130,42,128,35,224,122,3,128,86,226,16,1,
+196,51,96,21,129,112,64,43,130,30,128,24,226,31,2,160,62,162,34,192,
+122,226,37,9,193,73,128,46,175,176,128,36,255,253,0,128,110,66,48,1,
+50,53,78,147,192,0,226,49,0,96,54,226,37,1,226,30,0,3,95,54,
+32,85,226,11,5,109,119,130,10,64,47,182,239,224,0,2,225,148,9,228,
+79,3,224,168,0,224,11,15,228,24,39,128,86,228,178,6,64,56,0,48,
+230,243,4,196,214,227,177,10,226,60,9,85,250,0,50,224,62,4,226,63,
+8,160,101,224,104,5,132,132,109,202,0,50,222,88,230,208,7,193,205,192,
+1,224,170,10,226,192,5,97,125,161,59,143,220,105,6,109,233,235,53,0,
+194,102,169,234,192,232,103,252,129,226,128,66,66,17,170,185,96,164,225,187,
+1,128,141,232,42,5,64,17,64,49,64,41,160,104,162,132,80,127,130,82,
+83,15,0,52,189,169,228,202,2,100,249,1,49,50,86,28,128,8,93,162,
+80,179,2,49,50,56,234,148,1,99,204,182,77,128,167,96,17,192,93,224,
+83,0,225,184,1,163,77,66,175,226,174,0,224,186,13,153,23,0,57,161,
+134,226,209,5,0,83,161,187,231,117,3,226,229,4,164,241,97,57,0,85,
+90,105,228,253,0,224,39,5,131,13,192,38,224,37,2,160,152,192,227,129,
+122,160,227,0,90,111,21,1,83,32,82,5,161,219,229,246,4,244,111,2,
+235,41,3,233,223,0,192,59,192,249,228,52,3,226,90,3,196,58,192,19,
+193,155,224,111,13,224,59,5,165,127,225,122,2,238,224,9,106,193,224,55,
+0,96,93,194,99,230,155,3,228,128,19,160,0,74,196,241,108,0,169,54,
+97,101,227,112,0,160,203,224,216,5,234,30,9,233,190,4,195,53,129,73,
+163,94,192,224,234,252,13,224,61,0,206,159,228,88,3,174,95,160,232,101,
+182,128,97,160,101,187,225,1,49,56,162,3,0,75,64,7,96,4,96,13,
+160,128,67,1,121,77,98,155,160,242,64,76,194,146,86,1,0,55,213,96,
+2,49,50,56,123,12,0,50,128,84,64,8,140,244,2,50,56,56,96,68,
+64,75,244,136,1,4,64,85,32,95,55,101,47,224,215,2,225,209,2,224,
+21,24,224,236,0,239,96,5,166,73,224,60,6,160,49,195,241,64,250,102,
+234,64,27,163,168,192,99,128,48,82,46,164,43,224,90,0,180,2,64,28,
+227,229,0,98,66,96,29,117,55,96,90,1,55,52,97,94,116,219,64,14,
+96,70,131,31,161,167,194,42,129,71,229,212,5,195,10,224,118,0,226,56,
+6,224,25,1,229,226,4,241,87,7,134,169,224,17,1,226,69,5,232,155,
+0,230,28,0,224,132,1,232,103,1,143,207,98,160,132,234,2,32,95,55,
+65,228,160,88,128,135,208,139,192,249,192,0,130,83,130,74,247,249,0,128,
+23,161,248,1,75,51,192,9,96,0,66,34,254,182,1,128,209,167,74,162,
+193,192,5,235,38,0,224,209,0,86,103,187,159,96,17,128,208,251,179,2,
+160,79,161,75,228,206,0,134,130,160,88,66,170,142,205,102,172,192,7,136,
+183,162,223,134,35,1,56,53,129,167,97,70,133,54,224,14,5,2,95,54,
+50,163,23,160,0,252,23,1,233,66,1,228,43,2,225,236,0,196,140,225,
+2,1,98,99,64,115,235,64,3,96,0,113,222,246,14,2,0,110,142,155,
+224,22,7,1,116,116,182,38,99,144,126,49,0,80,130,0,64,130,153,154,
+131,202,183,148,0,54,132,29,0,56,87,146,129,238,189,59,225,189,13,64,
+88,0,54,196,31,64,60,239,222,1,79,95,208,128,194,82,132,155,194,130,
+224,7,1,193,21,160,59,81,74,128,57,161,207,112,209,0,79,198,104,161,
+50,227,2,1,193,56,230,123,2,99,175,226,13,1,244,86,2,229,84,15,
+229,86,0,68,231,230,164,5,224,48,11,225,164,3,229,98,0,130,163,143,
+78,128,44,233,206,0,131,146,228,65,6,227,123,4,196,204,160,79,130,174,
+224,28,6,160,104,96,97,131,88,64,47,237,97,2,192,94,226,75,0,128,
+23,240,233,8,12,108,105,98,47,68,97,116,97,47,76,105,115,116,144,227,
+4,53,51,54,58,53,240,226,2,224,0,5,225,156,21,101,2,225,162,0,
+228,239,3,208,94,128,215,240,114,0,224,215,26,233,78,2,128,204,64,44,
+154,161,226,10,0,224,39,12,64,15,224,142,3,160,0,66,171,243,69,1,
+66,32,227,121,0,224,2,1,225,70,2,128,1,105,132,200,161,224,23,2,
+192,189,224,26,0,235,186,5,229,88,2,224,52,0,228,128,1,224,74,7,
+226,62,4,197,189,230,50,1,160,52,224,41,1,167,202,96,82,224,23,0,
+224,17,6,96,8,128,43,251,135,1,133,171,251,112,0,245,48,0,224,93,
+2,96,36,233,131,1,224,89,1,224,8,0,92,51,193,103,69,40,94,99,
+0,49,243,254,10,1,61,61,162,77,96,38,158,132,1,50,56,236,64,0,
+131,99,233,155,2,128,1,166,156,224,16,16,64,117,126,127,84,137,173,6,
+83,201,64,145,253,233,1,253,73,1,224,1,1,132,146,245,184,6,225,212,
+8,160,110,224,22,7,239,234,0,224,45,28,224,22,0,193,193,228,172,1,
+224,14,0,224,51,3,179,129,193,119,172,154,189,159,225,107,17,2,79,32,
+35,70,104,162,228,225,102,13,64,94,226,65,1,226,125,3,226,87,4,99,
+87,160,50,192,0,160,142,199,112,231,228,0,67,73,214,118,1,80,32,103,
+35,155,244,64,117,1,10,65,92,6,64,12,149,240,0,80,134,42,91,121,
+128,3,70,6,2,90,32,90,166,125,232,19,21,139,110,2,95,52,56,64,
+172,159,217,98,216,0,90,129,99,128,193,64,20,66,156,160,20,232,172,6,
+237,22,2,64,96,236,251,1,128,65,194,226,1,85,32,224,29,2,224,71,
+10,224,59,4,96,31,160,129,103,219,224,28,0,224,109,2,224,36,1,233,
+62,7,69,143,0,48,65,201,142,101,64,232,139,100,226,45,5,66,196,0,
+58,110,148,129,106,229,128,8,229,83,0,134,134,64,102,160,23,229,19,8,
+230,34,1,64,81,233,106,0,119,36,96,39,66,223,161,99,229,163,1,228,
+78,0,128,230,224,70,1,128,135,224,86,2,192,148,160,154,64,100,216,229,
+96,182,128,90,197,48,237,63,3,197,43,250,12,4,128,23,161,15,252,147,
+3,0,85,174,83,232,4,2,238,146,19,224,37,10,129,132,96,36,195,165,
+97,58,0,54,75,185,162,79,137,117,0,54,129,56,0,50,133,42,96,211,
+0,54,130,143,2,56,57,52,239,159,9,0,49,67,27,239,179,11,224,19,
+7,224,39,11,139,70,224,239,11,2,95,56,57,66,93,1,50,54,131,25,
+67,65,192,18,160,152,224,57,9,144,124,4,75,32,95,53,50,132,7,64,
+12,0,83,163,38,224,61,5,131,137,160,98,159,217,0,57,160,85,160,90,
+224,168,5,66,218,224,110,7,64,99,224,168,2,96,69,192,155,96,134,224,
+175,7,224,196,12,225,19,7,0,49,64,240,224,19,7,64,155,224,126,7,
+132,127,192,81,0,56,91,68,128,100,224,98,7,224,56,6,0,49,74,215,
+224,183,5,224,60,2,224,161,11,225,12,6,0,49,64,24,224,84,7,64,
+64,224,122,8,224,78,12,224,37,2,229,173,0,224,239,6,225,2,11,64,
+238,224,19,7,225,149,10,0,49,129,149,225,223,3,225,127,10,224,240,0,
+224,62,8,146,45,224,60,9,0,85,114,87,226,72,3,161,240,133,27,224,
+86,7,225,51,7,65,115,224,106,6,65,211,225,11,2,141,219,225,189,9,
+226,97,15,225,13,8,64,248,224,18,6,225,168,10,129,167,226,252,7,0,
+55,197,163,227,103,27,64,169,179,223,243,230,0,226,34,7,226,175,10,225,
+88,16,226,35,18,225,80,2,100,136,138,200,228,136,13,64,255,224,134,6,
+64,169,224,134,6,64,97,226,30,24,224,20,23,224,237,31,224,56,6,227,
+14,22,225,223,7,64,240,136,111,160,240,225,181,8,118,155,226,135,4,160,
+54,0,51,224,54,1,136,119,224,118,5,224,13,13,226,10,4,64,69,136,
+201,160,69,219,34,243,14,4,225,82,0,224,25,13,101,82,230,209,8,100,
+63,227,139,12,230,180,7,96,63,229,74,3,228,172,4,224,49,11,96,139,
+225,41,7,224,49,3,224,141,8,130,205,225,228,11,224,91,7,100,173,224,
+183,11,72,216,1,52,51,236,2,2,25,72,97,115,76,111,99,32,69,68,
+101,102,58,32,117,110,105,109,112,108,101,109,101,110,116,101,100,140,26,65,
+92,137,227,80,141,1,57,52,65,56,214,141,96,92,160,35,137,30,225,253,
+6,192,119,0,58,134,179,224,68,4,0,80,198,251,224,74,7,0,54,136,
+251,226,17,0,0,75,224,78,8,224,15,9,224,232,8,64,71,136,222,3,
+95,49,49,57,84,69,120,56,200,48,73,83,86,67,224,19,0,64,47,0,
+54,128,47,3,54,32,95,57,85,13,4,95,49,48,53,48,105,223,64,45,
+174,148,97,61,136,252,120,253,225,72,1,11,105,109,112,111,115,115,105,98,
+108,101,58,32,129,58,130,95,153,36,169,233,0,49,135,191,96,234,97,10,
+0,51,157,84,186,135,224,86,0,2,79,32,35,74,162,209,77,96,56,96,
+40,239,45,0,64,150,163,113,224,224,4,134,83,204,166,249,162,0,160,120,
+3,32,95,51,48,178,247,224,107,3,76,60,208,18,224,23,0,160,53,1,
+50,57,98,101,224,44,1,87,120,96,44,224,31,4,64,0,225,81,0,64,
+132,64,160,131,219,0,80,76,107,89,248,114,221,227,156,17,102,86,234,84,
+15,89,20,178,171,226,238,9,96,57,185,95,192,36,224,37,9,100,45,161,
+27,250,187,6,240,137,5,238,130,4,64,187,131,0,66,140,172,50,5,66,
+32,95,55,50,56,130,13,226,2,1,7,99,111,110,65,114,105,116,121,175,
+84,3,67,32,95,54,90,175,236,232,3,128,132,129,199,64,89,131,54,0,
+66,251,187,2,64,6,106,127,130,61,0,56,252,64,2,130,67,1,50,53,
+65,112,2,95,52,52,64,157,162,86,224,35,1,2,95,50,51,99,2,0,
+58,156,65,96,182,178,168,140,43,121,60,236,236,0,247,1,0,65,204,64,
+16,140,209,65,227,108,127,224,153,3,225,181,1,117,207,226,213,0,224,186,
+4,96,76,236,246,0,252,146,3,155,227,220,107,64,32,224,186,6,248,245,
+5,112,32,64,138,163,198,225,32,7,225,28,6,225,25,0,1,95,51,111,
+10,224,91,5,216,46,64,79,0,54,193,114,1,49,50,81,112,67,134,2,
+32,64,80,140,181,64,31,167,184,96,29,0,83,76,104,192,136,195,110,96,
+27,0,50,205,188,96,68,212,20,96,157,0,52,73,65,96,26,96,9,225,
+183,1,224,40,12,0,90,224,40,2,2,95,51,54,101,216,97,34,64,114,
+167,28,128,230,0,48,96,172,128,71,189,78,224,224,1,0,49,125,19,183,
+26,100,10,128,11,0,50,129,55,192,80,131,133,0,73,67,145,64,70,64,
+92,0,51,96,143,225,169,3,69,2,225,152,4,0,95,128,80,175,10,64,
+7,129,65,0,54,66,225,64,186,160,194,3,58,49,50,52,130,116,96,97,
+64,18,96,97,0,54,158,100,111,80,80,254,96,47,0,54,128,47,229,165,
+0,241,51,3,66,92,99,142,64,33,129,176,224,33,7,0,57,224,33,2,
+197,159,0,89,98,22,214,34,64,214,66,241,97,53,0,48,145,118,64,6,
+2,95,49,50,253,132,1,163,28,160,5,224,21,10,225,193,0,129,183,96,
+80,132,167,192,105,96,39,131,27,224,42,4,180,120,192,16,208,55,232,50,
+5,224,33,3,242,195,0,224,16,16,224,67,8,248,196,0,224,50,17,252,
+111,1,64,210,197,21,224,168,2,252,145,0,224,17,0,97,34,129,250,225,
+12,1,187,69,192,38,69,13,224,13,1,64,48,102,7,180,157,64,42,103,
+227,2,49,48,52,98,77,196,101,128,38,165,106,252,212,0,160,126,228,55,
+0,160,168,96,29,224,183,2,224,17,11,134,43,224,137,1,128,155,96,16,
+224,39,6,225,224,1,225,11,19,128,80,64,168,233,51,0,224,71,9,225,
+11,0,224,118,5,151,214,163,52,224,208,0,244,46,1,0,79,99,246,3,
+51,56,32,79,96,96,194,194,224,100,5,130,76,160,94,160,148,182,169,193,
+105,109,162,224,133,0,226,222,15,204,239,160,229,88,224,127,79,99,129,224,
+64,3,194,201,160,90,128,21,192,76,224,82,2,225,204,6,128,96,224,82,
+2,193,213,224,22,6,128,54,96,204,133,135,67,253,0,49,251,4,3,0,
+104,246,134,2,96,43,224,41,16,1,118,115,248,255,1,226,121,0,113,195,
+224,14,0,1,48,48,167,44,151,87,231,38,2,1,48,48,64,143,65,12,
+248,124,10,226,232,2,224,77,1,99,9,105,241,130,217,102,36,224,26,2,
+162,35,130,111,68,137,213,116,64,1,1,80,32,143,226,161,197,0,32,83,
+131,128,37,133,214,192,35,64,34,0,80,133,12,133,158,134,59,101,144,244,
+149,1,158,226,128,51,96,182,130,93,192,218,64,136,96,10,0,56,102,75,
+98,138,233,197,9,64,0,5,95,53,54,54,32,95,118,31,128,123,64,120,
+235,226,0,0,53,73,180,106,231,97,126,0,49,220,68,0,52,171,224,1,
+49,50,64,147,2,49,50,50,66,196,67,223,2,50,51,48,164,135,192,15,
+215,225,96,165,160,32,244,117,1,66,245,200,90,2,49,50,51,188,213,2,
+49,50,51,147,221,0,79,70,219,160,45,64,64,224,56,2,134,77,106,77,
+64,54,225,65,1,97,132,129,65,65,144,181,56,224,82,22,64,44,134,55,
+128,81,225,185,1,0,80,87,30,224,81,1,167,131,224,248,43,0,49,224,
+248,4,206,163,0,52,65,143,0,51,99,85,3,50,57,32,64,235,82,3,
+64,38,167,150,224,38,7,227,4,1,1,91,93,222,50,64,129,1,10,65,
+227,31,2,4,68,97,116,97,46,92,48,6,95,84,121,112,101,46,34,96,
+193,64,61,226,148,0,117,81,224,10,6,194,154,96,44,129,101,97,5,171,
+122,96,22,199,166,1,50,50,120,58,67,156,96,38,104,201,71,218,96,37,
+169,59,132,36,77,143,254,236,5,0,102,191,3,66,100,184,179,138,16,224,
+40,14,96,83,193,152,0,67,106,119,65,132,0,51,74,217,224,45,1,1,
+40,41,96,45,3,80,32,95,51,83,102,66,89,202,228,0,49,97,163,153,
+27,96,28,100,98,75,215,66,33,1,56,48,187,101,250,149,1,96,158,64,
+32,135,89,1,95,56,77,46,64,133,162,5,5,54,32,95,55,48,54,134,
+33,66,25,68,168,128,198,0,48,192,94,96,15,98,220,1,48,56,96,24,
+64,6,128,87,100,169,64,77,205,12,64,18,227,29,0,64,24,129,252,246,
+185,95,196,57,64,171,0,57,204,240,208,57,128,154,64,0,246,188,16,117,
+74,128,11,135,186,0,95,133,187,132,120,3,51,51,53,32,243,117,0,224,
+78,2,242,148,8,246,178,19,2,49,50,49,101,8,160,60,128,118,224,74,
+0,237,205,0,128,196,96,22,224,105,3,246,176,53,224,91,3,185,163,224,
+135,5,168,33,246,181,13,225,31,3,224,165,12,1,49,48,176,223,192,19,
+225,142,0,1,53,56,98,50,253,10,11,246,224,34,192,172,225,205,6,129,
+84,207,37,246,206,72,200,242,224,237,4,208,87,225,166,13,225,105,20,224,
+102,8,66,246,66,186,67,193,225,154,13,224,77,2,0,51,69,69,65,16,
+219,7,226,80,0,97,57,225,82,11,246,255,16,0,83,78,35,233,77,0,
+112,202,235,131,1,64,81,184,173,226,178,6,193,114,224,158,0,224,32,9,
+247,30,50,225,88,4,160,217,113,14,225,16,14,226,126,4,64,5,204,133,
+247,57,13,78,97,227,228,1,224,53,1,202,226,246,95,32,224,130,15,225,
+251,21,224,57,16,226,204,3,221,55,101,64,135,17,225,23,7,64,131,194,
+245,0,58,128,244,229,102,11,64,213,247,151,31,226,231,56,224,30,39,247,
+201,32,192,50,225,247,21,194,254,226,143,10,65,33,136,6,226,95,13,227,
+72,6,98,110,64,51,136,35,224,51,13,172,9,128,99,64,44,0,54,167,
+2,0,80,225,170,13,224,253,4,224,107,5,64,61,136,104,247,234,77,226,
+80,0,195,235,247,228,8,227,21,1,224,36,10,96,120,96,72,175,18,224,
+109,11,131,94,224,249,17,224,88,11,99,115,227,47,13,227,149,7,96,19,
+244,194,3,65,56,225,155,16,102,94,64,8,195,30,0,51,233,236,0,0,
+48,73,236,64,32,1,10,65,67,255,244,239,5,246,242,1,202,144,69,156,
+209,137,64,103,75,23,97,40,236,172,0,64,121,160,43,131,170,0,75,167,
+4,72,39,96,3,160,177,0,48,131,163,101,116,0,90,239,5,0,1,95,
+49,76,170,73,84,64,71,148,99,96,18,233,241,4,0,64,107,81,238,3,
+0,224,31,10,106,18,116,67,224,29,4,1,55,56,98,110,2,56,52,54,
+224,230,2,171,111,224,45,30,170,141,224,36,21,1,45,62,238,198,1,65,
+121,0,48,103,142,64,245,195,119,101,108,96,228,64,21,131,89,171,1,78,
+197,3,104,101,97,100,96,74,249,208,8,0,68,76,2,4,84,101,120,116,
+46,64,35,4,58,32,101,109,112,182,145,64,72,0,54,128,72,109,30,2,
+55,32,95,116,146,0,95,107,136,70,198,64,33,131,89,115,191,0,48,237,
+19,4,98,252,141,19,79,97,226,77,0,247,95,4,171,101,94,130,135,36,
+224,32,14,218,69,147,37,64,97,224,41,4,97,50,160,41,96,29,82,212,
+96,37,147,130,194,6,1,50,48,240,29,3,161,85,224,22,7,10,80,114,
+105,109,105,116,105,118,101,115,46,193,119,224,91,4,140,16,0,64,210,208,
+192,0,64,231,207,143,0,85,130,131,225,209,8,160,38,130,245,139,4,79,
+111,0,57,235,5,0,236,211,2,4,115,117,112,101,114,160,160,239,146,3,
+64,64,131,10,150,255,236,219,4,1,36,67,64,49,3,58,49,49,57,131,
+14,67,45,0,66,64,140,225,95,2,1,95,56,140,224,2,49,49,57,169,
+213,64,47,130,72,5,98,115,43,43,46,32,64,15,194,66,64,49,97,65,
+6,49,57,53,32,95,55,57,64,203,88,206,1,48,54,96,127,1,56,52,
+248,26,9,75,200,181,232,113,1,110,58,116,87,64,76,0,80,64,142,0,
+90,96,83,2,56,57,48,196,115,251,143,3,225,11,8,20,100,117,112,108,
+105,99,97,116,101,32,100,101,102,105,110,105,116,105,111,110,32,129,26,0,
+56,67,247,192,0,249,95,7,6,104,101,99,107,68,117,112,162,205,0,49,
+64,92,246,136,0,64,192,0,95,128,195,0,54,64,174,134,55,0,53,65,
+175,108,140,0,50,217,124,141,237,129,134,92,138,64,72,130,244,64,194,140,
+192,0,49,98,18,0,95,111,13,160,15,88,121,0,53,133,32,96,54,224,
+47,3,164,237,1,83,32,71,76,186,128,64,16,66,175,245,37,1,79,111,
+224,7,1,194,249,229,41,2,128,57,96,73,117,147,242,162,2,180,154,195,
+44,241,242,0,224,64,1,96,8,224,61,0,71,21,192,14,192,115,224,13,
+11,247,46,2,150,55,224,48,19,180,162,227,176,0,64,2,128,153,128,108,
+160,46,214,164,84,112,233,18,0,165,254,192,113,192,43,182,46,197,222,64,
+74,178,188,233,214,1,192,62,192,18,181,221,3,95,51,50,48,226,28,2,
+13,92,34,115,114,99,47,77,105,99,114,111,72,115,47,81,3,9,46,104,
+115,92,34,44,51,51,58,53,229,108,2,224,0,5,225,126,21,114,58,225,
+132,0,129,136,128,167,136,87,128,169,160,14,160,185,224,232,1,243,148,0,
+96,65,244,111,5,224,39,10,64,15,244,150,10,66,109,133,109,130,134,132,
+246,112,45,98,163,231,109,7,192,196,128,167,130,47,199,58,224,103,0,128,
+10,207,155,98,137,0,85,254,131,1,1,95,54,102,22,128,123,132,218,103,
+133,245,29,1,226,53,2,129,42,1,75,32,183,203,194,44,192,7,161,214,
+128,9,128,2,161,56,160,13,160,81,225,18,5,224,23,8,224,17,17,193,
+121,226,171,1,162,84,224,123,0,224,119,4,224,61,8,224,64,2,224,65,
+2,96,218,224,46,14,160,93,130,215,247,219,0,65,17,194,6,96,23,105,
+183,228,139,2,249,170,1,225,63,0,224,60,3,96,2,230,128,0,224,137,
+3,221,111,104,177,160,121,64,132,193,215,163,129,224,5,15,70,82,224,58,
+0,225,35,2,138,7,128,87,225,252,0,227,151,1,225,108,14,100,99,227,
+36,0,160,196,160,136,225,216,8,129,67,227,31,0,224,83,0,160,98,102,
+140,226,236,0,227,72,2,224,72,14,225,129,5,224,31,4,129,193,128,87,
+100,199,164,82,152,134,132,72,98,160,128,4,192,33,196,150,64,62,228,181,
+0,129,22,103,82,229,206,1,229,216,2,224,58,9,196,158,84,242,224,42,
+5,195,200,225,119,1,128,222,96,249,101,55,64,163,224,18,1,64,14,64,
+63,159,36,224,177,6,251,45,1,224,245,0,224,8,0,226,174,18,224,28,
+1,224,29,41,224,190,8,65,182,227,47,0,227,2,0,160,138,225,227,3,
+224,51,0,194,70,227,44,0,64,35,149,60,235,35,2,132,112,129,74,160,
+20,1,51,48,224,25,2,0,95,251,142,1,225,59,0,98,221,0,52,121,
+223,225,222,8,121,168,215,124,168,182,176,196,128,67,1,95,53,69,86,96,
+112,177,212,98,219,129,216,193,81,225,35,5,252,151,5,128,219,226,194,3,
+225,4,0,226,191,91,226,174,3,240,25,0,235,212,1,100,109,133,121,132,
+63,224,24,4,2,64,95,54,73,169,100,151,129,26,96,4,226,238,13,0,
+90,232,213,3,128,233,226,200,31,0,75,183,70,226,200,13,225,15,15,224,
+13,4,101,18,226,103,0,161,171,237,130,3,98,31,165,92,64,151,137,221,
+96,9,1,53,55,77,240,168,51,2,95,53,54,121,75,226,110,4,64,138,
+224,162,0,160,8,160,7,226,61,3,165,31,194,61,0,89,161,211,161,188,
+199,99,96,150,131,30,64,39,128,229,132,43,135,37,160,63,132,44,135,129,
+197,119,64,24,106,43,224,116,1,64,237,69,188,120,160,107,130,164,22,106,
+185,96,9,236,48,0,4,79,32,35,54,52,232,55,2,64,8,71,189,204,
+87,236,43,7,192,91,110,63,236,200,0,96,74,173,240,1,95,56,125,188,
+64,36,136,108,64,43,112,20,2,49,56,54,76,80,64,22,172,96,96,14,
+0,54,128,30,249,218,2,64,21,235,88,0,0,66,134,137,121,50,197,96,
+64,5,96,214,5,52,54,32,79,32,35,64,125,192,193,197,76,64,67,139,
+108,64,61,0,50,96,105,0,51,192,83,241,218,3,64,48,149,36,170,70,
+96,25,226,39,6,236,210,0,230,103,1,227,131,1,129,154,224,13,10,196,
+22,163,166,231,28,0,98,142,226,81,6,227,164,8,201,39,227,21,0,173,
+107,228,251,8,64,155,65,142,254,98,0,73,62,231,18,0,99,6,65,2,
+0,49,129,64,236,75,6,109,207,206,5,97,56,160,0,96,77,160,55,65,
+59,202,49,140,45,224,238,5,231,127,10,228,96,0,163,243,74,6,225,1,
+7,229,196,9,228,156,2,192,150,255,56,4,233,1,4,193,175,225,73,6,
+232,14,0,170,178,233,93,3,5,67,32,95,51,54,56,224,43,0,193,57,
+163,88,192,255,96,107,128,221,64,70,224,24,1,228,77,0,193,0,193,32,
+227,96,1,160,170,1,95,52,123,60,225,39,1,237,98,0,64,1,191,135,
+228,186,3,109,160,224,32,0,200,237,224,191,3,97,91,196,203,163,134,1,
+55,57,224,203,3,112,93,192,56,224,53,40,224,50,13,239,217,5,228,92,
+0,237,98,0,65,169,2,56,52,56,97,177,79,170,2,79,32,35,80,48,
+96,223,240,173,5,125,189,3,54,32,95,50,67,150,234,211,3,164,114,64,
+96,181,153,0,80,140,249,100,218,138,109,156,23,160,172,224,180,0,229,15,
+1,224,18,0,82,253,191,55,96,17,254,190,0,157,93,69,16,1,54,56,
+98,209,0,55,132,178,224,111,21,98,30,226,38,8,127,206,226,114,1,224,
+31,0,224,124,3,64,17,227,48,2,193,248,229,165,0,226,96,0,230,181,
+1,131,241,162,172,224,220,2,163,4,64,84,191,76,65,113,65,105,0,53,
+128,180,64,25,0,54,224,205,2,64,135,122,237,118,111,0,51,98,153,224,
+10,3,192,30,64,55,215,15,1,95,51,102,229,229,60,0,75,221,96,191,
+0,90,64,149,96,4,132,52,191,239,96,40,255,178,0,1,52,57,129,46,
+132,44,0,55,132,44,0,83,147,116,67,250,225,90,2,255,189,0,64,44,
+224,7,0,96,8,65,193,0,75,128,65,246,14,2,228,104,1,225,48,1,
+128,75,143,106,135,218,0,83,229,81,5,96,104,72,182,227,154,0,64,8,
+99,198,228,99,4,0,54,82,52,97,94,128,82,224,135,0,0,64,87,207,
+96,65,128,237,199,16,164,116,2,95,49,49,74,87,247,156,0,101,170,64,
+20,167,36,160,99,99,111,138,128,250,49,0,160,37,233,123,2,2,49,51,
+55,160,42,0,53,114,195,160,143,128,107,244,230,0,224,74,1,224,42,2,
+161,82,181,142,133,50,99,107,1,49,49,66,231,224,246,0,0,58,128,234,
+230,254,3,96,79,165,249,0,54,65,25,202,166,224,113,10,192,34,64,7,
+162,224,64,94,129,228,225,1,12,192,187,128,68,215,52,226,242,2,131,17,
+225,3,2,96,174,228,244,0,166,40,234,38,0,64,230,75,250,64,41,64,
+249,161,53,99,74,97,1,98,135,0,53,164,107,162,22,97,225,225,18,3,
+0,54,129,9,163,70,192,53,1,54,53,128,22,0,54,192,22,232,92,3,
+64,44,100,206,64,33,131,45,64,50,89,0,224,39,1,242,77,1,1,67,
+39,146,51,64,45,179,236,225,33,33,224,252,1,224,23,0,129,21,224,207,
+3,199,44,224,190,1,66,223,64,111,163,145,224,191,5,72,245,224,191,0,
+131,152,224,191,19,0,83,224,191,2,195,132,227,183,2,192,118,96,31,131,
+19,224,223,13,230,218,1,160,216,102,126,225,203,9,249,110,3,192,19,66,
+114,64,102,129,185,224,207,6,69,183,167,62,96,36,133,205,67,13,226,220,
+2,196,16,128,139,130,100,232,139,0,227,134,4,224,169,7,224,162,0,226,
+116,11,228,195,0,226,137,12,226,127,0,226,191,2,224,79,16,71,51,224,
+79,9,166,110,238,178,0,64,82,139,69,64,231,196,128,228,53,2,226,4,
+0,226,178,4,0,54,225,34,1,0,73,128,61,130,241,225,200,3,160,7,
+64,28,0,54,226,55,12,0,48,226,55,1,64,214,128,33,135,226,192,27,
+64,26,235,100,0,225,164,4,226,116,2,68,126,230,73,6,0,90,182,52,
+64,29,226,146,0,139,215,0,53,122,77,100,208,224,86,10,166,240,96,33,
+229,145,0,96,151,1,52,32,184,97,97,120,129,125,226,153,2,226,92,8,
+97,178,224,38,18,225,137,3,224,38,18,226,0,3,224,77,26,64,7,224,
+77,26,64,7,224,38,17,0,52,169,4,224,77,22,90,232,224,194,26,192,
+38,113,14,224,38,26,166,41,230,67,9,104,216,139,158,226,244,0,226,238,
+5,225,126,2,169,5,225,223,3,228,131,1,1,75,52,215,119,224,31,14,
+0,51,224,31,22,0,50,224,31,21,2,67,39,66,224,32,11,66,216,0,
+50,228,92,4,224,59,10,0,66,165,31,224,58,9,194,155,224,26,9,79,
+77,224,26,14,70,81,224,26,3,162,1,96,7,0,58,128,7,227,120,4,
+164,252,64,26,231,127,11,132,247,240,76,8,144,81,67,253,157,14,230,122,
+1,189,54,129,141,224,32,5,237,160,1,0,51,69,93,227,126,3,98,40,
+224,110,12,192,89,128,64,247,227,5,96,4,192,99,206,225,224,135,19,128,
+35,0,80,96,71,224,44,3,128,149,127,144,96,147,233,45,1,238,110,0,
+224,186,4,160,180,224,35,21,2,79,32,35,68,82,224,223,0,101,196,128,
+154,224,38,7,0,49,224,38,0,65,170,240,142,5,226,197,11,224,38,21,
+226,204,0,224,38,21,226,211,0,160,0,243,21,1,224,58,1,98,23,197,
+234,1,80,32,97,78,0,85,128,21,0,54,96,21,93,111,83,150,133,66,
+81,168,229,153,1,240,27,5,203,230,64,85,226,129,0,224,181,7,64,31,
+133,221,224,31,8,96,174,64,31,229,223,0,174,29,161,99,64,26,229,227,
+0,224,58,4,137,65,64,31,133,225,224,58,0,201,137,0,58,133,33,224,
+26,4,166,241,64,26,242,110,0,128,26,198,138,64,26,233,247,0,160,26,
+237,63,1,68,151,97,10,237,65,1,109,44,237,65,13,0,64,98,159,130,
+143,226,187,4,192,32,96,31,226,54,3,129,76,78,85,237,165,5,96,46,
+64,7,69,86,96,97,237,164,3,96,10,64,55,129,132,0,79,82,197,64,
+41,127,207,64,11,129,92,179,166,192,1,65,190,232,215,4,168,138,96,103,
+108,219,64,58,233,220,3,162,235,128,217,224,14,3,224,11,2,192,8,154,
+106,64,65,169,254,94,203,68,151,0,95,72,21,67,44,72,108,159,54,192,
+108,0,50,207,107,132,25,209,192,224,109,1,224,182,2,224,19,20,99,150,
+0,39,86,87,79,10,224,47,9,117,197,3,50,32,95,57,109,250,0,51,
+110,229,128,0,225,13,2,241,106,5,100,20,128,53,1,49,49,81,181,224,
+54,3,160,111,224,2,0,128,39,1,56,49,78,193,224,38,1,160,73,224,
+86,1,3,67,32,95,57,150,62,65,115,93,116,160,130,243,193,1,241,84,
+4,96,0,65,39,240,52,1,160,251,192,88,65,117,64,32,208,0,7,49,
+51,32,75,32,85,32,90,192,197,224,43,3,96,5,1,95,55,236,40,0,
+96,56,0,54,128,56,3,54,32,95,55,64,153,214,23,0,50,71,188,64,
+31,130,153,0,85,172,128,177,0,1,56,48,66,187,160,14,227,161,1,2,
+32,61,32,100,140,145,224,2,49,49,50,147,30,64,70,228,45,0,5,57,
+32,95,51,51,57,224,29,0,64,120,0,57,98,37,2,49,49,50,130,243,
+0,50,128,128,176,111,64,7,227,26,0,4,95,49,48,48,48,130,210,64,
+10,136,153,96,13,2,57,57,56,224,67,3,128,7,128,250,224,41,11,108,
+86,1,48,48,116,251,128,8,3,95,57,57,57,100,135,231,233,0,160,108,
+0,64,192,25,69,42,229,222,1,224,96,0,96,30,64,44,105,1,64,177,
+131,124,3,80,32,35,51,106,123,64,18,196,209,2,48,55,57,224,202,1,
+0,55,65,36,0,48,86,231,192,155,0,51,80,223,192,25,1,49,50,99,
+38,224,14,6,224,42,12,128,68,224,42,8,224,15,0,0,49,97,136,64,
+136,210,250,128,138,228,175,1,224,2,3,99,7,227,62,2,128,107,128,123,
+227,44,13,224,33,0,224,29,3,224,26,5,192,22,224,19,2,224,201,26,
+1,48,56,78,143,2,48,56,55,129,49,64,28,224,14,3,97,243,0,48,
+78,201,192,0,224,56,5,1,49,49,163,98,224,22,7,173,71,225,32,1,
+224,28,3,208,24,160,30,129,57,0,49,216,201,0,89,226,127,0,65,64,
+232,130,1,64,4,0,80,118,206,207,173,224,217,12,224,84,1,225,119,4,
+225,61,4,224,2,1,96,134,225,137,1,68,145,225,140,0,224,63,2,225,
+110,1,66,216,225,140,4,215,112,224,23,1,128,156,224,16,1,68,117,160,
+146,224,171,1,129,82,224,187,7,224,188,1,224,52,2,161,31,199,94,65,
+22,68,46,225,238,43,1,49,49,137,181,225,174,14,64,102,199,170,192,102,
+224,83,32,64,60,0,54,224,60,24,161,253,224,14,6,96,60,206,235,128,
+60,243,182,0,5,67,32,60,32,64,35,96,39,224,19,6,67,245,224,19,
+8,224,39,11,100,1,65,50,224,19,2,137,162,224,211,1,136,44,224,180,
+36,224,84,9,65,9,224,84,3,129,229,225,173,33,73,164,227,156,8,0,
+57,162,143,224,126,9,244,203,1,160,127,101,134,224,147,6,64,131,224,147,
+3,129,241,160,66,225,225,14,69,164,224,112,11,225,30,38,225,136,7,100,
+45,224,19,7,111,115,224,179,6,65,6,226,124,30,224,200,0,224,18,8,
+224,84,6,67,64,225,8,8,227,120,0,224,217,28,193,144,229,15,1,225,
+128,6,99,10,224,119,7,64,97,224,158,9,225,74,38,224,64,2,0,48,
+217,215,225,74,7,225,93,11,65,73,224,19,7,226,37,10,102,192,226,167,
+32,224,165,14,225,148,10,225,194,35,224,147,8,64,126,225,151,30,225,197,
+20,1,48,57,72,241,230,31,5,227,9,0,0,48,226,172,0,225,204,7,
+113,229,224,146,5,66,171,225,137,3,128,81,226,123,10,227,112,16,225,141,
+8,65,120,224,18,6,226,68,10,130,67,225,77,13,128,198,230,80,5,225,
+130,22,226,215,13,167,246,96,28,226,103,4,224,142,8,64,61,224,142,15,
+226,26,6,163,43,224,45,28,195,95,161,205,227,95,10,228,43,10,226,36,
+33,224,228,3,168,234,225,151,2,227,145,49,226,126,0,166,200,203,139,230,
+200,12,65,84,224,18,6,130,104,224,18,4,229,20,10,99,202,228,191,9,
+139,38,226,28,20,192,36,224,195,0,0,48,205,195,224,78,16,224,143,7,
+231,65,10,231,64,7,224,142,6,224,88,15,224,25,17,231,182,8,225,22,
+9,66,76,226,138,12,224,83,1,128,77,227,146,3,64,101,157,119,224,25,
+7,160,121,225,104,7,229,175,6,128,57,224,99,3,229,255,0,65,237,0,
+51,225,237,2,64,28,0,49,224,90,0,64,29,209,133,108,152,202,18,210,
+217,0,53,118,190,239,178,2,74,221,64,53,208,35,128,55,248,173,0,64,
+127,141,80,1,56,55,86,45,0,80,151,123,107,36,0,80,131,179,141,165,
+110,62,96,73,140,143,2,85,32,65,109,39,64,23,96,14,157,237,64,45,
+224,187,3,226,225,2,64,29,234,10,5,228,183,10,225,157,6,64,55,225,
+75,6,137,16,230,86,92,227,168,18,224,46,36,228,114,31,224,57,7,228,
+132,34,230,116,2,230,40,18,65,130,0,54,235,141,26,64,54,228,214,1,
+224,95,1,224,76,3,224,127,7,162,193,64,98,235,118,3,79,56,225,44,
+33,224,227,22,128,99,64,98,229,16,20,68,253,232,161,11,224,19,7,64,
+99,227,169,7,194,94,225,22,11,234,39,15,235,139,32,224,212,6,231,96,
+14,233,73,53,239,121,8,97,204,203,241,224,109,8,224,156,1,136,209,128,
+45,230,125,0,232,254,42,226,110,1,234,58,12,233,146,50,96,94,194,104,
+193,17,129,20,240,186,47,224,177,3,225,65,30,224,61,6,227,39,5,129,
+19,224,13,5,224,53,11,224,198,1,234,16,13,225,217,21,241,68,5,224,
+143,7,192,115,226,152,34,225,251,2,166,238,224,85,2,225,229,5,225,223,
+18,64,24,224,18,6,231,229,25,83,138,226,104,17,235,216,30,227,181,19,
+225,20,3,224,72,8,229,201,38,232,80,13,224,138,4,195,172,224,204,24,
+227,107,7,225,244,23,227,206,28,232,122,14,228,59,70,85,133,226,210,10,
+233,144,1,224,111,69,192,95,160,23,224,118,15,64,0,70,27,233,62,3,
+228,191,15,228,89,10,224,140,1,158,231,225,244,1,64,84,233,117,3,228,
+121,64,192,234,224,209,6,192,121,226,56,6,225,127,2,0,48,228,114,4,
+160,183,81,98,228,205,4,224,214,6,245,137,5,224,45,5,224,233,2,234,
+41,6,138,8,234,43,0,105,232,119,68,192,15,0,65,96,64,64,57,219,
+228,225,35,5,161,38,161,39,225,41,1,246,121,58,0,57,108,117,224,14,
+1,236,148,5,230,159,8,230,181,4,224,22,8,225,23,4,193,159,213,46,
+64,224,100,170,232,216,24,227,229,13,224,138,7,224,36,7,96,14,64,98,
+235,63,3,0,67,160,90,139,195,96,237,233,186,28,230,208,7,207,119,64,
+67,0,54,225,221,5,0,66,183,0,128,42,128,34,233,190,5,65,139,121,
+125,0,83,224,5,0,64,4,64,52,192,3,224,103,0,128,119,192,174,233,
+163,3,225,45,17,225,30,11,231,249,12,192,36,192,94,237,37,11,130,2,
+64,29,227,175,7,225,168,24,193,52,64,60,249,251,5,225,132,5,226,228,
+3,128,213,227,240,35,227,140,7,200,5,224,148,6,224,250,14,226,111,40,
+249,195,48,234,154,5,192,182,97,35,228,52,3,0,58,150,230,225,44,15,
+72,168,250,187,8,0,83,224,146,9,228,93,7,228,94,9,96,77,226,255,
+27,226,56,6,226,248,0,64,224,224,166,16,248,39,5,225,209,38,228,116,
+7,225,58,7,204,180,96,155,226,177,9,96,31,64,29,226,207,12,96,93,
+64,29,130,207,0,75,224,186,8,197,173,250,227,6,64,11,131,217,160,187,
+224,209,7,161,95,224,8,2,96,78,207,220,0,58,128,71,96,11,125,16,
+96,36,190,208,254,67,6,7,84,109,111,100,117,108,101,32,126,72,0,64,
+154,242,126,116,95,194,80,31,2,95,56,51,97,36,224,59,0,1,79,32,
+108,11,129,235,134,6,128,49,1,64,67,91,154,64,146,66,143,224,38,4,
+96,131,130,1,3,85,32,75,52,98,23,64,18,129,215,1,80,32,73,139,
+160,169,129,206,0,67,191,226,0,57,98,180,159,226,64,29,161,133,2,57,
+51,56,96,229,129,118,64,154,0,89,252,27,1,64,5,0,80,68,233,0,
+95,64,54,2,95,49,52,146,222,226,186,3,96,8,64,41,0,95,113,103,
+96,26,224,20,6,97,121,94,182,161,112,163,147,64,117,222,112,68,65,128,
+94,160,100,160,6,97,7,160,63,96,66,0,48,97,181,252,32,7,128,111,
+231,90,0,220,147,225,240,4,0,80,224,124,2,224,132,0,224,8,0,64,
+140,130,67,131,224,65,110,1,95,49,97,175,64,26,196,237,5,49,57,32,
+95,51,51,98,152,0,54,140,161,0,90,226,10,11,226,9,4,163,52,97,
+216,130,8,66,17,224,48,5,12,40,46,46,46,41,32,119,104,101,114,101,
+94,42,96,54,64,97,199,117,2,95,49,50,103,155,96,114,0,58,128,7,
+64,142,3,54,32,95,57,68,119,64,26,0,55,97,243,64,50,132,105,0,
+57,70,191,3,95,51,51,53,80,21,65,69,139,176,0,83,163,20,235,190,
+4,129,213,225,73,1,95,231,1,61,61,224,24,2,3,85,32,64,90,96,
+128,161,186,224,42,10,132,97,160,42,224,44,4,97,173,2,95,49,48,90,
+123,160,22,3,95,57,57,57,164,226,96,181,194,207,240,192,79,0,57,72,
+79,64,133,96,8,160,16,96,132,225,130,1,6,100,101,102,97,117,108,116,
+129,179,2,95,49,48,73,198,128,168,224,35,1,1,58,58,128,30,64,31,
+0,53,137,189,3,85,32,75,50,192,98,224,81,8,14,114,105,118,105,110,
+103,32,105,110,115,116,97,110,99,101,224,91,0,160,59,240,226,15,223,153,
+162,208,0,90,64,44,226,241,2,0,39,164,193,96,204,194,94,224,226,27,
+6,112,97,116,116,101,114,110,224,134,1,65,76,96,35,3,79,32,35,54,
+98,243,224,221,0,99,205,96,80,1,51,52,96,72,65,100,0,66,98,115,
+3,49,48,50,51,128,90,4,79,32,35,53,57,224,54,0,96,29,127,94,
+103,213,132,44,64,75,239,227,0,225,146,7,225,137,27,224,126,1,193,148,
+167,23,76,139,96,8,67,173,128,8,67,16,224,74,4,0,44,163,131,99,
+8,225,120,3,64,0,241,150,33,96,93,93,239,224,176,13,225,223,16,64,
+57,96,237,128,61,232,135,6,225,191,9,224,94,13,4,99,108,97,115,115,
+224,91,1,199,218,97,189,96,8,218,78,241,66,13,130,75,166,94,224,115,
+14,104,148,228,147,6,4,105,110,102,105,120,96,118,101,157,2,52,48,49,
+64,4,0,51,103,77,102,146,0,56,161,249,224,26,9,67,145,130,20,224,
+27,5,162,40,224,115,0,6,95,49,49,56,32,95,50,68,170,160,22,225,
+205,36,162,13,129,105,225,90,12,224,243,19,225,103,8,19,102,111,114,101,
+105,103,110,32,105,109,112,111,114,116,32,99,99,97,108,108,226,132,9,160,
+149,160,187,5,49,50,54,32,95,51,224,136,1,228,56,33,242,55,53,238,
+87,18,1,49,48,176,33,224,30,3,224,27,6,226,135,44,129,23,166,212,
+77,18,185,108,2,49,48,53,64,167,64,7,103,186,132,43,224,60,6,13,
+123,45,35,32,83,79,85,82,67,69,32,35,45,125,161,13,1,64,80,193,
+85,224,44,5,8,113,117,97,108,105,102,105,101,100,192,39,225,236,0,226,
+57,0,65,145,0,75,129,142,226,182,5,2,32,97,115,130,38,1,95,56,
+225,150,0,192,102,228,125,0,129,7,192,76,0,80,64,73,224,65,2,5,
+104,105,100,105,110,103,160,123,228,107,22,3,79,32,35,52,226,237,1,196,
+102,147,204,192,0,230,135,36,2,116,121,112,228,72,1,226,75,23,222,4,
+244,7,19,224,116,8,224,197,31,161,62,226,202,25,224,106,14,68,245,193,
+219,230,96,15,244,74,35,64,147,64,165,160,154,224,87,10,225,105,50,231,
+11,19,163,176,244,82,25,96,108,231,145,35,2,110,101,119,224,133,31,0,
+54,97,234,64,8,133,45,104,38,0,83,64,88,123,87,227,192,27,3,100,
+97,116,97,224,106,5,224,79,1,64,59,72,104,192,7,224,215,53,224,105,
+9,224,212,10,229,238,23,2,32,92,124,160,67,162,144,129,2,225,5,4,
+128,0,74,67,0,54,235,19,0,1,49,48,107,106,192,52,68,140,64,32,
+141,14,97,54,230,21,35,201,197,228,247,3,228,182,14,4,115,116,111,99,
+107,160,178,225,231,19,224,27,5,2,97,110,121,231,225,2,0,75,160,90,
+64,0,228,122,41,96,253,67,90,2,95,56,51,233,117,0,224,179,8,165,
+158,224,6,2,224,250,13,1,118,105,225,196,2,131,4,65,72,142,57,230,
+129,1,230,95,2,129,84,226,60,23,64,195,129,155,100,4,232,212,3,132,
+115,0,80,133,163,110,116,193,198,96,127,96,22,0,54,225,17,3,96,31,
+192,139,198,223,228,142,15,228,54,0,228,206,13,96,99,225,90,9,128,0,
+64,249,143,36,224,104,1,128,6,192,49,0,49,73,227,161,141,224,18,0,
+0,53,160,18,64,62,142,237,73,146,131,178,193,86,198,144,192,53,65,186,
+160,71,193,120,64,62,142,159,1,75,50,79,175,65,57,111,220,0,80,228,
+6,0,0,85,235,33,1,99,194,96,4,230,239,4,224,30,1,226,87,3,
+0,53,65,27,233,81,9,224,229,5,225,56,9,3,40,46,46,41,225,58,
+1,64,32,0,58,134,248,227,133,0,144,51,226,174,13,64,43,142,171,0,
+65,64,206,72,56,64,55,1,52,56,225,28,0,0,80,175,135,175,133,96,
+15,64,9,128,21,66,240,0,48,130,237,72,123,64,66,0,54,96,66,2,
+83,32,85,195,65,78,135,226,216,3,97,143,224,129,0,227,83,31,231,71,
+23,225,58,5,224,68,0,193,247,224,104,2,225,100,10,161,9,132,154,224,
+186,6,224,106,5,66,6,64,59,68,246,225,137,6,1,61,62,161,135,96,
+75,131,157,64,177,1,80,32,103,58,1,64,80,129,154,130,188,140,146,160,
+145,226,30,1,149,135,136,110,160,166,246,8,1,69,192,147,147,1,53,48,
+97,173,246,24,0,0,52,81,10,65,149,64,21,162,146,0,39,82,65,247,
+40,1,119,55,241,140,0,160,12,167,73,160,15,114,54,128,2,0,67,121,
+102,234,206,2,2,66,32,83,147,191,98,146,192,68,224,61,0,138,251,224,
+46,3,240,145,0,235,102,0,151,188,111,53,66,88,128,5,103,50,160,81,
+241,23,2,109,45,128,10,210,229,224,80,0,161,182,128,102,0,85,128,62,
+224,132,1,192,11,96,74,160,208,197,25,160,96,160,58,128,35,2,95,54,
+52,138,37,146,163,241,152,2,0,66,66,252,229,69,6,128,90,225,26,5,
+163,196,235,233,13,229,137,0,96,59,160,14,98,56,164,86,128,205,0,75,
+128,64,224,176,46,224,161,6,96,158,224,155,6,224,128,13,224,119,0,225,
+245,0,226,10,0,193,2,129,128,193,150,68,140,69,22,236,115,0,0,51,
+64,191,99,171,160,145,160,24,101,46,64,13,86,150,85,2,3,64,95,56,
+49,194,13,96,10,193,66,128,94,236,198,1,0,51,107,181,227,86,1,1,
+91,93,195,86,224,43,0,224,100,4,224,87,2,175,99,64,244,125,52,1,
+48,48,167,193,245,200,0,186,122,3,64,95,52,50,68,175,118,18,147,15,
+79,70,192,43,192,4,96,159,66,97,161,61,96,246,213,55,161,97,195,22,
+160,202,129,49,161,54,234,164,2,96,136,198,34,235,105,5,96,186,224,26,
+13,96,53,129,246,224,26,7,96,133,99,102,224,22,4,142,150,64,207,194,
+36,0,85,130,23,226,11,2,248,242,4,0,49,167,170,129,186,128,12,231,
+155,8,199,156,228,1,0,224,117,6,140,232,98,238,240,194,11,0,95,136,
+191,240,102,6,241,150,3,194,164,232,175,8,136,163,232,250,3,160,192,225,
+17,9,224,219,0,64,26,224,159,5,101,127,225,10,0,192,111,160,11,101,
+129,192,11,230,127,1,243,81,2,101,138,128,122,250,51,0,96,100,96,99,
+232,55,18,224,27,9,80,168,232,207,3,225,159,24,129,6,129,158,227,188,
+2,225,92,1,0,45,198,118,193,156,226,75,13,0,49,116,6,224,26,13,
+98,42,225,57,13,175,237,0,85,232,194,6,232,149,13,76,87,233,174,4,
+160,221,225,2,5,224,34,7,237,207,7,64,227,179,235,235,116,1,88,146,
+65,133,224,76,7,0,52,225,78,0,160,136,224,121,3,230,11,0,229,134,
+1,225,89,14,128,203,234,47,2,225,194,1,226,35,0,226,32,7,239,169,
+9,96,186,234,118,12,96,0,133,91,225,124,7,98,89,225,124,12,0,49,
+163,227,129,67,64,174,232,214,10,226,66,13,224,232,16,226,66,12,243,22,
+12,163,207,242,126,9,0,102,236,140,0,1,50,57,224,28,7,226,140,0,
+192,0,64,128,229,22,17,226,147,18,97,202,224,26,13,227,232,17,145,135,
+225,16,2,225,18,2,224,17,3,163,206,227,104,2,183,204,0,79,237,132,
+16,192,246,227,159,6,224,48,17,2,116,104,101,183,226,200,24,224,43,17,
+2,101,108,115,174,148,227,60,9,225,215,6,225,209,1,226,240,4,194,91,
+225,14,5,97,203,226,31,21,229,103,1,192,76,243,157,2,66,191,213,116,
+239,140,4,0,111,96,173,236,155,23,0,46,160,39,195,69,1,50,49,125,
+23,128,117,240,27,2,134,204,128,0,229,219,12,99,87,228,41,8,151,88,
+65,206,131,119,228,109,2,168,214,229,242,38,238,107,2,229,242,2,160,73,
+226,199,19,216,84,224,25,9,227,221,17,227,220,3,225,112,4,192,8,225,
+76,6,1,108,101,181,243,225,74,21,160,249,226,105,15,0,105,226,147,0,
+160,124,228,41,4,128,128,162,174,162,25,224,71,13,1,99,97,226,177,0,
+224,25,6,0,111,195,40,224,167,20,0,51,245,154,1,225,213,6,72,243,
+2,85,32,75,130,230,157,85,0,52,177,67,160,22,230,23,2,230,9,2,
+1,57,50,230,9,2,1,52,52,64,23,242,26,9,228,159,8,249,146,0,
+202,248,131,40,228,112,5,192,207,129,166,231,37,10,225,202,0,128,33,4,
+64,95,53,54,51,138,58,161,86,69,176,163,46,64,10,64,6,226,243,2,
+96,37,74,103,240,48,1,66,215,191,230,128,32,64,92,192,117,96,131,225,
+54,1,128,3,194,123,140,31,234,224,0,193,70,162,132,64,121,89,47,75,
+183,250,20,5,226,35,3,2,115,116,36,129,39,202,219,161,115,160,74,236,
+64,1,235,64,8,247,237,2,225,76,0,227,144,0,224,14,0,132,152,97,
+44,92,217,99,106,235,89,2,65,231,0,65,96,11,64,9,129,212,125,224,
+101,31,64,15,0,58,110,243,174,231,226,191,1,0,51,94,194,3,64,95,
+56,56,185,8,65,65,64,42,144,226,79,216,0,79,161,87,96,84,79,220,
+96,143,143,118,129,111,64,47,145,6,0,66,79,186,64,205,0,85,128,69,
+0,54,239,210,3,96,193,143,210,65,209,160,24,154,150,245,201,0,160,218,
+225,222,1,225,1,0,164,93,162,81,230,77,3,96,146,99,122,225,42,0,
+227,220,0,236,206,0,230,79,0,135,133,230,53,0,64,141,212,23,247,209,
+6,64,112,255,216,10,106,195,229,83,5,233,144,7,129,2,97,38,106,219,
+97,141,113,211,96,18,212,185,1,53,56,70,148,1,54,54,237,72,0,0,
+85,173,26,224,98,6,251,76,16,96,45,64,104,251,209,10,224,22,14,248,
+182,13,229,155,8,228,98,12,128,80,192,75,170,113,64,226,98,67,96,28,
+1,53,50,64,4,0,57,227,170,0,224,36,2,135,52,96,146,1,48,52,
+197,116,248,154,12,224,50,0,130,10,224,12,2,160,100,224,95,0,224,43,
+6,237,47,7,97,221,0,51,177,243,0,49,81,242,1,50,49,96,126,106,
+186,74,179,192,139,0,95,74,121,192,12,64,53,210,57,64,53,1,51,51,
+64,58,192,53,1,48,52,99,190,160,47,64,19,64,47,146,89,4,102,115,
+104,111,119,82,105,64,35,182,107,195,208,135,244,98,145,234,9,21,0,58,
+133,236,226,146,11,129,154,224,18,4,64,79,225,69,6,64,254,238,42,2,
+0,51,97,45,230,182,6,182,110,102,182,224,13,0,224,27,2,232,169,4,
+119,152,231,242,10,177,141,232,196,7,0,46,235,28,2,233,34,0,224,140,
+3,224,119,86,224,111,10,224,97,24,224,190,21,225,116,7,96,182,230,210,
+9,162,142,64,115,224,101,32,224,171,14,100,207,232,83,0,225,11,6,246,
+13,2,228,243,1,128,8,237,109,19,234,53,3,138,6,159,4,160,228,66,
+119,133,247,224,143,3,160,11,234,0,33,64,70,134,14,234,237,5,232,120,
+2,251,74,0,224,17,0,206,61,64,60,0,54,213,164,1,51,52,183,74,
+64,21,198,50,218,14,129,127,71,202,64,41,82,189,1,57,56,65,131,102,
+127,64,48,214,79,149,212,232,176,11,178,160,1,51,55,247,173,2,128,30,
+168,149,64,12,129,247,64,2,224,59,4,227,128,5,224,25,1,224,27,5,
+229,185,16,6,75,51,32,95,51,52,51,226,16,2,8,115,101,112,49,32,
+65,98,111,118,202,37,224,37,17,4,66,101,115,105,100,224,38,0,224,124,
+1,228,6,12,1,95,57,154,172,224,37,0,214,0,128,168,100,19,192,26,
+66,119,0,55,134,175,128,79,64,189,231,116,1,64,88,0,67,64,34,103,
+253,161,47,64,51,65,120,199,197,128,0,129,93,225,56,2,224,97,0,230,
+125,8,128,28,224,144,1,224,142,1,224,205,4,170,209,224,195,2,224,79,
+0,74,63,0,57,189,87,160,55,224,182,1,128,11,3,95,49,55,52,181,
+86,192,113,224,71,15,138,67,224,71,10,97,1,66,108,96,181,137,8,224,
+85,0,245,161,0,96,59,224,202,1,224,199,8,128,38,192,124,128,123,2,
+95,57,54,106,28,225,103,39,224,196,4,137,6,0,55,166,95,66,254,160,
+0,1,95,55,64,210,67,18,135,10,99,18,161,160,224,161,5,96,184,0,
+64,152,153,225,146,2,225,195,21,221,174,128,26,198,102,248,124,0,224,30,
+5,225,112,0,223,178,226,99,0,224,66,18,226,191,12,160,135,64,234,64,
+31,64,14,64,11,65,94,193,202,1,56,48,166,238,132,25,252,189,2,115,
+219,235,86,0,193,205,1,57,55,69,38,97,111,226,213,12,164,104,97,74,
+221,18,227,240,6,65,117,228,3,49,7,111,110,101,76,105,110,101,114,228,
+7,25,224,41,0,228,11,6,228,2,20,74,131,193,35,64,0,234,10,12,
+227,116,8,136,195,131,96,224,61,1,224,21,0,84,103,224,83,1,233,207,
+12,0,75,228,132,1,64,140,0,55,230,111,2,137,54,0,83,65,175,197,
+164,217,202,225,254,6,164,153,224,64,1,64,62,137,101,238,55,3,118,185,
+64,7,74,110,0,58,139,235,64,97,98,194,118,128,224,94,0,98,231,128,
+174,230,26,5,96,196,96,205,195,143,224,19,0,128,17,167,148,64,5,102,
+193,239,69,0,250,156,4,186,42,160,48,170,203,103,36,64,159,205,58,64,
+168,192,195,233,163,4,96,99,232,2,1,160,17,232,70,6,2,32,92,124,
+240,227,2,232,6,39,192,177,64,134,167,178,1,32,80,202,178,96,117,232,
+129,3,72,116,224,126,6,1,60,45,233,43,6,192,7,129,139,241,146,54,
+64,150,0,54,160,150,64,212,112,219,189,180,81,118,253,218,3,64,156,225,
+231,0,98,14,208,24,160,206,1,49,48,87,154,69,86,161,187,224,151,3,
+3,119,104,101,114,195,68,224,154,28,128,156,133,79,76,128,0,54,96,131,
+132,20,229,136,1,132,67,64,25,130,231,224,198,2,168,214,64,147,169,112,
+187,23,162,141,231,153,6,229,11,7,211,89,163,53,231,200,7,224,46,7,
+1,95,57,81,236,65,23,99,131,96,189,64,135,225,241,19,130,72,0,55,
+226,81,10,248,65,1,161,21,174,17,192,32,0,54,233,223,0,226,15,5,
+224,76,36,235,48,14,64,184,131,49,80,57,0,56,105,248,0,54,96,83,
+75,31,2,51,54,53,103,57,78,32,165,201,170,45,96,56,240,165,1,178,
+43,103,10,97,124,126,4,0,67,80,33,128,141,240,99,1,182,232,177,109,
+97,194,108,182,96,0,64,85,0,54,160,85,227,170,22,5,102,111,114,97,
+108,108,227,173,6,249,8,0,234,69,0,96,53,170,220,64,7,1,83,32,
+114,83,242,122,15,206,53,224,31,5,225,88,4,96,164,131,46,0,85,229,
+8,2,133,103,194,57,226,49,6,64,241,136,159,192,135,64,164,98,252,225,
+162,2,161,23,114,171,227,102,0,237,99,8,246,231,10,249,63,3,152,130,
+96,164,131,195,66,51,0,49,67,79,64,25,96,180,0,75,254,235,0,0,
+55,71,211,4,64,95,56,52,54,108,54,249,213,1,64,46,175,179,226,23,
+24,103,245,226,23,3,198,133,0,73,229,130,3,225,17,0,101,46,108,118,
+96,246,70,249,192,35,2,95,57,57,108,214,141,40,160,118,128,115,128,219,
+129,40,64,99,131,232,67,109,0,75,135,134,129,68,224,10,4,224,12,2,
+0,58,158,144,240,67,0,1,95,56,69,200,96,7,0,54,163,69,4,48,
+55,32,95,56,99,215,1,95,55,180,101,64,53,131,29,2,75,32,89,100,
+83,65,60,233,114,4,138,151,130,198,208,24,162,17,119,169,129,103,0,51,
+253,204,0,99,45,106,65,64,134,193,135,117,14,98,99,170,94,130,131,1,
+52,51,96,33,0,56,77,184,105,150,128,34,128,0,64,156,198,101,192,103,
+128,71,2,56,54,53,179,89,224,22,5,0,53,97,162,1,95,54,131,200,
+171,9,230,2,0,64,190,212,116,137,81,96,21,238,40,1,244,138,2,0,
+48,206,13,1,80,32,185,5,96,21,130,96,238,167,15,81,196,238,167,5,
+81,230,206,167,66,245,133,211,1,57,57,105,4,192,150,130,77,247,145,4,
+161,159,64,29,194,7,2,95,57,54,66,140,104,204,0,58,96,37,224,76,
+4,102,31,100,77,230,30,93,65,166,230,30,2,96,133,160,121,97,52,129,
+198,128,60,117,198,64,35,129,128,227,112,4,0,57,79,202,227,111,1,0,
+50,229,135,9,103,79,64,54,64,250,0,58,96,21,227,124,18,98,91,227,
+124,21,167,167,128,130,96,127,96,109,164,86,96,8,224,201,3,237,223,2,
+224,201,1,129,203,206,5,65,42,193,101,225,60,2,161,61,225,63,9,224,
+24,0,224,168,1,192,19,97,83,192,85,96,71,129,101,225,103,0,130,45,
+0,65,65,9,130,26,2,95,57,56,65,71,86,27,2,58,57,56,130,23,
+6,95,57,56,55,32,35,49,66,60,1,80,32,75,149,104,156,0,58,96,
+36,5,10,65,32,80,32,58,64,32,130,65,77,20,1,57,56,145,16,136,
+131,74,122,0,75,96,77,129,176,0,85,88,43,0,58,96,23,162,168,64,
+13,195,33,133,200,226,105,1,203,143,71,8,253,201,4,139,73,79,19,0,
+57,68,45,235,46,2,1,95,57,81,82,209,145,96,37,99,98,68,88,138,
+125,2,95,52,48,239,142,0,0,58,96,173,194,3,64,87,237,44,10,192,
+138,1,95,57,68,110,224,89,0,226,50,0,229,173,5,224,47,3,79,152,
+224,47,1,0,58,96,9,138,41,227,34,0,238,227,2,129,181,237,211,8,
+241,50,3,224,39,15,164,233,239,51,0,240,201,15,165,46,226,31,2,64,
+8,207,16,224,7,5,224,190,7,224,54,4,224,145,0,227,218,2,192,13,
+133,233,163,75,101,238,69,87,1,57,55,184,107,224,89,8,160,165,225,220,
+0,2,95,57,55,65,211,128,37,129,194,139,61,160,15,224,51,0,224,219,
+5,242,115,7,192,171,161,17,226,76,1,242,105,0,224,88,7,224,104,11,
+225,119,1,160,226,238,180,5,224,94,0,160,32,224,145,4,242,206,1,209,
+111,130,166,128,224,242,55,2,224,118,7,224,50,7,133,176,160,130,229,140,
+0,227,37,3,160,217,228,29,7,224,225,9,128,88,144,160,160,0,164,104,
+224,193,11,224,53,5,225,61,0,88,64,146,54,224,188,10,132,100,0,58,
+96,16,209,242,128,86,130,17,164,225,225,85,15,193,52,227,93,8,192,24,
+0,85,199,25,224,33,8,165,166,239,230,1,138,195,112,41,2,79,32,35,
+70,11,201,178,96,255,99,247,0,95,65,139,0,58,97,145,68,237,1,52,
+56,97,68,64,143,1,95,52,72,247,139,2,1,51,48,69,24,98,194,0,
+58,96,6,227,198,3,192,193,242,210,6,227,114,3,225,209,5,228,79,3,
+225,66,2,232,205,0,227,200,2,225,221,12,163,238,225,0,0,158,45,115,
+180,97,4,195,90,128,54,227,231,20,224,67,5,97,221,104,27,96,64,224,
+76,4,161,56,64,164,221,202,226,52,0,130,138,246,209,9,98,239,132,22,
+224,210,0,228,235,22,160,25,224,27,5,242,200,34,0,97,82,191,3,78,
+101,115,116,242,201,25,224,42,1,246,214,58,225,178,13,228,108,1,129,250,
+97,47,193,238,161,198,224,24,16,64,0,225,54,24,161,155,224,126,1,224,
+39,1,228,140,10,226,18,7,197,170,246,196,19,224,151,7,246,208,7,224,
+82,2,132,223,131,235,224,74,0,78,197,72,24,132,195,130,47,134,41,193,
+48,225,54,2,225,55,0,232,232,10,160,151,224,138,2,224,205,4,131,3,
+224,150,0,101,56,247,37,11,230,187,0,225,42,15,160,40,224,92,4,128,
+1,228,246,2,225,179,16,192,52,183,16,96,0,108,168,0,58,96,36,197,
+18,227,64,29,192,153,225,79,0,129,56,128,60,226,21,18,225,237,2,229,
+72,14,224,167,0,129,179,2,64,95,56,233,22,1,229,91,29,96,125,225,
+76,0,192,72,1,95,49,107,12,133,59,71,252,3,54,53,32,95,99,48,
+128,67,225,70,2,193,33,96,16,0,55,96,253,0,50,92,6,101,169,225,
+55,1,65,56,138,47,128,240,230,68,34,192,48,224,28,4,96,227,224,224,
+8,96,21,232,63,5,225,57,14,97,54,128,198,152,242,225,57,4,225,58,
+26,253,209,0,137,25,1,53,49,229,182,0,99,132,70,112,0,58,96,90,
+140,170,2,50,32,58,100,67,172,73,1,80,32,133,42,0,80,98,81,206,
+9,1,67,39,98,84,194,200,98,151,228,19,0,76,105,226,195,0,135,159,
+128,39,201,19,226,73,25,227,52,11,224,39,4,229,190,4,254,179,6,64,
+213,65,19,225,108,4,229,140,6,0,98,69,135,0,103,213,164,229,101,4,
+160,84,164,97,192,135,197,102,160,198,110,214,96,172,105,31,226,223,1,160,
+169,228,228,2,194,241,251,152,7,163,146,224,227,17,228,24,0,164,178,231,
+239,11,234,211,1,224,124,8,103,222,65,162,99,110,233,236,11,228,95,0,
+226,48,5,128,138,225,3,0,192,193,225,223,0,97,187,224,37,0,225,190,
+11,225,55,1,193,194,224,46,13,196,177,192,28,225,200,50,0,49,225,201,
+11,224,88,0,226,133,3,225,208,4,227,173,0,132,232,64,61,97,82,225,
+213,2,229,148,0,72,192,160,70,225,187,5,224,220,13,225,113,1,226,205,
+11,225,197,10,224,109,5,160,79,253,170,3,195,235,78,160,102,111,228,10,
+0,253,148,2,224,68,8,225,231,2,226,138,14,229,104,4,0,64,111,52,
+104,194,64,6,64,4,0,58,110,229,111,126,68,57,0,73,100,10,207,195,
+3,54,56,32,58,96,95,210,117,64,137,82,117,64,25,160,34,0,54,64,
+34,241,103,1,0,80,152,114,132,83,71,167,128,37,0,52,64,37,210,212,
+96,37,98,78,128,37,132,159,129,113,129,164,64,138,0,58,99,132,234,32,
+1,226,112,8,1,95,57,87,163,128,13,224,246,3,3,95,54,57,48,166,
+40,97,236,0,58,96,82,208,86,167,28,1,52,54,230,75,3,128,123,230,
+14,2,64,109,230,14,11,195,147,131,42,230,14,36,199,136,230,14,11,192,
+86,230,14,0,96,217,98,7,255,157,12,252,161,15,150,21,128,110,222,22,
+227,84,6,3,102,105,116,115,246,183,0,115,237,96,108,130,1,0,53,162,
+1,65,25,85,127,0,50,230,15,1,96,240,225,132,1,233,109,0,225,148,
+0,193,166,198,9,65,229,227,166,8,227,48,2,230,38,15,225,37,3,229,
+26,2,224,35,4,235,7,2,228,67,3,64,22,224,238,6,10,100,105,115,
+112,108,97,121,32,108,97,121,203,148,192,141,195,49,231,116,5,192,29,65,
+79,173,227,225,178,0,229,167,13,129,103,192,55,97,191,2,50,51,53,78,
+39,87,47,224,67,0,211,51,195,250,0,66,64,5,96,41,232,174,9,160,
+240,64,157,96,32,224,172,0,228,26,15,225,101,7,233,237,7,225,97,10,
+225,187,1,225,94,61,0,50,225,95,7,133,83,225,23,3,224,210,36,225,
+118,70,65,207,100,252,64,9,97,1,96,5,99,254,0,58,115,251,229,4,
+5,87,204,189,7,128,134,192,131,96,7,128,16,128,143,1,95,49,87,81,
+86,47,91,46,0,53,105,200,224,11,1,2,95,57,53,130,91,74,193,0,
+49,155,7,117,219,1,53,54,96,102,133,58,96,147,1,75,52,224,2,1,
+128,170,96,154,0,54,192,154,0,54,192,154,182,123,112,97,0,66,137,157,
+228,140,8,97,195,228,166,17,129,250,225,82,6,178,26,0,85,85,223,225,
+249,4,64,24,164,192,228,90,3,224,43,12,97,197,224,43,10,224,114,13,
+171,182,224,70,9,97,70,224,114,30,98,152,224,114,11,224,115,0,225,0,
+4,96,30,224,141,12,98,23,224,97,11,64,24,224,141,31,98,12,224,141,
+11,224,44,11,107,173,224,186,12,178,41,98,79,0,58,96,6,185,229,0,
+48,66,232,138,167,0,52,66,183,1,95,52,102,200,94,15,0,49,128,26,
+1,95,51,124,229,66,155,192,44,1,95,56,90,61,130,205,2,95,56,50,
+192,21,0,52,109,22,70,102,160,58,2,64,95,49,120,139,130,122,231,128,
+0,0,83,98,101,167,21,210,174,83,17,98,232,0,55,131,180,132,46,3,
+95,56,49,50,64,183,126,24,128,207,190,118,131,164,68,64,227,175,2,228,
+75,1,17,114,101,99,117,114,115,105,118,101,32,109,111,100,117,108,101,58,
+32,132,81,160,180,100,53,1,95,56,92,80,64,176,224,59,5,13,44,32,
+105,109,112,111,114,116,32,99,104,97,105,110,160,57,4,66,32,95,55,49,
+65,32,126,159,128,57,161,91,0,56,64,177,2,58,57,53,189,109,4,56,
+49,51,32,75,186,237,195,228,227,237,3,101,162,0,55,136,110,193,27,212,
+148,0,66,97,100,0,55,77,87,7,95,55,57,52,32,95,52,51,128,39,
+234,241,0,98,100,130,132,224,42,0,161,1,64,48,128,168,90,80,1,95,
+57,193,255,128,57,167,74,191,188,71,78,200,168,193,130,1,95,56,72,235,
+189,64,2,56,57,51,64,11,240,208,3,225,38,6,0,77,97,88,9,32,
+110,111,116,32,102,111,117,110,100,193,98,161,186,225,101,0,2,49,49,56,
+65,20,137,66,224,71,10,13,94,42,115,101,97,114,99,104,32,112,97,116,
+104,61,128,67,128,178,165,220,65,51,96,69,125,215,64,145,224,69,12,6,
+112,97,99,107,97,103,101,224,70,3,224,57,3,225,14,0,98,67,0,50,
+95,10,64,4,0,51,223,186,160,228,230,246,3,161,191,225,105,3,193,102,
+1,95,52,90,94,128,0,96,237,114,144,135,38,0,39,131,20,161,154,224,
+31,1,82,109,112,127,235,160,1,225,37,0,197,254,1,50,51,128,223,122,
+30,233,173,6,128,5,101,243,1,95,52,90,46,1,57,52,200,105,192,171,
+226,61,2,209,230,224,157,3,169,108,217,4,1,95,56,95,27,227,73,22,
+193,86,3,100,111,101,115,97,236,6,99,111,110,116,97,105,110,163,88,161,
+244,97,105,193,174,199,59,246,218,0,227,47,4,224,169,8,226,231,3,224,
+201,1,68,68,225,66,0,162,82,240,51,0,130,96,99,74,0,80,66,234,
+0,52,153,197,65,237,239,61,6,128,0,65,78,0,55,94,59,1,95,56,
+126,213,1,57,52,158,126,1,57,53,138,156,224,238,1,2,46,116,120,79,
+236,0,58,96,33,103,42,2,95,57,52,123,96,64,5,0,58,96,105,108,
+134,75,244,0,49,96,25,0,55,76,91,128,5,0,58,96,37,163,202,65,
+109,108,148,95,242,224,100,4,161,83,75,59,0,58,97,196,165,24,226,57,
+5,163,69,1,52,49,64,209,81,82,101,132,104,32,1,95,55,178,153,1,
+52,49,215,93,226,155,1,65,205,127,100,225,200,5,7,76,111,97,100,105,
+110,103,32,193,208,201,98,228,73,4,226,223,0,0,55,72,179,195,135,224,
+148,2,132,121,224,147,2,98,169,4,56,52,32,95,51,124,243,1,95,57,
+70,46,1,95,52,102,52,226,90,22,0,80,160,137,29,99,111,109,112,105,
+108,101,32,118,101,114,115,105,111,110,32,109,105,115,109,97,116,99,104,58,
+32,102,105,108,101,163,203,102,14,98,97,229,176,10,160,211,128,42,64,145,
+132,122,128,139,224,44,7,160,110,0,114,96,45,192,169,96,0,96,163,0,
+56,100,40,1,95,57,96,181,66,35,67,179,223,11,97,13,102,147,0,49,
+135,27,199,255,224,24,0,1,56,49,65,62,160,24,70,215,192,47,224,22,
+2,161,217,0,57,67,236,2,95,57,51,68,73,1,95,57,75,180,130,219,
+4,32,95,51,54,53,96,81,0,57,65,222,1,95,56,67,72,2,95,57,
+51,98,179,1,95,55,101,160,229,30,0,3,95,57,52,48,96,5,163,64,
+228,91,4,135,43,67,52,2,95,57,52,64,54,0,58,96,214,138,36,70,
+166,96,17,134,184,0,85,106,45,160,36,134,144,128,36,65,7,0,58,96,
+101,3,10,65,32,90,69,31,0,58,96,139,192,32,74,94,0,58,96,190,
+191,60,64,71,64,140,0,58,96,218,245,33,0,224,5,1,67,141,79,169,
+225,8,0,0,49,99,97,197,168,64,6,224,25,6,162,90,255,85,2,192,
+26,0,50,148,163,96,6,224,26,0,1,50,49,65,93,105,246,0,57,100,
+148,160,6,0,58,97,114,203,35,160,184,163,127,204,63,0,66,244,128,1,
+64,1,236,121,1,67,207,128,96,140,73,162,47,1,57,50,65,51,101,0,
+65,182,2,95,57,49,72,32,1,51,48,152,78,229,110,0,245,124,9,96,
+62,140,111,144,43,224,43,27,133,197,129,74,149,168,137,48,160,249,231,194,
+15,231,189,9,16,117,108,116,105,112,108,101,32,105,110,115,116,97,110,99,
+101,115,232,232,3,65,89,232,1,4,224,0,4,1,95,56,97,90,97,118,
+0,52,65,104,165,165,65,76,170,90,128,200,0,90,64,198,192,9,2,95,
+57,51,67,30,234,17,1,64,54,80,24,1,32,89,97,92,129,116,128,217,
+235,100,6,96,109,224,25,12,0,50,101,233,129,50,235,96,1,236,54,2,
+139,40,160,133,224,37,22,246,248,1,160,0,224,49,6,236,70,2,128,48,
+0,90,192,232,224,38,23,128,89,0,57,198,228,160,0,240,148,18,128,40,
+130,107,224,90,2,100,153,209,252,226,62,2,97,252,128,17,224,49,19,160,
+32,104,225,212,219,192,49,128,28,153,39,244,216,1,225,64,19,236,110,2,
+225,63,3,171,192,160,0,0,58,65,245,65,230,238,97,21,206,71,224,25,
+9,101,21,237,122,12,100,12,237,122,12,138,108,224,184,16,96,30,224,185,
+10,134,193,224,244,2,129,86,225,83,8,100,140,225,133,7,128,44,225,82,
+0,161,72,224,88,5,162,6,130,180,224,104,3,224,164,10,101,11,224,163,
+20,225,21,13,99,175,225,21,12,191,214,224,111,14,102,132,225,19,26,224,
+58,10,239,209,2,224,170,15,224,59,16,227,132,14,224,59,3,227,249,14,
+224,231,3,224,25,4,98,192,240,32,22,227,183,28,128,138,1,49,51,204,
+33,224,58,17,129,234,224,58,8,0,57,76,97,0,53,103,223,224,65,23,
+64,58,224,65,11,224,124,1,226,234,14,224,210,20,227,253,3,224,85,2,
+224,146,2,224,58,16,227,35,14,229,29,2,240,86,0,100,214,0,58,96,
+6,163,232,5,95,50,49,52,32,73,225,6,1,136,185,224,20,0,74,46,
+160,20,0,58,96,225,192,54,1,57,50,135,211,0,56,72,99,64,32,75,
+54,3,47,61,32,58,96,18,64,12,0,61,96,12,203,100,118,76,99,110,
+75,151,64,189,132,200,163,185,228,228,14,228,230,1,96,159,224,7,2,160,
+210,64,150,1,50,54,224,150,0,1,75,50,209,77,160,240,99,192,0,58,
+96,6,202,24,244,139,1,144,219,71,71,0,53,76,18,107,0,105,231,113,
+18,2,64,95,55,104,170,0,58,71,58,128,61,96,198,160,152,81,120,76,
+66,201,200,205,181,233,214,2,162,235,171,17,177,13,101,174,0,58,96,98,
+236,125,7,72,158,193,44,194,60,149,202,0,83,194,74,64,171,0,55,184,
+195,2,95,56,49,174,114,100,165,160,124,160,81,64,204,89,122,105,126,113,
+66,162,159,200,18,0,58,73,122,233,96,0,138,95,64,239,202,25,66,78,
+0,58,105,199,202,61,64,14,129,219,128,151,224,148,26,91,126,72,162,97,
+233,233,117,3,107,46,224,141,1,0,58,96,37,113,147,0,51,73,22,96,
+107,129,214,2,85,32,58,96,192,241,176,3,129,129,105,239,241,159,0,0,
+58,107,183,224,37,7,64,35,128,45,97,30,241,205,1,0,58,108,22,245,
+131,2,96,18,235,95,3,224,2,0,169,51,0,58,112,151,128,253,161,235,
+129,245,129,162,225,238,0,2,95,56,56,199,9,128,2,124,136,162,205,211,
+152,111,105,65,98,226,59,0,223,102,224,55,23,98,75,96,59,207,199,2,
+79,32,35,78,68,182,251,226,140,1,192,80,192,14,227,84,2,224,78,11,
+208,11,0,49,80,106,160,76,130,230,244,95,5,164,136,227,175,2,3,95,
+51,52,55,192,80,122,57,0,95,102,103,1,56,56,132,76,241,128,0,97,
+106,0,95,116,123,224,70,9,224,68,3,241,179,2,161,88,244,254,15,194,
+241,161,61,164,98,235,91,32,0,70,78,204,243,23,7,147,7,242,115,6,
+224,168,23,196,90,225,92,2,2,95,56,57,96,28,170,60,96,2,225,121,
+2,65,232,196,38,236,176,2,133,28,216,93,0,56,81,10,96,146,226,56,
+1,0,57,181,12,245,191,3,160,14,96,242,129,245,66,175,131,206,225,243,
+5,3,95,57,48,50,225,1,2,6,109,104,115,105,110,46,104,220,28,162,
+32,106,119,128,10,100,136,246,59,8,131,209,194,184,224,30,1,128,53,3,
+67,32,95,56,86,69,160,150,225,115,5,9,35,108,105,110,101,32,49,32,
+92,34,240,46,7,224,40,6,3,92,34,94,42,192,150,128,72,224,194,16,
+2,111,117,116,224,195,1,192,192,165,64,227,72,5,224,169,2,1,95,57,
+101,145,192,226,225,182,0,161,211,97,143,64,60,224,252,2,0,57,115,134,
+226,102,0,224,23,6,225,165,3,160,0,0,58,97,172,247,194,9,0,49,
+101,147,1,57,48,64,105,64,26,113,166,69,144,96,28,71,117,103,190,135,
+219,251,124,5,5,114,101,109,111,118,101,98,185,5,102,97,105,108,101,100,
+128,246,0,58,96,131,11,10,65,32,94,117,110,108,105,110,107,32,58,96,
+93,225,255,9,2,51,53,54,238,93,3,6,72,83,67,80,80,72,83,225,
+255,5,224,46,4,161,239,252,191,1,96,2,225,249,8,161,20,224,201,4,
+146,244,168,249,146,235,226,15,8,7,82,117,110,32,99,112,112,104,206,214,
+227,126,12,1,95,57,88,200,224,160,1,160,108,130,54,7,55,50,56,32,
+95,52,48,49,64,4,0,51,72,183,0,64,224,93,1,96,89,226,69,0,
+224,222,1,224,131,5,7,32,45,45,115,116,114,105,112,128,129,225,252,3,
+65,156,136,45,96,54,120,89,226,213,1,2,95,57,48,238,214,0,160,39,
+3,67,39,32,79,224,229,0,224,149,15,1,45,73,162,251,0,32,118,31,
+224,25,2,10,115,114,99,47,114,117,110,116,105,109,101,128,34,101,137,65,
+60,1,51,53,192,117,85,176,197,240,230,4,2,224,19,0,70,231,179,19,
+227,130,3,245,231,3,227,117,17,2,32,45,79,225,46,1,98,86,0,54,
+98,69,0,79,224,35,2,8,45,68,95,95,77,72,83,95,95,64,41,0,
+75,71,172,65,6,135,26,226,229,11,64,14,133,198,226,231,19,128,169,244,
+131,16,8,99,97,108,108,67,111,109,109,97,69,168,130,249,161,174,225,125,
+2,130,60,0,50,89,86,97,53,224,66,5,0,44,226,97,18,96,234,136,
+65,6,94,115,121,115,116,101,109,67,65,201,165,227,190,3,117,219,64,217,
+73,39,131,190,0,54,97,241,160,20,125,196,1,95,56,66,236,128,44,228,
+89,0,0,51,93,195,228,60,8,100,110,230,227,7,79,154,1,95,57,96,
+157,96,46,228,90,1,165,222,64,29,122,205,71,187,161,122,2,54,53,49,
+102,59,65,87,141,12,0,35,74,208,120,133,0,49,170,83,141,133,176,231,
+109,188,226,164,5,130,30,103,248,2,51,50,48,229,142,4,4,108,105,98,
+47,83,97,26,13,47,73,79,46,104,115,92,34,44,51,48,56,58,56,129,
+133,0,90,129,38,87,229,96,109,97,17,2,48,54,32,128,130,160,19,96,
+0,0,67,64,36,180,119,64,195,82,90,115,227,0,58,96,240,65,129,8,
+116,109,112,110,97,109,101,32,58,97,70,255,42,5,0,90,224,1,0,105,
+182,193,189,103,42,97,172,0,95,97,222,85,107,2,54,32,89,135,94,134,
+8,65,58,131,255,72,214,240,22,0,235,105,3,192,13,97,36,238,87,3,
+1,35,49,197,217,96,36,96,46,96,10,204,185,65,120,224,45,1,217,240,
+96,33,249,12,1,224,42,11,100,93,192,0,109,215,224,129,15,153,155,96,
+123,224,117,13,190,73,96,112,224,33,14,130,240,224,33,19,139,176,224,67,
+20,138,224,64,33,148,58,98,86,224,36,7,96,138,242,209,1,224,0,3,
+225,132,8,131,20,225,133,26,193,44,225,132,71,0,49,241,234,3,239,192,
+7,224,133,9,192,181,163,81,74,236,90,101,99,115,255,207,4,132,14,132,
+41,66,243,230,153,4,132,141,126,167,0,54,68,26,138,81,76,253,106,58,
+108,204,91,115,0,56,68,207,0,58,106,196,173,158,64,13,133,114,0,85,
+67,35,132,183,0,85,67,192,0,58,74,240,160,58,0,49,64,27,132,30,
+0,73,64,10,163,107,135,1,133,104,231,72,5,97,250,229,52,6,254,45,
+0,0,58,75,86,96,89,0,54,71,8,79,41,227,95,14,68,59,232,179,
+4,72,146,1,116,58,90,46,0,115,90,216,10,92,92,101,110,100,123,99,
+111,100,101,125,160,91,128,134,242,33,3,228,160,16,228,145,2,224,70,12,
+207,104,165,55,1,48,54,129,123,0,85,226,108,1,226,126,2,239,193,1,
+237,213,1,160,30,192,135,5,54,56,56,32,95,54,209,135,202,245,246,11,
+6,224,173,28,4,98,101,103,105,110,224,175,4,176,130,224,76,6,98,213,
+128,11,128,152,106,192,160,150,98,139,224,13,2,227,40,23,224,41,2,160,
+57,224,16,0,217,50,224,75,3,227,199,8,248,50,0,177,172,225,94,0,
+224,56,1,227,81,13,0,54,195,247,128,55,3,66,39,32,85,226,22,22,
+13,98,108,97,110,107,32,98,101,102,111,114,101,32,62,234,145,3,71,99,
+96,119,134,81,161,199,65,210,227,106,1,225,224,5,96,40,230,217,11,224,
+54,6,227,159,4,0,65,104,64,109,120,0,54,67,44,1,64,58,110,195,
+146,57,108,213,0,56,192,222,225,229,15,236,134,0,175,45,173,147,1,95,
+56,69,119,0,58,112,26,140,13,129,49,111,125,0,56,64,216,135,31,128,
+6,0,58,64,103,128,118,114,10,129,65,224,183,2,192,18,129,84,224,246,
+2,96,85,192,29,193,159,243,67,7,99,203,64,116,135,45,255,223,0,1,
+56,48,91,15,0,56,96,76,96,55,126,96,128,10,1,56,56,156,5,196,
+42,100,180,0,56,225,138,0,96,81,177,165,2,51,56,57,75,235,100,198,
+64,53,224,101,34,0,51,105,52,224,101,21,196,221,0,56,68,221,64,70,
+209,177,64,28,180,216,1,50,57,67,221,0,56,78,170,2,95,56,55,70,
+173,116,205,65,138,0,85,64,23,64,101,2,58,56,56,242,238,0,188,97,
+96,24,64,63,2,49,49,57,142,68,98,120,74,175,64,13,64,35,1,95,
+51,147,109,65,76,80,88,96,92,0,95,70,61,160,11,0,58,96,6,97,
+7,2,48,32,75,75,183,68,24,1,48,49,226,246,2,25,67,111,110,116,
+114,111,108,46,69,120,99,101,112,116,105,111,110,46,73,110,116,101,114,110,
+97,108,66,58,224,39,1,3,83,111,109,101,224,35,0,98,85,137,52,96,
+215,123,187,132,139,64,227,101,190,168,245,0,52,177,120,70,145,202,54,1,
+95,52,69,188,64,59,193,247,130,123,0,53,129,123,99,246,164,74,1,95,
+56,70,139,2,95,56,55,119,102,85,93,96,55,171,225,164,36,163,16,1,
+52,57,182,128,168,3,224,22,3,98,170,224,22,9,97,202,224,22,9,174,
+67,160,137,160,20,105,223,2,95,51,48,71,3,1,53,56,96,154,185,159,
+128,19,0,54,96,19,0,54,224,19,10,0,55,180,237,224,19,4,131,60,
+224,19,5,96,142,1,95,56,66,154,0,58,96,242,9,10,65,32,105,115,
+105,110,116,32,58,96,20,71,48,0,51,64,11,130,105,149,25,0,58,96,
+75,138,183,103,140,64,110,234,198,1,96,145,226,135,2,82,170,1,95,56,
+116,122,3,95,56,54,54,160,124,64,11,0,55,224,11,0,1,51,49,224,
+11,0,0,58,96,6,129,164,145,75,66,93,127,134,243,131,4,131,50,84,
+246,134,150,105,142,132,202,194,166,224,15,7,96,92,240,22,1,0,95,69,
+174,128,89,64,141,104,101,0,54,130,32,2,80,32,58,96,16,224,198,3,
+0,50,96,198,140,202,99,197,192,147,96,210,160,11,224,81,0,0,58,96,
+6,227,78,37,128,92,131,78,96,11,0,58,96,6,227,78,64,4,65,115,
+121,110,99,227,83,12,64,220,192,171,0,75,97,119,0,80,64,248,0,57,
+224,104,2,13,115,116,97,99,107,32,111,118,101,114,102,108,111,119,137,188,
+224,33,5,3,104,101,97,112,224,32,5,224,33,7,9,116,104,114,101,97,
+100,32,107,105,108,241,185,0,224,33,6,5,117,115,101,114,32,105,64,193,
+3,114,117,112,116,167,5,193,30,98,66,161,30,134,160,64,6,225,30,60,
+225,26,18,130,220,1,80,32,67,164,106,98,67,133,226,24,2,0,53,70,
+192,1,56,53,106,60,130,24,67,172,194,24,192,11,66,24,96,11,0,58,
+96,6,225,108,1,2,85,32,83,200,250,252,23,1,202,83,252,16,2,228,
+161,0,254,137,1,0,85,225,163,7,19,82,97,116,105,111,90,101,114,111,
+68,101,110,111,109,105,110,97,116,111,114,161,67,224,43,8,64,34,1,114,
+109,129,7,224,32,13,6,105,118,105,100,101,66,121,64,79,192,36,224,151,
+6,65,132,224,151,6,67,160,224,74,8,11,76,111,115,115,79,102,80,114,
+101,99,105,115,193,94,224,38,10,2,85,110,100,226,60,3,224,33,10,0,
+79,226,93,4,64,0,162,27,129,126,130,27,96,11,0,58,96,6,226,27,
+61,3,114,105,116,104,226,27,12,65,250,250,68,4,102,60,9,10,65,32,
+99,97,116,99,104,32,58,102,96,104,241,100,111,240,226,8,1,56,53,198,
+15,244,77,6,136,71,246,112,0,0,58,118,80,229,128,2,64,55,250,171,
+4,0,56,82,73,104,25,92,159,0,56,70,63,2,58,56,53,130,186,224,
+201,1,96,223,4,97,99,116,105,118,83,95,0,58,96,38,128,52,93,50,
+64,123,0,58,64,63,128,178,113,216,3,95,56,52,52,96,5,0,54,96,
+27,197,60,1,95,56,78,93,1,116,111,96,86,64,24,129,8,77,103,64,
+24,165,65,64,58,160,46,73,186,113,121,2,56,49,50,64,61,64,253,0,
+51,137,207,125,12,2,95,56,52,97,10,1,58,56,77,152,225,83,5,64,
+25,96,165,250,218,0,0,90,169,230,102,70,84,66,64,0,0,58,96,85,
+245,242,0,236,204,0,64,8,77,155,0,58,96,41,251,207,1,0,56,84,
+50,104,72,115,155,96,231,0,55,157,159,245,255,0,5,55,53,57,32,95,
+55,153,108,0,66,250,14,4,0,55,70,41,248,198,1,225,188,1,246,208,
+5,115,46,96,237,0,55,70,121,246,21,0,96,81,105,241,238,112,6,3,
+76,111,97,100,76,14,11,115,97,118,101,100,32,99,97,99,104,101,32,66,
+114,243,182,8,192,150,102,188,205,160,224,159,7,2,58,56,51,225,206,0,
+209,55,176,101,0,67,96,11,1,95,55,136,63,140,101,1,51,54,202,168,
+207,222,122,204,171,72,234,196,0,0,55,105,28,128,23,144,44,64,44,64,
+24,79,125,96,131,96,40,125,237,240,222,2,203,148,224,73,0,235,3,4,
+71,235,83,206,225,11,1,249,153,2,132,118,128,64,242,200,1,249,169,0,
+252,233,1,180,74,128,94,192,91,1,95,56,247,64,12,65,179,224,40,6,
+131,111,128,41,161,1,97,204,0,55,137,42,212,95,0,51,146,4,224,0,
+1,1,95,54,106,255,128,96,255,39,1,224,141,7,75,254,64,7,70,25,
+110,73,1,95,56,224,73,0,128,49,122,63,224,114,3,193,64,64,253,196,
+37,225,162,0,96,198,224,45,2,248,117,8,96,213,248,125,16,9,105,110,
+118,97,108,105,100,97,116,101,130,105,182,83,130,107,0,56,75,78,160,0,
+192,203,225,49,4,99,212,2,95,56,50,138,128,171,83,226,66,3,96,157,
+120,159,176,106,96,220,0,55,110,92,2,95,56,51,138,144,128,0,2,95,
+56,51,100,97,66,200,173,250,65,232,68,0,242,142,0,102,101,161,38,111,
+187,225,162,0,143,149,98,25,1,95,56,237,46,0,143,223,64,168,145,223,
+110,139,0,58,96,104,68,78,67,73,109,97,110,31,159,139,0,58,96,42,
+100,20,64,128,131,44,112,58,224,105,4,150,133,192,135,196,3,206,126,80,
+144,64,169,96,32,96,55,222,42,224,61,3,100,159,97,108,65,27,0,58,
+96,126,100,156,107,67,64,147,96,13,181,231,0,58,96,214,102,206,2,54,
+53,32,101,50,131,176,98,79,67,58,0,51,100,179,106,79,0,67,89,132,
+175,240,1,95,55,74,66,0,58,97,109,229,27,0,66,160,242,108,0,189,
+129,128,225,160,169,64,162,2,95,56,49,66,154,130,100,195,225,0,56,72,
+212,0,55,74,46,98,98,128,10,193,12,225,152,0,161,45,134,215,224,2,
+1,193,239,196,12,129,96,224,126,0,226,228,1,225,232,0,96,8,1,95,
+54,66,117,109,193,161,207,212,174,128,155,96,181,65,2,122,158,224,125,2,
+68,46,224,44,1,0,58,65,34,129,3,230,135,0,76,62,230,135,0,110,
+18,0,50,77,24,194,42,66,218,208,136,224,178,0,134,200,0,85,161,6,
+226,6,1,160,117,133,92,210,142,0,55,71,231,225,39,7,160,45,225,27,
+10,225,52,0,225,18,8,78,233,225,18,25,128,73,128,134,233,152,0,0,
+64,104,34,216,48,224,34,4,192,110,73,106,224,38,11,110,240,64,31,66,
+188,0,54,85,169,102,122,0,56,108,183,160,6,64,165,195,40,160,45,129,
+138,103,194,105,197,0,75,146,97,96,9,122,32,65,150,103,63,141,228,107,
+1,224,52,0,128,34,224,61,9,96,53,197,158,225,227,15,65,191,99,191,
+0,80,68,134,192,226,168,3,193,134,0,90,225,120,6,226,174,0,227,8,
+1,160,2,97,27,194,221,102,110,224,80,4,225,91,6,128,38,66,138,160,
+167,160,16,160,168,128,28,250,196,0,224,182,4,208,212,224,182,68,226,64,
+0,164,139,224,180,12,192,36,101,222,161,148,224,181,18,192,14,96,5,96,
+234,248,59,1,0,58,96,64,228,102,5,224,178,0,168,121,229,47,0,159,
+75,229,91,2,1,53,55,162,95,198,216,0,56,70,74,226,105,2,160,6,
+134,220,224,89,2,118,33,128,114,225,23,6,192,114,224,227,1,234,22,1,
+224,11,0,160,9,160,133,128,207,128,19,228,238,17,225,61,0,225,44,1,
+224,200,0,137,95,0,82,220,236,224,75,23,251,201,2,225,222,5,225,39,
+1,64,15,137,161,227,132,8,71,255,161,38,1,95,56,152,193,128,24,224,
+78,17,227,210,18,224,77,18,165,94,225,188,3,162,171,0,75,104,20,128,
+114,129,13,198,6,224,13,19,224,156,1,226,194,1,224,35,1,128,17,128,
+243,1,52,54,224,164,18,0,50,224,24,2,96,0,1,95,56,107,120,2,
+95,56,50,193,170,226,27,1,224,176,10,224,177,65,162,112,96,158,224,177,
+39,136,129,0,50,194,7,128,21,97,111,0,58,98,143,236,213,2,224,195,
+17,169,19,128,1,231,13,0,192,8,0,58,96,94,224,72,33,224,234,1,
+224,86,1,226,57,0,224,5,1,71,7,192,61,229,148,4,96,49,233,176,
+0,233,185,1,225,57,0,224,167,5,160,58,129,26,90,72,227,106,1,96,
+16,224,15,0,192,224,224,168,0,224,119,34,192,35,225,39,19,128,26,228,
+225,4,192,24,129,69,0,51,173,80,196,81,227,5,16,225,143,2,224,124,
+3,224,79,0,224,103,17,0,58,98,188,224,101,34,226,154,3,225,181,2,
+225,46,6,160,67,224,24,3,192,152,225,150,76,224,98,10,225,129,60,138,
+202,3,35,50,32,58,99,76,87,152,224,249,0,224,180,2,96,2,165,255,
+160,13,132,81,160,5,135,36,224,225,1,224,51,1,235,189,0,71,241,171,
+7,231,51,4,231,65,7,224,108,3,192,188,169,180,101,247,230,209,8,102,
+105,230,222,5,134,214,228,24,0,79,60,0,58,96,248,99,179,176,242,65,
+90,144,204,64,148,193,5,69,169,227,217,0,228,202,21,225,228,3,227,217,
+0,64,8,167,222,0,58,96,174,168,138,80,166,2,75,50,32,128,153,0,
+75,113,54,64,32,183,24,241,143,8,224,81,6,1,95,55,117,165,160,85,
+204,222,0,58,64,54,128,10,117,77,87,210,146,36,0,55,88,71,64,60,
+249,184,1,109,211,144,70,0,58,110,110,213,55,3,95,51,51,57,206,162,
+2,95,56,48,66,153,147,252,96,17,0,58,96,6,179,32,1,95,55,123,
+87,0,58,96,37,215,250,78,224,0,55,124,202,1,56,48,99,18,65,160,
+142,154,235,253,0,79,153,114,201,65,236,96,171,64,42,96,17,156,117,0,
+75,220,147,0,58,111,204,224,197,17,110,186,65,96,96,202,0,58,112,5,
+97,98,3,95,52,56,50,95,101,64,207,64,8,1,56,48,129,98,80,174,
+13,10,65,32,94,109,100,53,66,70,73,76,69,32,58,96,25,228,17,2,
+64,172,142,213,105,178,113,202,92,117,2,95,56,48,160,145,225,87,0,78,
+229,75,99,254,161,4,1,64,35,83,179,96,144,1,95,52,146,62,221,166,
+64,64,225,59,8,244,74,6,0,58,96,24,65,141,2,55,57,55,64,13,
+129,43,207,171,0,83,160,106,0,51,87,43,107,189,173,51,2,51,50,48,
+240,127,2,31,92,34,109,104,115,47,83,121,115,116,101,109,47,70,105,108,
+101,80,97,116,104,46,104,115,92,34,44,49,49,56,58,49,0,52,177,254,
+194,198,228,218,1,130,99,1,95,52,96,196,129,188,157,52,158,249,84,132,
+64,209,175,16,96,231,0,58,64,169,160,216,2,51,32,90,224,1,14,233,
+139,0,192,0,0,58,97,97,161,121,126,133,179,97,186,140,238,202,5,245,
+227,4,64,252,1,95,52,179,166,196,250,64,185,66,10,113,9,96,157,226,
+242,8,64,14,98,131,163,147,96,232,96,69,0,58,96,50,226,104,2,96,
+249,192,115,226,117,8,128,63,0,58,114,4,226,249,9,0,55,100,124,226,
+249,10,115,198,245,131,0,160,18,194,78,239,10,7,0,80,91,133,64,35,
+192,224,133,77,238,254,3,160,32,160,212,225,206,1,129,50,230,22,5,229,
+187,2,139,214,64,107,64,79,238,241,3,160,73,164,24,96,187,66,138,86,
+197,96,113,113,31,0,90,145,38,1,90,32,128,58,158,22,97,22,224,28,
+4,73,171,224,28,16,76,146,224,28,16,107,61,224,29,17,0,52,224,117,
+4,1,95,53,65,119,96,191,0,95,118,84,158,145,96,6,224,187,1,97,
+150,115,100,151,254,1,55,55,66,205,96,161,116,38,128,16,128,149,224,16,
+2,160,137,224,17,3,128,125,128,17,96,122,128,80,96,122,96,10,0,58,
+96,6,224,122,0,95,252,2,95,55,56,117,222,0,56,119,10,0,56,100,
+94,0,56,88,4,3,55,56,55,32,192,70,122,207,128,70,122,206,96,6,
+8,10,65,32,98,115,62,61,32,58,96,41,128,13,64,12,0,54,160,12,
+0,60,96,26,130,186,2,98,115,60,64,12,130,146,4,98,115,99,109,112,
+64,14,196,221,96,2,227,234,0,141,74,98,75,2,64,95,50,79,219,231,
+175,9,96,143,96,159,99,35,1,95,53,87,215,96,7,88,154,65,77,128,
+229,0,56,193,154,225,161,0,130,161,130,82,123,188,97,104,101,62,96,6,
+160,54,161,81,96,45,65,38,225,99,0,86,9,160,17,0,58,96,71,224,
+48,1,64,143,0,55,86,18,0,58,96,32,96,233,0,47,65,4,64,19,
+96,13,0,61,96,13,129,45,0,73,64,10,129,43,84,243,80,255,69,123,
+69,149,0,58,99,165,101,104,1,55,48,227,223,4,0,83,67,222,134,80,
+119,144,103,26,64,38,0,50,166,127,100,32,243,35,0,228,38,1,71,152,
+65,73,191,70,160,13,196,121,224,53,28,0,90,224,53,2,3,95,51,54,
+51,160,118,64,137,129,200,0,95,106,167,121,244,231,17,12,100,153,0,95,
+83,131,150,43,0,95,93,32,128,67,0,95,106,86,128,10,0,50,118,76,
+160,89,213,0,132,199,128,167,202,94,224,220,15,224,118,6,184,61,96,182,
+96,101,129,236,64,6,193,134,129,198,224,85,13,103,18,224,77,2,0,58,
+121,61,160,57,64,32,219,147,0,52,230,91,28,0,58,122,19,97,219,1,
+54,49,183,36,160,5,117,181,224,11,0,0,53,66,71,89,208,128,43,66,
+118,96,31,224,5,8,0,58,96,43,237,228,2,233,224,6,0,58,64,60,
+160,69,0,50,64,179,129,173,0,75,96,11,197,225,224,59,2,233,214,11,
+97,64,0,58,105,219,252,92,4,3,46,109,104,115,120,69,92,90,122,156,
+136,16,231,18,15,102,58,231,77,7,130,115,251,76,0,185,143,166,182,73,
+212,165,250,1,95,55,127,76,64,136,191,142,225,174,3,71,91,92,219,160,
+105,224,132,3,1,95,55,93,74,225,222,7,248,99,1,233,36,6,0,49,
+144,69,225,244,2,253,169,4,1,95,55,93,119,2,95,55,53,65,146,93,
+251,160,32,224,109,2,115,204,98,134,224,213,7,226,73,3,96,200,212,186,
+170,21,0,55,94,94,0,58,96,65,66,98,14,79,46,100,101,115,101,114,
+105,97,108,105,122,101,32,58,96,29,74,35,20,97,100,100,95,108,122,55,
+55,95,100,101,99,111,109,112,114,101,115,115,111,114,64,31,194,9,0,83,
+107,65,171,165,241,191,0,1,95,51,186,210,243,26,1,225,17,3,129,138,
+202,107,224,207,0,0,51,173,238,224,53,1,224,216,5,156,77,2,64,95,
+52,64,157,192,215,130,114,0,83,160,215,161,13,225,34,2,67,132,169,62,
+255,3,2,74,209,94,231,1,95,50,106,226,227,119,5,191,15,6,94,117,
+110,103,101,116,98,64,237,130,189,192,100,228,187,5,1,95,52,70,95,225,
+229,0,235,10,1,96,122,0,95,67,124,69,101,180,88,66,6,118,248,224,
+35,2,95,145,66,241,5,35,50,48,57,53,49,124,77,2,35,53,53,128,
+153,228,97,3,1,95,52,70,229,104,13,127,196,71,61,0,51,71,19,252,
+214,2,17,104,71,101,116,67,104,97,114,58,32,115,117,114,114,111,103,97,
+116,67,50,224,52,6,0,55,95,188,224,52,10,160,41,0,58,97,53,102,
+47,1,35,52,140,157,96,49,239,11,0,228,186,2,0,52,64,24,201,179,
+86,78,2,52,55,57,65,38,0,48,253,107,3,9,111,112,101,110,66,105,
+110,97,114,121,75,135,128,101,230,2,7,1,95,52,65,101,230,28,0,64,
+73,97,230,1,95,52,227,140,0,67,117,203,98,229,5,10,229,1,5,1,
+58,55,95,110,102,183,71,74,131,74,75,209,78,119,1,58,55,68,252,130,
+248,18,112,101,114,102,111,114,109,73,79,32,94,119,97,110,116,95,103,109,
+112,96,32,0,54,228,177,2,192,165,1,95,52,188,88,196,200,224,24,0,
+2,51,53,54,228,174,2,4,77,72,83,67,67,222,94,226,26,1,99,6,
+240,38,4,227,1,5,83,202,1,51,51,159,221,1,95,52,92,75,0,64,
+156,70,2,52,52,56,253,89,4,3,99,108,117,100,193,215,96,0,227,79,
+1,224,2,0,224,86,40,3,99,98,105,116,255,19,0,192,184,247,76,3,
+96,13,64,250,96,190,224,96,2,2,64,95,55,124,231,128,137,224,1,3,
+120,213,224,22,7,241,194,5,224,1,5,225,80,0,229,147,0,125,227,2,
+52,48,49,64,4,0,51,100,109,109,243,225,113,9,11,69,88,84,82,65,
+67,67,70,76,65,71,83,224,198,4,237,72,4,141,37,128,193,224,5,24,
+192,54,228,61,7,96,169,127,26,118,15,255,25,0,105,238,255,17,16,8,
+69,120,101,99,117,116,101,58,32,255,8,2,1,49,50,79,159,79,1,225,
+19,1,229,228,5,143,63,64,23,166,88,224,136,1,131,65,224,135,4,138,
+55,74,157,64,58,185,113,2,95,51,52,65,82,224,141,5,13,99,111,109,
+109,97,110,100,32,102,97,105,108,101,100,160,148,192,130,226,240,7,229,173,
+1,224,245,15,128,54,96,248,128,10,224,109,5,1,67,32,70,63,7,105,
+108,97,116,105,111,110,32,192,0,128,115,160,215,143,79,96,59,4,55,51,
+57,32,35,250,46,0,129,41,0,50,142,208,64,227,0,55,103,17,128,175,
+224,98,1,0,109,226,188,5,160,0,227,25,10,192,2,1,95,55,87,56,
+103,140,226,96,5,224,83,1,2,36,73,78,224,84,5,227,18,4,224,2,
+6,224,80,3,224,66,2,2,79,85,84,129,240,1,55,52,132,60,224,151,
+0,224,2,10,98,238,224,35,1,128,1,224,193,1,240,116,1,224,29,1,
+128,1,225,111,6,15,32,45,119,32,45,87,97,108,108,32,45,79,51,32,
+45,73,224,197,2,231,167,2,225,10,1,224,87,1,224,86,20,11,47,115,
+114,99,47,114,117,110,116,105,109,101,226,49,1,224,169,8,224,78,14,96,
+22,2,79,32,35,146,223,224,59,3,231,242,4,96,60,65,77,118,20,100,
+169,224,133,5,224,206,4,224,97,2,224,95,12,224,30,6,225,233,15,8,
+45,68,95,95,77,72,83,95,95,224,90,1,224,88,30,0,67,224,238,2,
+224,48,19,229,77,5,224,229,1,1,52,50,224,155,13,64,62,210,225,66,
+246,96,48,224,190,15,0,39,225,141,0,1,95,55,67,236,128,140,225,142,
+6,224,155,2,225,210,13,5,47,101,118,97,108,45,160,73,224,219,5,224,
+57,10,1,46,99,160,116,165,16,225,183,5,1,52,50,105,174,227,217,0,
+225,208,4,192,87,224,134,2,2,42,46,99,160,120,226,197,2,10,36,73,
+78,32,45,108,109,32,45,111,32,227,71,0,224,0,19,2,95,55,52,104,
+5,1,58,55,83,165,210,102,237,45,9,232,51,13,64,0,0,58,96,65,
+232,102,2,232,105,2,224,45,2,0,58,97,101,210,180,64,254,76,112,72,
+85,193,119,197,255,160,45,138,66,0,85,237,190,15,237,192,11,68,46,232,
+130,0,126,239,194,94,116,238,160,109,197,64,179,254,217,158,224,19,3,132,
+90,224,63,0,128,11,1,95,54,139,110,64,37,116,217,64,73,227,187,3,
+0,58,68,205,64,128,171,62,128,23,229,172,0,145,47,64,59,229,142,0,
+1,95,56,68,224,98,244,138,53,66,191,241,31,0,118,168,0,64,109,151,
+0,49,150,223,96,40,128,69,64,207,96,14,235,23,2,241,54,0,96,107,
+0,58,96,6,237,140,9,0,49,88,50,2,95,55,51,65,62,235,45,3,
+246,149,3,96,78,102,167,1,95,55,96,197,199,27,0,58,103,94,78,165,
+1,32,58,96,18,3,10,65,32,90,72,181,0,58,96,39,76,5,0,115,
+118,65,64,30,172,106,236,204,6,1,95,55,92,251,99,0,234,12,13,234,
+9,0,163,126,234,50,18,232,187,4,193,236,224,48,18,2,79,78,70,227,
+18,0,230,72,4,96,20,130,10,128,175,122,118,162,31,224,8,13,1,95,
+55,94,12,2,95,55,50,173,92,231,54,5,232,118,2,66,11,232,5,2,
+76,202,84,34,158,147,0,52,122,109,143,130,233,6,0,99,247,2,66,32,
+79,225,20,3,12,111,117,108,100,32,110,111,116,32,102,105,110,100,96,196,
+3,67,39,32,79,192,128,224,42,3,3,105,110,32,102,172,54,230,52,1,
+225,31,3,238,234,3,226,246,2,0,39,238,14,0,2,55,50,55,224,79,
+2,6,100,101,102,97,117,108,116,167,147,0,50,235,2,4,164,130,96,22,
+229,120,0,231,146,1,192,114,234,216,0,232,91,8,234,42,24,225,46,15,
+234,54,17,11,70,111,117,110,100,32,116,97,114,103,101,116,234,59,9,2,
+55,50,57,100,122,64,11,138,71,234,83,8,160,0,224,188,1,225,51,6,
+225,53,7,64,32,220,112,128,192,144,191,130,69,97,77,128,77,225,61,14,
+100,21,1,53,49,86,54,131,210,0,54,78,19,121,174,230,190,15,192,58,
+192,167,225,128,1,224,76,44,3,102,108,97,103,234,13,3,133,145,161,200,
+224,81,43,2,111,110,102,230,123,4,231,174,10,224,45,1,3,117,110,105,
+120,135,68,234,185,2,0,95,116,14,96,0,0,58,109,45,69,23,1,53,
+48,107,173,77,151,114,163,68,177,98,228,1,95,53,66,49,160,159,0,53,
+116,191,96,11,0,58,96,6,213,3,106,185,114,179,165,66,217,44,224,12,
+2,249,239,0,213,7,107,208,149,7,128,10,117,7,96,10,0,58,96,6,
+213,7,249,124,0,224,66,1,116,215,114,188,0,58,96,6,198,255,127,2,
+66,28,98,89,0,57,85,195,245,35,3,0,52,64,109,156,205,132,149,198,
+152,0,95,208,226,83,9,84,220,129,172,96,24,3,95,50,57,57,73,66,
+71,142,163,247,224,41,1,86,197,193,138,0,49,98,199,125,162,64,151,72,
+118,190,98,134,132,65,244,244,181,19,66,206,250,144,0,103,239,160,2,160,
+99,0,58,100,145,231,234,6,244,82,0,64,73,122,76,229,124,0,175,39,
+250,94,1,198,133,98,98,224,225,0,180,107,0,53,96,182,128,102,189,185,
+99,114,238,4,4,0,52,87,217,192,97,163,124,123,184,104,51,224,44,7,
+121,59,186,252,96,44,134,8,1,95,55,96,31,170,21,228,165,2,196,121,
+228,119,6,2,67,97,110,69,159,3,112,97,114,115,235,235,1,167,254,228,
+225,44,174,29,245,151,1,232,193,0,243,160,10,224,85,32,229,55,16,2,
+82,101,97,197,54,0,115,102,65,9,46,32,80,111,115,115,105,98,108,101,
+192,22,165,78,206,98,101,56,229,61,4,0,89,97,237,66,9,193,231,64,
+151,80,192,97,128,201,54,160,0,229,85,5,224,231,9,221,107,224,163,1,
+160,135,0,46,228,96,0,0,58,104,77,184,36,246,75,0,5,52,57,49,
+32,95,54,194,114,1,95,55,64,253,115,207,0,53,67,14,116,90,148,95,
+65,51,91,245,1,95,55,182,91,0,52,91,136,0,58,97,249,184,63,97,
+88,0,55,79,184,240,222,0,0,79,96,104,235,166,2,88,25,0,54,121,
+59,224,170,1,2,58,94,42,229,222,1,96,51,225,113,8,2,32,32,102,
+70,171,225,85,1,0,52,67,57,141,193,0,53,95,32,161,235,224,59,13,
+5,101,120,112,101,99,116,240,138,0,236,47,0,2,55,50,49,227,59,1,
+227,148,2,216,82,2,95,55,50,101,7,67,199,0,58,64,44,227,171,7,
+235,150,0,206,249,193,183,195,10,128,27,1,95,55,96,21,132,124,163,90,
+160,106,180,252,235,117,1,75,176,3,95,55,49,56,134,87,97,56,96,84,
+138,251,128,53,64,188,228,53,7,1,52,51,224,242,2,16,102,111,108,100,
+114,49,58,32,101,109,112,116,121,32,108,105,115,136,147,224,169,0,0,83,
+68,233,160,14,179,53,224,10,2,101,68,160,105,132,225,0,85,139,98,244,
+93,1,1,95,52,230,240,0,100,139,192,168,242,120,9,96,255,225,144,5,
+210,17,224,83,0,235,76,9,224,26,13,246,242,6,224,90,10,2,108,105,
+110,196,81,163,232,224,152,2,177,231,224,52,8,4,44,32,99,111,108,128,
+53,224,40,4,238,48,4,6,101,110,100,45,111,102,45,202,47,224,26,3,
+5,110,111,32,108,111,99,114,127,196,204,224,28,17,0,58,99,3,119,2,
+129,241,225,231,1,173,45,0,35,84,156,71,213,172,71,64,7,193,237,244,
+54,0,64,4,0,85,99,92,74,217,0,53,66,155,130,192,165,157,171,169,
+129,213,65,241,65,180,250,34,1,226,77,0,224,46,30,96,146,162,215,230,
+39,0,224,39,11,132,162,230,34,3,224,39,12,131,114,224,205,4,231,231,
+0,0,83,224,82,6,164,246,152,223,192,130,66,162,250,244,4,0,35,79,
+150,129,221,0,54,67,97,3,67,32,95,54,78,36,0,35,195,54,224,109,
+29,224,69,0,192,108,200,84,224,108,12,128,228,224,77,5,1,67,39,156,
+33,0,49,136,171,131,239,1,95,54,88,98,1,64,64,232,96,1,96,52,
+1,95,54,121,47,98,2,96,173,71,60,73,52,66,227,169,32,78,249,200,
+192,111,92,1,53,49,238,125,0,187,238,160,141,160,228,171,96,225,121,3,
+0,54,153,1,128,14,225,150,2,99,202,0,54,130,11,225,30,29,140,175,
+193,30,224,109,12,103,80,224,157,1,1,95,54,91,210,1,35,49,68,234,
+224,160,15,224,50,14,169,215,192,142,68,149,106,15,224,43,10,0,57,128,
+152,70,186,65,249,107,114,3,51,50,50,32,129,254,72,2,0,49,80,244,
+225,56,7,100,196,224,19,6,169,74,224,76,11,96,100,1,95,54,104,41,
+224,32,12,131,179,2,95,54,54,235,146,0,248,31,0,97,77,161,114,0,
+50,102,178,133,136,225,108,18,177,57,1,32,83,225,47,0,229,172,2,167,
+198,64,126,130,226,192,105,134,131,71,194,65,20,160,69,231,219,1,163,22,
+224,160,0,224,134,24,177,180,166,208,189,144,221,149,234,132,2,69,162,160,
+86,128,155,114,7,128,68,236,208,15,229,175,3,64,201,130,218,88,105,161,
+141,132,120,65,62,118,194,128,194,65,206,104,159,120,128,113,35,2,95,54,
+54,95,32,64,7,0,52,224,134,3,242,67,2,96,36,129,25,128,36,96,
+90,128,42,160,48,2,95,54,54,247,35,1,225,24,25,228,152,29,165,106,
+225,158,7,96,134,66,56,135,247,85,147,0,51,197,196,225,173,8,228,196,
+3,128,150,131,62,96,9,162,25,218,254,200,139,229,171,0,133,224,96,122,
+64,98,2,95,54,55,64,249,228,154,8,160,91,232,180,0,136,202,130,69,
+96,76,129,9,227,68,8,140,109,0,54,153,54,226,103,26,228,148,0,96,
+119,224,21,8,0,55,170,63,195,48,96,21,225,78,3,105,62,197,150,65,
+3,224,29,4,214,26,135,25,197,90,0,56,96,254,231,246,5,16,85,110,
+114,101,99,111,103,110,105,122,101,100,32,105,110,112,117,241,3,5,200,193,
+144,43,97,227,4,83,32,95,54,56,230,91,3,96,220,192,171,130,5,131,
+38,102,4,65,21,127,87,0,75,97,190,96,53,0,56,235,163,3,7,73,
+108,108,101,103,97,108,32,95,33,7,32,108,105,116,101,114,97,108,168,65,
+206,8,0,90,132,98,224,225,7,174,37,109,234,2,95,49,53,79,125,72,
+230,132,131,225,113,0,0,95,132,142,226,200,1,162,56,230,211,13,129,88,
+97,81,64,187,226,206,16,128,38,225,17,14,99,18,2,95,54,56,64,120,
+192,195,98,57,224,67,9,160,195,224,37,37,225,15,10,224,37,2,225,15,
+12,242,139,0,129,19,0,54,176,179,225,212,21,224,194,6,224,118,42,225,
+134,9,226,180,2,227,94,9,227,54,14,98,76,133,25,227,168,0,167,66,
+131,170,163,252,204,120,98,126,66,144,228,92,4,236,151,2,192,105,232,116,
+14,107,102,119,108,224,0,2,96,130,1,55,48,207,252,229,19,2,64,3,
+196,217,64,5,101,113,128,216,1,54,53,101,74,224,113,2,128,109,229,10,
+1,224,48,6,1,55,48,96,29,224,48,11,64,0,65,171,1,95,55,65,
+111,70,66,238,249,0,225,32,3,0,55,170,166,225,32,5,225,18,1,0,
+55,72,80,225,18,6,225,17,42,192,48,1,95,54,79,114,160,18,96,20,
+184,41,192,29,160,52,225,220,15,0,58,96,21,109,254,101,200,197,194,64,
+7,77,158,227,129,3,5,67,32,61,61,32,64,136,128,139,250,202,17,104,
+219,64,202,96,102,133,223,66,242,65,37,0,58,96,146,108,60,0,80,136,
+189,120,128,64,37,242,183,2,225,60,5,198,98,230,104,0,194,98,196,63,
+224,16,2,235,28,14,162,238,224,39,4,206,114,224,20,1,64,1,134,177,
+224,115,5,129,186,152,104,224,123,2,246,46,1,234,184,5,203,131,230,64,
+0,105,14,228,187,2,131,54,0,85,227,63,1,0,85,224,236,2,64,0,
+192,43,96,169,193,119,130,106,226,19,27,64,252,218,228,224,172,0,233,155,
+0,227,200,1,134,148,128,166,143,96,162,153,130,151,130,67,0,52,98,52,
+224,82,2,160,83,162,162,224,50,0,131,25,129,20,224,151,0,224,163,15,
+227,208,6,224,138,2,228,65,14,164,60,128,140,160,153,227,35,7,224,84,
+0,0,58,97,41,162,79,170,18,136,39,192,237,227,241,0,235,133,1,1,
+51,54,71,98,113,122,249,145,3,1,108,101,112,169,224,18,3,3,119,104,
+101,114,111,114,224,20,3,1,100,111,224,17,7,0,111,114,229,237,38,0,
+161,25,104,240,194,157,128,110,224,50,1,0,105,183,121,77,174,66,74,91,
+158,64,55,227,109,0,100,131,156,60,77,129,230,2,7,0,49,83,80,192,
+32,246,133,0,160,127,225,79,0,134,213,165,19,0,55,177,251,129,96,0,
+58,97,248,155,249,129,25,130,189,224,14,2,64,91,224,14,1,108,55,233,
+126,6,165,34,0,58,98,210,161,133,2,80,32,35,96,104,0,80,64,99,
+69,86,118,182,225,149,3,141,75,0,80,70,172,242,57,4,2,105,109,112,
+180,201,8,58,32,102,105,114,115,116,32,99,72,156,8,105,115,32,97,32,
+100,105,103,105,178,72,64,100,67,206,225,226,0,228,43,8,170,154,227,238,
+3,228,45,23,224,42,5,228,48,1,228,49,4,228,51,1,224,22,2,228,
+28,0,95,253,212,14,226,5,0,228,86,1,96,24,163,66,102,18,160,69,
+143,18,65,13,116,227,224,92,3,128,131,160,96,250,201,5,196,165,225,4,
+0,160,13,96,33,194,249,128,95,224,107,3,106,26,149,62,227,177,4,64,
+188,224,11,0,232,0,4,160,133,224,239,2,224,163,1,228,188,3,137,182,
+68,69,96,92,99,171,6,52,48,32,95,54,57,54,80,147,0,53,122,45,
+0,53,175,195,2,95,55,48,77,109,0,80,71,217,0,52,224,30,8,128,
+13,192,14,136,219,224,70,11,168,235,229,77,2,96,128,224,199,0,224,224,
+25,96,0,98,156,244,94,1,192,5,170,181,64,53,96,176,85,237,195,66,
+172,146,166,19,87,0,224,36,10,96,140,224,232,21,0,51,126,150,183,253,
+224,231,30,96,86,212,140,192,242,229,195,0,85,237,194,134,66,144,95,253,
+160,0,225,138,13,192,0,226,72,13,160,86,226,163,9,194,24,226,21,5,
+226,170,5,226,19,11,226,21,22,225,63,1,226,34,78,226,29,2,224,247,
+0,182,201,64,175,219,1,227,189,1,244,72,19,128,70,128,59,119,70,192,
+61,232,83,1,230,228,2,239,46,2,170,193,244,1,15,224,49,1,228,215,
+5,228,127,0,128,67,160,73,239,102,10,242,211,14,0,48,135,145,228,165,
+0,192,68,251,183,0,232,254,1,96,240,0,80,96,81,66,107,0,53,105,
+214,124,76,225,29,1,227,92,13,236,139,7,161,17,70,196,167,33,64,10,
+220,234,98,178,229,52,1,225,55,25,227,156,0,225,55,4,205,103,225,55,
+128,193,42,225,41,19,129,26,225,24,29,224,185,2,107,146,224,183,41,226,
+156,1,224,190,63,96,93,224,190,29,0,64,124,102,226,38,19,229,146,0,
+224,24,7,163,187,1,95,54,64,22,227,206,1,160,213,0,58,110,26,152,
+210,250,135,6,15,114,111,109,74,117,115,116,58,32,78,111,116,104,105,110,
+103,104,61,127,59,64,152,251,77,13,165,5,225,19,0,129,1,235,16,0,
+0,58,123,76,122,148,0,65,96,72,237,67,2,75,75,1,48,50,73,55,
+0,57,109,16,221,88,129,66,206,24,160,2,96,77,231,62,2,118,135,162,
+151,129,132,99,121,68,97,195,135,151,189,82,73,0,50,108,17,151,151,114,
+89,0,48,97,176,161,64,224,9,1,200,149,206,41,224,15,6,224,66,3,
+224,82,21,192,45,99,158,235,91,7,103,2,0,95,73,73,224,163,33,130,
+176,1,53,55,224,35,5,224,51,21,226,13,3,73,197,245,157,0,160,130,
+128,149,160,23,76,254,98,81,224,8,0,224,238,46,254,173,0,65,152,230,
+21,1,70,158,68,115,64,136,64,198,224,9,3,224,104,35,0,58,70,220,
+130,139,225,237,52,0,58,96,142,239,87,2,196,50,114,71,96,31,141,39,
+162,133,226,224,0,66,234,205,32,225,212,8,1,49,52,118,231,224,139,25,
+224,208,1,225,216,36,224,54,0,227,233,4,241,161,1,64,8,1,95,54,
+67,231,230,121,0,233,121,3,65,219,0,57,140,129,134,166,224,116,37,160,
+77,224,71,4,128,250,230,250,0,0,55,85,135,192,123,224,60,1,225,18,
+37,0,58,72,201,132,52,1,75,51,100,53,223,120,228,15,5,242,153,2,
+0,83,194,123,227,89,34,225,131,68,98,60,0,89,228,181,12,225,158,5,
+224,169,3,70,129,128,107,118,242,224,178,35,224,179,60,160,172,168,67,224,
+172,13,98,80,0,56,224,70,6,98,250,195,2,69,171,165,34,200,112,101,
+165,229,210,0,141,204,96,34,82,231,227,47,3,70,88,224,89,1,224,211,
+51,162,237,225,128,1,224,129,9,139,74,226,158,0,96,139,224,138,84,224,
+68,0,160,114,128,30,199,184,231,126,6,31,68,97,116,97,46,73,110,116,
+101,103,114,97,108,46,92,94,58,32,110,101,103,97,116,105,118,101,32,101,
+120,112,111,110,1,101,110,175,206,160,76,0,58,99,130,135,76,133,109,226,
+81,31,128,184,225,44,0,80,170,77,86,224,242,24,224,55,0,224,230,4,
+224,54,39,96,11,0,58,98,83,131,226,0,50,96,37,0,58,100,182,245,
+95,0,200,33,81,73,232,26,28,160,13,232,11,0,224,11,3,232,29,61,
+166,205,66,240,176,158,102,219,174,240,232,60,8,103,6,232,78,64,225,3,
+151,93,185,225,4,88,225,5,20,64,38,195,248,170,24,104,130,224,177,1,
+225,2,61,234,36,73,108,49,137,134,231,150,34,224,68,21,1,57,51,224,
+69,46,0,90,134,159,234,24,0,96,44,224,146,37,234,171,48,236,210,0,
+224,129,7,224,77,38,224,129,55,0,58,108,145,204,240,231,36,1,64,28,
+232,116,14,2,49,54,53,224,77,0,224,125,34,205,253,231,151,5,234,95,
+3,234,110,2,137,104,232,228,1,224,110,62,225,238,46,192,75,224,238,57,
+204,146,228,206,0,131,179,67,174,236,150,44,224,153,0,228,30,0,96,30,
+243,173,1,236,149,0,236,255,1,108,142,143,127,224,9,1,64,83,2,54,
+57,52,224,83,1,192,7,0,58,100,67,172,29,236,240,14,98,59,128,22,
+160,118,226,59,16,231,180,38,231,113,44,161,103,146,29,135,240,169,2,139,
+206,114,16,224,9,1,224,90,24,0,58,97,24,135,193,0,52,232,145,0,
+141,83,1,95,54,103,191,0,73,137,239,97,131,248,73,8,159,216,0,83,
+69,133,249,168,6,244,124,0,1,95,54,69,85,0,55,233,35,2,2,92,
+92,110,105,3,64,25,2,51,51,53,124,227,3,95,54,56,56,90,229,65,
+177,126,108,2,52,48,49,64,55,0,51,64,127,186,99,0,95,116,232,112,
+178,64,138,144,158,65,252,64,68,99,78,77,184,3,95,54,56,57,163,115,
+197,10,160,4,221,118,128,101,161,199,102,63,192,35,96,86,3,54,57,48,
+32,182,155,118,96,160,0,97,172,241,185,3,0,48,96,0,128,32,129,130,
+192,208,0,89,243,142,0,161,60,96,108,226,197,1,211,175,142,120,225,79,
+4,128,78,230,249,0,225,112,8,122,248,224,65,0,97,2,192,19,242,107,
+8,248,208,2,130,208,1,95,50,65,40,66,120,1,50,51,98,164,103,240,
+96,44,126,169,87,57,0,50,64,195,98,87,158,249,192,93,0,85,226,129,
+0,128,7,2,95,54,57,160,94,1,58,54,66,5,105,243,0,85,210,81,
+2,90,32,90,97,110,1,54,55,251,192,5,83,157,161,123,98,50,0,79,
+159,84,0,90,96,160,129,208,224,88,1,96,90,238,67,0,0,50,66,161,
+99,184,0,58,65,161,229,216,0,129,106,79,237,232,213,6,2,95,51,55,
+164,116,160,75,87,141,176,115,66,111,148,29,65,17,0,58,66,124,98,242,
+2,51,54,53,180,91,156,92,0,58,96,38,251,226,1,96,80,91,226,2,
+54,56,54,224,23,3,97,35,128,23,132,82,228,76,0,193,242,165,31,232,
+226,3,160,2,78,111,224,17,5,219,52,224,17,2,192,69,224,21,3,246,
+44,2,197,124,224,104,4,226,114,0,224,26,0,224,61,1,226,143,0,97,
+56,226,35,2,224,33,6,188,81,225,90,0,192,2,160,23,224,42,4,224,
+21,0,192,147,67,114,192,64,224,19,2,160,187,228,73,11,224,84,1,169,
+255,224,87,3,224,84,8,230,13,0,225,99,1,128,1,195,89,163,233,227,
+112,2,224,121,11,250,221,1,96,36,161,18,224,172,28,224,30,1,128,35,
+0,54,94,26,0,35,165,123,131,157,96,43,224,12,0,158,190,224,23,0,
+224,0,1,224,73,13,98,111,224,47,6,132,80,225,37,4,130,11,96,177,
+70,190,128,186,213,190,129,215,96,20,2,95,54,56,147,190,0,66,79,201,
+77,149,192,124,161,30,2,95,55,49,118,165,96,125,64,134,101,82,224,110,
+0,226,77,4,193,108,225,142,2,226,88,3,225,145,13,225,68,11,226,62,
+0,224,53,27,230,87,0,224,53,36,165,87,224,106,38,249,94,5,226,10,
+13,197,144,225,184,11,161,171,225,218,4,1,95,54,157,52,129,211,225,91,
+2,224,32,2,64,60,128,32,224,237,0,224,93,12,240,123,6,13,98,97,
+100,32,115,116,114,105,110,103,32,103,97,112,144,102,227,185,4,101,115,0,
+39,69,116,96,73,2,56,32,64,224,60,1,18,117,110,116,101,114,109,105,
+110,97,116,101,100,32,67,104,97,114,47,83,128,74,6,108,105,116,101,114,
+97,108,96,78,135,135,225,69,2,64,15,225,170,24,224,46,30,161,12,224,
+92,31,161,156,227,6,2,106,105,225,38,9,106,9,152,200,225,142,64,107,
+181,202,77,210,58,210,146,128,5,135,9,2,58,54,56,137,96,232,185,0,
+224,250,12,64,49,64,115,199,2,99,166,64,7,64,24,0,58,96,14,199,
+96,225,243,5,12,66,97,100,32,92,92,32,101,115,99,97,112,101,129,242,
+130,218,225,52,13,171,37,224,33,17,191,66,224,32,18,104,21,224,99,19,
+87,114,224,133,22,101,113,224,33,20,164,185,224,33,18,224,135,23,66,222,
+224,66,21,0,50,225,12,23,104,2,66,131,118,179,64,29,253,130,8,134,
+60,101,2,128,34,116,168,64,8,168,70,74,52,0,49,98,141,0,54,64,
+42,0,67,94,84,160,17,255,74,0,133,126,129,251,74,198,72,67,108,30,
+201,157,91,246,66,23,64,5,128,71,130,29,228,160,1,96,114,76,187,156,
+32,64,204,64,75,133,155,238,137,6,100,204,133,180,98,234,228,217,0,192,
+26,224,23,2,7,95,54,55,57,32,95,51,53,131,26,164,75,0,79,162,
+173,100,72,169,194,96,143,97,80,107,104,131,113,224,162,1,224,101,3,145,
+107,224,94,9,224,82,8,224,81,22,227,46,7,96,29,0,49,131,165,253,
+63,1,64,17,0,56,224,16,0,160,33,0,54,224,16,3,231,174,4,97,
+242,224,81,0,231,183,0,224,20,11,100,130,224,21,9,66,254,224,21,8,
+66,140,224,20,8,106,129,224,63,8,100,143,160,21,0,58,100,1,202,234,
+129,51,161,197,198,149,234,45,11,96,17,238,167,2,224,25,0,229,81,1,
+128,10,98,249,160,26,64,128,98,178,0,54,239,172,0,0,52,75,40,228,
+243,0,170,35,96,70,98,176,236,105,0,96,43,224,12,0,97,85,0,53,
+232,123,2,161,166,98,215,224,218,3,139,219,2,79,32,80,228,208,2,2,
+78,85,76,68,198,97,157,224,25,5,2,83,79,72,96,25,64,156,224,25,
+6,1,84,88,96,25,65,121,224,25,5,0,69,160,25,64,113,224,25,6,
+1,79,84,96,25,67,76,224,25,6,1,78,81,96,25,64,172,224,25,5,
+2,65,67,75,96,25,64,218,224,25,5,1,66,69,128,181,65,209,224,25,
+6,0,83,96,24,65,255,224,24,5,0,72,128,127,66,89,224,24,5,1,
+76,70,128,230,225,1,9,0,86,128,50,98,162,224,25,5,0,70,160,51,
+225,1,9,1,67,82,128,25,225,1,9,1,83,79,128,25,225,1,9,1,
+83,73,128,25,225,1,9,2,68,76,69,128,26,225,2,9,2,68,67,49,
+128,26,225,3,9,2,68,67,50,128,26,225,5,9,2,68,67,51,128,26,
+225,7,9,2,68,67,52,96,26,101,166,224,26,5,1,78,65,129,136,0,
+50,226,11,10,1,89,78,128,26,226,12,11,0,66,128,26,225,11,9,1,
+67,65,160,53,226,14,10,0,77,128,25,225,12,9,1,83,85,160,79,225,
+12,9,2,69,83,67,128,26,225,12,9,0,70,130,16,82,37,224,25,6,
+0,71,160,25,225,10,9,0,82,128,25,70,113,224,25,6,0,85,160,25,
+225,8,10,0,80,128,25,225,7,9,0,68,162,172,70,198,233,211,0,224,
+0,20,0,58,101,136,238,214,1,230,33,1,196,10,1,54,55,64,75,197,
+212,105,48,64,93,2,95,54,55,103,134,1,95,51,98,154,73,43,1,95,
+49,139,248,0,58,69,250,64,83,114,146,0,58,96,40,239,211,3,1,80,
+32,160,52,196,246,224,95,0,64,92,224,67,0,143,158,114,66,231,150,2,
+105,212,224,20,8,65,36,224,20,7,112,108,224,20,8,66,33,224,20,7,
+0,49,98,55,224,21,9,66,24,224,106,8,135,235,224,20,5,102,229,0,
+67,241,16,5,0,35,71,215,2,64,95,49,97,166,144,115,224,7,55,3,
+58,54,55,54,170,46,242,128,0,69,240,185,104,230,19,1,106,226,3,67,
+32,61,61,231,46,1,134,28,0,85,64,12,64,8,0,90,249,155,8,198,
+116,134,75,241,113,2,237,23,1,103,205,226,109,1,2,99,97,115,170,152,
+231,179,5,154,106,171,44,129,203,181,141,96,1,168,138,104,149,137,154,198,
+216,166,192,137,144,2,67,32,60,178,188,230,159,0,224,218,7,224,28,0,
+128,216,179,232,233,31,3,192,234,224,34,1,240,41,1,160,68,134,216,224,
+67,7,224,245,2,226,35,3,192,0,106,5,169,212,0,54,82,140,2,95,
+54,55,64,31,175,193,224,104,93,0,58,97,105,140,129,7,54,55,50,32,
+64,90,32,85,157,150,225,63,1,64,116,224,18,6,148,15,224,18,4,130,
+190,224,18,4,102,164,104,20,192,191,168,190,64,104,1,64,85,117,188,251,
+118,1,192,15,224,68,6,67,1,98,81,224,18,1,68,76,160,45,224,60,
+1,206,125,224,61,5,64,104,224,80,6,131,167,224,80,4,66,108,160,65,
+224,80,7,224,41,6,67,73,224,41,1,194,157,65,70,141,132,2,95,53,
+50,126,235,88,201,149,58,64,49,67,64,0,58,96,245,100,195,0,80,137,
+220,0,85,96,20,136,230,228,13,7,105,100,228,77,9,228,56,11,142,30,
+224,63,7,224,41,11,73,191,228,98,8,0,49,102,160,228,99,44,2,58,
+54,55,213,106,133,147,164,40,131,156,116,242,3,64,58,54,54,213,88,246,
+1,6,98,222,130,152,248,135,0,2,54,54,56,249,137,1,0,95,86,32,
+0,95,243,165,0,82,147,0,51,192,15,0,58,96,41,181,175,0,53,98,
+211,82,142,64,245,0,58,64,54,97,139,0,54,153,67,173,36,2,54,54,
+53,86,188,119,156,64,81,3,58,54,54,54,198,182,3,95,53,54,51,171,
+65,211,12,74,190,0,53,99,39,202,191,160,13,107,10,0,57,68,202,129,
+57,170,204,249,135,1,0,58,64,105,160,88,142,60,65,114,235,45,0,129,
+36,0,67,184,7,70,200,239,179,4,17,33,33,58,32,105,110,100,101,120,
+32,116,111,111,32,108,97,114,103,197,32,164,15,227,236,1,64,247,224,78,
+0,144,218,238,20,1,253,105,1,242,9,7,64,97,7,110,101,103,97,116,
+105,118,101,128,106,96,96,1,58,54,66,52,132,10,224,48,5,15,105,110,
+105,116,58,32,101,109,112,116,121,32,108,105,115,116,96,46,225,207,4,249,
+37,7,165,197,65,84,131,30,64,9,231,191,3,66,133,67,85,199,171,128,
+20,134,47,80,198,135,219,64,22,225,145,0,96,8,232,89,2,97,3,200,
+59,160,101,184,106,66,87,71,207,238,238,0,128,14,239,119,11,112,210,239,
+119,5,176,163,239,165,12,135,206,224,45,3,67,2,128,124,131,201,224,54,
+11,0,52,185,63,224,54,2,0,53,64,73,1,58,54,66,17,248,16,3,
+210,217,205,120,214,232,130,104,161,106,207,177,129,102,122,184,0,56,218,120,
+231,170,0,173,92,117,178,242,243,6,175,45,64,37,0,85,190,251,243,35,
+0,96,52,128,31,128,86,129,154,181,250,97,220,96,74,250,74,4,225,129,
+1,71,221,248,248,1,97,254,120,248,64,73,96,23,128,230,176,109,132,139,
+67,151,155,81,251,68,6,128,203,193,225,128,153,98,46,245,162,1,64,102,
+229,137,0,243,118,1,243,119,2,97,11,231,38,0,224,5,0,153,89,224,
+15,3,66,142,228,186,0,134,49,128,2,151,241,225,162,0,246,198,0,248,
+188,9,155,214,128,21,224,48,0,247,124,0,160,54,104,180,224,53,3,160,
+202,224,74,8,128,146,229,234,4,207,65,233,91,1,181,187,242,94,1,218,
+209,224,126,3,103,131,126,186,225,181,2,252,178,8,224,91,0,230,244,0,
+96,74,224,51,28,96,199,165,242,225,42,11,225,176,0,224,46,1,224,1,
+3,208,167,128,125,225,56,11,129,53,160,47,240,170,2,197,20,225,65,134,
+129,66,224,62,0,225,68,42,66,195,98,204,168,110,64,4,227,22,2,227,
+43,13,160,180,230,195,47,0,58,100,98,203,101,228,200,0,3,49,51,54,
+32,228,195,0,64,12,1,64,35,132,138,224,38,10,197,79,128,38,197,74,
+133,237,224,39,3,197,73,128,39,133,68,230,118,6,8,100,105,103,105,116,
+84,111,73,110,134,112,64,218,244,244,9,224,16,0,180,254,134,250,161,13,
+224,49,27,96,176,224,49,21,96,39,96,255,65,33,0,54,225,33,0,1,
+95,54,79,89,96,9,0,49,78,83,65,84,1,49,49,65,84,0,48,224,
+198,2,10,92,34,108,105,98,47,68,97,116,97,47,89,57,9,46,104,115,
+92,34,44,49,57,49,58,113,17,97,124,108,236,106,207,95,134,78,95,64,
+135,226,48,0,245,237,18,98,206,224,200,2,96,161,136,125,2,95,54,50,
+73,46,1,53,51,101,127,135,218,2,79,32,67,69,151,64,54,144,179,138,
+40,160,22,103,80,145,27,224,23,4,74,118,107,135,224,21,4,64,241,98,
+118,179,89,128,42,224,19,255,224,19,195,0,51,98,90,224,81,58,0,51,
+224,241,150,224,159,151,224,19,255,224,19,37,115,217,160,21,0,49,224,81,
+50,69,5,96,19,0,52,182,116,224,81,45,0,52,183,135,224,61,20,109,
+217,0,52,183,229,224,83,16,226,175,0,0,49,107,169,224,83,7,1,52,
+48,229,220,3,224,21,1,150,145,224,189,25,224,127,4,224,63,1,184,19,
+224,43,6,183,82,224,43,7,224,151,11,225,83,13,224,63,12,183,61,224,
+107,7,224,85,22,226,35,40,0,52,72,133,225,19,29,224,41,3,228,47,
+20,224,83,28,129,231,0,51,225,81,11,224,187,33,225,99,31,224,19,2,
+220,243,186,225,224,247,26,224,39,70,224,19,142,230,1,171,224,179,0,225,
+123,51,0,49,120,213,224,61,7,147,238,224,83,47,224,19,255,224,19,88,
+122,59,224,201,178,228,141,0,3,50,49,53,57,64,8,160,23,226,113,20,
+0,51,189,116,224,41,6,2,49,53,56,227,7,2,227,207,20,1,51,56,
+225,55,2,226,243,1,229,79,12,1,49,52,224,65,2,227,9,92,65,8,
+224,41,28,229,223,11,83,236,128,19,189,226,96,21,77,222,96,21,92,3,
+224,82,3,64,35,0,35,123,115,224,83,7,0,49,231,107,3,64,42,102,
+177,152,52,160,21,65,99,127,242,238,76,5,65,212,64,59,238,52,5,224,
+88,1,224,65,2,224,173,1,225,79,82,224,19,130,80,242,129,4,0,49,
+226,129,2,226,171,20,1,49,51,224,20,1,226,126,11,64,60,97,197,228,
+12,4,97,154,145,18,117,97,192,64,64,128,80,187,225,156,5,95,198,225,
+135,228,224,19,91,75,67,225,24,255,224,19,255,224,19,9,86,156,192,20,
+233,103,131,241,17,255,224,19,255,224,19,255,224,19,159,67,191,0,51,120,
+225,88,52,224,41,0,0,57,119,233,128,24,2,49,52,53,233,227,3,126,
+39,96,70,224,24,6,232,180,1,224,23,5,1,55,50,64,100,0,55,159,
+12,1,55,55,224,26,3,104,80,168,126,224,125,2,1,50,48,228,226,11,
+64,145,107,100,2,35,54,48,104,179,160,23,0,52,120,172,224,23,9,0,
+51,96,119,225,224,247,224,19,255,224,19,255,224,19,255,224,19,255,224,19,
+175,237,54,1,3,49,53,50,50,242,223,182,224,19,255,224,19,255,224,19,
+243,99,216,138,120,245,191,3,74,93,138,41,224,21,7,224,43,13,224,65,
+31,244,242,0,224,21,3,224,151,0,224,20,45,75,33,224,127,8,85,103,
+224,171,36,224,21,13,149,94,224,129,6,128,20,0,52,64,49,224,151,8,
+224,20,2,94,88,75,241,64,21,249,183,2,245,114,1,224,43,7,224,108,
+18,0,57,247,26,3,64,65,224,43,17,0,50,75,136,224,152,9,224,20,
+2,224,108,1,1,50,53,224,65,12,0,53,224,174,2,224,218,12,1,50,
+57,248,35,0,3,49,53,48,51,224,91,2,246,80,2,1,55,54,225,77,
+3,224,23,1,0,53,224,160,3,226,16,0,0,53,236,146,2,0,52,97,
+122,98,61,247,47,3,0,51,76,122,226,192,7,0,56,85,179,0,35,120,
+124,1,35,53,226,216,3,1,56,54,64,69,97,165,0,35,237,109,3,64,
+11,227,26,18,2,49,52,56,224,182,11,1,55,54,77,163,224,22,8,3,
+50,49,52,53,224,205,2,237,2,61,1,49,53,246,52,3,224,107,3,0,
+57,224,131,13,0,53,225,105,12,64,23,224,155,2,224,115,11,224,175,11,
+65,78,130,6,1,49,54,231,233,255,224,19,255,224,19,255,224,19,211,251,
+253,31,229,140,11,3,51,49,48,53,252,255,11,225,107,255,224,19,168,251,
+45,255,224,19,7,1,49,51,232,69,21,224,19,101,227,114,255,224,19,255,
+224,19,83,0,49,253,15,40,2,55,48,54,234,135,3,253,79,91,230,155,
+11,224,39,0,1,56,52,235,95,4,235,179,31,227,100,200,2,56,52,54,
+238,239,4,224,23,2,122,138,224,23,10,236,15,3,224,23,3,0,48,224,
+23,14,239,187,12,2,56,52,53,224,119,14,236,175,4,224,23,3,0,50,
+238,144,2,238,73,1,0,56,238,51,3,226,86,91,224,19,60,0,57,225,
+115,14,239,161,4,192,23,3,55,48,55,54,237,243,12,224,108,30,2,56,
+52,54,238,206,12,224,43,2,226,215,11,230,220,60,2,56,53,49,225,183,
+3,79,162,224,44,9,1,50,51,113,103,143,191,1,54,52,224,170,2,0,
+50,79,186,124,255,0,64,124,185,224,24,0,0,55,64,48,80,11,224,23,
+6,0,57,64,121,82,207,2,64,35,55,252,245,2,144,237,64,89,224,22,
+5,64,69,66,63,224,21,4,80,214,110,252,224,42,4,1,55,55,64,67,
+0,53,96,90,0,49,253,81,3,1,50,48,64,48,96,229,224,188,4,1,
+50,56,112,101,0,51,224,24,9,1,49,57,105,83,224,25,9,3,51,49,
+52,50,65,138,113,76,1,35,54,64,100,2,75,32,64,224,0,255,224,0,
+255,224,0,136,1,58,54,82,255,12,10,65,32,83,39,32,95,49,52,49,
+32,64,95,102,37,9,67,32,95,49,50,55,32,95,49,51,99,53,100,244,
+1,58,54,83,160,16,10,65,32,66,32,89,32,64,66,32,66,32,83,32,
+85,32,80,64,55,2,55,32,64,128,5,64,0,1,67,39,64,27,1,67,
+39,64,83,0,66,64,18,64,16,2,67,32,64,192,41,192,17,96,32,1,
+80,32,128,13,7,95,49,48,54,32,64,85,32,99,52,2,85,32,65,163,
+59,1,58,54,84,204,192,115,128,80,64,119,3,64,66,32,85,96,165,0,
+55,70,139,224,87,0,64,85,96,124,3,32,64,67,39,64,97,0,64,224,
+198,2,132,92,2,64,64,64,128,52,96,92,0,48,96,92,2,67,32,83,
+224,239,3,131,216,224,20,7,68,159,224,20,8,0,54,68,8,224,20,7,
+0,52,68,3,224,20,8,64,114,224,20,7,0,53,68,39,224,83,8,64,
+166,224,20,8,224,125,11,85,104,224,20,8,100,129,224,20,8,224,125,11,
+77,4,224,20,9,65,73,224,251,8,225,16,11,0,51,224,188,11,0,52,
+224,167,12,224,83,11,0,49,69,47,224,21,10,224,148,11,104,88,224,20,
+7,1,56,55,106,7,224,22,8,0,54,225,85,12,1,56,53,224,196,12,
+1,56,53,225,215,12,2,56,55,48,64,45,99,21,65,80,5,66,32,95,
+52,52,52,98,105,65,157,227,45,2,65,131,2,95,54,52,64,114,3,64,
+64,95,49,75,95,224,7,183,3,58,54,52,57,132,20,97,21,64,241,1,
+95,54,161,195,1,95,54,66,53,31,102,114,111,109,85,84,70,56,32,34,
+33,92,34,35,37,38,39,40,41,42,44,45,46,47,58,59,63,64,91,92,
+92,93,3,95,123,125,34,64,79,0,58,97,24,99,97,6,95,50,57,48,
+32,64,83,67,243,1,83,39,67,186,0,60,199,215,224,19,7,162,0,224,
+19,4,96,124,100,70,3,67,32,61,61,192,17,1,95,49,120,95,1,85,
+32,192,191,224,10,3,0,67,164,97,192,66,67,1,224,30,1,224,40,2,
+224,128,8,130,16,224,61,5,66,128,224,61,12,224,149,5,64,19,224,149,
+9,65,7,0,55,225,81,9,131,147,225,81,7,10,36,43,60,61,62,92,
+94,96,92,124,126,193,67,0,54,225,67,19,72,144,225,47,7,104,210,224,
+153,4,96,17,225,47,20,0,83,224,241,6,67,91,224,30,1,224,230,5,
+66,237,224,230,13,0,53,198,77,101,163,67,86,133,149,101,152,230,86,5,
+132,148,0,64,65,9,65,93,97,10,68,62,105,193,1,58,54,67,110,97,
+49,160,150,101,213,0,66,160,90,192,72,0,51,68,2,225,59,1,5,83,
+79,85,82,67,69,97,54,160,118,134,87,1,64,95,139,159,64,20,6,95,
+51,51,53,32,95,54,100,103,5,66,32,95,53,55,55,65,130,64,29,3,
+95,52,52,51,64,11,230,199,2,224,147,4,96,75,160,181,0,58,96,180,
+102,152,102,154,68,18,192,159,70,119,96,8,166,125,70,194,107,58,96,37,
+70,193,64,5,0,80,102,163,0,79,96,203,0,54,69,75,224,198,1,18,
+85,110,99,108,111,115,101,100,32,123,45,32,99,111,109,109,101,110,116,96,
+211,138,81,129,233,71,89,135,131,128,7,225,37,0,0,83,230,244,6,123,
+174,96,249,193,143,192,47,225,146,10,98,147,231,195,0,128,251,96,159,123,
+165,161,165,4,56,48,32,95,55,107,192,161,247,224,147,39,192,101,224,146,
+28,0,49,108,92,224,147,23,2,49,55,52,224,148,14,64,85,192,97,130,
+62,232,22,14,224,46,30,67,23,224,187,0,224,231,4,224,84,4,226,110,
+0,224,175,5,192,156,192,24,1,95,54,102,80,224,16,4,224,192,0,168,
+168,0,58,96,24,7,10,65,32,85,32,66,32,90,66,54,129,100,1,95,
+51,126,152,128,177,2,95,53,50,194,167,225,163,11,0,58,96,86,96,67,
+193,102,128,49,67,35,0,52,192,44,131,48,67,87,167,134,224,71,2,125,
+137,67,248,96,4,64,80,201,60,105,147,192,85,224,154,4,160,99,224,73,
+5,64,59,65,11,163,60,142,175,2,64,64,80,70,120,67,7,229,38,6,
+168,186,229,38,7,10,32,94,41,94,42,94,43,94,44,94,45,165,38,67,
+183,234,157,3,74,111,100,162,170,22,96,20,135,182,225,170,3,160,144,0,
+54,128,204,65,0,64,26,1,54,51,70,154,133,112,1,95,50,80,169,0,
+58,96,137,5,10,65,32,95,52,56,128,244,196,229,230,61,5,96,226,224,
+26,12,129,10,224,26,13,97,2,224,26,13,97,110,196,94,229,163,4,113,
+207,139,10,65,214,229,238,3,64,25,229,161,10,224,44,13,229,206,14,224,
+117,15,101,31,224,72,12,231,148,13,224,44,14,101,151,224,117,11,225,7,
+14,65,144,224,145,14,97,115,224,100,12,64,25,224,145,32,97,242,225,7,
+33,99,226,224,72,12,102,77,224,117,31,64,37,225,7,13,226,97,14,194,
+16,225,35,10,98,207,224,173,13,96,86,224,128,12,131,16,224,173,30,64,
+97,225,35,33,104,69,224,72,12,96,25,224,117,31,232,112,15,224,118,2,
+225,34,5,195,78,224,145,10,226,189,16,234,82,14,224,44,14,226,189,16,
+224,45,12,226,134,15,225,200,15,96,164,225,253,13,96,58,224,26,13,98,
+144,224,245,13,99,60,224,154,12,226,244,15,224,44,12,226,216,15,224,117,
+14,64,39,224,72,13,226,244,15,224,44,12,226,160,15,225,7,14,98,115,
+224,144,13,99,31,224,99,12,226,215,15,224,44,11,226,186,15,224,116,13,
+99,174,224,70,11,226,212,15,224,43,11,226,155,15,225,3,15,194,10,224,
+25,9,198,159,224,168,9,99,52,224,124,11,226,235,15,224,43,11,226,233,
+16,224,114,12,226,150,16,226,149,35,226,148,16,228,28,14,225,0,16,226,
+174,16,226,173,36,228,24,35,229,77,16,73,59,2,51,48,54,200,136,0,
+58,96,6,233,25,6,103,110,243,184,6,1,95,54,96,76,0,58,108,209,
+233,73,7,96,109,0,54,86,188,0,58,96,38,211,247,64,43,1,95,53,
+105,16,74,163,0,54,169,113,224,17,0,1,64,35,73,6,64,52,138,67,
+238,137,15,238,116,8,224,221,12,225,0,26,0,58,96,171,160,190,75,221,
+127,175,1,49,55,99,5,0,54,136,175,0,54,68,185,0,58,96,244,224,
+146,2,225,138,25,0,58,96,63,224,197,22,227,76,9,224,18,6,114,75,
+226,176,25,224,10,13,240,92,7,224,51,4,225,6,4,65,226,193,197,96,
+240,225,207,1,74,203,1,49,49,75,170,1,48,32,235,22,1,25,92,34,
+108,105,98,47,68,97,116,97,47,67,104,97,114,46,104,115,92,34,44,49,
+57,54,58,49,143,21,1,95,54,137,44,0,73,130,234,3,95,50,57,51,
+140,3,235,158,0,107,2,237,77,0,1,95,50,89,10,96,5,1,35,57,
+102,149,128,11,98,35,96,161,0,54,139,20,1,54,50,79,59,73,66,0,
+58,96,98,2,10,65,32,185,26,64,54,0,35,186,33,65,73,217,171,0,
+52,161,254,3,35,49,52,56,252,9,2,79,87,137,20,224,46,4,121,93,
+121,240,224,21,3,64,90,96,67,0,50,116,120,192,43,224,89,0,224,19,
+255,224,19,206,0,52,226,33,4,224,81,50,66,115,224,241,147,224,159,151,
+224,19,255,224,19,27,225,203,51,212,73,2,35,53,57,71,151,224,21,7,
+0,51,103,167,224,103,38,224,39,11,229,155,1,224,19,1,71,130,224,59,
+17,121,93,224,61,18,224,163,1,111,248,224,21,7,2,56,53,49,101,243,
+224,87,7,0,50,123,13,225,57,58,224,59,11,0,53,225,13,50,225,73,
+51,224,59,1,109,7,160,21,225,95,11,225,53,1,224,121,21,224,39,71,
+224,19,131,224,179,0,1,49,53,72,128,224,181,158,224,19,11,226,31,11,
+225,145,31,226,131,31,224,19,255,224,19,87,225,143,171,77,220,224,19,7,
+66,147,64,14,2,35,50,49,142,32,224,23,2,224,43,7,229,47,11,224,
+163,71,227,15,0,3,50,49,53,54,230,41,11,64,23,224,167,2,224,23,
+4,230,131,2,224,23,0,0,52,116,105,224,21,9,224,135,6,97,3,1,
+52,48,224,43,2,225,1,0,2,52,48,51,224,179,10,1,52,48,76,210,
+224,87,7,1,56,52,120,195,192,23,226,37,0,224,89,4,224,45,4,224,
+203,2,224,91,1,115,104,224,45,10,237,40,3,224,23,2,225,17,13,2,
+56,52,54,116,166,224,93,9,229,71,2,225,17,1,118,7,224,67,22,225,
+109,2,237,180,4,224,47,4,224,139,2,225,67,1,224,93,3,224,137,0,
+3,50,49,52,57,225,45,2,224,139,2,225,91,2,224,67,2,224,183,2,
+0,56,224,67,2,0,53,225,247,2,224,45,1,122,56,224,113,7,64,159,
+226,37,12,224,45,3,225,181,0,65,89,224,45,24,224,21,0,0,49,126,
+57,224,21,2,130,83,126,91,224,135,7,154,134,160,21,231,249,0,0,52,
+224,65,4,225,224,3,233,28,3,224,23,3,225,156,4,0,54,239,14,0,
+1,49,54,226,132,3,228,171,31,224,39,11,64,19,111,140,233,137,4,0,
+52,228,74,0,112,37,224,152,2,96,43,0,55,224,242,2,64,64,96,165,
+239,184,4,66,130,128,64,0,54,226,118,6,124,98,224,42,3,228,181,1,
+225,255,3,225,95,0,158,31,160,21,228,181,1,121,131,225,48,7,0,49,
+227,87,3,224,237,0,81,2,224,42,9,0,48,227,36,11,119,200,225,65,
+18,224,19,211,225,4,1,125,219,225,26,9,228,225,11,227,108,12,0,50,
+84,71,224,106,9,0,57,224,21,2,230,126,11,230,146,12,64,20,96,78,
+226,51,4,83,135,129,172,224,151,6,227,33,1,225,80,121,224,19,191,69,
+240,225,24,255,224,19,255,224,19,0,239,179,51,224,19,71,228,128,1,228,
+18,2,225,104,191,224,19,255,224,19,255,224,19,223,0,53,70,125,107,55,
+1,35,57,233,157,3,0,57,74,45,0,35,122,22,2,35,54,48,235,39,
+3,0,52,78,199,224,23,10,0,55,72,65,126,192,233,231,5,0,49,250,
+170,2,1,50,53,234,23,13,1,50,53,238,14,12,3,49,50,52,56,234,
+180,13,2,52,56,51,224,215,11,2,50,52,56,224,71,14,233,116,13,1,
+50,51,235,63,7,96,23,2,55,48,53,124,138,225,75,19,125,235,160,45,
+0,54,236,230,3,224,237,0,0,55,157,106,192,92,233,59,0,2,55,48,
+55,236,95,3,0,49,65,45,225,231,88,224,19,255,224,19,255,224,19,255,
+224,19,255,224,19,255,224,19,71,250,150,1,244,54,3,250,172,11,225,65,
+255,224,19,255,224,19,255,224,19,139,74,41,107,51,246,64,5,234,255,0,
+224,21,7,224,43,13,224,65,31,246,151,2,224,150,11,224,20,44,74,189,
+224,127,13,64,230,2,35,49,52,234,161,2,64,64,0,51,96,21,0,55,
+235,21,2,118,153,64,21,1,50,48,64,93,224,43,2,128,21,0,53,224,
+130,6,128,21,0,50,235,41,2,224,43,2,224,87,6,225,47,35,224,197,
+19,224,21,2,241,73,1,235,123,4,224,21,0,0,52,250,99,4,235,146,
+1,224,45,3,251,237,0,224,110,25,224,64,1,245,194,3,237,9,1,224,
+86,2,1,51,52,225,224,0,0,53,247,140,3,97,96,98,13,245,240,4,
+244,46,11,0,56,120,164,119,202,1,35,53,226,167,3,1,56,56,89,233,
+64,96,237,223,5,248,129,1,224,45,2,224,157,0,3,50,49,53,56,246,
+142,11,64,23,0,51,224,138,2,227,45,30,224,19,11,246,73,11,255,224,
+12,225,161,1,224,120,61,224,19,255,224,19,255,224,19,255,224,19,119,228,
+144,11,224,39,11,241,44,11,101,152,146,196,2,49,52,53,252,231,3,241,
+165,1,224,24,6,235,129,1,224,48,6,2,48,57,57,235,157,255,224,19,
+188,251,93,255,224,19,7,1,49,51,226,230,131,233,24,1,225,65,161,224,
+19,255,224,19,167,234,82,32,253,124,91,230,206,11,248,15,31,224,199,0,
+70,177,224,180,99,225,165,92,224,160,151,225,165,31,225,144,11,228,238,11,
+229,142,52,237,78,11,0,56,90,219,160,21,0,56,238,89,3,95,191,1,
+35,55,77,224,3,35,55,55,55,232,253,3,3,50,49,52,53,64,74,142,
+73,91,208,192,25,1,49,50,64,65,105,79,160,59,192,24,0,55,64,184,
+0,51,96,48,224,23,4,0,57,123,174,96,126,0,55,251,196,3,64,191,
+111,20,224,22,5,64,69,66,198,224,21,4,78,188,64,209,224,42,5,1,
+55,57,64,163,92,185,91,194,224,25,4,64,69,0,50,96,49,224,188,3,
+1,50,56,105,211,111,70,224,24,5,1,49,57,104,32,224,25,9,3,51,
+49,52,50,96,51,64,19,1,35,54,64,100,2,75,32,64,224,0,255,224,
+0,255,224,0,152,1,58,54,83,112,12,10,65,32,67,39,32,83,32,64,
+67,39,32,67,128,5,18,39,32,89,32,64,64,83,39,32,66,32,64,66,
+39,32,66,39,32,80,66,222,1,66,32,128,1,0,67,64,23,64,0,128,
+43,1,67,39,64,14,160,26,96,11,224,41,1,96,82,224,42,3,192,2,
+128,21,224,98,3,64,2,64,134,5,95,52,54,32,95,54,67,191,160,33,
+224,101,3,224,131,2,128,85,0,66,64,55,128,33,9,64,66,32,83,39,
+32,64,95,53,55,192,63,7,67,32,95,56,48,32,95,55,68,127,96,14,
+160,64,2,95,52,56,64,18,64,61,224,32,1,2,95,54,50,84,104,128,
+0,224,55,4,101,38,2,64,95,50,82,246,3,58,54,50,51,97,51,9,
+83,39,32,95,49,56,50,32,95,54,68,36,64,106,2,54,50,49,192,13,
+100,151,4,66,32,95,54,49,160,69,5,67,32,95,49,53,57,224,30,4,
+64,74,0,50,96,74,3,85,32,75,52,224,2,1,2,90,32,90,64,6,
+160,136,0,58,64,85,64,36,5,95,49,54,48,32,95,83,191,1,95,51,
+69,187,1,95,54,83,254,1,95,54,69,27,1,95,54,86,6,3,95,49,
+54,56,192,97,2,95,49,55,224,140,1,0,48,64,27,3,55,50,32,80,
+160,17,160,216,2,95,49,55,224,145,0,2,95,49,56,224,47,0,3,95,
+49,56,51,224,11,2,0,54,224,55,7,129,190,65,171,1,67,32,225,172,
+1,129,36,224,27,4,1,49,52,65,30,96,70,0,55,96,241,1,95,54,
+116,218,161,79,1,49,56,69,56,128,19,224,83,51,111,218,224,82,5,97,
+13,0,56,224,221,2,1,57,48,224,11,0,11,54,49,57,32,64,75,32,
+95,49,57,50,32,160,67,0,75,160,8,64,21,74,0,65,117,0,48,97,
+117,9,112,111,112,99,111,117,110,116,32,58,96,54,5,10,65,32,115,104,
+108,64,12,0,56,96,12,2,105,110,118,64,12,0,55,96,12,2,120,111,
+114,64,12,0,54,96,12,128,11,0,53,226,42,1,70,43,98,154,0,49,
+112,118,70,165,66,21,224,17,0,70,173,66,127,1,58,54,70,255,1,10,
+65,98,229,144,250,2,64,64,80,66,120,80,200,66,8,0,52,64,184,2,
+53,48,50,67,42,224,10,1,5,53,49,57,32,95,53,67,208,1,95,54,
+86,172,2,95,54,48,66,68,224,6,0,64,215,1,58,54,71,96,64,67,
+66,74,0,48,65,37,1,54,49,64,10,119,120,0,85,99,99,5,67,32,
+67,32,61,61,199,157,3,95,53,48,53,66,117,64,102,96,36,13,102,114,
+111,109,85,84,70,56,32,34,101,111,102,34,98,165,7,85,32,75,32,95,
+51,54,51,160,137,0,73,162,186,0,58,96,114,96,200,3,95,52,57,51,
+97,227,67,222,0,53,64,88,2,66,32,90,228,112,0,64,30,99,128,0,
+53,120,43,96,57,129,125,1,95,49,192,84,2,95,49,56,64,38,64,177,
+0,53,72,127,224,249,3,1,54,48,65,90,128,231,64,7,0,56,64,232,
+65,2,64,65,0,54,96,191,161,22,96,240,64,39,0,58,96,37,224,97,
+14,0,80,96,37,65,139,3,95,53,50,54,225,95,0,3,57,57,32,35,
+67,120,64,28,72,139,0,58,96,79,128,99,193,67,225,29,1,4,118,97,
+108,117,101,65,31,225,85,7,64,64,0,51,65,134,129,55,66,133,161,46,
+64,85,69,140,66,47,132,206,128,5,1,95,53,99,233,0,53,99,59,129,
+232,64,67,225,112,0,1,95,49,119,194,0,58,64,234,96,143,1,53,48,
+64,26,64,207,129,179,0,95,82,196,224,160,7,2,92,92,110,224,158,10,
+64,98,2,95,49,51,224,158,1,99,14,160,159,130,151,226,116,4,225,31,
+6,73,214,225,60,1,96,17,73,34,0,58,97,162,129,42,2,49,32,58,
+96,31,225,56,15,2,107,101,121,224,151,10,98,139,225,54,0,0,50,225,
+55,5,194,102,133,218,96,113,230,89,2,226,116,1,230,133,7,134,197,198,
+182,230,29,0,96,68,65,225,134,94,64,24,1,83,39,99,196,1,52,57,
+97,31,0,53,99,95,0,53,129,26,2,67,32,79,68,78,96,139,226,208,
+17,64,8,164,9,225,140,1,97,219,130,211,0,57,97,172,2,50,32,75,
+128,235,132,206,3,64,66,32,85,130,6,225,9,2,96,88,129,161,128,31,
+2,90,32,95,74,231,2,95,49,51,128,52,2,64,64,58,65,121,228,66,
+2,101,181,68,66,64,102,64,23,2,85,32,83,64,138,71,45,2,67,32,
+60,171,91,224,18,6,66,100,98,138,224,18,1,97,67,0,67,65,59,224,
+19,2,65,4,66,42,225,193,1,3,84,82,97,119,132,25,224,24,6,2,
+69,79,70,160,23,96,24,5,66,32,95,50,51,53,224,31,2,3,123,45,
+35,32,96,32,0,67,128,25,226,21,2,3,32,35,45,125,192,59,224,151,
+8,133,74,224,150,4,65,167,224,149,6,5,73,110,100,101,110,116,224,152,
+12,4,84,66,114,97,99,99,173,128,27,0,65,128,9,225,17,6,66,87,
+224,121,6,65,196,224,121,6,65,108,64,93,0,67,166,175,225,154,1,0,
+35,102,182,224,23,11,65,204,226,71,1,224,151,1,6,125,32,108,97,121,
+111,117,160,180,225,40,2,224,23,4,227,170,0,98,67,64,4,130,189,224,
+25,6,224,20,0,225,213,7,224,195,9,227,254,2,3,56,32,95,51,162,
+197,224,18,2,0,49,67,247,224,23,0,193,206,67,56,7,48,55,32,79,
+32,35,52,54,195,19,105,99,97,204,227,40,3,64,0,0,58,98,250,101,
+131,102,186,1,51,51,72,104,0,53,94,91,1,95,53,99,63,3,64,95,
+49,50,68,201,96,185,2,95,49,50,69,201,96,11,0,58,96,6,96,58,
+1,48,56,96,53,0,55,69,224,1,53,56,134,178,72,202,128,65,1,95,
+53,73,161,160,11,94,94,224,11,1,96,76,128,35,0,57,64,60,1,50,
+51,96,106,64,17,0,73,99,42,133,76,68,62,70,209,102,176,131,79,3,
+95,51,52,51,226,60,2,21,73,110,116,101,103,101,114,58,32,100,105,118,
+105,115,105,111,110,32,98,121,32,48,161,154,160,54,70,236,100,143,96,79,
+0,85,64,68,4,49,57,57,32,95,127,29,165,191,224,17,9,128,64,96,
+61,224,7,0,132,146,164,144,70,40,64,39,132,181,2,83,32,95,157,129,
+228,184,0,68,225,2,95,53,56,134,3,125,180,160,42,0,85,64,10,192,
+36,235,192,2,236,8,0,1,95,53,69,95,227,9,0,192,36,107,109,160,
+5,160,88,164,159,76,32,193,233,66,13,161,228,72,225,133,144,224,0,2,
+0,58,97,113,133,14,0,83,140,91,1,95,50,86,113,3,95,52,52,50,
+97,123,134,45,201,248,98,157,0,89,161,61,224,19,0,66,174,96,8,64,
+63,226,92,4,224,173,2,236,156,5,64,31,103,92,224,28,0,64,238,128,
+69,71,107,100,120,102,210,102,200,160,220,66,101,66,117,67,181,0,48,69,
+187,192,28,96,241,76,40,112,90,101,247,224,12,0,1,95,50,103,4,103,
+176,95,79,0,64,64,220,103,29,97,219,0,58,97,95,226,193,3,0,57,
+65,247,0,50,135,219,0,50,75,243,1,95,50,74,15,194,181,96,58,162,
+181,160,11,224,138,0,194,187,128,11,104,223,96,12,128,94,0,57,98,109,
+64,148,1,95,53,96,129,3,66,32,95,51,76,196,128,42,64,43,134,156,
+161,84,129,94,96,7,129,159,129,64,64,11,107,133,192,7,68,197,1,53,
+52,99,119,0,55,167,92,65,83,73,61,0,53,109,94,160,6,194,33,96,
+26,70,241,64,21,64,59,69,14,2,95,53,55,161,38,64,32,160,49,64,
+28,0,53,104,236,192,85,66,144,165,61,2,95,53,54,128,26,132,177,65,
+211,137,47,0,83,142,181,128,162,231,251,0,128,33,97,251,98,214,65,124,
+2,95,53,54,97,145,160,117,136,14,66,8,226,112,0,137,128,98,97,232,
+47,0,2,95,53,56,101,65,192,95,160,163,128,220,160,12,64,158,128,37,
+64,253,99,195,139,14,224,197,16,64,39,162,60,96,66,225,16,3,228,17,
+2,64,139,165,70,96,8,141,50,3,95,49,55,52,206,189,0,56,115,81,
+205,10,1,67,39,67,16,3,95,53,56,56,227,22,0,224,77,3,224,13,
+5,0,58,100,27,1,10,65,228,219,9,14,108,97,115,116,58,32,101,109,
+112,116,121,32,108,105,115,134,112,129,44,104,121,0,90,64,239,128,200,0,
+58,96,8,98,114,224,89,0,0,79,116,144,64,127,0,58,97,13,227,211,
+0,133,115,0,75,66,168,64,253,104,146,0,65,96,13,197,117,132,163,207,
+253,227,195,1,240,136,0,2,95,53,53,132,215,107,147,65,141,130,204,68,
+148,3,10,65,32,89,160,45,170,52,162,184,129,230,192,93,96,70,138,72,
+132,69,229,31,0,69,105,224,10,7,64,133,73,133,167,186,140,10,0,49,
+109,191,99,92,3,51,50,50,32,169,183,192,116,133,244,240,133,3,128,48,
+64,10,128,47,228,73,0,176,102,0,58,101,193,161,39,130,187,1,95,50,
+73,236,129,29,132,51,224,27,7,129,71,163,240,2,50,48,55,64,164,64,
+113,1,53,55,69,121,224,104,2,64,188,66,49,224,24,8,96,10,1,64,
+95,135,69,0,55,68,100,128,33,1,53,55,69,12,192,11,167,106,110,200,
+71,166,96,20,100,94,224,20,4,0,58,103,135,133,222,224,170,1,198,178,
+129,213,224,2,0,225,103,0,192,11,99,128,2,95,49,54,102,71,230,126,
+0,99,61,165,205,129,253,117,244,224,46,0,70,55,224,46,0,160,23,111,
+93,168,244,224,65,24,1,53,55,224,64,21,134,211,0,58,64,239,160,218,
+96,71,100,23,224,72,17,96,15,231,17,1,0,58,65,67,130,223,166,206,
+69,154,135,235,133,34,165,110,0,82,224,22,4,166,127,96,63,227,69,0,
+129,92,164,241,161,66,224,41,1,230,241,0,140,227,229,17,2,67,125,105,
+39,128,177,98,16,96,49,104,245,64,238,224,159,3,224,82,1,192,76,133,
+81,96,66,114,212,69,79,226,202,4,0,58,96,241,230,123,2,226,28,3,
+134,121,0,58,105,175,110,75,73,170,132,247,134,14,69,22,2,95,53,53,
+109,96,69,165,67,113,99,117,0,54,73,200,128,67,134,111,1,95,53,113,
+179,224,13,1,67,114,128,196,131,66,228,136,5,0,49,196,136,64,39,224,
+29,0,0,51,71,105,224,29,4,199,55,233,140,6,0,58,96,102,147,172,
+229,152,4,1,64,58,96,167,66,19,130,18,234,39,1,233,208,10,234,15,
+1,234,88,11,224,48,20,97,126,228,196,5,76,75,232,239,8,132,201,130,
+78,234,8,3,98,244,64,97,229,52,1,102,135,97,87,199,15,0,75,100,
+183,160,60,227,167,1,226,101,1,160,114,231,22,0,245,250,3,165,67,224,
+115,21,224,113,5,224,111,3,224,49,18,203,13,224,0,0,0,58,98,40,
+166,41,2,95,53,54,68,212,0,53,165,232,96,16,0,53,167,46,3,95,
+51,51,53,66,62,103,50,144,70,5,53,54,54,32,95,50,70,39,165,174,
+105,17,96,44,224,155,4,0,58,96,119,245,159,0,112,200,64,59,227,32,
+4,64,180,0,85,227,173,0,224,18,0,1,66,39,224,21,3,168,36,224,
+29,0,160,165,227,172,0,96,88,198,249,231,132,8,5,102,111,108,100,108,
+49,231,134,8,64,173,99,75,0,54,212,47,227,179,0,226,1,3,96,91,
+131,16,234,250,1,0,85,66,78,238,135,2,97,104,136,56,235,72,0,192,
+189,233,79,0,164,117,128,182,1,95,50,81,210,201,50,101,6,78,198,1,
+95,50,81,141,64,0,169,52,235,30,1,235,31,5,128,151,230,207,1,212,
+13,128,144,1,53,51,103,219,99,157,64,83,103,25,64,164,96,45,201,110,
+132,39,0,58,100,57,99,127,0,73,194,240,136,159,227,60,4,140,48,227,
+245,2,233,17,7,64,144,64,79,115,130,128,189,0,64,227,4,0,138,68,
+171,33,225,92,1,236,143,10,233,182,5,64,163,136,10,203,57,128,89,199,
+6,101,24,0,50,162,246,72,194,192,155,106,15,130,61,106,65,162,84,179,
+144,224,46,1,224,102,1,227,35,0,160,155,235,31,1,224,184,3,224,134,
+15,107,204,64,169,224,137,8,192,90,224,134,27,224,181,2,225,11,3,224,
+73,1,170,219,65,218,0,48,226,226,2,10,92,34,108,105,98,47,68,97,
+116,97,47,175,78,96,7,13,114,110,97,108,46,104,115,92,34,44,53,52,
+58,49,98,245,0,58,97,249,116,229,0,53,72,155,67,171,0,58,96,115,
+162,224,97,148,128,236,240,213,0,98,186,96,23,162,95,98,240,163,253,225,
+236,0,64,41,227,206,4,132,156,128,5,227,149,8,19,105,109,112,111,115,
+115,105,98,108,101,58,32,120,115,32,62,61,32,121,115,96,161,84,157,224,
+221,38,3,57,48,58,54,242,221,0,237,130,2,64,145,226,86,0,227,125,
+3,168,96,227,124,2,0,53,96,21,227,184,4,195,81,0,53,95,156,228,
+213,0,196,131,224,80,12,168,247,224,80,6,97,176,96,69,97,127,0,54,
+229,120,0,98,76,141,213,106,87,159,98,163,179,160,6,208,144,100,13,224,
+37,1,64,106,224,14,3,228,40,1,239,57,0,0,58,96,114,163,241,145,
+55,231,33,21,166,55,96,172,0,51,228,220,11,64,82,252,241,0,1,95,
+51,69,114,234,160,1,131,14,163,23,129,116,153,181,3,64,95,52,50,151,
+23,101,175,160,120,200,22,1,53,51,194,142,72,202,162,142,132,215,228,27,
+6,129,43,229,119,9,161,154,229,121,8,225,244,15,96,188,64,110,161,159,
+230,102,1,99,126,105,70,199,208,226,76,46,224,91,0,226,76,10,224,95,
+3,226,76,32,224,80,1,161,159,193,142,247,187,3,129,32,130,58,226,57,
+0,100,69,230,69,2,224,11,3,0,58,96,71,1,10,65,77,119,0,58,
+96,147,106,83,102,64,111,231,0,52,138,121,108,214,0,52,131,5,145,7,
+96,29,85,21,170,81,84,128,96,10,0,58,96,6,230,148,6,192,251,96,
+78,151,123,165,1,128,6,0,58,96,80,224,52,27,224,59,2,0,58,96,
+139,224,52,20,224,98,2,160,59,0,58,96,198,224,52,27,224,112,2,0,
+58,97,1,102,215,134,208,226,149,3,142,162,224,19,0,115,6,166,10,2,
+95,53,52,197,34,167,255,101,28,0,53,124,174,230,49,1,97,136,64,123,
+135,57,96,86,75,246,73,113,69,12,160,47,198,59,64,65,128,87,194,57,
+160,128,134,142,96,18,135,203,145,58,171,249,102,65,96,17,192,118,0,58,
+96,7,193,241,99,75,1,95,49,127,32,0,49,67,128,1,95,49,67,154,
+1,95,49,67,241,1,95,49,133,3,97,241,131,115,97,241,64,10,0,58,
+96,6,3,10,65,32,75,144,130,64,155,64,13,2,50,32,58,96,185,96,
+25,111,98,64,208,96,110,64,70,138,47,84,181,0,58,98,108,202,139,0,
+52,65,107,64,25,0,53,96,25,161,226,235,139,1,234,236,9,132,99,232,
+247,2,192,13,0,51,84,109,132,35,96,238,64,82,160,127,225,103,2,97,
+240,218,17,64,15,64,9,219,184,2,95,51,48,71,37,96,86,0,58,96,
+6,105,40,2,95,53,50,109,97,130,29,64,128,96,164,64,24,88,146,101,
+170,71,83,65,239,67,181,85,217,64,49,224,15,3,64,40,239,49,1,174,
+3,130,47,2,95,53,51,98,224,64,94,96,111,255,214,6,96,38,64,67,
+85,232,241,28,0,242,205,1,5,95,50,57,54,32,35,69,158,160,43,134,
+46,224,46,6,96,36,144,114,64,107,129,196,137,174,246,207,0,243,212,0,
+169,198,228,255,2,229,28,1,175,179,100,158,224,250,49,128,13,203,43,134,
+74,208,227,224,105,0,67,242,224,105,55,129,16,119,194,241,97,8,160,10,
+167,49,224,240,7,96,20,244,211,1,123,244,128,11,233,34,0,224,161,3,
+67,226,174,40,224,171,53,233,58,6,31,78,117,109,101,114,105,99,46,115,
+104,111,119,73,110,116,65,116,66,97,115,101,58,32,110,101,103,97,116,105,
+118,101,32,4,97,114,103,117,109,251,171,1,242,48,5,70,101,240,227,2,
+163,84,128,12,65,240,160,177,197,26,70,146,237,132,0,224,46,27,87,255,
+160,118,224,236,33,224,10,1,224,234,29,14,117,110,115,117,112,112,111,114,
+116,101,100,32,98,97,115,220,122,128,148,113,211,226,199,6,194,189,3,83,
+32,95,51,112,246,192,179,225,253,4,224,49,2,194,121,160,83,192,11,226,
+133,8,224,70,4,110,154,160,49,89,226,160,124,193,49,128,60,97,79,224,
+250,1,97,97,129,50,224,10,2,224,55,2,242,123,2,1,95,49,94,128,
+144,40,128,65,149,21,224,92,1,97,125,225,87,2,67,216,244,76,0,224,
+222,3,96,7,227,94,82,96,146,227,93,8,163,39,64,116,129,83,128,5,
+64,248,1,54,53,196,221,243,129,4,175,230,0,35,71,182,64,0,65,99,
+67,105,226,121,1,224,40,7,228,239,0,224,62,13,199,47,224,70,6,160,
+38,194,26,226,187,35,0,58,102,12,208,65,237,52,2,125,152,96,136,143,
+76,167,192,65,103,64,24,224,245,5,163,100,98,166,198,218,65,9,106,235,
+77,109,101,168,160,22,3,95,50,57,57,227,37,2,2,32,37,32,163,1,
+224,45,5,64,0,126,3,96,6,65,2,0,58,94,224,199,107,64,136,156,
+92,249,241,3,70,215,134,52,226,216,2,194,59,194,154,119,203,225,101,0,
+1,95,52,159,28,167,154,198,45,1,95,52,66,174,3,64,95,53,48,103,
+44,135,81,252,105,3,130,26,1,95,52,94,43,1,95,53,176,71,2,58,
+53,50,242,54,0,0,51,72,70,96,18,0,54,96,18,3,80,32,58,53,
+64,199,108,48,3,50,48,32,80,117,31,0,50,76,57,160,229,107,109,125,
+17,0,49,104,90,0,50,181,40,2,53,50,50,65,191,66,157,152,39,64,
+47,161,7,64,201,0,80,96,19,135,111,2,66,32,80,167,138,0,85,96,
+21,135,25,96,123,219,233,198,166,1,95,49,92,57,109,112,0,95,95,216,
+0,52,95,147,227,208,1,225,240,0,0,53,75,141,2,95,53,49,97,150,
+88,94,73,147,165,88,1,58,53,66,13,226,63,8,107,248,0,48,83,152,
+96,94,128,14,97,40,89,28,225,252,1,114,214,97,254,225,209,2,228,242,
+0,138,9,115,124,229,164,0,193,208,77,153,90,71,163,169,91,147,97,138,
+65,139,97,171,225,219,2,192,18,160,50,104,164,0,49,137,169,0,49,64,
+198,0,58,96,219,136,172,135,17,2,95,53,49,128,173,98,197,110,47,129,
+3,106,85,97,167,0,58,96,59,225,234,0,128,17,129,233,0,85,65,249,
+161,252,64,71,192,89,195,89,224,74,0,132,168,0,56,128,21,128,112,130,
+9,129,131,129,121,0,58,96,171,212,138,64,14,193,253,1,95,53,105,224,
+97,138,225,63,4,226,215,51,0,58,97,162,236,101,0,131,79,1,90,32,
+224,34,1,0,58,96,52,183,13,64,13,194,87,67,219,90,137,64,92,0,
+56,64,25,64,98,251,222,1,64,19,119,93,162,21,224,177,2,229,105,1,
+224,173,0,161,170,224,25,3,227,205,1,97,222,160,33,226,0,39,225,20,
+0,0,95,91,37,97,59,0,95,152,157,0,54,227,14,0,0,58,96,23,
+163,55,65,139,224,197,2,252,164,1,195,126,193,113,228,84,0,163,147,96,
+71,225,186,0,0,51,101,116,0,58,97,210,65,6,0,50,163,112,193,4,
+228,79,11,225,34,40,96,25,227,31,4,224,20,1,97,35,128,110,102,80,
+225,39,27,1,95,49,76,152,164,34,77,53,128,10,0,50,97,58,161,41,
+203,231,213,18,197,140,230,199,2,189,73,225,196,2,160,177,64,34,255,177,
+6,128,186,0,54,166,90,224,51,4,64,15,250,205,3,160,45,236,94,3,
+231,38,2,136,198,194,239,120,16,160,0,0,58,96,230,109,77,0,57,100,
+247,67,10,99,213,209,216,65,126,80,90,1,49,48,192,0,1,32,58,96,
+38,229,117,6,96,92,64,72,0,51,230,146,3,224,174,1,128,164,225,170,
+0,225,124,2,193,96,0,57,162,6,64,75,130,115,0,90,71,113,0,58,
+96,31,226,104,0,254,136,1,162,90,0,58,96,71,3,10,65,32,73,64,
+152,130,100,96,10,130,93,152,181,128,39,227,205,3,1,82,32,127,183,0,
+52,95,243,128,133,70,79,1,52,57,209,137,0,90,72,28,64,16,128,255,
+160,138,64,45,179,55,0,48,72,66,161,115,67,235,1,95,52,97,118,1,
+95,52,95,226,2,58,52,56,199,160,0,89,100,111,99,148,0,56,163,235,
+224,62,3,1,95,52,94,234,236,181,3,64,33,243,28,1,79,201,0,64,
+72,221,106,35,205,95,193,77,96,41,69,57,224,42,0,0,67,69,161,72,
+58,4,50,48,57,53,49,67,116,3,64,35,53,53,78,36,229,1,0,224,
+123,3,129,139,104,228,160,20,138,220,82,31,1,52,56,194,40,124,122,1,
+51,56,127,223,64,222,230,183,2,21,104,71,101,116,67,111,110,116,101,110,
+116,115,58,32,115,117,114,114,111,103,97,116,203,202,69,102,71,36,160,110,
+93,183,64,174,224,18,0,65,60,92,137,1,95,52,64,92,79,175,128,24,
+203,148,65,72,130,11,134,89,0,58,96,39,99,100,148,0,144,221,66,209,
+4,35,49,49,49,52,177,246,236,125,5,29,68,97,116,97,46,67,104,97,
+114,46,99,104,114,58,32,105,110,118,97,108,105,100,32,99,111,100,101,112,
+111,105,205,96,143,87,0,58,96,244,166,83,125,211,96,19,130,86,6,94,
+103,101,116,98,32,58,97,177,98,234,6,55,51,32,79,32,95,52,75,95,
+0,79,64,14,0,53,198,24,97,234,255,251,0,225,112,0,2,64,95,52,
+89,91,139,250,2,95,52,55,66,242,94,66,224,171,1,6,111,112,101,110,
+70,105,108,129,63,225,148,2,0,58,98,99,101,135,66,3,93,224,96,57,
+234,3,1,0,51,97,203,200,172,190,46,5,51,56,53,32,95,51,70,198,
+96,152,64,3,160,14,161,245,67,19,108,118,164,22,96,6,224,142,1,1,
+58,32,206,125,0,58,64,173,226,251,11,126,164,130,251,113,134,128,26,177,
+137,225,236,4,129,255,224,34,2,135,114,64,90,180,108,226,247,2,0,52,
+91,21,64,88,64,213,81,58,117,87,75,217,224,33,6,0,51,100,213,224,
+54,8,132,83,0,52,127,214,1,95,52,181,52,192,122,83,64,0,58,96,
+141,96,117,1,95,51,119,113,0,52,65,191,0,58,96,43,65,236,4,102,
+108,117,115,104,65,238,191,200,64,128,227,57,1,93,20,161,221,224,224,0,
+212,58,244,146,3,122,84,0,83,128,114,64,3,224,131,4,224,13,6,227,
+46,7,159,249,1,95,52,115,211,0,52,127,224,227,50,3,95,224,96,199,
+130,157,135,87,0,58,96,22,211,108,0,90,132,201,96,51,225,108,0,165,
+6,2,32,95,52,75,132,107,71,96,29,64,244,4,99,108,111,115,101,96,
+244,223,231,133,38,90,221,2,52,54,56,238,23,0,0,58,96,156,12,10,
+65,32,116,111,70,117,110,80,116,114,32,58,64,30,128,50,0,75,64,50,
+0,51,97,137,64,40,129,102,3,95,51,57,54,64,67,99,85,64,178,226,
+101,1,5,115,116,100,101,114,114,66,105,0,58,97,184,69,193,1,79,46,
+128,21,64,87,172,42,160,64,66,58,99,114,224,64,4,1,105,110,160,63,
+166,1,96,63,1,105,110,64,62,163,173,1,52,56,163,40,69,227,136,247,
+97,89,224,9,1,128,30,72,252,221,25,116,127,251,174,2,74,101,130,98,
+0,58,96,6,132,5,0,50,64,101,181,61,0,51,64,11,239,171,3,227,
+252,4,0,48,128,100,227,40,3,163,142,230,24,8,64,138,85,209,96,36,
+0,52,134,6,0,52,253,69,0,131,189,0,56,69,170,67,73,99,198,233,
+16,4,90,159,64,6,174,65,0,58,99,167,182,154,0,80,164,179,129,135,
+224,6,2,98,255,188,89,3,75,52,32,58,96,37,100,98,230,57,8,69,
+119,166,171,226,180,5,98,41,155,37,207,44,224,55,2,0,51,140,118,192,
+192,228,223,0,201,244,0,51,136,20,96,176,226,9,0,11,112,101,114,102,
+111,114,109,73,79,32,94,38,162,160,64,31,130,22,2,102,112,102,97,230,
+186,210,4,102,112,110,101,119,64,14,129,245,8,94,97,100,100,95,70,73,
+76,69,64,18,129,176,96,18,3,117,116,102,56,64,18,223,76,229,166,5,
+98,18,0,49,76,135,160,191,128,11,161,58,1,48,49,64,4,0,51,77,
+145,4,64,79,32,35,49,76,148,101,246,224,26,10,0,57,198,203,224,27,
+8,72,227,224,26,11,226,213,1,1,119,43,165,124,1,95,52,154,104,229,
+31,3,130,149,1,95,51,97,135,225,74,3,194,12,226,97,8,0,58,98,
+126,100,217,70,101,1,32,58,96,85,165,209,0,52,81,112,1,95,52,105,
+243,0,52,185,251,76,197,0,52,69,113,128,8,181,221,128,12,0,51,160,
+29,88,85,0,52,82,111,96,165,99,53,0,58,96,69,108,223,123,221,81,
+103,1,95,52,81,186,0,58,96,41,74,77,1,52,54,64,126,129,192,247,
+188,5,0,58,96,83,201,57,195,44,155,125,98,218,119,241,139,214,207,160,
+0,58,64,143,130,220,160,27,89,149,0,55,209,147,64,4,224,70,2,69,
+19,96,206,102,52,215,108,233,90,0,135,91,185,83,0,89,105,139,74,102,
+130,8,96,50,160,117,171,33,96,245,100,95,1,51,57,64,212,129,99,2,
+95,52,51,66,95,185,57,98,79,103,96,96,61,1,95,52,89,42,1,64,
+58,64,35,129,14,0,55,64,43,230,142,0,162,121,227,110,3,88,179,225,
+254,16,231,101,6,128,103,231,101,7,231,154,7,96,127,129,142,133,245,1,
+100,105,69,108,185,93,0,94,66,34,160,17,193,143,149,147,236,118,2,125,
+199,176,16,254,135,1,131,244,96,149,65,138,1,95,52,64,110,129,127,137,
+227,161,63,64,127,235,163,2,110,19,96,43,129,62,76,103,184,205,11,94,
+71,69,84,84,73,77,69,77,73,76,76,75,218,181,11,139,218,96,2,70,
+164,0,90,112,20,128,0,1,58,52,179,204,194,92,91,129,128,247,0,58,
+126,198,160,208,193,97,0,95,82,96,228,206,1,193,119,73,22,167,34,229,
+93,0,165,213,231,244,1,164,229,231,79,3,129,146,171,69,183,73,169,152,
+228,100,3,244,35,2,224,78,1,224,71,5,229,34,3,96,187,207,141,234,
+227,6,5,104,101,97,100,58,32,114,68,3,32,108,105,115,138,211,107,48,
+179,115,8,65,46,119,114,105,116,101,32,58,96,92,167,166,225,63,0,64,
+2,198,229,1,58,52,179,109,145,188,225,98,1,225,94,0,1,58,52,64,
+145,128,33,0,51,224,68,4,192,30,161,197,68,255,2,75,32,85,165,95,
+224,2,43,193,208,224,0,3,224,68,40,224,2,3,224,80,11,224,81,53,
+224,84,15,224,85,56,96,2,217,229,224,0,9,135,67,224,1,31,246,110,
+9,5,70,108,97,103,115,123,250,93,0,224,0,10,162,178,224,2,52,96,
+192,224,126,11,7,118,101,114,98,111,115,101,61,173,125,86,239,1,95,50,
+71,253,248,122,0,224,0,10,224,231,25,224,1,1,192,114,2,79,32,35,
+70,82,238,82,0,224,0,9,224,231,56,224,228,16,4,114,117,110,73,116,
+224,226,4,0,52,85,43,224,226,18,224,215,25,192,1,224,223,32,224,222,
+50,100,234,66,129,224,112,3,224,222,1,5,109,104,115,100,105,114,160,223,
+144,37,152,183,224,223,16,224,212,23,192,1,224,220,31,224,219,44,64,213,
+219,66,224,221,18,4,112,97,116,104,115,224,220,34,224,209,21,192,1,224,
+217,30,224,216,48,224,208,18,4,111,117,116,112,117,194,142,224,209,26,224,
+202,23,64,1,224,206,29,224,205,45,227,85,15,6,108,111,97,100,105,110,
+103,227,87,32,224,197,62,224,196,41,224,193,16,4,115,112,101,101,100,224,
+191,31,224,188,59,224,187,38,224,184,16,7,114,101,97,100,67,97,99,104,
+229,183,5,224,188,17,224,185,56,224,184,35,224,181,16,104,250,224,182,34,
+224,179,53,224,178,32,224,175,16,6,117,115,101,84,105,99,107,196,124,224,
+173,21,224,170,50,224,169,29,224,166,16,4,100,111,67,80,80,224,163,27,
+224,160,47,224,159,20,229,197,30,5,99,112,112,65,114,103,229,199,27,224,
+163,44,224,162,17,224,159,31,224,157,29,224,154,41,225,60,21,225,211,15,
+6,99,111,109,112,114,101,115,226,122,25,224,142,38,224,141,8,225,30,2,
+126,12,225,36,20,6,98,117,105,108,100,80,107,197,242,225,39,16,224,146,
+35,224,145,5,251,41,3,224,140,22,77,95,224,139,25,224,134,29,224,132,
+2,238,13,2,232,147,18,5,107,103,80,97,116,104,224,123,20,224,117,23,
+224,115,3,226,6,15,6,105,110,115,116,97,108,108,224,230,1,226,8,11,
+224,102,20,96,101,236,193,0,224,205,13,4,116,97,114,103,101,232,144,18,
+224,92,14,224,74,11,3,100,117,109,112,108,209,224,175,4,1,49,50,81,
+109,0,49,85,4,233,182,16,224,0,11,192,115,0,49,79,44,128,116,128,
+75,0,51,158,142,128,12,224,17,3,79,232,0,48,224,18,6,96,39,0,
+51,79,207,115,56,64,76,160,11,0,58,96,6,210,229,120,52,81,43,115,
+199,0,57,130,4,0,80,224,225,7,6,78,111,116,104,105,110,103,161,44,
+245,90,0,0,52,64,48,65,56,1,52,50,210,240,177,241,225,115,13,4,
+74,117,115,116,32,225,113,0,161,111,160,49,160,176,160,171,96,166,145,106,
+120,194,96,79,80,212,0,35,82,228,64,61,92,213,128,16,216,92,64,140,
+239,249,3,121,183,147,145,3,60,32,64,35,64,91,224,18,6,64,103,225,
+0,0,128,18,66,48,0,85,224,183,7,3,68,97,108,108,160,182,224,27,
+9,8,99,111,109,98,105,110,97,116,111,120,69,128,218,224,82,4,80,154,
+224,54,9,6,116,111,112,108,101,118,101,224,87,17,5,100,101,115,117,103,
+97,224,84,0,244,124,1,128,85,120,72,224,104,5,81,69,224,104,10,7,
+121,112,101,99,104,101,99,107,224,105,18,2,114,105,118,221,54,224,31,10,
+3,112,97,114,115,224,30,0,226,88,0,98,217,162,88,96,11,0,58,96,
+6,225,129,1,226,69,8,2,70,97,108,160,71,224,24,6,2,84,114,117,
+192,95,192,92,83,209,192,92,148,176,64,6,157,28,2,49,54,53,162,110,
+1,95,52,84,174,1,58,52,83,221,250,49,0,224,1,17,243,164,1,224,
+0,0,0,58,96,65,96,87,0,85,244,82,1,155,164,87,92,87,214,224,
+167,0,6,118,56,46,48,94,42,34,96,113,217,217,1,48,56,64,162,0,
+49,96,19,212,64,1,49,48,67,192,0,48,93,153,0,35,64,40,224,12,
+0,0,48,228,163,0,0,58,96,51,128,65,85,187,89,75,96,193,0,58,
+64,15,128,10,67,97,1,48,55,100,127,0,54,160,56,3,95,51,51,53,
+65,95,0,56,65,91,152,174,0,58,64,130,128,193,96,48,125,74,0,52,
+83,255,0,58,64,61,128,25,246,129,0,131,187,181,8,246,231,10,229,160,
+1,213,44,224,47,2,160,110,129,108,1,95,51,65,134,182,89,150,142,64,
+123,64,25,64,20,1,95,52,68,137,253,211,6,9,94,42,79,112,116,105,
+111,110,115,58,97,70,248,126,16,2,45,104,32,224,0,7,14,80,114,105,
+110,116,32,117,115,97,103,101,94,42,45,63,224,31,22,4,45,104,101,108,
+112,224,31,10,7,116,104,105,115,32,109,101,115,192,38,6,118,101,114,115,
+105,111,110,224,38,9,1,101,32,160,26,64,37,6,110,117,109,101,114,105,
+99,224,45,1,224,37,8,10,32,110,117,109,98,101,114,94,42,45,118,224,
+116,3,96,0,6,73,110,99,114,101,97,115,96,43,31,98,111,115,105,116,
+121,32,40,102,108,97,103,32,99,97,110,32,98,101,32,114,101,112,101,97,
+116,101,100,41,94,42,45,0,113,224,61,8,1,68,101,224,61,33,0,108,
+224,61,8,27,83,104,111,119,32,101,118,101,114,121,32,116,105,109,101,32,
+97,32,109,111,100,117,108,101,32,105,115,32,78,202,5,101,100,94,42,45,
+115,224,54,13,73,142,2,105,108,97,65,175,0,32,110,52,14,32,105,110,
+32,108,105,110,101,115,47,115,94,42,45,114,224,53,8,16,82,117,110,32,
+100,105,114,101,99,116,108,121,94,42,45,67,82,224,32,8,2,101,97,100,
+224,86,4,0,99,77,23,64,42,0,87,224,42,7,0,87,118,49,224,43,
+12,224,42,7,128,86,3,97,110,100,32,150,102,224,52,11,3,88,67,80,
+80,224,52,6,8,117,110,32,99,112,112,104,115,32,64,222,9,111,117,114,
+99,101,32,102,105,108,101,64,218,3,68,120,120,120,224,45,5,4,80,97,
+115,115,32,128,23,1,116,111,128,55,3,94,42,45,73,224,39,14,96,23,
+224,39,2,0,84,224,36,5,23,32,32,32,71,101,110,101,114,97,116,101,
+32,100,121,110,97,109,105,99,32,102,117,110,99,96,177,98,193,9,32,115,
+116,97,116,105,115,116,105,99,64,62,0,122,224,62,8,0,67,171,41,64,
+235,166,124,6,32,99,111,100,101,32,103,160,87,97,171,66,159,1,46,99,
+96,213,7,94,42,45,105,80,65,84,72,224,69,4,3,65,100,100,32,96,
+20,1,116,111,194,22,6,115,101,97,114,99,104,32,82,126,3,94,42,45,
+111,124,189,224,0,3,0,79,113,198,64,48,64,26,1,94,42,224,28,4,
+128,0,1,73,102,96,27,4,32,101,110,100,115,64,133,0,46,64,163,6,
+32,112,114,111,100,117,99,66,128,224,178,2,128,153,224,67,28,224,64,2,
+0,67,224,55,17,7,79,116,104,101,114,119,105,115,194,4,0,101,97,3,
+224,113,1,5,115,32,116,111,103,101,64,36,4,32,119,105,116,104,96,29,
+2,114,117,110,99,26,5,115,121,115,116,101,109,64,218,224,106,1,15,114,
+101,103,117,108,97,114,32,101,120,101,99,117,116,97,98,97,72,0,97,224,
+118,8,9,67,108,101,97,114,32,112,97,99,107,97,187,225,67,4,0,97,
+225,118,20,224,51,13,3,76,80,75,71,224,50,4,8,32,76,105,115,116,
+32,97,108,108,161,167,3,115,32,111,102,224,59,0,6,80,75,71,94,42,
+45,80,224,51,8,0,66,76,184,224,37,6,0,81,64,7,5,32,91,68,
+73,82,93,160,37,0,73,139,109,224,39,6,5,116,84,65,82,71,69,226,
+183,3,6,83,101,108,101,99,116,32,139,54,225,124,12,7,68,105,115,116,
+114,105,98,117,66,125,128,38,21,115,58,32,100,101,102,97,117,108,116,44,
+32,101,109,115,99,114,105,112,116,101,110,224,60,12,0,84,128,48,196,213,
+4,100,101,102,105,110,162,197,128,25,4,46,99,111,110,102,66,147,9,112,
+116,99,32,79,80,84,73,79,78,160,58,166,82,3,32,102,111,114,97,208,
+0,67,193,252,69,142,0,100,75,156,4,45,80,65,83,83,192,105,7,68,
+101,98,117,103,44,32,112,101,194,9,65,83,84,32,97,102,116,101,114,32,
+64,34,224,153,12,16,80,111,115,115,105,98,108,101,32,112,97,115,115,101,
+115,58,32,105,14,1,44,32,137,53,1,44,32,233,95,0,64,18,105,178,
+1,44,32,201,220,0,44,226,123,2,0,44,65,191,134,246,103,69,136,92,
+0,75,70,254,0,50,102,254,0,58,71,7,232,4,0,136,75,0,85,64,
+25,0,58,71,37,232,137,5,0,85,68,37,14,58,32,109,104,115,32,91,
+45,104,92,124,63,93,32,91,134,244,96,8,166,149,96,11,230,188,6,64,
+19,0,118,64,4,0,113,64,4,0,108,64,4,0,115,64,4,0,114,64,
+4,6,67,91,82,92,124,87,93,64,10,69,49,64,7,3,68,68,69,70,
+64,7,0,73,66,178,64,8,0,84,64,4,0,122,64,4,100,81,64,8,
+100,39,64,8,1,97,91,96,18,64,10,0,76,96,10,4,92,124,80,75,
+71,96,15,66,159,64,7,226,129,2,64,14,162,104,96,69,225,217,1,64,
+14,225,185,1,16,93,32,91,77,79,68,85,76,69,78,65,77,69,46,46,
+92,124,96,110,105,134,72,99,104,139,1,57,48,64,4,5,56,32,64,58,
+51,57,172,7,1,51,57,77,15,8,57,55,32,64,95,51,55,52,32,232,
+94,2,4,115,116,100,111,117,124,167,0,58,96,51,5,10,65,32,73,79,
+46,128,21,1,32,58,96,50,169,79,0,66,64,65,108,96,236,244,0,255,
+24,0,1,51,57,253,184,0,109,60,253,148,3,64,115,201,159,64,135,192,
+79,91,174,0,80,96,164,137,42,78,163,0,52,96,44,1,50,32,107,210,
+2,66,32,95,73,80,1,51,57,64,74,0,58,96,98,64,157,64,149,130,
+28,6,65,46,97,108,108,111,99,64,16,170,110,1,51,50,64,12,130,33,
+0,83,155,184,253,210,1,2,95,51,56,141,163,2,51,56,56,76,53,75,
+53,0,58,65,45,128,145,2,95,51,54,224,207,1,64,33,0,58,96,47,
+96,153,113,38,0,67,74,32,0,83,96,84,127,252,0,53,140,119,2,95,
+51,54,77,187,4,50,48,57,53,49,66,201,4,64,35,53,53,50,64,231,
+170,47,1,51,55,94,127,1,51,55,138,83,79,92,1,51,56,96,17,0,
+56,64,17,225,137,1,17,104,80,117,116,67,104,97,114,58,32,115,117,114,
+114,111,103,97,116,172,8,0,95,96,77,0,58,96,147,126,116,0,35,75,
+93,67,12,96,66,225,158,2,0,56,97,133,188,180,159,251,224,9,2,110,
+216,1,51,56,106,164,65,48,107,70,1,95,51,64,76,192,6,0,58,96,
+154,224,81,0,193,166,240,205,2,128,14,224,11,2,225,202,2,97,225,64,
+95,97,138,3,56,51,32,58,96,145,107,6,0,56,64,17,0,50,96,179,
+172,46,1,50,57,127,63,1,55,56,97,11,111,154,2,51,48,53,160,38,
+64,144,66,178,192,11,0,55,192,11,0,58,96,6,205,89,108,169,192,154,
+0,90,96,129,97,246,242,67,3,178,73,253,196,0,129,20,64,174,139,236,
+64,20,253,228,2,144,177,2,51,55,57,64,11,237,155,5,0,58,239,176,
+0,128,43,96,30,224,36,16,193,27,131,42,0,54,66,121,0,83,162,57,
+2,51,53,57,140,196,224,72,28,128,162,192,185,242,156,3,160,171,0,56,
+176,7,224,94,8,240,120,11,1,32,40,128,86,224,122,9,77,92,0,49,
+242,57,1,224,118,0,206,137,161,164,110,137,128,11,0,58,96,6,238,230,
+1,0,66,128,108,0,64,240,112,8,65,76,224,18,6,78,81,224,19,8,
+97,139,224,19,6,67,37,239,221,6,111,99,0,85,224,212,2,10,105,110,
+116,101,114,114,117,112,116,101,100,128,221,224,28,3,1,114,101,170,211,5,
+118,97,110,105,115,104,192,34,224,35,4,72,246,165,7,240,181,9,79,22,
+224,45,4,7,117,110,115,117,112,112,111,114,71,222,1,111,112,74,101,2,
+105,111,110,224,120,9,8,104,97,114,100,119,97,114,101,32,103,247,194,22,
+224,243,7,132,69,224,19,5,66,233,224,132,7,68,152,224,243,5,7,97,
+112,112,114,111,112,114,105,75,60,71,122,224,129,9,14,105,110,118,97,108,
+105,100,32,97,114,103,117,109,101,110,192,131,224,34,3,3,102,97,105,108,
+225,18,0,224,115,7,66,88,224,44,3,11,112,114,111,116,111,99,111,108,
+32,101,114,114,209,228,224,31,3,170,56,224,29,2,224,240,9,225,247,10,
+225,246,10,225,245,10,225,244,7,2,117,110,115,76,25,2,102,105,101,77,
+73,8,110,115,116,114,97,105,110,116,115,224,149,9,3,117,115,101,114,224,
+147,4,224,210,4,4,101,114,109,105,115,110,184,3,100,101,110,105,225,10,
+15,226,2,7,6,105,108,108,101,103,97,108,225,254,19,2,101,110,100,74,
+155,75,161,225,251,14,225,230,10,225,229,7,226,188,0,5,101,120,104,97,
+117,115,226,224,21,3,98,117,115,121,225,201,14,224,86,6,12,100,111,101,
+115,32,110,111,116,32,101,120,105,115,162,22,224,31,3,1,97,108,92,98,
+0,121,128,30,161,82,128,0,196,11,114,115,164,11,135,73,64,6,196,11,
+2,95,51,51,64,4,101,69,3,85,32,75,50,100,26,240,255,4,5,72,
+97,110,100,108,101,132,140,0,67,177,60,228,129,8,96,94,96,68,0,58,
+96,6,102,88,0,48,74,41,1,51,51,68,232,1,48,49,224,81,2,0,
+83,98,124,4,46,73,79,46,69,193,235,224,28,1,5,73,79,69,120,99,
+101,107,30,96,114,96,99,0,58,102,125,9,10,65,32,94,112,117,116,98,
+32,58,103,164,96,99,3,55,51,32,79,64,6,0,52,64,148,2,95,51,
+55,214,127,0,58,103,205,74,172,0,50,64,2,64,15,134,239,3,75,32,
+75,51,96,14,134,240,72,40,218,117,70,151,230,161,2,167,59,0,39,233,
+62,3,0,54,66,9,242,113,1,96,29,232,184,1,166,157,4,51,54,52,
+32,95,118,183,136,117,71,82,0,54,65,27,4,64,95,51,52,51,225,8,
+2,3,66,97,100,32,129,94,77,35,226,124,0,2,95,51,55,128,102,64,
+166,135,132,118,59,96,151,96,4,130,50,224,151,0,182,90,1,51,55,65,
+223,168,203,0,49,72,61,233,223,1,96,75,167,144,1,55,57,65,65,171,
+158,2,112,50,112,64,13,162,18,1,52,56,98,142,128,97,224,5,0,86,
+207,98,161,64,1,71,138,69,11,2,95,49,51,103,243,224,6,11,224,42,
+2,64,15,128,48,224,42,30,160,28,224,49,10,224,42,15,224,49,10,224,
+42,22,224,49,3,72,205,72,193,97,161,0,58,96,6,212,152,1,51,54,
+181,210,84,41,65,199,128,25,71,171,1,51,54,103,215,84,218,64,26,194,
+142,84,94,0,49,67,26,128,99,0,58,96,38,160,78,0,89,244,202,0,
+72,211,104,32,64,32,213,202,0,82,65,96,245,202,2,66,69,64,25,0,
+85,66,178,69,139,0,58,96,27,98,12,0,95,88,110,85,153,0,58,98,
+145,1,10,65,114,74,0,58,106,224,224,109,2,156,50,98,168,0,80,96,
+93,64,240,64,92,232,162,5,128,138,85,62,104,159,98,252,0,58,75,100,
+194,18,2,95,51,53,105,252,97,39,72,179,1,64,58,96,6,10,10,65,
+32,115,101,113,117,97,108,32,58,96,33,97,2,1,52,55,130,116,1,95,
+51,96,57,0,52,72,181,226,136,1,3,95,51,53,54,227,1,2,5,77,
+72,83,68,73,82,98,248,2,58,51,53,129,69,227,113,3,96,179,108,92,
+0,53,98,219,75,214,233,60,0,97,196,1,51,53,64,39,76,204,0,56,
+85,242,235,51,0,2,95,51,53,108,203,224,123,0,171,57,64,103,129,147,
+236,199,0,1,53,52,107,113,96,102,64,188,153,174,0,58,96,64,1,10,
+65,112,101,6,67,83,116,114,105,110,103,64,231,171,40,1,57,55,119,26,
+0,58,96,127,227,58,0,98,54,96,158,0,49,65,139,64,92,224,6,4,
+129,65,64,135,0,58,96,6,6,10,65,32,116,111,73,110,77,193,64,33,
+68,225,5,103,101,116,101,110,118,64,16,229,166,0,128,192,247,83,2,0,
+58,97,86,108,99,0,58,65,102,129,244,1,95,51,64,31,65,196,0,58,
+65,133,96,227,64,31,128,238,193,83,2,95,50,52,99,216,225,99,3,194,
+78,155,81,228,237,0,92,66,96,108,129,8,76,5,228,191,4,11,116,97,
+105,108,58,32,101,109,112,116,121,32,93,229,97,199,0,65,96,126,197,93,
+140,80,122,239,2,95,51,52,99,18,0,52,129,48,78,31,64,16,236,98,
+2,0,51,98,101,97,126,172,98,160,56,108,98,192,11,65,251,96,11,0,
+58,96,6,230,201,6,128,61,230,194,5,104,82,171,166,166,171,96,38,0,
+58,96,6,3,10,65,32,90,131,239,102,219,66,49,122,26,64,79,96,93,
+230,200,16,6,67,111,110,116,114,111,108,230,198,11,96,18,0,67,219,131,
+166,146,64,223,78,240,133,204,230,112,1,64,7,133,210,238,12,1,1,95,
+51,64,226,132,134,0,51,65,135,77,189,184,211,153,81,1,51,51,171,247,
+131,209,0,58,64,160,64,94,103,198,64,14,129,247,249,48,10,255,59,0,
+249,35,0,0,58,100,200,96,155,0,85,225,229,7,4,109,100,53,67,111,
+82,17,0,101,161,235,134,167,64,143,68,200,90,164,64,164,1,50,32,68,
+111,1,95,56,99,134,65,71,0,89,96,115,140,222,1,67,39,100,144,228,
+117,1,197,2,249,165,2,160,235,67,28,96,48,112,144,0,51,98,161,67,
+169,2,48,32,95,71,194,1,64,95,76,202,1,95,51,69,147,192,0,0,
+58,97,33,67,60,9,109,100,53,65,114,114,97,121,32,58,96,57,130,130,
+194,248,0,55,192,154,2,95,51,50,65,225,138,202,231,191,2,231,83,3,
+2,95,51,51,94,159,224,46,2,163,221,224,46,0,0,95,112,23,227,49,
+5,97,180,128,145,130,218,66,229,64,20,132,111,144,153,97,223,67,118,1,
+53,55,222,130,142,24,240,5,2,168,122,225,52,0,192,25,168,149,234,157,
+0,2,95,52,54,220,87,0,49,64,78,65,34,3,95,51,50,50,100,156,
+128,0,229,234,3,134,17,192,69,232,64,1,64,51,104,161,224,44,2,96,
+95,0,66,134,55,1,55,52,161,125,106,160,133,151,193,184,232,102,3,224,
+43,10,194,116,229,136,1,128,16,0,58,65,96,226,175,0,220,232,0,58,
+96,135,99,211,0,48,67,111,0,50,68,209,193,251,129,245,108,95,0,95,
+72,191,0,58,97,152,2,10,65,32,78,144,0,58,96,28,128,57,0,56,
+100,78,68,232,1,95,50,113,107,0,95,82,61,1,95,51,68,231,3,95,
+50,50,52,160,88,64,11,67,72,192,11,192,112,68,63,75,59,128,11,65,
+77,64,106,0,54,96,93,2,114,101,109,64,106,177,60,1,49,48,100,185,
+96,156,97,133,99,9,102,109,64,53,64,54,130,153,102,200,128,131,179,53,
+0,58,96,39,96,26,98,135,162,19,69,216,97,187,236,130,2,0,95,70,
+177,165,159,98,111,80,76,1,50,48,227,163,2,31,92,34,108,105,98,47,
+68,97,116,97,47,73,110,116,101,103,101,114,95,84,121,112,101,46,104,115,
+92,34,44,51,57,58,0,49,170,91,100,5,0,51,106,155,64,169,64,182,
+1,52,51,226,43,1,96,30,0,50,84,160,70,178,130,24,2,49,57,57,
+160,19,253,111,0,106,35,113,174,0,67,99,244,164,184,98,96,64,233,73,
+41,160,83,171,41,96,69,128,13,0,79,64,209,0,79,236,60,0,132,4,
+64,29,224,21,3,1,95,50,86,62,64,6,66,87,0,58,97,76,84,72,
+65,122,200,227,134,90,159,210,2,51,49,57,97,163,130,81,67,116,64,16,
+230,90,2,86,155,1,95,51,96,77,166,90,192,56,70,90,192,11,66,0,
+165,252,64,6,128,102,102,14,82,192,0,65,128,36,65,23,0,58,64,43,
+128,31,178,216,1,95,51,113,40,99,181,0,80,128,47,179,182,97,71,224,
+15,7,64,65,130,80,0,85,172,144,191,211,65,15,132,151,136,229,95,89,
+101,0,0,51,66,62,224,68,0,65,29,224,21,2,160,154,131,112,136,232,
+97,86,96,245,112,145,0,58,96,159,102,206,0,55,65,30,130,123,0,75,
+64,10,228,169,1,191,223,151,193,96,90,200,217,236,127,6,224,14,5,192,
+170,101,84,129,191,136,233,96,188,0,58,96,6,202,74,2,50,49,52,64,
+93,192,50,233,41,0,65,236,192,26,0,56,67,160,224,26,3,0,58,96,
+91,198,204,172,253,72,247,138,191,172,159,204,153,1,75,50,171,246,96,0,
+133,73,98,133,0,85,224,23,2,197,98,235,3,5,133,22,0,49,102,117,
+171,248,224,8,4,64,214,96,142,234,170,0,229,177,0,192,9,128,44,236,
+142,4,0,58,96,54,136,74,2,52,32,58,66,127,64,13,73,188,185,82,
+243,151,0,179,153,227,217,1,11,110,111,32,109,97,116,99,104,32,97,116,
+32,131,196,147,186,96,104,68,164,130,211,136,213,163,45,185,147,232,184,26,
+207,106,0,46,68,53,2,114,110,97,104,174,224,39,1,2,80,97,116,64,
+22,0,77,64,128,2,70,97,105,232,204,4,185,237,142,34,183,195,0,49,
+162,121,99,53,135,29,163,64,2,95,49,50,98,16,228,21,1,137,109,96,
+5,234,217,2,64,0,72,207,98,128,186,66,161,28,245,55,1,0,49,70,
+57,0,35,73,158,181,57,3,49,51,49,32,128,15,99,20,149,46,74,76,
+224,24,2,246,37,8,4,39,92,92,39,39,165,23,193,75,165,194,224,82,
+0,102,147,136,200,224,17,3,248,100,0,229,161,0,224,151,1,0,64,160,
+35,168,46,224,139,0,98,138,245,230,9,3,92,92,92,34,241,182,2,0,
+58,96,131,100,184,3,51,53,32,58,97,234,105,150,160,106,100,24,66,158,
+1,95,49,74,187,224,14,1,0,50,67,235,64,136,67,60,160,136,109,8,
+97,18,64,39,138,221,130,168,174,29,168,14,64,168,151,103,161,150,1,79,
+32,96,59,129,144,160,200,96,62,193,205,0,50,122,40,152,240,143,108,207,
+106,0,90,64,28,99,45,64,61,224,231,3,0,38,192,230,131,101,100,67,
+129,75,99,131,200,230,136,159,113,92,225,89,7,224,60,1,104,125,192,223,
+128,77,160,223,96,224,112,171,135,82,195,206,225,163,6,101,172,100,49,128,
+180,121,239,226,92,2,113,129,240,40,6,224,210,18,2,64,64,79,89,239,
+0,48,251,177,3,2,78,85,76,96,30,96,25,0,49,224,25,3,2,83,
+79,72,224,25,1,0,50,224,25,4,1,84,88,224,25,1,0,51,224,25,
+3,0,69,224,25,3,252,25,4,2,69,79,84,224,25,1,0,53,224,25,
+4,1,78,81,224,25,1,0,54,224,25,3,2,65,67,75,224,25,1,0,
+55,110,91,65,180,97,240,96,19,0,56,128,19,0,56,224,19,3,0,57,
+96,19,0,49,70,183,224,20,1,70,36,96,21,0,48,224,21,4,0,49,
+160,21,224,64,4,68,29,64,21,68,58,224,21,2,142,219,0,49,65,146,
+224,108,2,128,43,226,134,0,128,42,224,248,4,1,83,79,225,95,2,224,
+248,4,1,83,73,224,25,2,224,248,4,2,68,76,69,224,26,2,0,55,
+224,26,4,0,67,137,37,128,26,0,56,224,26,5,0,50,224,26,2,0,
+57,224,26,5,0,51,225,203,2,226,0,4,2,68,67,52,224,26,2,226,
+1,4,1,78,65,225,127,2,72,220,224,187,2,1,89,78,224,26,2,226,
+3,6,0,66,224,26,2,225,11,4,1,67,65,224,53,3,226,5,5,0,
+77,224,25,2,225,12,4,1,83,85,224,79,3,225,12,4,2,69,83,67,
+224,26,2,225,12,4,1,70,83,224,25,2,225,11,4,0,71,224,25,2,
+67,69,224,25,1,0,82,224,25,3,225,9,4,0,85,224,25,2,103,57,
+225,63,2,0,69,131,64,198,23,224,0,21,111,5,140,149,0,58,101,112,
+158,90,165,30,77,27,0,49,70,8,0,35,104,54,173,124,96,17,1,64,
+35,82,120,64,52,172,63,2,50,56,57,69,121,0,54,230,124,1,74,215,
+237,114,10,209,50,0,50,94,242,2,95,54,49,172,247,235,34,5,198,32,
+1,54,53,192,53,101,51,228,197,1,81,93,101,75,255,154,0,160,23,100,
+242,224,39,7,135,58,96,112,128,21,164,154,198,195,165,153,104,15,128,11,
+0,58,96,6,191,104,64,139,160,201,224,154,10,224,195,0,154,81,235,190,
+0,192,114,109,246,237,37,0,224,36,0,238,12,1,224,10,1,96,50,0,
+51,133,127,206,17,97,89,129,128,64,41,0,50,104,18,224,74,4,0,58,
+96,102,5,10,65,32,99,104,114,65,131,136,200,0,83,103,249,65,15,2,
+95,50,57,64,239,225,215,11,101,170,225,215,5,72,115,128,84,168,171,64,
+147,71,53,225,204,1,121,221,64,37,224,19,7,130,37,161,197,160,19,64,
+84,234,67,1,234,77,2,224,40,7,66,79,224,40,12,224,102,8,65,243,
+224,61,7,65,180,224,102,13,108,27,3,67,32,61,61,64,38,137,247,102,
+154,224,97,3,0,58,97,34,107,43,73,49,97,42,66,36,226,184,8,65,
+171,1,52,50,240,61,0,1,52,52,84,250,143,198,65,188,96,15,208,226,
+1,50,52,66,78,68,222,65,196,72,0,160,41,84,78,65,22,97,218,64,
+123,136,189,4,111,114,100,32,58,96,18,9,10,65,32,98,115,105,110,100,
+101,120,64,16,182,36,0,50,66,68,0,50,64,142,128,97,1,95,50,108,
+26,96,11,233,230,1,85,17,160,169,224,18,4,108,251,224,18,5,129,251,
+224,18,4,64,159,224,18,6,129,108,224,18,4,105,18,224,18,5,66,13,
+224,18,6,224,151,10,130,31,224,18,4,109,169,224,170,6,224,190,11,224,
+191,10,190,72,224,19,5,224,193,10,104,182,224,19,7,224,195,10,223,160,
+224,19,4,224,197,10,110,236,224,19,7,224,199,10,97,249,224,19,7,225,
+135,11,224,199,10,182,100,224,19,5,224,199,10,98,247,224,19,7,224,199,
+10,99,93,224,19,7,163,174,224,19,4,98,151,246,177,6,9,111,69,110,
+117,109,58,32,111,117,116,93,242,3,114,97,110,103,187,118,162,199,2,64,
+95,50,120,105,64,7,143,77,0,50,119,174,64,7,142,20,0,50,88,1,
+96,7,165,183,81,156,96,7,146,230,0,50,89,9,96,7,160,79,99,95,
+64,7,160,79,156,67,1,95,50,89,205,96,7,160,79,90,9,96,7,160,
+79,122,124,64,7,160,79,188,66,0,50,123,229,64,7,160,79,156,44,1,
+95,50,92,42,96,7,160,79,134,139,1,95,50,93,8,96,7,160,79,93,
+74,1,64,85,230,209,3,126,120,64,45,228,157,7,64,89,229,44,53,128,
+7,96,8,141,3,229,42,13,128,7,96,8,134,72,229,40,34,128,7,96,
+8,96,249,224,38,8,65,23,64,29,97,31,64,8,165,41,224,99,7,99,
+12,224,119,7,130,248,224,80,5,133,114,128,7,96,8,199,7,224,38,4,
+99,71,0,85,138,47,128,8,177,31,231,129,0,160,39,130,227,224,59,5,
+161,22,96,7,96,8,129,22,64,9,168,98,224,169,7,64,41,224,208,7,
+103,43,224,19,6,131,141,224,109,5,65,55,64,90,97,63,64,8,133,220,
+224,38,7,65,55,64,29,166,151,128,95,224,137,9,132,63,224,58,5,65,
+33,64,49,97,41,0,85,108,75,224,96,9,130,152,96,6,64,7,96,251,
+224,94,9,64,155,224,18,6,132,57,224,75,4,65,47,0,85,108,245,96,
+7,129,52,224,35,6,160,246,192,245,166,209,225,158,7,226,0,10,161,255,
+193,6,193,154,130,6,168,220,0,49,88,39,198,221,64,238,64,85,149,46,
+174,238,231,126,3,135,96,96,46,224,12,5,142,206,2,95,50,49,73,219,
+160,78,99,193,224,25,12,196,195,0,56,224,64,0,2,95,50,56,231,102,
+0,0,58,96,6,138,9,190,24,64,8,250,31,0,107,104,243,20,2,218,
+110,72,11,160,217,145,232,143,165,96,11,192,42,160,134,164,123,106,171,224,
+6,5,0,58,64,136,224,124,5,224,121,35,224,108,6,97,92,224,108,10,
+0,58,64,250,232,99,0,70,37,183,83,2,95,50,55,130,151,0,95,92,
+116,184,154,230,28,5,17,73,110,116,46,115,117,99,99,58,32,111,118,101,
+114,102,108,111,119,134,26,224,69,4,0,56,169,58,72,255,224,69,16,8,
+112,114,101,100,58,32,117,110,100,224,70,3,0,73,127,123,66,26,122,193,
+128,143,226,20,3,183,232,225,216,0,0,56,85,189,128,112,224,19,1,113,
+235,96,58,64,13,0,49,192,59,130,178,66,162,224,70,0,128,64,160,51,
+65,24,139,89,129,193,0,83,105,215,224,119,1,98,251,0,83,194,230,98,
+158,65,162,203,205,242,53,1,209,166,96,65,178,90,210,67,128,84,113,140,
+167,28,138,37,128,27,236,25,1,145,250,161,138,129,97,248,16,2,129,91,
+224,243,0,204,181,128,163,224,41,1,218,70,96,222,224,215,16,96,134,224,
+215,67,135,100,224,215,68,132,189,224,215,9,245,96,0,185,101,76,238,0,
+53,118,254,163,55,224,123,1,160,189,96,199,160,177,162,177,64,90,155,196,
+226,247,1,249,201,0,192,9,0,58,98,73,67,53,3,54,51,32,95,78,
+14,1,50,50,78,9,0,48,132,211,100,233,154,180,98,142,192,40,224,36,
+9,0,58,98,154,118,219,64,20,85,197,100,173,128,17,0,49,192,17,132,
+133,146,252,128,17,0,54,192,17,0,51,192,17,215,35,69,158,128,17,130,
+191,146,228,128,17,129,249,146,220,128,17,129,51,146,212,128,17,128,216,146,
+210,128,17,128,193,146,208,96,17,73,89,160,161,192,180,73,116,160,18,192,
+181,73,143,160,18,192,182,73,170,160,18,192,183,73,197,160,18,192,184,73,
+224,160,18,192,185,73,251,160,18,192,186,74,22,160,18,192,187,74,49,160,
+18,192,188,70,45,160,18,192,189,74,103,128,18,72,135,128,18,224,189,0,
+72,163,128,18,225,115,1,192,189,68,37,160,18,192,189,66,95,160,18,192,
+189,74,238,160,18,192,189,67,4,160,18,192,189,75,36,160,18,192,189,75,
+63,160,18,192,189,75,90,160,18,192,189,66,163,177,169,119,42,69,240,183,
+39,1,52,55,167,91,229,219,0,80,58,12,10,65,32,115,117,98,116,114,
+97,99,116,32,58,64,35,224,62,14,0,52,189,103,224,61,2,128,239,123,
+112,126,109,0,58,96,25,254,130,8,96,68,102,66,0,52,94,178,67,55,
+0,58,110,239,15,10,65,32,34,94,95,94,44,94,41,94,66,94,57,94,
+59,96,5,18,53,94,54,94,57,94,58,94,57,94,52,94,57,94,57,94,
+73,94,38,96,7,0,66,96,19,30,57,94,89,94,32,94,53,94,57,94,
+54,94,60,94,51,94,60,94,89,94,33,94,53,94,58,94,54,94,58,124,
+32,96,75,22,57,94,67,94,59,94,61,94,57,94,60,94,61,94,50,94,
+55,94,58,94,45,94,61,96,13,8,58,94,40,94,40,94,60,94,33,96,
+75,31,60,94,40,94,50,94,56,94,66,94,40,94,57,94,86,94,32,94,
+58,94,70,94,32,94,87,94,33,94,58,94,71,94,2,33,94,32,224,3,
+102,224,33,59,224,3,53,224,9,1,0,66,224,15,6,64,5,0,66,96,
+5,2,33,94,67,224,19,6,224,43,3,224,79,13,224,69,9,224,15,1,
+2,33,94,50,160,67,0,67,96,9,0,34,96,25,224,5,3,224,3,21,
+224,33,25,192,37,192,77,224,129,3,224,3,99,0,70,96,5,128,11,64,
+5,128,23,193,77,224,3,2,1,124,68,97,21,28,90,94,33,94,81,94,
+49,94,67,94,60,94,75,94,49,94,77,94,60,94,68,94,49,94,70,94,
+60,94,49,96,3,6,80,94,60,124,111,94,35,224,57,0,64,21,64,7,
+4,48,94,48,94,49,97,83,8,57,94,32,94,67,94,48,94,60,96,25,
+67,73,2,32,94,48,160,3,64,41,0,80,96,11,3,72,94,32,124,193,
+29,225,211,3,224,3,35,64,179,64,9,0,58,160,15,96,75,5,124,50,
+94,32,124,47,224,75,40,224,3,13,8,61,94,68,94,35,94,37,94,37,
+224,73,56,224,3,37,224,29,19,224,67,31,224,3,145,1,48,124,65,79,
+130,49,4,69,94,57,124,40,98,53,0,52,96,17,18,61,94,61,94,59,
+94,48,124,44,94,35,94,52,94,35,94,57,94,35,224,5,4,6,71,94,
+48,94,90,94,50,98,97,67,189,69,87,6,74,94,48,94,69,94,45,229,
+179,0,0,59,96,5,64,73,0,74,96,53,64,25,14,57,94,95,94,50,
+94,49,94,73,94,50,94,84,94,35,101,231,10,67,94,57,94,50,94,50,
+94,35,124,98,96,73,4,50,94,70,94,35,101,187,6,69,94,35,94,49,
+94,49,96,117,4,61,94,67,94,35,96,39,64,51,2,66,94,50,96,89,
+8,50,94,77,94,57,94,48,94,45,64,63,1,94,93,99,59,0,35,64,
+193,3,124,88,94,50,96,119,64,33,0,48,64,51,5,124,32,94,50,94,
+72,160,81,0,61,96,139,0,49,96,235,6,35,94,59,94,59,94,85,96,
+205,64,29,128,35,0,66,96,5,66,119,64,35,0,78,96,101,64,83,64,
+23,64,17,64,15,16,74,94,50,94,68,94,48,94,87,94,50,94,60,94,
+69,94,50,96,137,0,45,96,19,3,72,94,35,124,70,103,2,49,94,87,
+96,205,6,95,94,35,94,36,124,53,96,167,0,36,96,151,8,66,94,36,
+94,71,94,35,94,67,96,15,2,36,94,36,160,249,65,27,129,103,199,7,
+2,49,94,78,160,55,4,36,94,48,94,71,96,103,0,48,97,11,64,7,
+64,185,2,48,94,70,96,5,64,85,129,145,128,217,128,101,64,215,64,15,
+128,63,128,7,64,27,65,197,64,29,192,75,65,85,64,121,64,35,64,121,
+64,21,65,27,2,69,94,40,98,15,65,157,128,29,64,37,64,75,64,243,
+224,63,1,224,139,7,224,5,7,64,55,64,101,64,125,64,247,128,71,64,
+23,65,85,64,185,2,35,94,70,224,191,0,65,13,128,135,64,37,128,155,
+65,17,224,125,1,0,72,224,181,0,224,121,11,0,68,225,5,6,129,203,
+192,59,129,3,129,71,0,78,160,51,224,251,3,66,191,64,127,0,50,98,
+133,64,55,225,125,27,224,119,7,129,217,225,127,13,64,93,128,141,225,129,
+17,66,225,65,125,128,245,64,33,65,113,65,41,128,245,65,41,64,13,193,
+101,128,9,192,17,192,39,64,7,0,75,161,169,128,123,64,5,128,29,64,
+145,129,145,128,213,0,69,96,35,163,51,105,35,0,69,97,251,69,131,64,
+131,128,43,129,5,128,131,0,86,96,5,0,79,225,109,4,130,213,129,215,
+64,165,224,237,1,192,53,128,173,225,119,9,64,39,2,57,94,70,98,113,
+194,243,0,57,224,111,10,67,37,225,107,9,0,68,96,117,193,171,128,235,
+128,123,64,11,64,219,226,143,1,224,117,3,128,17,2,36,94,75,225,147,
+0,0,36,226,93,3,99,201,64,23,227,79,3,225,59,3,68,141,65,93,
+64,45,0,36,96,189,225,201,7,0,72,96,209,132,35,192,159,0,81,161,
+155,68,63,194,205,128,207,66,79,131,15,128,85,65,173,130,133,66,129,128,
+201,128,183,128,217,0,57,64,185,1,124,47,96,115,64,201,68,71,64,57,
+67,187,68,131,68,103,235,85,0,0,124,64,123,226,49,1,129,67,128,131,
+193,89,128,69,69,9,128,143,128,35,69,47,64,89,224,123,1,66,127,0,
+95,96,55,2,66,94,61,101,37,75,129,64,11,64,251,66,57,64,41,0,
+73,96,251,69,195,128,3,75,237,64,3,64,185,97,217,0,124,64,103,64,
+175,0,77,97,27,67,169,134,107,64,119,69,197,64,33,128,251,64,63,64,
+87,134,163,0,68,107,247,64,115,96,213,1,124,42,97,127,129,161,65,37,
+133,107,129,111,129,191,64,143,2,69,94,57,97,23,192,21,131,69,193,221,
+129,63,65,113,134,17,0,76,226,135,0,128,211,129,239,0,36,163,31,64,
+13,2,61,94,61,167,75,73,13,137,101,64,139,71,79,137,141,1,66,124,
+129,221,197,153,196,47,224,17,0,98,97,224,13,1,70,171,224,45,18,102,
+15,2,48,124,56,224,51,4,195,87,64,201,4,72,94,57,94,83,98,133,
+131,153,0,73,98,123,2,48,124,85,167,241,0,69,170,43,4,52,94,68,
+124,107,98,189,10,57,94,80,94,50,94,41,94,89,94,50,97,155,3,66,
+94,48,124,70,223,71,39,2,66,94,39,97,167,67,71,130,179,65,15,4,
+72,94,48,94,82,162,229,66,129,0,57,96,17,64,31,64,17,67,73,65,
+57,195,181,160,19,1,124,51,224,49,0,66,73,66,203,129,91,65,229,135,
+147,142,21,64,37,195,59,130,237,68,137,64,185,72,163,72,51,64,133,0,
+45,168,67,64,219,0,34,66,233,1,124,52,160,167,66,57,3,35,94,35,
+124,75,79,65,175,3,68,94,48,124,65,243,69,73,0,94,160,151,199,123,
+132,213,229,29,1,65,227,128,29,66,101,65,67,199,139,72,97,195,15,4,
+74,94,48,124,43,162,183,65,53,195,147,97,117,0,124,74,181,68,169,226,
+125,1,64,55,66,167,64,161,128,245,131,75,130,163,131,11,128,123,0,73,
+160,45,224,219,0,224,7,0,0,70,97,33,65,3,64,31,67,45,5,37,
+94,79,94,35,124,131,139,72,97,0,46,162,173,67,67,197,17,192,93,64,
+187,192,201,64,73,66,21,67,227,0,72,169,15,128,171,64,227,195,65,195,
+61,131,29,99,61,96,243,128,91,198,13,128,31,128,99,64,135,0,57,99,
+207,65,219,64,209,192,69,65,71,67,175,131,55,130,23,193,83,2,69,94,
+49,162,65,138,155,65,173,0,42,162,171,76,149,0,71,102,3,129,179,2,
+57,94,76,225,61,0,66,251,65,51,196,177,128,105,129,237,8,43,94,33,
+124,62,94,49,94,76,77,31,0,124,76,147,4,36,94,49,124,63,237,53,
+2,224,3,255,224,3,17,193,143,224,3,181,64,197,2,71,94,32,228,245,
+0,0,69,162,89,81,235,64,23,192,7,224,31,11,207,51,192,3,192,43,
+0,77,160,43,128,15,0,34,224,7,8,79,21,0,48,241,53,0,0,34,
+114,125,2,66,94,60,102,13,224,23,3,64,19,0,67,160,75,192,21,66,
+231,0,60,96,73,0,68,111,145,0,60,163,7,224,81,7,64,23,8,74,
+94,41,94,68,94,45,94,69,179,57,6,55,94,56,94,53,94,55,224,7,
+0,67,57,2,42,94,43,96,35,0,41,102,23,64,25,69,63,2,51,94,
+51,99,245,0,58,101,239,0,74,179,127,4,51,94,73,94,57,160,83,68,
+119,2,45,94,40,173,39,74,135,77,219,64,45,77,193,224,13,1,69,233,
+69,183,70,183,0,59,107,77,67,161,2,67,94,37,99,245,4,37,94,75,
+94,35,96,21,71,177,80,149,64,5,64,11,242,89,1,128,7,192,23,0,
+58,96,247,71,229,64,15,192,3,64,245,64,51,145,55,67,249,64,49,64,
+17,65,227,71,121,80,129,65,75,64,65,128,25,8,61,94,79,94,40,124,
+34,94,39,160,51,0,39,104,137,137,171,64,47,0,68,96,43,0,58,96,
+147,128,51,192,5,0,70,96,5,0,94,160,31,192,25,128,17,2,66,94,
+75,116,41,0,61,232,201,0,0,83,160,39,64,53,4,53,94,54,124,80,
+96,15,8,93,94,61,94,88,94,58,124,39,103,125,1,58,124,64,49,0,
+85,97,179,10,61,94,84,94,48,124,59,94,40,124,77,96,19,4,40,94,
+65,124,54,96,51,69,139,10,58,124,53,94,61,94,71,94,58,124,110,96,
+19,2,65,124,119,224,107,2,224,3,11,4,93,94,40,124,43,105,15,129,
+145,0,94,160,7,224,3,7,0,79,64,77,5,92,95,94,61,94,65,225,
+189,0,224,3,30,1,124,62,224,47,2,0,95,160,11,6,66,94,65,94,
+58,124,47,96,207,129,37,64,231,76,183,66,49,64,103,6,48,124,104,94,
+61,124,47,242,13,2,193,243,227,163,3,243,11,1,64,5,67,135,79,165,
+243,175,111,224,3,73,0,33,162,205,128,13,70,197,64,7,74,43,67,137,
+86,135,2,57,124,37,163,223,64,21,100,15,1,124,55,168,203,71,27,77,
+145,0,35,104,81,73,101,138,17,224,5,33,80,125,196,29,64,3,67,247,
+64,7,128,5,68,21,132,61,64,5,128,23,196,73,226,7,5,71,191,67,
+251,64,41,137,133,64,49,2,53,94,76,177,233,215,203,224,3,3,1,52,
+124,64,205,0,89,98,11,2,88,94,61,106,25,6,65,124,85,94,61,94,
+89,106,157,0,61,184,9,6,61,94,49,94,50,94,39,226,123,11,96,91,
+224,87,8,96,5,64,27,2,72,94,39,232,175,0,0,52,117,41,128,139,
+0,39,96,81,128,153,74,251,137,187,72,33,69,59,66,97,3,50,94,52,
+124,73,187,74,77,64,13,136,119,75,91,137,233,132,43,79,127,0,61,82,
+185,1,124,37,96,109,64,23,2,79,94,50,100,11,138,153,67,233,0,71,
+100,91,2,78,94,40,98,247,2,73,94,40,99,7,64,15,2,66,124,63,
+78,205,2,124,51,124,64,47,0,50,128,13,5,94,65,124,35,124,125,176,
+65,4,49,94,72,124,118,141,243,100,7,4,72,94,48,124,39,233,23,2,
+68,113,64,37,65,39,64,121,73,55,72,239,0,83,102,147,226,155,53,224,
+3,19,73,87,69,193,73,181,66,65,0,49,224,73,48,179,199,171,131,0,
+39,173,75,137,213,4,86,94,60,94,72,118,195,150,197,224,3,13,246,153,
+41,224,3,69,79,69,224,17,3,224,35,13,224,195,3,88,213,64,9,224,
+185,35,70,249,192,5,224,3,19,248,61,3,64,5,66,217,128,7,128,3,
+224,47,5,0,84,104,63,129,189,66,71,2,49,94,33,100,25,211,87,139,
+71,68,93,235,243,1,71,19,139,181,147,255,146,5,77,105,77,195,67,251,
+148,63,1,36,124,67,57,0,79,160,55,64,19,204,99,76,177,0,81,171,
+159,66,185,149,221,64,105,64,29,0,91,108,35,132,151,64,121,78,1,142,
+9,64,65,0,92,242,191,0,236,213,3,236,151,5,76,125,68,121,69,33,
+64,81,71,213,64,77,141,251,85,201,131,41,112,189,111,97,144,17,192,225,
+128,7,67,207,129,5,77,33,64,23,65,75,64,55,141,85,131,113,77,117,
+144,229,173,189,96,245,144,51,140,123,64,75,174,117,160,25,0,87,177,103,
+131,195,79,77,224,121,1,64,17,129,137,64,19,78,149,146,27,224,7,5,
+229,235,6,112,83,74,47,64,219,194,109,6,67,94,48,124,79,94,33,110,
+255,128,211,224,5,1,0,57,96,9,192,207,65,143,2,50,124,87,101,143,
+0,50,101,135,65,119,64,63,64,15,65,61,2,46,94,70,100,147,2,46,
+94,46,192,7,1,94,71,160,9,2,47,124,49,96,9,4,47,94,66,124,
+109,128,163,1,124,105,101,19,64,157,0,33,96,79,74,245,70,191,129,227,
+2,50,94,58,176,3,146,63,128,3,224,5,0,112,121,4,80,94,60,94,
+79,65,129,3,124,106,94,50,101,217,4,79,94,61,124,63,160,95,87,47,
+71,1,69,125,148,195,94,47,69,125,83,213,222,55,64,215,64,17,134,149,
+74,215,230,67,11,224,3,3,65,125,64,7,144,71,139,7,129,235,134,85,
+192,3,139,31,0,52,105,43,66,91,152,211,138,61,64,161,0,65,161,157,
+87,247,66,69,254,207,58,160,59,192,165,65,69,2,49,124,44,162,43,80,
+185,131,145,226,43,9,140,35,128,31,87,181,0,58,126,251,64,9,65,63,
+0,67,169,159,66,105,0,66,121,93,137,163,65,83,144,191,145,205,193,161,
+114,97,112,99,0,50,66,47,1,124,122,184,235,64,221,66,49,0,44,178,
+93,4,72,94,61,124,52,103,127,1,40,94,74,245,95,105,65,161,76,3,
+145,59,2,61,124,46,96,47,68,77,4,65,94,65,94,48,195,219,98,117,
+76,23,4,35,94,90,94,40,97,85,90,29,64,73,66,247,0,83,104,13,
+67,147,0,39,103,151,0,37,96,129,67,99,0,48,177,135,144,103,64,55,
+64,37,67,247,2,39,124,41,103,57,6,32,124,39,94,33,124,77,160,195,
+210,33,73,117,64,187,0,35,101,63,135,97,0,71,164,207,132,117,0,74,
+109,125,0,78,96,5,0,70,253,45,0,75,177,67,51,0,78,96,5,66,
+235,141,135,64,195,64,59,66,249,2,66,124,54,163,175,71,207,65,101,64,
+147,68,1,71,195,2,48,124,41,109,69,3,72,94,49,124,64,191,193,175,
+67,5,81,79,129,117,65,45,128,23,150,227,69,97,0,40,96,11,65,173,
+86,85,65,255,69,97,4,72,94,40,124,47,225,177,4,64,85,2,68,94,
+40,96,125,141,169,64,63,65,215,64,25,2,57,124,63,170,79,65,45,65,
+163,64,51,2,79,94,40,99,101,77,227,132,199,137,29,138,151,134,21,211,
+191,65,179,130,97,147,23,69,55,0,40,99,155,74,61,64,7,64,33,64,
+89,197,187,73,7,129,5,0,61,101,235,64,89,131,57,64,55,116,45,99,
+223,64,169,64,15,201,159,64,243,64,215,64,133,64,11,84,81,154,21,118,
+229,65,7,3,124,79,94,48,85,81,3,124,54,94,48,94,105,1,94,76,
+96,7,70,211,102,173,162,23,134,141,243,67,3,64,209,69,183,85,7,146,
+143,92,223,2,49,94,85,111,181,0,48,109,195,0,65,64,93,1,94,94,
+65,27,1,124,41,96,147,64,185,157,23,129,53,97,19,64,123,96,99,64,
+237,74,3,129,153,64,197,70,201,66,197,75,45,77,239,64,193,129,79,75,
+229,2,48,94,84,96,209,0,40,105,189,203,209,134,83,84,27,0,78,164,
+219,65,43,85,195,64,183,230,97,1,128,45,135,21,68,21,216,143,198,205,
+68,51,0,45,97,43,134,85,68,151,156,185,219,77,65,11,2,66,94,35,
+97,35,148,37,71,133,193,31,70,149,64,75,131,25,70,83,128,83,128,119,
+102,189,120,103,64,119,84,59,135,147,136,15,64,135,134,113,138,159,64,53,
+133,89,64,199,67,97,65,9,221,71,244,53,1,64,5,202,15,160,233,107,
+41,246,247,7,132,147,69,17,101,243,168,21,64,73,64,193,66,47,192,223,
+199,101,251,175,33,129,91,128,141,154,187,251,175,1,153,233,64,47,64,91,
+85,91,128,53,192,31,84,137,194,77,64,229,154,155,192,119,132,185,64,9,
+64,71,156,77,192,95,64,217,64,5,225,5,1,136,57,65,113,136,203,66,
+83,64,155,2,92,94,48,98,29,192,237,64,49,129,63,131,167,213,89,192,
+57,137,217,0,93,186,21,192,121,192,221,129,31,128,243,129,167,195,41,0,
+65,66,161,97,89,194,89,64,169,224,51,5,0,86,97,235,98,143,102,27,
+192,97,245,237,1,128,39,137,243,129,17,129,151,73,173,0,82,173,99,128,
+37,64,47,192,153,161,215,224,45,0,0,83,106,37,2,48,94,90,161,75,
+224,49,1,130,241,65,111,67,37,64,47,134,119,77,235,65,219,2,65,124,
+56,165,89,226,167,1,99,29,1,124,99,102,101,4,32,94,95,94,33,96,
+55,68,197,68,85,226,39,1,132,131,226,31,1,91,25,87,149,226,15,1,
+193,9,66,1,137,211,64,121,67,31,87,31,64,185,160,77,0,124,67,5,
+225,71,3,133,3,192,235,64,59,0,90,96,103,2,73,94,35,173,239,64,
+89,196,187,65,197,65,151,234,183,1,67,183,2,45,94,50,183,1,225,99,
+1,65,253,69,3,74,241,131,231,4,57,94,65,124,53,186,73,144,61,193,
+85,122,137,0,124,128,185,152,129,225,127,1,130,69,128,43,0,82,230,69,
+0,0,57,248,247,0,0,85,162,189,64,55,226,17,2,0,124,234,167,1,
+137,217,66,241,64,85,64,63,198,85,131,39,139,103,224,141,1,135,9,129,
+105,71,253,221,193,128,103,194,75,228,189,1,0,66,64,213,250,119,2,139,
+73,222,93,64,211,106,113,121,247,64,29,66,35,64,133,224,75,1,66,131,
+101,83,0,124,77,21,136,129,2,84,94,40,115,207,2,67,94,59,104,197,
+0,76,167,125,10,89,94,50,124,101,94,48,124,110,94,39,184,189,66,205,
+1,65,124,66,253,1,84,124,90,207,0,96,163,173,64,49,0,72,99,9,
+0,79,122,149,64,215,69,201,65,77,0,95,98,193,100,53,5,124,70,94,
+50,124,53,66,157,97,83,85,25,197,9,64,147,0,77,98,61,0,68,123,
+217,64,211,154,169,133,153,154,61,197,3,129,61,250,143,1,157,223,131,139,
+65,103,221,25,76,43,67,21,193,213,103,63,166,131,64,145,65,73,0,67,
+104,75,2,66,94,49,98,131,147,121,129,35,0,65,96,143,195,47,0,86,
+105,165,2,57,124,100,188,27,136,7,71,9,66,17,135,13,0,76,121,99,
+77,145,64,119,79,243,65,49,65,125,66,131,4,50,124,47,124,117,97,117,
+98,3,81,147,0,124,64,141,65,255,64,65,4,50,124,69,124,102,96,73,
+158,107,64,5,64,73,73,95,70,139,65,171,0,50,69,11,168,149,64,13,
+64,87,65,143,154,123,74,207,0,82,105,221,76,79,64,225,66,15,138,169,
+194,69,128,57,158,163,65,37,3,45,94,94,124,68,103,2,65,124,111,190,
+177,64,245,4,67,124,51,94,61,97,227,65,207,64,49,0,86,142,45,4,
+124,115,94,61,124,75,85,2,65,124,117,129,89,212,241,0,124,79,33,197,
+153,75,5,68,55,2,71,94,45,101,25,137,195,0,35,114,43,3,67,94,
+35,124,75,157,86,5,0,65,107,39,4,35,94,61,124,121,167,41,68,143,
+160,7,1,124,86,178,113,0,88,86,35,96,191,76,59,76,47,64,7,138,
+139,0,81,160,13,64,21,234,179,1,190,135,224,13,0,152,89,88,187,152,
+111,234,203,1,74,221,224,63,1,64,37,128,43,128,45,203,9,224,29,7,
+80,163,64,93,137,191,192,33,224,157,3,224,7,23,0,91,176,183,10,88,
+94,32,94,58,94,88,94,33,94,58,117,251,224,15,55,177,15,1,124,49,
+67,55,86,237,1,124,54,101,119,1,61,124,66,143,67,231,1,35,94,87,
+119,129,147,67,41,66,87,67,67,72,99,2,35,94,72,106,1,0,73,113,
+43,0,83,117,187,68,167,2,33,94,65,100,49,133,51,0,80,162,19,221,
+195,64,5,172,157,4,124,61,94,49,124,65,15,2,35,124,111,108,249,202,
+227,73,215,153,75,195,209,75,27,84,29,131,201,2,35,94,80,254,83,0,
+132,15,66,191,2,59,94,67,96,143,68,67,0,49,224,25,0,85,65,192,
+53,68,247,228,35,1,2,67,124,95,229,141,0,137,55,237,209,3,1,65,
+124,136,239,108,67,64,147,67,127,3,124,33,94,32,93,33,96,163,64,99,
+228,115,4,1,94,70,96,151,0,58,114,5,75,215,0,59,74,221,99,25,
+78,5,148,227,1,65,124,77,217,128,111,135,175,128,117,195,165,195,119,192,
+145,134,213,64,5,129,7,224,3,1,131,217,224,61,7,224,3,9,224,31,
+1,128,83,224,241,3,224,101,1,128,117,0,80,238,189,0,64,13,129,1,
+0,80,85,145,171,243,0,66,68,69,121,65,68,57,0,99,182,165,0,78,
+175,35,128,7,96,5,1,124,36,165,75,0,76,96,243,4,32,94,61,124,
+55,108,251,102,51,192,65,121,197,144,183,0,61,100,159,87,253,0,65,118,
+239,2,65,124,122,98,115,4,60,94,69,124,87,160,45,70,113,66,33,175,
+49,1,124,118,160,135,86,95,65,35,0,75,160,39,65,105,224,13,0,1,
+124,55,118,115,64,225,147,149,90,101,64,15,68,95,64,181,224,53,1,0,
+61,107,77,1,66,124,90,165,64,215,66,251,64,33,207,161,64,65,66,183,
+64,81,64,181,192,247,90,167,136,49,128,23,2,65,94,82,97,3,0,91,
+165,37,0,72,161,193,4,66,124,77,124,93,96,9,66,121,2,50,124,32,
+97,19,193,223,0,65,101,91,161,201,2,124,44,92,96,35,166,13,0,58,
+80,27,229,215,0,2,68,124,107,96,7,0,83,114,161,0,68,135,33,1,
+124,97,96,41,0,38,104,99,129,197,64,97,96,111,5,124,43,124,56,124,
+80,108,229,74,233,2,95,94,45,96,93,69,199,4,35,94,67,124,124,109,
+171,0,47,68,3,1,124,123,96,9,64,131,224,15,2,31,34,32,58,50,
+52,50,32,64,10,65,32,95,54,32,95,49,52,54,32,64,95,54,32,89,
+32,66,32,66,32,83,32,85,64,18,5,55,32,64,64,64,64,64,16,1,
+90,32,224,7,1,12,83,39,32,83,32,64,66,32,67,39,32,83,39,64,
+8,14,83,32,64,95,49,50,55,32,95,53,49,32,64,35,49,160,52,0,
+67,64,23,224,38,0,9,66,32,64,64,67,32,67,32,95,52,64,108,12,
+53,54,32,64,64,95,49,53,55,32,95,49,57,64,120,7,51,50,50,32,
+35,49,50,56,96,59,128,53,64,110,10,95,49,48,54,32,64,67,32,95,
+56,48,160,41,224,53,19,3,85,32,35,48,224,64,0,31,66,32,80,32,
+95,51,50,48,32,102,114,111,109,85,84,70,56,32,34,92,34,108,105,98,
+47,68,97,116,97,47,67,104,21,97,114,47,85,110,105,99,111,100,101,46,
+104,115,92,34,44,50,48,50,58,56,34,128,62,64,225,96,228,96,71,128,
+13,64,133,224,187,28,128,185,2,64,67,39,64,249,7,95,49,55,52,32,
+95,55,53,64,27,160,210,64,202,96,16,64,80,192,11,192,63,3,95,49,
+57,56,64,184,4,50,51,52,32,64,160,55,224,28,0,129,76,64,70,96,
+151,2,95,50,51,64,31,96,8,0,56,225,37,0,160,78,128,140,225,17,
+2,64,71,64,11,2,95,50,52,64,6,3,58,50,52,49,129,252,2,50,
+51,57,66,10,0,48,96,13,9,98,115,117,110,112,97,99,107,32,58,64,
+22,64,17,64,110,2,95,50,51,64,232,5,50,51,55,32,64,58,96,108,
+5,10,65,32,66,32,89,65,247,65,160,0,58,96,25,64,44,65,41,0,
+67,129,44,65,32,0,54,64,106,96,118,97,142,130,81,129,220,128,57,128,
+189,129,227,225,42,1,192,190,0,64,128,49,0,58,96,33,96,139,64,115,
+64,61,0,80,128,6,160,68,64,33,0,53,128,205,1,49,48,129,63,64,
+23,2,95,50,50,96,241,6,49,57,53,32,95,50,50,64,84,192,11,0,
+50,97,9,1,50,52,161,105,64,11,64,23,192,11,0,55,224,11,1,1,
+51,51,224,11,0,0,54,64,87,65,151,1,50,48,64,165,0,58,96,22,
+1,10,65,162,222,99,7,129,245,66,57,129,8,64,2,64,160,162,81,226,
+87,0,66,13,225,201,1,192,37,64,16,128,52,64,77,96,5,99,88,97,
+37,66,3,4,66,32,85,32,65,161,53,1,50,57,128,15,0,75,128,166,
+225,231,0,0,67,64,175,97,64,64,145,1,95,54,64,10,224,19,1,7,
+64,64,83,32,73,32,64,75,65,0,162,145,224,134,0,1,83,39,65,87,
+194,102,99,226,129,149,66,72,64,102,96,181,98,250,224,121,0,224,137,16,
+163,22,160,149,128,80,130,162,96,16,224,63,24,0,64,128,233,96,17,0,
+50,98,3,0,51,97,108,64,38,2,75,52,32,128,192,0,58,96,27,224,
+21,2,160,20,130,218,2,85,32,90,96,1,0,75,64,193,96,23,130,228,
+96,105,0,58,96,118,224,37,11,65,104,129,213,128,2,97,19,3,95,49,
+48,55,98,81,98,238,65,147,128,72,0,50,224,57,0,0,58,96,27,130,
+165,161,208,6,95,50,50,51,32,64,65,96,49,130,159,224,27,7,128,136,
+130,70,96,77,224,196,1,64,30,8,10,65,32,117,114,101,109,32,58,98,
+177,64,13,3,113,117,111,116,64,14,195,188,1,48,55,101,104,65,168,66,
+181,1,49,53,131,227,5,48,56,32,95,50,49,97,73,229,61,22,129,108,
+3,95,51,52,51,229,41,2,19,87,111,114,100,56,46,115,117,99,99,58,
+32,111,118,101,114,102,108,111,119,133,27,224,108,11,1,49,49,224,108,3,
+99,198,224,109,42,8,112,114,101,100,58,32,117,110,100,224,110,3,102,154,
+0,57,67,115,100,235,64,14,1,54,51,227,129,0,66,214,1,49,50,66,
+65,224,245,8,131,103,128,5,64,148,1,52,50,197,186,162,139,2,95,50,
+49,67,217,160,57,224,194,2,224,31,12,224,89,2,64,25,0,52,67,67,
+160,123,1,49,57,98,31,224,20,1,64,54,128,20,0,58,96,62,225,167,
+6,1,54,56,96,191,96,80,134,23,161,160,0,55,64,157,129,34,225,32,
+10,225,141,19,128,82,128,195,192,82,129,134,224,83,22,225,115,13,65,106,
+97,102,97,95,101,72,224,174,2,225,89,7,0,53,97,137,193,51,99,36,
+224,137,2,224,25,1,224,246,7,64,19,0,54,192,72,227,108,0,128,187,
+96,83,128,77,160,58,1,64,58,97,83,131,151,165,98,135,154,160,133,100,
+15,0,83,96,26,101,56,101,68,68,173,134,33,131,120,0,89,160,170,224,
+66,0,64,13,168,157,136,247,128,7,96,81,99,213,1,95,54,96,6,128,
+28,192,76,64,32,136,208,1,95,54,128,203,3,64,67,32,79,99,205,128,
+11,160,53,160,252,64,177,224,165,2,224,42,1,167,16,0,58,96,225,224,
+218,17,96,75,224,218,68,97,44,224,218,70,64,22,224,218,11,168,25,192,
+46,106,44,64,44,128,179,224,125,5,229,30,1,134,154,129,1,66,222,64,
+91,73,85,128,150,164,72,234,162,0,232,40,0,66,81,131,111,0,57,104,
+250,2,95,55,48,137,2,0,58,98,117,5,10,65,32,75,32,95,136,198,
+0,49,229,117,5,102,108,0,58,67,189,229,139,10,0,49,230,101,1,64,
+13,229,124,0,0,57,132,157,137,88,96,9,0,50,98,186,0,58,100,43,
+5,10,65,32,80,32,58,64,37,128,60,102,8,0,48,201,61,224,1,3,
+103,253,64,0,224,20,11,224,17,8,224,14,5,224,11,2,192,8,102,177,
+96,184,70,180,137,22,0,57,105,128,101,138,170,194,0,54,75,31,69,76,
+232,215,6,64,54,129,70,0,73,64,189,129,54,0,83,98,156,65,128,129,
+163,162,134,161,157,138,101,128,33,65,181,224,22,4,64,149,1,95,49,68,
+19,235,142,16,10,73,110,116,101,103,101,114,95,84,121,112,171,142,3,53,
+52,58,49,171,141,128,63,1,57,57,64,165,134,100,1,39,66,66,103,226,
+151,3,105,41,224,34,1,224,26,3,224,23,2,194,47,2,95,50,48,106,
+12,2,50,48,51,97,146,130,9,66,197,1,54,50,65,15,74,22,1,48,
+50,162,102,0,58,96,37,109,38,0,54,102,193,1,95,55,104,143,64,32,
+128,53,1,54,57,224,20,1,130,26,0,75,65,56,226,1,0,64,128,97,
+67,170,39,137,65,168,223,96,184,96,14,130,107,76,0,226,151,9,96,34,
+64,131,1,52,49,64,47,0,53,163,157,160,10,106,157,96,10,2,49,55,
+51,96,11,0,55,64,11,103,131,0,73,97,179,231,179,7,231,152,7,166,
+217,231,175,13,224,45,14,96,185,108,166,64,115,0,58,96,31,162,217,128,
+24,64,19,130,61,96,243,140,163,1,49,53,99,52,64,50,195,44,96,44,
+98,165,0,54,71,7,74,177,161,137,0,49,103,236,0,49,64,224,67,201,
+64,10,0,56,192,61,2,95,49,55,97,11,96,73,96,27,1,55,50,130,
+227,96,51,102,249,64,7,224,110,0,2,95,49,56,224,48,0,3,95,49,
+56,51,224,11,2,0,54,224,56,8,132,134,162,203,77,247,236,202,1,224,
+27,5,104,89,96,28,1,95,55,135,103,0,54,103,115,96,41,2,95,49,
+56,102,194,64,18,224,81,51,72,77,224,81,6,66,115,1,49,56,224,220,
+2,0,57,105,228,160,11,0,49,66,254,4,95,49,57,50,32,160,67,0,
+75,160,8,64,21,75,51,65,117,130,214,3,90,32,85,32,64,13,130,206,
+7,112,111,112,99,111,117,110,116,66,181,130,203,99,239,0,66,96,109,71,
+194,1,54,49,173,164,0,58,64,113,129,182,3,56,56,32,58,64,139,226,
+183,3,139,84,224,1,9,171,102,224,0,2,0,58,96,88,64,72,232,161,
+5,9,97,114,105,116,104,109,101,116,105,99,232,245,4,0,58,97,1,231,
+45,0,68,239,103,27,228,148,1,192,5,3,95,49,56,52,160,7,0,53,
+227,96,0,164,63,198,91,66,142,134,215,1,49,55,143,100,236,226,0,131,
+160,226,241,3,128,66,0,58,66,47,128,234,224,228,15,224,1,3,224,240,
+9,64,0,0,58,96,147,230,22,0,96,169,192,211,129,108,98,255,64,147,
+0,58,66,171,161,90,0,51,224,108,42,0,58,96,75,224,92,4,64,244,
+132,141,1,95,49,77,145,160,252,0,58,67,33,160,105,225,193,17,224,103,
+14,0,58,96,73,224,102,4,0,55,74,13,160,195,0,55,226,30,0,0,
+52,224,92,15,224,84,7,0,58,96,58,237,103,1,224,1,21,225,103,12,
+0,58,96,131,197,56,69,51,101,45,133,39,165,38,99,240,229,38,7,111,
+54,97,246,101,4,135,225,64,52,0,58,96,47,103,17,143,27,98,68,64,
+232,226,40,1,0,58,64,88,160,184,238,31,1,96,45,5,10,65,32,42,
+32,58,96,126,129,42,1,95,49,68,28,130,89,226,122,12,99,190,0,58,
+68,220,160,49,176,66,130,195,228,75,9,234,59,2,102,209,70,32,224,29,
+2,1,95,49,100,77,137,106,129,165,66,0,227,214,0,64,106,226,4,0,
+137,3,224,2,2,225,85,0,239,73,1,224,30,3,225,133,3,0,58,96,
+104,224,178,62,234,29,1,96,178,0,54,65,111,224,178,3,72,109,195,33,
+224,141,2,226,23,6,0,58,96,56,224,183,7,226,66,14,0,58,96,117,
+226,178,0,134,227,66,65,7,10,65,32,120,111,114,32,58,102,150,2,10,
+65,32,128,11,129,208,2,97,110,100,64,12,181,87,1,52,56,173,155,2,
+49,52,57,66,57,66,84,233,251,8,224,1,21,234,25,0,224,0,6,224,
+57,25,192,1,224,65,14,224,56,25,128,1,224,62,13,224,55,25,64,1,
+224,59,12,224,54,25,224,56,13,224,53,44,224,50,41,224,47,38,224,44,
+35,224,41,32,224,38,29,224,35,26,224,32,23,224,29,20,224,26,17,224,
+23,14,224,20,11,224,17,8,224,14,5,224,11,2,192,8,204,188,224,0,
+6,0,58,74,28,229,83,1,224,1,23,227,202,4,224,68,2,70,249,140,
+217,106,144,228,11,1,171,103,69,125,99,186,203,43,1,95,49,67,197,0,
+49,88,218,224,11,0,118,61,160,11,137,112,128,11,139,135,128,11,107,158,
+0,53,96,10,109,109,106,246,96,10,0,58,96,6,5,10,65,32,117,62,
+61,64,134,132,82,1,117,62,64,11,132,81,1,117,60,96,24,132,82,1,
+117,60,64,11,179,254,2,99,109,112,64,13,174,128,96,105,196,100,192,121,
+68,106,64,99,129,45,0,47,64,73,64,18,160,244,0,52,128,244,0,75,
+64,10,206,27,1,52,53,64,13,128,147,1,98,115,151,254,64,20,160,29,
+0,51,64,13,128,152,7,98,115,108,101,110,103,116,104,64,17,232,147,0,
+101,30,149,142,74,186,64,21,0,82,141,240,64,16,170,68,152,15,0,49,
+88,84,88,207,79,129,0,49,184,115,129,107,85,155,1,95,49,120,246,0,
+49,114,128,0,49,120,115,0,49,79,172,1,95,49,88,115,129,77,96,65,
+129,77,96,10,0,58,96,6,225,77,0,184,156,97,77,184,148,129,77,184,
+66,97,77,184,44,0,105,129,77,183,197,90,241,118,105,0,49,182,105,65,
+35,182,94,112,159,1,58,49,182,87,129,119,86,38,1,95,49,86,68,0,
+58,96,188,193,108,182,86,0,61,96,11,226,98,1,1,64,58,96,245,217,
+56,111,71,145,206,1,95,49,82,217,0,90,64,82,171,226,79,149,64,6,
+139,102,182,86,120,11,97,30,86,11,0,58,96,29,96,22,71,52,192,73,
+3,48,54,32,35,75,183,153,152,0,35,108,14,227,116,2,224,32,2,143,
+175,122,168,183,254,82,65,219,120,0,80,64,103,224,65,2,224,64,5,66,
+13,64,0,96,58,163,88,182,196,139,145,128,163,128,244,129,76,105,88,92,
+30,0,48,96,20,241,79,0,128,202,232,112,0,99,134,0,58,97,8,167,
+40,164,18,0,58,97,36,194,112,96,36,179,52,0,66,80,87,137,134,81,
+226,112,214,64,16,1,95,49,82,12,96,40,129,119,11,94,109,100,53,83,
+116,114,105,110,103,32,58,96,27,186,221,2,66,32,95,97,86,82,16,85,
+81,0,39,96,15,219,174,64,170,0,95,141,115,168,107,178,72,73,172,128,
+55,0,51,73,176,1,90,32,224,31,0,129,9,4,110,101,119,67,65,128,
+111,2,76,101,110,64,114,129,9,224,212,5,129,8,0,65,64,30,129,4,
+129,148,2,115,101,113,142,15,96,8,101,19,1,58,49,242,83,1,81,206,
+192,75,224,1,1,229,136,78,0,58,91,83,193,122,229,91,2,0,58,121,
+18,3,10,65,32,79,64,144,129,79,2,95,56,57,83,97,98,97,192,7,
+1,95,57,79,106,114,90,0,95,112,163,128,10,1,49,48,78,176,192,11,
+87,158,192,11,107,154,81,148,0,58,96,18,65,186,3,112,111,107,101,86,
+177,64,105,129,94,4,94,112,101,101,107,192,18,162,99,65,177,117,23,128,
+118,99,154,177,166,241,78,6,177,167,192,49,152,173,160,48,226,123,1,0,
+95,81,117,67,87,68,214,0,95,81,152,1,64,58,177,203,2,116,111,73,
+79,36,177,172,6,116,111,80,116,114,32,58,177,164,244,60,5,177,22,245,
+47,1,142,170,97,102,67,182,1,64,95,113,43,189,21,99,90,0,95,144,
+131,3,73,32,64,58,177,64,229,102,5,177,47,237,104,0,79,187,65,179,
+128,61,1,67,32,96,63,0,95,76,249,64,44,229,168,0,202,197,175,234,
+0,95,80,49,75,235,0,35,77,160,175,237,154,95,175,217,226,51,1,226,
+55,2,226,94,72,176,56,203,221,64,31,1,95,48,92,176,64,32,0,95,
+79,38,163,149,224,20,0,163,154,0,56,89,126,101,42,131,159,120,118,132,
+175,0,58,176,82,64,37,114,182,64,226,176,55,6,94,102,114,101,101,32,
+58,175,196,140,157,224,91,5,0,95,78,119,0,95,79,11,140,115,96,33,
+224,109,0,97,171,64,31,135,238,224,116,0,0,58,175,209,128,50,64,226,
+64,165,133,85,96,244,0,39,92,228,224,48,0,0,73,160,255,224,247,3,
+193,209,225,62,1,224,118,3,1,64,95,80,8,128,162,253,77,0,255,49,
+6,101,95,176,76,205,13,64,154,226,4,0,0,50,133,61,176,18,0,89,
+109,145,65,138,2,66,32,90,134,11,113,61,2,83,32,95,79,176,65,121,
+98,80,224,104,8,128,103,197,183,228,21,1,0,58,176,4,68,183,0,58,
+175,243,96,199,103,172,130,164,192,75,226,169,7,175,237,242,6,6,90,157,
+4,102,105,110,101,100,113,252,175,206,253,180,7,175,147,111,229,99,172,72,
+158,99,14,0,95,72,200,0,83,238,118,11,65,128,238,68,2,143,254,85,
+206,211,126,143,244,192,33,128,249,240,18,1,0,95,79,206,0,58,175,232,
+0,66,188,151,112,33,175,231,0,85,97,203,91,162,112,116,142,204,0,80,
+96,7,97,114,225,113,0,112,151,64,120,97,11,99,226,128,212,129,180,2,
+95,54,55,163,167,73,81,176,7,0,89,162,99,143,57,247,137,7,194,83,
+249,51,0,0,57,192,191,65,5,214,217,161,2,0,55,185,34,97,210,175,
+251,4,105,110,118,32,58,175,228,4,115,104,114,32,58,175,203,72,213,175,
+107,0,97,128,23,129,143,4,115,104,108,32,58,175,47,2,43,32,58,175,
+38,2,45,32,58,175,35,2,73,32,58,175,33,230,68,7,175,43,130,171,
+100,158,175,37,106,22,74,233,0,95,74,252,0,95,75,13,0,95,75,31,
+0,95,75,48,0,95,75,66,106,16,149,40,74,15,96,9,0,58,172,37,
+131,180,98,189,131,193,96,37,0,55,131,118,69,88,172,8,224,29,1,224,
+49,1,224,39,5,230,251,0,195,75,172,34,74,110,171,200,2,62,32,58,
+171,197,74,106,171,196,2,60,32,58,171,193,138,103,171,194,106,60,75,144,
+0,95,75,161,0,58,171,202,74,57,171,177,65,98,171,176,2,80,32,58,
+171,175,196,14,164,73,194,34,224,20,11,224,17,8,224,14,5,224,11,2,
+192,8,229,137,0,172,17,179,110,163,208,172,24,4,110,101,103,32,58,172,
+20,2,42,32,58,172,16,2,45,32,58,172,8,2,43,32,58,171,252,224,
+148,68,0,58,172,64,199,83,64,17,225,225,0,73,127,68,90,66,26,75,
+223,64,12,66,28,69,237,1,64,58,172,23,91,238,0,58,172,22,2,73,
+32,58,172,20,64,54,66,76,76,10,0,58,172,27,64,29,128,224,64,9,
+168,102,7,109,97,108,108,111,99,32,58,172,20,13,73,79,46,112,101,114,
+102,111,114,109,73,79,32,58,172,30,224,179,2,0,58,172,35,2,85,32,
+58,172,20,224,219,14,0,58,172,39,64,19,0,95,75,226,1,64,95,109,
+21,236,50,2,103,237,0,58,172,53,6,114,97,105,115,101,32,58,172,12,
+7,65,46,114,101,97,100,32,58,172,4,13,73,79,46,103,101,116,65,114,
+103,82,101,102,32,58,171,138,0,95,127,133,69,1,91,218,99,67,64,95,
+224,199,0,3,62,62,32,58,171,136,0,95,105,126,128,33,1,95,49,231,
+86,0,1,49,55,128,65,88,81,192,9,0,50,71,41,64,9,0,58,171,
+181,186,213,73,119,64,52,119,110,64,69,108,188,171,200,214,107,0,51,121,
+6,224,32,1,0,95,150,117,161,168,0,55,88,69,224,47,12,107,103,96,
+155,143,64,129,18,78,207,129,14,70,14,130,28,171,156,183,85,231,7,0,
+0,50,211,192,128,253,233,57,0,69,139,224,11,2,96,197,101,26,0,58,
+253,242,1,0,50,172,148,164,150,0,51,97,196,108,34,130,110,73,193,129,
+62,74,61,96,36,64,180,101,204,128,226,0,58,128,224,2,75,32,58,225,
+220,1,1,64,58,194,136,0,58,162,125,9,79,46,114,101,116,117,114,110,
+32,58,225,212,0,0,62,68,100,128,196,2,80,32,58,128,187,227,74,47,
+0,58,227,157,3,226,142,9,237,130,1,130,118,64,200,2,95,50,51,112,
+247,224,0,255,224,0,255,224,0,255,224,0,255,224,0,255,224,0,255,224,
+0,255,224,0,255,224,0,229,1,32,125,
+};
+unsigned char *combexpr = data;
+int combexprlen = 127791;
 #include "mhsffi.h"
 static struct ffi_entry table[] = {
 { 0,0 }
diff --git a/lib/AllOfLib.hs b/lib/AllOfLib.hs
--- a/lib/AllOfLib.hs
+++ b/lib/AllOfLib.hs
@@ -4,6 +4,11 @@
 -- Only used to save the compilation cache.
 import Control.Applicative
 import Control.Category
+import Control.Concurrent
+import Control.Concurrent.Chan
+import Control.Concurrent.MVar
+import Control.Concurrent.QSem
+import Control.Concurrent.QSemN
 import Control.DeepSeq
 import Control.DeepSeq.Class
 import Control.Error
diff --git a/lib/Control/Concurrent.hs b/lib/Control/Concurrent.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Concurrent.hs
@@ -0,0 +1,116 @@
+module Control.Concurrent (
+  ThreadId, myThreadId,
+
+  forkIO, forkFinally, forkIOWithUnmask,
+  killThread, throwTo,
+
+  yield,
+  threadDelay,
+
+  threadStatus,
+  ThreadStatus(..),
+  BlockReason(..),
+
+  module Control.Concurrent.MVar,
+  module Control.Concurrent.Chan,
+  module Control.Concurrent.QSem,
+  module Control.Concurrent.QSemN,
+
+{-
+  forkOn, forkOnWithUnmask, getNumCapabilities, setNumCapabilities, threadCapability,
+  threadWaitRead, threadWaitWrite,
+  threadWaitReadSTM, threadWaitWriteSTM,
+  rtsSupportsBoundThreads,
+  forkOS, forkOSWithUnmask,
+  isCurrentThreadBound,
+  runInBoundThread, runInUnboundThread,
+  mkWeakThreadId,
+-}
+  ) where
+import Primitives
+import Control.Concurrent.MVar
+import Control.Concurrent.Chan
+import Control.Concurrent.QSem
+import Control.Concurrent.QSemN
+import Control.Exception
+import Control.Exception.Internal(unsafeUnmask)
+import Data.Word
+
+instance Show ThreadId where
+  show i = "ThreadId#" ++ show (primThreadNum i)
+
+instance Eq ThreadId where
+  i == i'  =  primThreadNum i == primThreadNum i'
+
+instance Ord ThreadId where
+  i `compare` i'  =  primThreadNum i `compare` primThreadNum i'
+
+forkIO :: IO () -> IO ThreadId
+forkIO action = --primForkIO (catch action childHandler)
+  primForkIO action
+
+childHandler :: SomeException -> IO ()
+childHandler err = catch (realHandler err) childHandler
+
+realHandler :: SomeException -> IO ()
+realHandler se
+  | Just BlockedIndefinitelyOnMVar <- fromException se  =  return ()
+--  | Just BlockedIndefinitelyOnSTM  <- fromException se  =  return ()
+  | Just ThreadKilled              <- fromException se  =  return ()
+  | otherwise                                           =  throw se
+
+myThreadId :: IO ThreadId
+myThreadId = primMyThreadId
+
+forkFinally :: IO a -> (Either SomeException a -> IO ()) -> IO ThreadId
+forkFinally action and_then =
+  mask $ \restore ->
+    forkIO $ try (restore action) >>= and_then
+
+forkIOWithUnmask :: ((forall a . IO a -> IO a) -> IO ()) -> IO ThreadId
+forkIOWithUnmask io = forkIO (io unsafeUnmask)
+
+killThread :: ThreadId -> IO ()
+killThread tid = throwTo tid ThreadKilled
+
+primThrowTo :: ThreadId -> SomeException -> IO ()
+primThrowTo = _primitive "IO.throwto"
+
+throwTo :: Exception e => ThreadId -> e -> IO ()
+throwTo thid ex = primThrowTo thid (toException ex)
+
+yield :: IO ()
+yield = primYield
+
+threadDelay :: Int -> IO ()
+threadDelay = primThreadDelay
+
+---------------------------------------
+
+data BlockReason
+  = BlockedOnMVar
+  | BlockedOnBlackHole
+  | BlockedOnException
+  | BlockedOnSTM
+  | BlockedOnForeignCall
+  | BlockedOnOther
+  deriving (Eq, Ord, Show)
+
+data ThreadStatus
+  = ThreadRunning
+  | ThreadFinished
+  | ThreadBlocked  BlockReason
+  | ThreadDied
+  deriving (Eq, Ord, Show)
+
+-- XXX Does not do BlockedOnException correctly
+threadStatus :: ThreadId -> IO ThreadStatus
+threadStatus thr = do
+  st <- primThreadStatus thr
+  return $
+    case st of
+      0 -> ThreadRunning                 -- ts_runnable
+      1 -> ThreadBlocked BlockedOnMVar   -- ts_wait_mvar
+      2 -> ThreadBlocked BlockedOnOther  -- ts_wait_time
+      3 -> ThreadFinished                -- ts_finished
+      4 -> ThreadDied                    -- ts_died
diff --git a/lib/Control/Concurrent/Chan.hs b/lib/Control/Concurrent/Chan.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Concurrent/Chan.hs
@@ -0,0 +1,137 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Concurrent.Chan
+-- Copyright   :  (c) The University of Glasgow 2001
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
+--
+-- Maintainer  :  libraries@haskell.org
+-- Stability   :  stable
+-- Portability :  non-portable (concurrency)
+--
+-- Unbounded channels.
+--
+-- The channels are implemented with 'Control.Concurrent.MVar's and therefore inherit all the
+-- caveats that apply to @MVar@s (possibility of races, deadlocks etc). The
+-- @stm@ (software transactional memory) library has a more robust implementation
+-- of channels called @TChan@s.
+--
+-----------------------------------------------------------------------------
+
+module Control.Concurrent.Chan
+  (
+          -- * The 'Chan' type
+        Chan,                   -- abstract
+
+          -- * Operations
+        newChan,
+        writeChan,
+        readChan,
+        dupChan,
+
+          -- * Stream interface
+        getChanContents,
+        writeList2Chan,
+   ) where
+
+import System.IO.Unsafe         ( unsafeInterleaveIO )
+import Control.Concurrent.MVar
+import Control.Exception (mask_)
+
+-- A channel is represented by two @MVar@s keeping track of the two ends
+-- of the channel contents, i.e., the read- and write ends. Empty @MVar@s
+-- are used to handle consumers trying to read from an empty channel.
+
+-- |'Chan' is an abstract type representing an unbounded FIFO channel.
+data Chan a
+ = Chan !(MVar (Stream a))
+        !(MVar (Stream a)) -- Invariant: the Stream a is always an empty MVar
+   deriving Eq -- ^ @since 4.4.0.0
+
+type Stream a = MVar (ChItem a)
+
+data ChItem a = ChItem a !(Stream a)
+  -- benchmarks show that unboxing the MVar here is worthwhile, because
+  -- although it leads to higher allocation, the channel data takes up
+  -- less space and is therefore quicker to GC.
+
+-- See the Concurrent Haskell paper for a diagram explaining
+-- how the different channel operations proceed.
+
+-- @newChan@ sets up the read and write end of a channel by initialising
+-- these two @MVar@s with an empty @MVar@.
+
+-- |Build and return a new instance of 'Chan'.
+newChan :: IO (Chan a)
+newChan = do
+   hole  <- newEmptyMVar
+   readVar  <- newMVar hole
+   writeVar <- newMVar hole
+   return (Chan readVar writeVar)
+
+-- To put an element on a channel, a new hole at the write end is created.
+-- What was previously the empty @MVar@ at the back of the channel is then
+-- filled in with a new stream element holding the entered value and the
+-- new hole.
+
+-- |Write a value to a 'Chan'.
+writeChan :: Chan a -> a -> IO ()
+writeChan (Chan _ writeVar) val = do
+  new_hole <- newEmptyMVar
+  mask_ $ do
+    old_hole <- takeMVar writeVar
+    putMVar old_hole (ChItem val new_hole)
+    putMVar writeVar new_hole
+
+-- The reason we don't simply do this:
+--
+--    modifyMVar_ writeVar $ \old_hole -> do
+--      putMVar old_hole (ChItem val new_hole)
+--      return new_hole
+--
+-- is because if an asynchronous exception is received after the 'putMVar'
+-- completes and before modifyMVar_ installs the new value, it will set the
+-- Chan's write end to a filled hole.
+
+-- |Read the next value from the 'Chan'. Blocks when the channel is empty. Since
+-- the read end of a channel is an 'MVar', this operation inherits fairness
+-- guarantees of 'MVar's (e.g. threads blocked in this operation are woken up in
+-- FIFO order).
+--
+-- Throws 'Control.Exception.BlockedIndefinitelyOnMVar' when the channel is
+-- empty and no other thread holds a reference to the channel.
+readChan :: Chan a -> IO a
+readChan (Chan readVar _) =
+  modifyMVar readVar $ \read_end -> do
+    (ChItem val new_read_end) <- readMVar read_end
+        -- Use readMVar here, not takeMVar,
+        -- else dupChan doesn't work
+    return (new_read_end, val)
+
+-- |Duplicate a 'Chan': the duplicate channel begins empty, but data written to
+-- either channel from then on will be available from both. Hence this creates
+-- a kind of broadcast channel, where data written by anyone is seen by
+-- everyone else.
+--
+-- (Note that a duplicated channel is not equal to its original.
+-- So: @fmap (c /=) $ dupChan c@ returns @True@ for all @c@.)
+dupChan :: Chan a -> IO (Chan a)
+dupChan (Chan _ writeVar) = do
+   hole       <- readMVar writeVar
+   newReadVar <- newMVar hole
+   return (Chan newReadVar writeVar)
+
+-- Operators for interfacing with functional streams.
+
+-- |Return a lazy list representing the contents of the supplied
+-- 'Chan', much like 'GHC.Internal.System.IO.hGetContents'.
+getChanContents :: Chan a -> IO [a]
+getChanContents ch
+  = unsafeInterleaveIO (do
+        x  <- readChan ch
+        xs <- getChanContents ch
+        return (x:xs)
+    )
+
+-- |Write an entire list of items to a 'Chan'.
+writeList2Chan :: Chan a -> [a] -> IO ()
+writeList2Chan ch ls = mapM_ (writeChan ch) ls
diff --git a/lib/Control/Concurrent/MVar.hs b/lib/Control/Concurrent/MVar.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Concurrent/MVar.hs
@@ -0,0 +1,110 @@
+module Control.Concurrent.MVar(
+  MVar,
+  newEmptyMVar,
+  newMVar,
+  takeMVar,
+  putMVar,
+  readMVar,
+  swapMVar,
+  tryTakeMVar,
+  tryPutMVar,
+  isEmptyMVar,
+  withMVar,
+  withMVarMasked,
+  modifyMVar_,
+  modifyMVar,
+  modifyMVarMasked_,
+  modifyMVarMasked,
+  tryReadMVar,
+  --mkWeakMVar,
+  --addMVarFinalizer,
+  ) where
+import Primitives
+import Control.Exception
+import Data.Maybe(isNothing)
+
+instance Eq (MVar a) where
+  mv1 == mv2  =  primMVarToWord mv1 == primMVarToWord mv2
+
+newEmptyMVar :: IO (MVar a)
+newEmptyMVar = primNewEmptyMVar
+
+newMVar :: a -> IO (MVar a)
+newMVar value = do
+    mvar <- newEmptyMVar
+    putMVar mvar value
+    return mvar
+
+takeMVar :: MVar a -> IO a
+takeMVar mv = primTakeMVar mv
+
+readMVar :: MVar a -> IO a
+readMVar mv = primReadMVar mv
+
+putMVar :: MVar a -> a -> IO ()
+putMVar = primPutMVar
+
+tryTakeMVar :: MVar a -> IO (Maybe a)
+tryTakeMVar = primTryTakeMVar
+
+tryPutMVar :: MVar a -> a -> IO Bool
+tryPutMVar = primTryPutMVar
+
+tryReadMVar :: MVar a -> IO (Maybe a)
+tryReadMVar = primTryReadMVar
+
+isEmptyMVar :: MVar a -> IO Bool
+isEmptyMVar mv = isNothing <$> tryReadMVar mv
+
+swapMVar :: MVar a -> a -> IO a
+swapMVar mvar new =
+  mask_ $ do
+    old <- takeMVar mvar
+    putMVar mvar new
+    return old
+
+withMVar :: MVar a -> (a -> IO b) -> IO b
+withMVar m io =
+  mask $ \restore -> do
+    a <- takeMVar m
+    b <- restore (io a) `onException` putMVar m a
+    putMVar m a
+    return b
+
+withMVarMasked :: MVar a -> (a -> IO b) -> IO b
+withMVarMasked m io =
+  mask_ $ do
+    a <- takeMVar m
+    b <- io a `onException` putMVar m a
+    putMVar m a
+    return b
+
+modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()
+modifyMVar_ m io =
+  mask $ \restore -> do
+    a  <- takeMVar m
+    a' <- restore (io a) `onException` putMVar m a
+    putMVar m a'
+
+modifyMVar :: MVar a -> (a -> IO (a,b)) -> IO b
+modifyMVar m io =
+  mask $ \restore -> do
+    a      <- takeMVar m
+    (a',b) <- restore (io a >>= evaluate) `onException` putMVar m a
+    putMVar m a'
+    return b
+
+modifyMVarMasked_ :: MVar a -> (a -> IO a) -> IO ()
+modifyMVarMasked_ m io =
+  mask_ $ do
+    a  <- takeMVar m
+    a' <- io a `onException` putMVar m a
+    putMVar m a'
+
+modifyMVarMasked :: MVar a -> (a -> IO (a,b)) -> IO b
+modifyMVarMasked m io =
+  mask_ $ do
+    a      <- takeMVar m
+    (a',b) <- (io a >>= evaluate) `onException` putMVar m a
+    putMVar m a'
+    return b
diff --git a/lib/Control/Concurrent/QSem.hs b/lib/Control/Concurrent/QSem.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Concurrent/QSem.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE Safe #-}
+{-# LANGUAGE BangPatterns #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Concurrent.QSem
+-- Copyright   :  (c) The University of Glasgow 2001
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
+--
+-- Maintainer  :  libraries@haskell.org
+-- Stability   :  stable
+-- Portability :  non-portable (concurrency)
+--
+-- Simple quantity semaphores.
+--
+-----------------------------------------------------------------------------
+
+module Control.Concurrent.QSem
+        ( -- * Simple Quantity Semaphores
+          QSem,         -- abstract
+          newQSem,      -- :: Int  -> IO QSem
+          waitQSem,     -- :: QSem -> IO ()
+          signalQSem    -- :: QSem -> IO ()
+        ) where
+
+import Control.Concurrent.MVar ( MVar, newEmptyMVar, takeMVar, tryTakeMVar
+                          , putMVar, newMVar, tryPutMVar)
+import Control.Exception
+import Data.Maybe
+
+-- | 'QSem' is a quantity semaphore in which the resource is acquired
+-- and released in units of one. It provides guaranteed FIFO ordering
+-- for satisfying blocked `waitQSem` calls.
+--
+-- The pattern
+--
+-- > bracket_ waitQSem signalQSem (...)
+--
+-- is safe; it never loses a unit of the resource.
+--
+newtype QSem = QSem (MVar (Int, [MVar ()], [MVar ()]))
+
+-- The semaphore state (i, xs, ys):
+--
+--   i is the current resource value
+--
+--   (xs,ys) is the queue of blocked threads, where the queue is
+--           given by xs ++ reverse ys.  We can enqueue new blocked threads
+--           by consing onto ys, and dequeue by removing from the head of xs.
+--
+-- A blocked thread is represented by an empty (MVar ()).  To unblock
+-- the thread, we put () into the MVar.
+--
+-- A thread can dequeue itself by also putting () into the MVar, which
+-- it must do if it receives an exception while blocked in waitQSem.
+-- This means that when unblocking a thread in signalQSem we must
+-- first check whether the MVar is already full; the MVar lock on the
+-- semaphore itself resolves race conditions between signalQSem and a
+-- thread attempting to dequeue itself.
+
+-- |Build a new 'QSem' with a supplied initial quantity.
+--  The initial quantity must be at least 0.
+newQSem :: Int -> IO QSem
+newQSem initial
+  | initial < 0 = fail "newQSem: Initial quantity must be non-negative"
+  | otherwise   = do
+      sem <- newMVar (initial, [], [])
+      return (QSem sem)
+
+-- |Wait for a unit to become available.
+waitQSem :: QSem -> IO ()
+waitQSem (QSem m) =
+  mask_ $ do
+    (i,b1,b2) <- takeMVar m
+    if i == 0
+       then do
+         b <- newEmptyMVar
+         putMVar m (i, b1, b:b2)
+         wait b
+       else do
+         let !z = i-1
+         putMVar m (z, b1, b2)
+         return ()
+  where
+    wait b = takeMVar b `onException`
+                uninterruptibleMask_ (do -- Note [signal uninterruptible]
+                   (i,b1,b2) <- takeMVar m
+                   r <- tryTakeMVar b
+                   r' <- if isJust r
+                            then signal (i,b1,b2)
+                            else do putMVar b (); return (i,b1,b2)
+                   putMVar m r')
+
+-- |Signal that a unit of the 'QSem' is available.
+signalQSem :: QSem -> IO ()
+signalQSem (QSem m) =
+  uninterruptibleMask_ $ do -- Note [signal uninterruptible]
+    r <- takeMVar m
+    r' <- signal r
+    putMVar m r'
+
+-- Note [signal uninterruptible]
+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--   If we have
+--
+--      bracket waitQSem signalQSem (...)
+--
+--   and an exception arrives at the signalQSem, then we must not lose
+--   the resource.  The signalQSem is masked by bracket, but taking
+--   the MVar might block, and so it would be interruptible.  Hence we
+--   need an uninterruptibleMask here.
+--
+--   This isn't ideal: during high contention, some threads won't be
+--   interruptible.  The QSemSTM implementation has better behaviour
+--   here, but it performs much worse than this one in some
+--   benchmarks.
+
+signal :: (Int,[MVar ()],[MVar ()]) -> IO (Int,[MVar ()],[MVar ()])
+signal (i,a1,a2) =
+ if i == 0
+   then loop a1 a2
+   else let !z = i+1 in return (z, a1, a2)
+ where
+   loop [] [] = return (1, [], [])
+   loop [] b2 = loop (reverse b2) []
+   loop (b:bs) b2 = do
+     r <- tryPutMVar b ()
+     if r then return (0, bs, b2)
+          else loop bs b2
diff --git a/lib/Control/Concurrent/QSemN.hs b/lib/Control/Concurrent/QSemN.hs
new file mode 100644
--- /dev/null
+++ b/lib/Control/Concurrent/QSemN.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE Trustworthy #-}
+{-# OPTIONS_GHC -funbox-strict-fields #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Concurrent.QSemN
+-- Copyright   :  (c) The University of Glasgow 2001
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
+--
+-- Maintainer  :  libraries@haskell.org
+-- Stability   :  stable
+-- Portability :  non-portable (concurrency)
+--
+-- Quantity semaphores in which each thread may wait for an arbitrary
+-- \"amount\".
+--
+-----------------------------------------------------------------------------
+
+module Control.Concurrent.QSemN
+        (  -- * General Quantity Semaphores
+          QSemN,        -- abstract
+          newQSemN,     -- :: Int   -> IO QSemN
+          waitQSemN,    -- :: QSemN -> Int -> IO ()
+          signalQSemN   -- :: QSemN -> Int -> IO ()
+      ) where
+
+import Control.Concurrent.MVar ( MVar, newEmptyMVar, takeMVar
+                          , tryPutMVar, isEmptyMVar)
+import Control.Exception
+import Control.Monad (when)
+import Data.IORef (IORef, newIORef, atomicModifyIORef)
+import System.IO.Unsafe (unsafePerformIO)
+
+-- | 'QSemN' is a quantity semaphore in which the resource is acquired
+-- and released in arbitrary amounts. It provides guaranteed FIFO ordering
+-- for satisfying blocked `waitQSemN` calls.
+--
+-- The pattern
+--
+-- > bracket_ (waitQSemN n) (signalQSemN n) (...)
+--
+-- is safe; it never loses any of the resource.
+--
+newtype QSemN = QSemN (IORef (Int, [(Int, MVar ())], [(Int, MVar ())]))
+
+-- The semaphore state (i, xs, ys):
+--
+--   i is the current resource value
+--
+--   (xs,ys) is the queue of blocked threads, where the queue is
+--           given by xs ++ reverse ys.  We can enqueue new blocked threads
+--           by consing onto ys, and dequeue by removing from the head of xs.
+--
+-- A blocked thread is represented by an empty (MVar ()).  To unblock
+-- the thread, we put () into the MVar.
+--
+-- A thread can dequeue itself by also putting () into the MVar, which
+-- it must do if it receives an exception while blocked in waitQSemN.
+-- This means that when unblocking a thread in signalQSemN we must
+-- first check whether the MVar is already full.
+
+-- |Build a new 'QSemN' with a supplied initial quantity.
+--  The initial quantity must be at least 0.
+newQSemN :: Int -> IO QSemN
+newQSemN initial
+  | initial < 0 = fail "newQSemN: Initial quantity must be non-negative"
+  | otherwise   = do
+      sem <- newIORef (initial, [], [])
+      return (QSemN sem)
+
+-- An unboxed version of Maybe (MVar a)
+data MaybeMV a = JustMV !(MVar a) | NothingMV
+
+-- |Wait for the specified quantity to become available.
+waitQSemN :: QSemN -> Int -> IO ()
+-- We need to mask here. Once we've enqueued our MVar, we need
+-- to be sure to wait for it. Otherwise, we could lose our
+-- allocated resource.
+waitQSemN qs@(QSemN m) sz = mask_ $ do
+    -- unsafePerformIO and not unsafeDupablePerformIO. We must
+    -- be sure to wait on the same MVar that gets enqueued.
+  mmvar <- atomicModifyIORef m $ \ (i,b1,b2) -> unsafePerformIO $ do
+    let z = i-sz
+    if z < 0
+      then do
+        b <- newEmptyMVar
+        return ((i, b1, (sz,b):b2), JustMV b)
+      else return ((z, b1, b2), NothingMV)
+
+  -- Note: this case match actually allocates the MVar if necessary.
+  case mmvar of
+    NothingMV -> return ()
+    JustMV b -> wait b
+  where
+    wait :: MVar () -> IO ()
+    wait b =
+      takeMVar b `onException` do
+        already_filled <- not <$> tryPutMVar b ()
+        when already_filled $ signalQSemN qs sz
+
+-- |Signal that a given quantity is now available from the 'QSemN'.
+signalQSemN :: QSemN -> Int -> IO ()
+-- We don't need to mask here because we should *already* be masked
+-- here (e.g., by bracket). Indeed, if we're not already masked,
+-- it's too late to do so.
+--
+-- What if the unsafePerformIO thunk is forced in another thread,
+-- and receives an asynchronous exception? That shouldn't be a
+-- problem: when we force it ourselves, presumably masked, we
+-- will resume its execution.
+signalQSemN (QSemN m) sz0 = do
+    -- unsafePerformIO and not unsafeDupablePerformIO. We must not
+    -- wake up more threads than we're supposed to.
+  unit <- atomicModifyIORef m $ \(i,a1,a2) ->
+            unsafePerformIO (loop (sz0 + i) a1 a2)
+
+  -- Forcing this will actually wake the necessary threads.
+  evaluate unit
+ where
+   loop 0  bs b2 = return ((0,  bs, b2), ())
+   loop sz [] [] = return ((sz, [], []), ())
+   loop sz [] b2 = loop sz (reverse b2) []
+   loop sz ((j,b):bs) b2
+     | j > sz = do
+       r <- isEmptyMVar b
+       if r then return ((sz, (j,b):bs, b2), ())
+            else loop sz bs b2
+     | otherwise = do
+       r <- tryPutMVar b ()
+       if r then loop (sz-j) bs b2
+            else loop sz bs b2
diff --git a/lib/Control/Exception.hs b/lib/Control/Exception.hs
--- a/lib/Control/Exception.hs
+++ b/lib/Control/Exception.hs
@@ -19,12 +19,31 @@
   displaySomeException,
   evaluate,
   mapException,
+
+  mask, mask_,
+
+  allowInterrupt,
+
+  uninterruptibleMask,
+  uninterruptibleMask_,
+  interruptible,
+  MaskingState(..),
+  getMaskingState,
+
   --
   ArithException(..),
+  SomeAsyncException(..), AsyncException(..),
+  asyncExceptionToException,
+  asyncExceptionFromException,
+  --
+  BlockedIndefinitelyOnMVar(..),
+  --
+  ioError, IOException,
   ) where
 import qualified Prelude(); import MiniPrelude
 import Control.Exception.Internal
 import {-# SOURCE #-} Data.Typeable
+import System.IO.Error(ioError, IOException)
 import System.IO.Unsafe
 
 -- This is the function called by the runtime.
@@ -89,6 +108,9 @@
     return r
 -}
 
+mask_ :: IO a -> IO a
+mask_ io = mask $ const io
+
 finally :: IO a -> IO b -> IO a
 finally a sequel =
   mask $ \ restore -> do
@@ -96,23 +118,36 @@
     _ <- sequel
     return r
 
-bracket_ :: IO a -> IO b -> IO c -> IO c
-bracket_ before after thing = bracket before (const after) (const thing)
-
 bracketOnError :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c
 bracketOnError before after thing =
   mask $ \ restore -> do
     a <- before
     restore (thing a) `onException` after a
 
+allowInterrupt :: IO ()
+allowInterrupt = interruptible $ return ()
+
+bracket_ :: IO a -> IO b -> IO c -> IO c
+bracket_ :: forall a b c. IO a -> IO b -> IO c -> IO c
+bracket_ before after thing = bracket before (const after) (const thing)
+
 -------------------
 
-data ArithException
-  = Overflow
-  | Underflow
-  | LossOfPrecision
-  | DivideByZero
-  | Denormal
-  | RatioZeroDenominator
-  deriving (Eq, Ord, Show, Typeable)
-instance Exception ArithException
+deriving instance Eq   ArithException
+deriving instance Ord  ArithException
+deriving instance Eq   AsyncException
+deriving instance Ord  AsyncException
+deriving instance Eq   MaskingState
+deriving instance Show MaskingState
+
+--------------------
+
+data BlockedIndefinitelyOnMVar = BlockedIndefinitelyOnMVar
+  deriving (Typeable)
+
+instance Exception BlockedIndefinitelyOnMVar
+
+instance Show BlockedIndefinitelyOnMVar where
+    showsPrec _ BlockedIndefinitelyOnMVar = showString "thread blocked indefinitely in an MVar operation"
+
+-----
diff --git a/lib/Control/Exception/Internal.hs b/lib/Control/Exception/Internal.hs
--- a/lib/Control/Exception/Internal.hs
+++ b/lib/Control/Exception/Internal.hs
@@ -1,4 +1,4 @@
--- Copyright 2024 Lennart Augustsson
+-- Copyright 2024,2025 Lennart Augustsson
 -- See LICENSE file for full license.
 module Control.Exception.Internal(
   throw, catch,
@@ -8,9 +8,23 @@
   SomeException(..),
   PatternMatchFail, NoMethodError, RecSelError, RecConError(..),
   patternMatchFail, noMethodError, recSelError, recConError,
+  AsyncException(..),
+  ArithException(..),
+  SomeAsyncException,
+  asyncExceptionToException,
+  asyncExceptionFromException,
+
+  uninterruptibleMask,
+  uninterruptibleMask_,
+  MaskingState(..),
+  getMaskingState,
+  interruptible,
+
+  unsafeUnmask,
   ) where
 import qualified Prelude()
-import Primitives(IO, primThen, primBind, primReturn)
+import Primitives
+import Data.Bool
 import Data.Char_Type
 import Data.List_Type
 import Data.Maybe_Type
@@ -32,10 +46,30 @@
         -> (e -> IO a)
         -> IO a
 catch io handler = primCatch io handler'
-    where handler' e = case fromException e of
+    where handler' e = case fromException (rtsExn e) of
                        Just e' -> handler e'
                        Nothing -> primRaise e
 
+-- The runtime system sometimes needs to generate exceptions.
+-- It is quite difficult to create SomeException value since
+-- it involves an existential data type with several dictionaries.
+-- So, instead, the runtime uses an INT value to convey that
+-- RTS exception has happened.  So the incoming SomeException
+-- is sometimes just a regular Int.  Here is where we translate that
+-- back to a real SomeException.
+-- The translation here has to be kept in sync with the enum rts_exn
+-- in eval.c.
+-- The magic primIsInt primitive returns the Int if it is one, otherwise -1.
+rtsExn :: SomeException -> SomeException
+rtsExn e =
+  let n = primIsInt e
+  in       if primIntEQ n (0::Int) then SomeException StackOverflow
+      else if primIntEQ n (1::Int) then SomeException HeapOverflow
+      else if primIntEQ n (2::Int) then SomeException ThreadKilled
+      else if primIntEQ n (3::Int) then SomeException UserInterrupt
+      else if primIntEQ n (4::Int) then SomeException DivideByZero
+      else e
+
 -- Throw an exception when executed, not when evaluated
 throwIO :: forall a e . Exception e => e -> IO a
 throwIO e = bad `primThen` bad   -- we never reach the second 'bad'
@@ -54,10 +88,6 @@
     primReturn r
     )))
 
--- XXX we don't have masks yet
-mask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
-mask io = io (\ x -> x)
-
 ------------------
 
 data SomeException = forall e . Exception e => SomeException e
@@ -116,3 +146,122 @@
 patternMatchFail s = throw (PatternMatchFail s)
 recSelError      s = throw (RecSelError      s)
 recConError      s = throw (RecConError      s)
+
+-------------------
+
+data ArithException
+  = Overflow
+  | Underflow
+  | LossOfPrecision
+  | DivideByZero
+  | Denormal
+  | RatioZeroDenominator
+  deriving ({-Eq, Ord,-} Show, Typeable)  -- Eq, Ord in Exception module
+instance Exception ArithException
+
+-------------------
+
+data AsyncException
+  = StackOverflow
+  | HeapOverflow
+  | ThreadKilled
+  | UserInterrupt
+  deriving ({-Eq, Ord,-} Typeable)  -- Eq, Ord in Exception module
+
+instance Show AsyncException where
+  showsPrec _ StackOverflow   = showString "stack overflow"
+  showsPrec _ HeapOverflow    = showString "heap overflow"
+  showsPrec _ ThreadKilled    = showString "thread killed"
+  showsPrec _ UserInterrupt   = showString "user interrupt"
+
+instance Exception AsyncException where
+  toException = asyncExceptionToException
+  fromException = asyncExceptionFromException
+
+data SomeAsyncException = forall e . Exception e => SomeAsyncException e
+  deriving (Typeable)
+
+instance Show SomeAsyncException where
+    showsPrec p (SomeAsyncException e) = showsPrec p e
+
+instance Exception SomeAsyncException
+
+asyncExceptionToException :: Exception e => e -> SomeException
+asyncExceptionToException e = toException (SomeAsyncException e)
+
+asyncExceptionFromException :: Exception e => SomeException -> Maybe e
+asyncExceptionFromException x =
+  case fromException x of
+    Just (SomeAsyncException a) -> cast a
+    Nothing -> Nothing
+
+---------
+
+-- Must be in the same order as enum mask_state in eval.c.
+data MaskingState
+  = Unmasked
+  | MaskedInterruptible
+  | MaskedUninterruptible
+--  deriving (Enum) causes circular import
+--  deriving (Eq, Show)  in Control.Exception
+
+fromEnum :: MaskingState -> Int
+fromEnum Unmasked = 0
+fromEnum MaskedInterruptible = 1
+fromEnum _ = 2
+
+toEnum :: Int -> MaskingState
+toEnum i | i `primIntEQ` 0 = Unmasked
+         | i `primIntEQ` 1 = MaskedInterruptible
+         | otherwise       = MaskedUninterruptible
+
+getMaskingState :: IO MaskingState
+getMaskingState = primGetMaskingState `primBind` \ s -> primReturn (toEnum s)
+
+withMaskingState :: MaskingState -> IO a -> IO a
+withMaskingState s io =
+  primGetMaskingState `primBind` \ os ->
+  primSetMaskingState (fromEnum s) `primThen`
+  io `primBind` \ a ->
+  primSetMaskingState os `primThen`
+  primReturn a
+
+mask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
+mask io =
+  getMaskingState `primBind` \ b ->
+  case b of
+    Unmasked              -> block (io unblock)
+    MaskedInterruptible   -> io block
+    MaskedUninterruptible -> io blockUninterruptible
+
+uninterruptibleMask :: forall a . IO a -> IO a
+uninterruptibleMask_ io = uninterruptibleMask (\ _ -> io)
+
+uninterruptibleMask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
+uninterruptibleMask io =
+  getMaskingState `primBind` \ b ->
+  case b of
+    Unmasked              -> blockUninterruptible (io unblock)
+    MaskedInterruptible   -> blockUninterruptible (io block)
+    MaskedUninterruptible -> io blockUninterruptible
+
+unsafeUnmask :: IO a -> IO a
+unsafeUnmask = withMaskingState Unmasked
+
+block :: IO a -> IO a
+block = withMaskingState MaskedInterruptible
+
+blockUninterruptible :: IO a -> IO a
+blockUninterruptible = withMaskingState MaskedUninterruptible
+
+unblock :: IO a -> IO a
+unblock = unsafeUnmask
+
+interruptible :: IO a -> IO a
+interruptible :: forall a. IO a -> IO a
+interruptible act =
+  getMaskingState `primBind` \ b ->
+  case b of
+    Unmasked              -> act
+    MaskedInterruptible   -> unsafeUnmask act
+    MaskedUninterruptible -> act
diff --git a/lib/Data/Double.hs b/lib/Data/Double.hs
--- a/lib/Data/Double.hs
+++ b/lib/Data/Double.hs
@@ -1,93 +1,20 @@
 module Data.Double(Double) where
 import qualified Prelude()
-import Primitives
-import Data.Bool
+import Data.Enum
 import Data.Eq
 import Data.FloatW
 import Data.Floating
 import Data.Fractional
-import Data.Function
-import Data.List
 import Data.Num
 import Data.Ord
 import Data.Real
 import Data.RealFloat
 import Data.RealFrac
+import Mhs.Builtin
 import Text.Show
 
--- XXX I should really implement newtype deriving...
-
 newtype Double = D FloatW
-unD :: Double -> FloatW
-unD (D x) = x
-
-un :: (FloatW -> FloatW) -> (Double -> Double)
-un f x = D (f (unD x))
-
-bin :: (FloatW -> FloatW -> FloatW) -> (Double -> Double -> Double)
-bin f x y = D (f (unD x) (unD y))
-
-cmp :: (FloatW -> FloatW -> Bool) -> (Double -> Double -> Bool)
-cmp f x y = f (unD x) (unD y)
-
-instance Num Double where
-  (+) = bin (+)
-  (-) = bin (-)
-  (*) = bin (*)
-  negate = un negate
-  abs = un abs
-  signum = un signum
-  fromInteger = D . fromInteger
-
-instance Fractional Double where
-  (/) = bin (/)
-  fromRational = D . fromRational
-
-instance Eq Double where
-  (==) = cmp (==)
-  (/=) = cmp (/=)
-
-instance Ord Double where
-  (<) = cmp (<)
-  (<=) = cmp (<=)
-  (>) = cmp (>)
-  (>=) = cmp (>=)
+  deriving(Eq, Ord, Num, Fractional, Real, RealFrac, Floating, RealFloat, Enum)
 
 instance Show Double where
-  showsPrec p = showsPrec p . unD
-
-{- in Text.Read.Internal
-instance Read Double where
-  readsPrec p = map (\ (x, s) -> (D x, s)) . readsPrec p
--}
-
-instance Real Double where
-  toRational = toRational . unD
-
-instance RealFrac Double where
-  properFraction x = (a, D b) where (a, b) = properFraction (unD x)
-
-instance Floating Double where
-  pi = D pi
-  log = un log
-  exp = un exp
-  sqrt = un sqrt
-  sin = un sin
-  cos = un cos
-  tan = un tan
-  asin = un asin
-  acos = un acos
-  atan = un atan
-
-instance RealFloat Double where
-  floatRadix = floatRadix . unD
-  floatDigits = floatDigits . unD
-  floatRange = floatRange . unD
-  decodeFloat = decodeFloat . unD
-  encodeFloat e = D . encodeFloat e
-  isNaN = isNaN . unD
-  isInfinite = isInfinite . unD
-  isDenormalized = isDenormalized . unD
-  isNegativeZero = isNegativeZero . unD
-  isIEEE = isIEEE . unD
-  atan2 = bin atan2
+  showsPrec p (D x) = showsPrec p x
diff --git a/lib/Data/Enum.hs b/lib/Data/Enum.hs
--- a/lib/Data/Enum.hs
+++ b/lib/Data/Enum.hs
@@ -13,30 +13,13 @@
 import Data.Bool
 import Data.Char_Type
 import Data.Bounded
+import Data.Enum_Class
 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)]
 
@@ -66,49 +49,6 @@
     takeWhile (<= h) (numericEnumFromThen l m)
   else
     takeWhile (>= h) (numericEnumFromThen l m)
-
-eftInt :: Int -> Int -> [Int]
-eftInt x y = if x `primIntGT` y then [] else go x
-  where
-    go n = n : if n `primIntEQ` y then [] else go (n `primIntAdd` 1)
-
-efttIntUp :: Int -> Int -> Int -> [Int]
--- x2 >= x1
-efttIntUp x1 x2 y
-  | y `primIntLT` x2 = if y `primIntLT` x1 then [] else [x1]
-  | otherwise =
-    let
-      delta = x2 `primIntSub` x1
-      y' = y `primIntSub` delta
-      go x = if x `primIntGT` y' then [x] else x : go (x `primIntAdd` delta)
-    in x1 : go x2
-
-efttIntDown :: Int -> Int -> Int -> [Int]
--- x2 <= x1
-efttIntDown x1 x2 y
-  | y `primIntGT` x2 = if y `primIntGT` x1 then [] else [x1]
-  | otherwise =
-    let
-      delta = x2 `primIntSub` x1
-      y' = y `primIntSub` delta
-      go x = if x `primIntLT` y' then [x] else x : go (x `primIntAdd` delta)
-    in x1 : go x2
-
--- This instance is difficult to put in Data.Int,
--- so it gets to live here.
-instance Enum Int where
-  succ x = if x `primIntEQ` maxBound then error "Int.succ: overflow" else x + 1
-  pred x = if x `primIntEQ` minBound then error "Int.pred: underflow" else x - 1
-  toEnum x = x
-  fromEnum x = x
-  enumFrom n = eftInt n maxBound
-  enumFromThen x1 x2
-    | x2 `primIntGE` x1 = efttIntUp x1 x2 maxBound
-    | otherwise         = efttIntDown x1 x2 minBound
-  enumFromTo = eftInt
-  enumFromThenTo x1 x2 y
-    | x2 `primIntGE` x1 = efttIntUp x1 x2 y
-    | otherwise         = efttIntDown x1 x2 y
 
 -- Likewise for Bool
 instance Enum Bool where
diff --git a/lib/Data/Enum_Class.hs b/lib/Data/Enum_Class.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Enum_Class.hs
@@ -0,0 +1,72 @@
+module Data.Enum_Class(Enum(..)) where
+import qualified Prelude()
+import Primitives
+import Control.Error
+import Data.Bool
+import Data.Function((.))
+import Data.List_Type
+
+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 . primIntAdd 1 . fromEnum
+  pred                   = toEnum . primIntSubR 1 . fromEnum
+  enumFrom x             = [ toEnum i | i <- [fromEnum x ..] ]
+  enumFromThen x y       = [ toEnum i | i <- [fromEnum x, fromEnum y ..] ]
+  enumFromTo x y         = [ toEnum i | i <- [fromEnum x .. fromEnum y] ]
+  enumFromThenTo x1 x2 y = [ toEnum i | i <- [fromEnum x1, fromEnum x2 .. fromEnum y] ]
+
+eftInt :: Int -> Int -> [Int]
+eftInt x y = if x `primIntGT` y then [] else go x
+  where
+    go n = n : if n `primIntEQ` y then [] else go (n `primIntAdd` 1)
+
+efttIntUp :: Int -> Int -> Int -> [Int]
+-- x2 >= x1
+efttIntUp x1 x2 y
+  | y `primIntLT` x2 = if y `primIntLT` x1 then [] else [x1]
+  | otherwise =
+    let
+      delta = x2 `primIntSub` x1
+      y' = y `primIntSub` delta
+      go x = if x `primIntGT` y' then [x] else x : go (x `primIntAdd` delta)
+    in x1 : go x2
+
+efttIntDown :: Int -> Int -> Int -> [Int]
+-- x2 <= x1
+efttIntDown x1 x2 y
+  | y `primIntGT` x2 = if y `primIntGT` x1 then [] else [x1]
+  | otherwise =
+    let
+      delta = x2 `primIntSub` x1
+      y' = y `primIntSub` delta
+      go x = if x `primIntLT` y' then [x] else x : go (x `primIntAdd` delta)
+    in x1 : go x2
+
+-- This instance is difficult to put in Data.Int,
+-- so it gets to live here.
+instance Enum Int where
+  succ x = if x `primIntEQ` maxInt then error "Int.succ: overflow" else x `primIntAdd` 1
+  pred x = if x `primIntEQ` minInt then error "Int.pred: underflow" else x `primIntSub` 1
+  toEnum x = x
+  fromEnum x = x
+  enumFrom n = eftInt n maxInt
+  enumFromThen x1 x2
+    | x2 `primIntGE` x1 = efttIntUp x1 x2 maxInt
+    | otherwise         = efttIntDown x1 x2 minInt
+  enumFromTo = eftInt
+  enumFromThenTo x1 x2 y
+    | x2 `primIntGE` x1 = efttIntUp x1 x2 y
+    | otherwise         = efttIntDown x1 x2 y
+
+minInt, maxInt :: Int
+minInt = primWordToInt ((primWordInv (0::Word) `primWordQuot` 2) `primWordAdd` 1)
+maxInt = primWordToInt  (primWordInv (0::Word) `primWordQuot` 2)
diff --git a/lib/Data/Float.hs b/lib/Data/Float.hs
--- a/lib/Data/Float.hs
+++ b/lib/Data/Float.hs
@@ -1,93 +1,20 @@
 module Data.Float(Float) where
 import qualified Prelude()
-import Primitives
-import Data.Bool
+import Data.Enum
 import Data.Eq
 import Data.FloatW
 import Data.Floating
 import Data.Fractional
-import Data.Function
-import Data.List
 import Data.Num
 import Data.Ord
 import Data.Real
 import Data.RealFloat
 import Data.RealFrac
+import Mhs.Builtin
 import Text.Show
 
--- XXX I should really implement newtype deriving...
-
 newtype Float = D FloatW
-unD :: Float -> FloatW
-unD (D x) = x
-
-un :: (FloatW -> FloatW) -> (Float -> Float)
-un f x = D (f (unD x))
-
-bin :: (FloatW -> FloatW -> FloatW) -> (Float -> Float -> Float)
-bin f x y = D (f (unD x) (unD y))
-
-cmp :: (FloatW -> FloatW -> Bool) -> (Float -> Float -> Bool)
-cmp f x y = f (unD x) (unD y)
-
-instance Num Float where
-  (+) = bin (+)
-  (-) = bin (-)
-  (*) = bin (*)
-  negate = un negate
-  abs = un abs
-  signum = un signum
-  fromInteger = D . fromInteger
-
-instance Fractional Float where
-  (/) = bin (/)
-  fromRational = D . fromRational
-
-instance Eq Float where
-  (==) = cmp (==)
-  (/=) = cmp (/=)
-
-instance Ord Float where
-  (<) = cmp (<)
-  (<=) = cmp (<=)
-  (>) = cmp (>)
-  (>=) = cmp (>=)
+  deriving(Eq, Ord, Num, Fractional, Real, RealFrac, Floating, RealFloat, Enum)
 
 instance Show Float where
-  showsPrec p = showsPrec p . unD
-
-{- in Text.Read.Internal
-instance Read Float where
-  readsPrec p = map (\ (x, s) -> (D x, s)) . readsPrec p
--}
-
-instance Real Float where
-  toRational = toRational . unD
-
-instance RealFrac Float where
-  properFraction x = (a, D b) where (a, b) = properFraction (unD x)
-
-instance Floating Float where
-  pi = D pi
-  log = un log
-  exp = un exp
-  sqrt = un sqrt
-  sin = un sin
-  cos = un cos
-  tan = un tan
-  asin = un asin
-  acos = un acos
-  atan = un atan
-
-instance RealFloat Float where
-  floatRadix = floatRadix . unD
-  floatDigits = floatDigits . unD
-  floatRange = floatRange . unD
-  decodeFloat = decodeFloat . unD
-  encodeFloat e = D . encodeFloat e
-  isNaN = isNaN . unD
-  isInfinite = isInfinite . unD
-  isDenormalized = isDenormalized . unD
-  isNegativeZero = isNegativeZero . unD
-  isIEEE = isIEEE . unD
-  atan2 = bin atan2
+  showsPrec p (D x) = showsPrec p x
diff --git a/lib/Data/FloatW.hs b/lib/Data/FloatW.hs
--- a/lib/Data/FloatW.hs
+++ b/lib/Data/FloatW.hs
@@ -7,6 +7,7 @@
 import Data.Bits
 import Data.Bool
 import Data.Char
+import Data.Enum
 import Data.Eq
 import Data.Floating
 import Data.Fractional
@@ -70,6 +71,16 @@
 instance Read FloatW where
   readsPrec _ = readSigned $ \ r -> [ (primFloatWRead s, t) | (s@(c:_), t) <- lex r, isDigit c ]
 -}
+
+instance Enum FloatW where
+  succ x = x + 1
+  pred x = x - 1
+  toEnum n = fromIntegral n
+  fromEnum = fromInteger . truncate
+  enumFrom = numericEnumFrom
+  enumFromThen = numericEnumFromThen
+  enumFromTo = numericEnumFromTo
+  enumFromThenTo = numericEnumFromThenTo
 
 instance Real FloatW where
   toRational x | isNaN x = rationalNaN
diff --git a/lib/Data/Generics.hs b/lib/Data/Generics.hs
deleted file mode 100644
--- a/lib/Data/Generics.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-module Data.Generics(
-  ) where
-
-type V1 :: forall (k::Kind) . k -> Type
-data V1 p
-
-type U1 :: forall (k::Kind) . k -> Type
-data U1 p = U1
-
-newtype Par1 p = Par1 p
-
-type Rec1 :: forall (k::Kind) . (k -> Type) -> k -> Type
-newtype Rec1 f p = Rec1 (f p)
-
-type K1 :: forall (k::Kind) . Type -> Type -> k -> Type
-newtype K1 i c p = K1 c
-
-newtype M1 :: forall k . Type -> Type{-Meta-} -> (k -> Type) -> k -> Type
-newtype M1 i c f p = M1 (f p)
-
-infixr 5 :+:
-type (:+:) :: forall k . (k -> Type) -> (k -> Type) -> k -> Type
-data (:+:) f g p = L1 (f p) | R1 (g p)
-
-infixr 6 :*:
-type (:*:) :: forall k . (k -> Type) -> (k -> Type) -> k -> Type
-data (:*:) f g p = f p :*: g p
-
-infixr 7 :.:
-type (:.:) :: forall k1 k2 . (k2 -> Type) -> (k1 -> k2) -> k1 -> Type
-newtype (:.:) f g p = Comp1 (f (g p))
-
diff --git a/lib/Data/IORef.hs b/lib/Data/IORef.hs
--- a/lib/Data/IORef.hs
+++ b/lib/Data/IORef.hs
@@ -4,6 +4,7 @@
   readIORef,
   writeIORef,
   modifyIORef,
+  atomicModifyIORef,
   ) where
 import qualified Prelude()              -- do not import Prelude
 import Primitives
@@ -28,3 +29,7 @@
 
 modifyIORef :: forall a . IORef a -> (a -> a) -> IO ()
 modifyIORef (R p) f = primArrRead p 0 `primBind` \ a -> primArrWrite p 0 (f a)
+
+-- XXX WRONG
+atomicModifyIORef :: forall a b . IORef a -> (a -> (a, b)) -> IO b
+atomicModifyIORef r f = readIORef r `primBind` \ a -> let (a', b) = f a in writeIORef r a' `primThen` primReturn b
diff --git a/lib/Data/Int.hs b/lib/Data/Int.hs
--- a/lib/Data/Int.hs
+++ b/lib/Data/Int.hs
@@ -36,8 +36,8 @@
   toInteger = _intToInteger
 
 instance Bounded Int where
-  minBound = primWordToInt (primWordInv (0::Word) `primWordQuot` 2) + 1
-  maxBound = primWordToInt (primWordInv (0::Word) `primWordQuot` 2)
+  minBound = primWordToInt ((primWordInv (0::Word) `primWordQuot` 2) `primWordAdd` 1)
+  maxBound = primWordToInt  (primWordInv (0::Word) `primWordQuot` 2)
 
 instance Real Int where
   toRational i = _integerToRational (_intToInteger i)
@@ -54,26 +54,24 @@
   (>=) = 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 (- n)
+  showsPrec p n r =
+    if n < (0::Int) then
+      if p > (6::Int) then
+        '(' : '-' : showUnsignedNegInt n (')' : r)
+      else
+        '-' : showUnsignedNegInt n r
+    else
+      showUnsignedNegInt (- n) r
 
 -- 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]
+showUnsignedNegInt :: Int -> ShowS
+showUnsignedNegInt n r =
+  let c = primChr (primOrd '0' - rem n (10::Int))
+  in  if n > -(10::Int) then
+        c : r
       else
-        _showUnsignedNegInt (quot n 10) ++ [c]
+        showUnsignedNegInt (quot n (10::Int)) (c : r)
 
 --------------------------------
 
diff --git a/lib/Data/Integral.hs b/lib/Data/Integral.hs
--- a/lib/Data/Integral.hs
+++ b/lib/Data/Integral.hs
@@ -5,6 +5,7 @@
 import Primitives
 import Control.Error
 import Data.Bool
+import Data.Enum_Class
 import Data.Eq
 import Data.Integer_Type
 import Data.Num
@@ -16,7 +17,7 @@
 
 -- XXX Importing Data.Enum causes an import cycle.
 --     I don't really see the point of Enum as a superclass.
-class (Real a{-, Enum a-}) => Integral a where
+class (Real a, Enum a) => Integral a where
   quot      :: a -> a -> a
   rem       :: a -> a -> a
   div       :: a -> a -> a
diff --git a/lib/Data/MArray.hs b/lib/Data/MArray.hs
deleted file mode 100644
--- a/lib/Data/MArray.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-module Data.Array (
-    module Data.Ix,
-    Array,
-    array,
-    listArray,
-    accumArray,
-    (!),
-    bounds,
-    indices,
-    elems,
-    assocs,
-    (//),
-    accum,
-    ixmap,
-  ) where
-
-import Data.Ix
-
-    -- Array instances:
-    --
-    --   Ix a => Functor (Array a)
-    --   (Ix a, Eq b)  => Eq   (Array a b)
-    --   (Ix a, Ord b) => Ord  (Array a b)
-    --   (Ix a, Show a, Show b) => Show (Array a b)
-    --   (Ix a, Read a, Read b) => Read (Array a b)
-    --
-
-    array,          -- :: (Ix a) => (a,a) -> [(a,b)] -> Array a b
-    listArray,      -- :: (Ix a) => (a,a) -> [b] -> Array a b
-    accumArray,     -- :: (Ix a) => (b -> c -> b) -> b -> (a,a) -> [(a,c)] -> Array a b
-    (!),            -- :: (Ix a) => Array a b -> a -> b
-    bounds,         -- :: (Ix a) => Array a b -> (a,a)
-    indices,        -- :: (Ix a) => Array a b -> [a]
-    elems,          -- :: (Ix a) => Array a b -> [b]
-    assocs,         -- :: (Ix a) => Array a b -> [(a,b)]
-    (//),           -- :: (Ix a) => Array a b -> [(a,b)] -> Array a b
-    accum,          -- :: (Ix a) => (b -> c -> b) -> Array a b -> [(a,c)] -> Array a b
-    ixmap,          -- :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c -> Array a b
diff --git a/lib/Data/Word.hs b/lib/Data/Word.hs
--- a/lib/Data/Word.hs
+++ b/lib/Data/Word.hs
@@ -45,7 +45,16 @@
   toRational i = _integerToRational (_wordToInteger i)
 
 instance Show Word where
-  showsPrec = showIntegral
+  showsPrec _ = showUnsigned
+
+-- Avoid showIntegral to avoid Integer
+showUnsigned :: Word -> ShowS
+showUnsigned n r =
+  let c = primChr (primOrd '0' + primWordToInt (rem n (10::Word)))
+  in  if n < (10::Word) then
+        c : r
+      else
+        showUnsigned (quot n (10::Word)) (c : r)
 
 {- in Text.Read.Internal
 instance Read Word where
diff --git a/lib/Foreign/C/Types.hs b/lib/Foreign/C/Types.hs
--- a/lib/Foreign/C/Types.hs
+++ b/lib/Foreign/C/Types.hs
@@ -16,6 +16,7 @@
 import Primitives
 import Data.Bool
 import Data.Coerce
+import Data.Enum
 import Data.Eq
 import Data.Int
 import Data.Integral
@@ -29,64 +30,47 @@
 -- it is the same as the pointer difference type.
 -- And Int is the natural signed word size.
 newtype CChar    = CChar    Char
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum)
 newtype CSChar   = CSChar   Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum)
 newtype CUChar   = CUChar   Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum)
 newtype CShort   = CShort   Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CUShort  = CUShort  Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CInt     = CInt     Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CUInt    = CUInt    Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CLong    = CLong    Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CULong   = CULong   Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CPtrdiff = CPtrdiff Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CSize    = CSize    Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CSSize   = CSSize   Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CLLong   = CLLong   Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CULLong  = CULLong  Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CIntPtr  = CIntPtr  Int
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 newtype CUIntPtr = CUIntPtr Word
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Enum, Num, Integral, Real)
 
 -- XXX This is really platform specific
 newtype CTime = CTime Int
   deriving (Eq, Ord)
 
--- XXX We really need GND
-instance Num CInt where
-  CInt x + CInt y = CInt (x + y)
-  CInt x - CInt y = CInt (x - y)
-  CInt x * CInt y = CInt (x * y)
-  fromInteger x = CInt (fromInteger x)
-instance Num CLong where
-  CLong x + CLong y = CLong (x + y)
-  CLong x - CLong y = CLong (x - y)
-  CLong x * CLong y = CLong (x * y)
-  fromInteger x = CLong (fromInteger x)
-instance Integral CLong where
-  quotRem (CLong x) (CLong y) = (CLong q, CLong r) where (q, r) = quotRem q r
-  toInteger (CLong x) = toInteger x
-instance Real CLong where
-  toRational (CLong x) = toRational x
-
 -- XXX only one of these is actually correct
 newtype CFloat   = CFloat   FloatW
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Num)
 newtype CDouble  = CDouble  FloatW
-  deriving (Eq, Ord)
+  deriving (Eq, Ord, Num)
 
 -- Temporary conversion functions.
 intToCSize :: Int -> CSize
diff --git a/lib/Interactive.hs b/lib/Interactive.hs
deleted file mode 100644
--- a/lib/Interactive.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module Interactive(module Interactive) where
-import Prelude
-import System.IO.PrintOrRun
-default Num (Integer, Double)
-default IsString (String)
-default Show (())
diff --git a/lib/Primitives.hs b/lib/Primitives.hs
--- a/lib/Primitives.hs
+++ b/lib/Primitives.hs
@@ -36,6 +36,8 @@
 data ForeignPtr a
 data FunPtr a
 data IOArray a
+data ThreadId
+data MVar a
 -- (), (,), (,,), etc are built in to the compiler
 
 primIntAdd :: Int -> Int -> Int
@@ -296,3 +298,46 @@
 
 primAddFinalizer :: FunPtr (Ptr a -> IO ()) -> ForeignPtr a -> IO ()
 primAddFinalizer = _primitive "fpfin"
+
+primForkIO :: IO () -> IO ThreadId
+primForkIO = _primitive "IO.fork"
+
+primMyThreadId :: IO ThreadId
+primMyThreadId = _primitive "IO.thid"
+primThreadNum :: ThreadId -> Word
+primThreadNum = _primitive "thnum"
+
+primYield :: IO ()
+primYield = _primitive "IO.yield"
+
+primMVarToWord :: forall a . MVar a -> Word
+primMVarToWord = _primitive "toInt"
+
+primNewEmptyMVar :: forall a . IO (MVar a)
+primNewEmptyMVar = _primitive "IO.newmvar"
+primTakeMVar :: forall a . MVar a -> IO a
+primTakeMVar = _primitive "IO.takemvar"
+primReadMVar :: forall a . MVar a -> IO a
+primReadMVar = _primitive "IO.readmvar"
+primPutMVar :: forall a . MVar a -> a -> IO ()
+primPutMVar = _primitive "IO.putmvar"
+primTryTakeMVar :: MVar a -> IO b {-(Maybe a)-}
+primTryTakeMVar = _primitive "IO.trytakemvar"
+primTryPutMVar :: MVar a -> a -> IO Bool
+primTryPutMVar = _primitive "IO.tryputmvar"
+primTryReadMVar :: MVar a -> IO b {-(Maybe a)-}
+primTryReadMVar = _primitive "IO.tryreadmvar"
+
+primThreadDelay :: Int -> IO ()
+primThreadDelay = _primitive "IO.threaddelay"
+
+primThreadStatus :: ThreadId -> IO Int
+primThreadStatus = _primitive "IO.threadstatus"
+
+primIsInt :: a -> Int
+primIsInt = _primitive "isint"
+
+primGetMaskingState :: IO Int
+primGetMaskingState = _primitive "IO.getmaskingstate"
+primSetMaskingState :: Int -> IO ()
+primSetMaskingState = _primitive "IO.setmaskingstate"
diff --git a/lib/System/IO.hs b/lib/System/IO.hs
--- a/lib/System/IO.hs
+++ b/lib/System/IO.hs
@@ -171,7 +171,15 @@
 getChar = hGetChar stdin
 
 cprint :: forall a . a -> IO ()
-cprint a = withHandleWr stdout $ \ p -> primRnfNoErr a `seq` primHPrint p a
+cprint a = withHandleWr stdout $ \ p ->
+  primRnfNoErr a `seq`
+  primGC `primThen`     -- Do GC reductions
+  primGC `primThen`
+  primGC `primThen`
+  primGC `primThen`
+  primGC `primThen`
+  primGC `primThen`
+  primHPrint p a
 
 cuprint :: forall a . a -> IO ()
 cuprint a = withHandleWr stdout $ \ p -> primHPrint p a
diff --git a/lib/System/IO/Internal.hs b/lib/System/IO/Internal.hs
--- a/lib/System/IO/Internal.hs
+++ b/lib/System/IO/Internal.hs
@@ -35,9 +35,7 @@
     pure (p == p')
 
 instance Show Handle where
-  show h = unsafePerformIO $
-    withHandleAny h $ \ p ->
-      return $ "Handle-" ++ show p
+  show (Handle _ _ s) = "Handle(" ++ s ++ ")"
 
 -----
 
diff --git a/lib/System/IO/PrintOrRun.hs b/lib/System/IO/PrintOrRun.hs
--- a/lib/System/IO/PrintOrRun.hs
+++ b/lib/System/IO/PrintOrRun.hs
@@ -1,4 +1,4 @@
--- Copyright 2023,2024 Lennart Augustsson
+-- Copyright 2023-2025 Lennart Augustsson
 -- See LICENSE file for full license.
 module System.IO.PrintOrRun(PrintOrRun(..), _withArgs) where
 import qualified Prelude()              -- do not import Prelude
@@ -15,7 +15,12 @@
 instance PrintOrRun (IO ()) where
   printOrRun a = a
 
-instance forall a . Show a => PrintOrRun a where
+{-  Resolution of overlapping instances is not good enough for this.  Yet.
+instance Show a => PrintOrRun (IO a) where
+  printOrRun a = a `primBind` print
+-}
+
+instance Show a => PrintOrRun a where
   printOrRun = print
 
 _withArgs :: [String] -> IO () -> IO ()
diff --git a/lib/System/Info.hs b/lib/System/Info.hs
--- a/lib/System/Info.hs
+++ b/lib/System/Info.hs
@@ -1,7 +1,7 @@
 module System.Info(os, arch, compilerName, compilerVersion, fullCompilerVersion) where
 import Control.Monad
 import Data.Char
-import Data.Version(Version(..))
+import Data.Version
 import System.Cmd
 import System.Directory
 import System.Exit
@@ -18,10 +18,7 @@
 compilerName = "mhs"
 
 compilerVersion :: Version
-compilerVersion = Version [0,9]
-
-fullCompilerVersion :: Version
-fullCompilerVersion = Version [0,9,0]
+compilerVersion = fullCompilerVersion { versionBranch = take 2 (versionBranch fullCompilerVersion) }
 
 -- Assume the system has an uname command
 uname :: String -> String
@@ -34,3 +31,5 @@
   when (rc /= ExitSuccess) $
     error "System.Into: uname failed"
   return $ map toLower $ filter (not . isSpace) res
+
+fullCompilerVersion = makeVersion [0,13,0,0]
diff --git a/lib/dist-mcabal/autogen/Paths_libs.hs b/lib/dist-mcabal/autogen/Paths_libs.hs
--- a/lib/dist-mcabal/autogen/Paths_libs.hs
+++ b/lib/dist-mcabal/autogen/Paths_libs.hs
@@ -1,4 +1,4 @@
 module Paths_libs where
 import Data.Version
-version :: Version; version = makeVersion [0,12,5,4]
-getDataDir :: IO FilePath; getDataDir = return "/Users/augustss/.mcabal/mhs-0.12.5.4/packages/base-0.12.5.4/data"
+version :: Version; version = makeVersion [0,13,0,0]
+getDataDir :: IO FilePath; getDataDir = return "/Users/augustss/.mcabal/mhs-0.13.0.0/packages/base-0.13.0.0/data"
diff --git a/mhs/MHSPrelude.hs b/mhs/MHSPrelude.hs
--- a/mhs/MHSPrelude.hs
+++ b/mhs/MHSPrelude.hs
@@ -38,8 +38,8 @@
 import qualified Prelude()
 --import Primitives(primRnfNoErr, primRnfErr)
 import Control.Applicative(Applicative(..))
-import Control.Error(error, undefined)
 import Control.DeepSeq.Class
+import Control.Error(error, undefined)
 import Control.Monad(Monad(..), mapM, mapM_, sequence, sequence_, (=<<))
 import Control.Monad.Fail(MonadFail(..))
 import Data.Bool(Bool(..), (&&), (||), not, otherwise)
diff --git a/paths/Paths_MicroHs.hs b/paths/Paths_MicroHs.hs
--- a/paths/Paths_MicroHs.hs
+++ b/paths/Paths_MicroHs.hs
@@ -10,4 +10,4 @@
 getDataDir = return "."
 
 version :: Version
-version = makeVersion [0,12,6,1]
+version = makeVersion [0,13,0,0]
diff --git a/src/MicroHs/Compile.hs b/src/MicroHs/Compile.hs
--- a/src/MicroHs/Compile.hs
+++ b/src/MicroHs/Compile.hs
@@ -322,7 +322,7 @@
           hasCPP <- hasLangCPP fn
           file' <-
             if hasCPP || doCPP flags then do
-              runCPPString flags file
+              runCPPString flags fn file
             else
               return file
           return (Just (fn, file'))
@@ -362,11 +362,11 @@
         Nothing -> openFilePath dirs fileName -- If opening failed, try the next directory
         Just hdl -> return (Just (path, hdl))
 
-runCPPString :: Flags -> String -> IO String
-runCPPString flags ifile = do
+runCPPString :: Flags -> FilePath -> String -> IO String
+runCPPString flags fn ifile = do
   (fni, hi) <- openTmpFile "mhsin.hs"
   hClose hi
-  writeFile fni ifile
+  writeFile fni $ "#line 1 \"" ++ fn ++ "\"\n" ++ ifile
   (fno, ho) <- openTmpFile "mhsout.hs"
   runCPP flags fni fno
   ofile <- hGetContents ho
diff --git a/src/MicroHs/Deriving.hs b/src/MicroHs/Deriving.hs
--- a/src/MicroHs/Deriving.hs
+++ b/src/MicroHs/Deriving.hs
@@ -42,7 +42,7 @@
 derivers :: [(String, Deriver)]
 derivers =
   [("Data.Bounded.Bounded",            derBounded)
-  ,("Data.Enum.Enum",                  derEnum)
+  ,("Data.Enum_Class.Enum",            derEnum)
   ,("Data.Data.Data",                  derData)
   ,("Data.Eq.Eq",                      derEq)
   ,("Data.Functor.Functor",            derNotYet) -- derFunctor)
@@ -423,7 +423,7 @@
             nty =
               if length tvs /= length newtys then error "mkMethod: arity" else
               case subst (zip tvs newtys) mty of
-                EForall _ vks t -> EForall True (map (\ (IdKind i _) -> IdKind i (EVar dummyIdent)) vks) $ qvar t
+                EForall q vks t -> EForall q (map (\ (IdKind i _) -> IdKind i (EVar dummyIdent)) vks) $ qvar t
                 t -> qvar t
 
             vty = qvar $ dropContext $ dropForall $ subst (zip tvs (init newtys ++ [viaty])) mty
diff --git a/src/MicroHs/ExpPrint.hs b/src/MicroHs/ExpPrint.hs
--- a/src/MicroHs/ExpPrint.hs
+++ b/src/MicroHs/ExpPrint.hs
@@ -15,7 +15,7 @@
 -- Version number of combinator file.
 -- Must match version in eval.c.
 combVersion :: String
-combVersion = "v7.2\n"
+combVersion = "v8.0\n"
 
 -- Rename (to a numbers) top level definitions and remove unused ones.
 -- Also check for duplicated instances.
diff --git a/src/MicroHs/Expr.hs b/src/MicroHs/Expr.hs
--- a/src/MicroHs/Expr.hs
+++ b/src/MicroHs/Expr.hs
@@ -8,6 +8,7 @@
   EDef(..), showEDefs,
   Deriving(..), DerStrategy(..),
   Expr(..), eLam, eLamWithSLoc, eEqn, eEqns, showExpr, eqExpr,
+  QForm(..),
   Listish(..),
   Lit(..), showLit,
   CType(..),
@@ -175,7 +176,7 @@
   | ELazy Bool EPat           -- True indicates ~p, False indicates !p
   | EOr [EPat]
   -- only in types
-  | EForall Bool [IdKind] EType  -- True indicates explicit forall in the code
+  | EForall QForm [IdKind] EType
   -- only while type checking
   | EUVar Int
   | EQVar Expr EType             -- already resolved identifier
@@ -213,7 +214,11 @@
   rnf (EQVar a b) = rnf a `seq` rnf b
   rnf (ECon a) = rnf a
 
+data QForm = QImpl | QExpl | QReqd
 
+instance NFData QForm where
+  rnf q = seq q ()
+
 data EField
   = EField [Ident] Expr     -- a.b = e
   | EFieldPun [Ident]       -- a.b
@@ -577,7 +582,7 @@
 
 ---------------------------------
 
--- Enough to handle subsitution in types
+-- Enough to handle subsitution in (undesguared) types
 subst :: [(Ident, Expr)] -> Expr -> Expr
 subst [] = id
 subst s =
@@ -603,6 +608,7 @@
         ELit _ _ -> ae
         ETuple ts -> ETuple (map sub ts)
         EOper t1 its -> EOper (sub t1) (map (second sub) its)
+        EListish (LList [t]) -> EListish (LList [sub t])
         EParen t -> EParen (sub t)
         _ -> error $ "subst unimplemented " ++  show ae
   in sub
@@ -844,7 +850,7 @@
 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
+ppConstr (Constr iks ct c cs) = ppForall QImpl 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 ","
@@ -926,7 +932,7 @@
         EUVar i -> text ("_a" ++ show i)
         EQVar e t -> parens $ ppE e <> text ":::" <> ppE t
         ECon c -> {-text "***" <>-} ppCon c
-        EForall _ iks e -> parens $ ppForall iks <+> ppEType e
+        EForall q iks e -> parens $ ppForall q iks <+> ppEType e
 
     ppApp :: [Expr] -> Expr -> Doc
     ppApp as (EApp f a) = ppApp (a:as) f
@@ -946,9 +952,10 @@
 ppField (EFieldPun is) = hcat (punctuate (text ".") (map ppIdent is))
 ppField EFieldWild = text ".."
 
-ppForall :: [IdKind] -> Doc
+ppForall :: QForm -> [IdKind] -> Doc
 --ppForall [] = empty
-ppForall iks = text "forall" <+> hsep (map ppIdKind iks) <+> text "."
+ppForall q iks = text "forall" <+> hsep (map ppIdKind iks) <+> text qs
+  where qs = case q of QReqd -> "->"; _ -> "."
 
 ppListish :: Listish -> Doc
 ppListish (LList es) = ppList ppExpr es
@@ -1009,20 +1016,20 @@
 ppList :: forall a . (a -> Doc) -> [a] -> Doc
 ppList pp xs = brackets $ hsep $ punctuate (text ",") (map pp xs)
 
-getBindVars :: EBind -> [Ident]
+getBindVars :: HasCallStack => EBind -> [Ident]
 getBindVars abind =
   case abind of
     Fcn i _  -> [i]
     PatBind p _  -> patVars p
     _ -> []
 
-getBindsVars :: [EBind] -> [Ident]
+getBindsVars :: HasCallStack => [EBind] -> [Ident]
 getBindsVars = concatMap getBindVars
 
 eForall :: [IdKind] -> EType -> EType
-eForall = eForall' True
+eForall = eForall' QExpl
 
-eForall' :: Bool -> [IdKind] -> EType -> EType
+eForall' :: QForm -> [IdKind] -> EType -> EType
 eForall' _ [] t = t
 eForall' b vs t = EForall b vs t
 
diff --git a/src/MicroHs/FFI.hs b/src/MicroHs/FFI.hs
--- a/src/MicroHs/FFI.hs
+++ b/src/MicroHs/FFI.hs
@@ -24,7 +24,7 @@
       map (\ fn -> "#include \"" ++ fn ++ "\"") includes ++
       map mkHdr imps ++
       ["static struct ffi_entry table[] = {"] ++
-      map (mkEntry . fst) imps ++
+      map mkEntry imps ++
       ["{ 0,0 }",
        "};",
        "struct ffi_entry *xffi_table = table;"
@@ -64,14 +64,14 @@
        rest'' _ _ = errorMessage loc $ "bad foreign import " ++ show s
        loc = getSLoc i
 
-mkEntry :: ImpEnt -> String
-mkEntry (ImpStatic _ _ Func  f) = "{ \"" ++ f ++ "\", mhs_" ++ f ++ "},"
-mkEntry (ImpStatic _ _ Ptr   f) = "{ \"&" ++ f ++ "\", mhs_addr_" ++ f ++ "},"
-mkEntry (ImpStatic i _ Value _) = "{ \"" ++ f ++ "\", mhs_" ++ f ++ "}," where f = unIdent' i
+mkEntry :: (ImpEnt, EType) -> String
+mkEntry (ImpStatic _ _ Func  f, t) = "{ \"" ++ f ++ "\", " ++ show (arity t) ++ ", mhs_" ++ f ++ "},"
+mkEntry (ImpStatic _ _ Ptr   f, _) = "{ \"&" ++ f ++ "\", 0, mhs_addr_" ++ f ++ "},"
+mkEntry (ImpStatic i _ Value _, _) = "{ \"" ++ f ++ "\", 0, mhs_" ++ f ++ "}," where f = unIdent' i
 mkEntry _ = undefined
 
 mkMhsFun :: String -> String -> String
-mkMhsFun fn body = "void mhs_" ++ fn ++ "(int s) { " ++ body ++ "; }"
+mkMhsFun fn body = "from_t mhs_" ++ fn ++ "(int s) { " ++ body ++ "; }"
 
 checkIO :: EType -> EType
 checkIO iot =
@@ -112,15 +112,18 @@
       call = fn ++ "(" ++ intercalate ", " (zipWith mkArg as [0..]) ++ ")"
       fcall =
         if isUnit r then
-          call ++ "; mhs_from_Unit(s, " ++ show n ++ ")"
+          call ++ "; return mhs_from_Unit(s, " ++ show n ++ ")"
         else
-          mkRet r n call
+          "return " ++ mkRet r n call
   in  mkMhsFun fn fcall
 mkHdr (ImpStatic i _ Value val, iot) =
   let r = checkIO iot
       body = mkRet r 0 val
   in  mkMhsFun (unIdent' i) body
 mkHdr _ = undefined
+
+arity :: EType -> Int
+arity = length . fst . getArrows
 
 unIdent' :: Ident -> String
 unIdent' = unIdent . unQualIdent
diff --git a/src/MicroHs/Interactive.hs b/src/MicroHs/Interactive.hs
--- a/src/MicroHs/Interactive.hs
+++ b/src/MicroHs/Interactive.hs
@@ -42,8 +42,11 @@
 noSymbols = (stEmpty, stEmpty)
 
 preamble :: String
-preamble = "module " ++ interactiveName ++ "(module " ++ interactiveName ++
-           ") where\nimport System.IO.PrintOrRun\ndefault Num (Integer, Double)\ndefault IsString (String)\ndefault Show (())\n"
+preamble = "module " ++ interactiveName ++ " where\n\
+           \import System.IO.PrintOrRun\n\
+           \default Num (Integer, Double)\n\
+           \default IsString (String)\n\
+           \default Show (())\n"
 
 start :: I ()
 start = do
@@ -78,7 +81,7 @@
   case words s of
     [] -> return True
     c : ws ->
-      case filter (isPrefixOf c . fst) commands of
+      case filter (isPrefixOf c . (!!0) . words . fst) commands of
         [] -> do
           liftIO $ putStrLn "Unrecognized command"
           return True
@@ -90,13 +93,15 @@
 
 commands :: [(String, String -> I Bool)]
 commands =
-  [ ("quit", const $ return False)
-  , ("clear", const $ do
+  [ ("quit      quit MicroHs",
+     const $ return False
+    )
+  , ("clear     clear all definitions", const $ do
       updateLines (const preamble)
       modify $ \ is -> is{ isCache = emptyCache, isSymbols = noSymbols }
       return True
     )
-  , ("reload", const $ do
+  , ("reload    reload modules", const $ do
       flgs <- gets isFlags
       cash <- gets isCache
       cash' <- liftIO $ validateCache flgs cash
@@ -104,26 +109,30 @@
       reload
       return True
     )
-  , ("delete", \ del -> do
-      updateLines (unlines . filter (not . isPrefixOf del) . lines)
+  , ("delete d  delete definition(s) d", \ line -> do
+      updateLines (unlines . filter (not . isPrefixOf line) . lines)
       return True
     )
-  , ("type", \ line -> do
+  , ("type e    show type of e", \ line -> do
       showType line
       return True
     )
-  , ("kind", \ line -> do
+  , ("kind t    show kind of t", \ line -> do
       showKind line
       return True
     )
-  , ("main", \ line -> do
+  , ("main args run main with arguments", \ line -> do
       runMain line
       return True
     )
-  , ("help", \ _ -> do
-      liftIO $ putStrLn helpText
+  , ("defs      show current definitions", const $ do
+      showDefs
       return True
     )
+  , ("help      this text", const $ do
+      liftIO $ putStrLn $ helpText ++ unlines (map ((':' :) . fst) commands)
+      return True
+    )
   ]
 
 reload :: I ()
@@ -137,14 +146,6 @@
 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\
-  \:type e    show type of e\n\
-  \:kind t    show kind of t\n\
-  \:main args run main with arguments\n\
-  \:help      this text\n\
   \expr       evaluate expression\n\
   \defn       add top level definition\n\
   \"
@@ -272,6 +273,11 @@
 
 runMain :: String -> I ()
 runMain line = oneline $ "_withArgs " ++ show (words line) ++ " main"
+
+showDefs :: I ()
+showDefs = do
+  ls <- gets isLines
+  liftIO $ putStrLn ls
 
 getCModule :: Cache -> TModule [LDef]
 getCModule cash =
diff --git a/src/MicroHs/Parse.hs b/src/MicroHs/Parse.hs
--- a/src/MicroHs/Parse.hs
+++ b/src/MicroHs/Parse.hs
@@ -545,15 +545,21 @@
 -- 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 True vs t
+pType =
+    do
+      vs <- pForall'
+      q <- (QExpl <$ pSymbol ".") <|> (QReqd <$ pSymbol "->")
+      EForall q vs <$> pTypeOp
+  <|>
+    pTypeOp
 
-pForall :: P [IdKind]
-pForall = (forallKW *> some pIdKind <* pSymbol ".") <|> pure []
+pForall' :: P [IdKind]
+pForall' = forallKW *> some pIdKind
   where forallKW = pKeyword "forall" <|> pSymbol "\x2200"
 
+pForall :: P [IdKind]
+pForall = (pForall' <* pSymbol ".") <|> pure []
+
 pTypeOp :: P EType
 pTypeOp = pOperators pTypeOper pTypeArg
 
@@ -706,8 +712,11 @@
 pExprApp :: P Expr
 pExprApp = do
   f <- pAExpr
-  as <- many pAExpr
+  as <- many pAExprArg
   pure $ foldl EApp f as
+
+pAExprArg :: P Expr
+pAExprArg = pAExpr <|> pLam <|> pCase <|> pLet <|> pIf <|> pDo
 
 pLam :: P Expr
 pLam = do
diff --git a/src/MicroHs/Translate.hs b/src/MicroHs/Translate.hs
--- a/src/MicroHs/Translate.hs
+++ b/src/MicroHs/Translate.hs
@@ -172,5 +172,20 @@
   ("fpnew", _primitive "fpnew"),
   ("fpfin", _primitive "fpfin"),
   ("fp2bs", _primitive "fp2bs"),
-  ("bs2fp", _primitive "bs2fp")
+  ("bs2fp", _primitive "bs2fp"),
+  ("IO.fork", _primitive "IO.fork"),
+  ("IO.thid", _primitive "IO.thid"),
+  ("thnum", _primitive "thnum"),
+  ("IO.throwto", _primitive "IO.throwto"),
+  ("IO.yield", _primitive "IO.yield"),
+  ("IO.newmvar", _primitive "IO.newmvar"),
+  ("IO.takemvar", _primitive "IO.takemvar"),
+  ("IO.putmvar", _primitive "IO.putmvar"),
+  ("IO.readmvar", _primitive "IO.readmvar"),
+  ("IO.trytakemvar", _primitive "IO.trytakemvar"),
+  ("IO.tryputmvar", _primitive "IO.tryputmvar"),
+  ("IO.tryreadmvar", _primitive "IO.tryreadmvar"),
+  ("IO.threaddelay", _primitive "IO.threaddelay"),
+  ("IO.threadstatus", _primitive "IO.threadstatus"),
+  ("isint", _primitive "isint")
   ]
diff --git a/src/MicroHs/TypeCheck.hs b/src/MicroHs/TypeCheck.hs
--- a/src/MicroHs/TypeCheck.hs
+++ b/src/MicroHs/TypeCheck.hs
@@ -543,11 +543,11 @@
     tuple n =
       let
         i = tupleConstr builtinLoc n
-      in  (i, [entry i $ EForall True [kk] $ foldr kArrow kv (replicate n kv)])
+      in  (i, [entry i $ EForall QExpl [kk] $ foldr kArrow kv (replicate n kv)])
     -- (=>) :: forall k . Constraint -> k -> k
-    kImplies = EForall True [kk] $ kConstraint `kArrow` (kv `kArrow` kv)
+    kImplies = EForall QExpl [kk] $ kConstraint `kArrow` (kv `kArrow` kv)
     -- (~) :: forall k . k -> k -> Constraint
-    kTypeEqual = EForall True [kk] $ kv `kArrow` (kv `kArrow` kConstraint)
+    kTypeEqual = EForall QExpl [kk] $ kv `kArrow` (kv `kArrow` kConstraint)
   in
       [
        -- The function arrow et al are bothersome to define in Primitives, so keep them here.
@@ -577,7 +577,7 @@
         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 True vks $ EForall True [] $ foldr tArrow r ts ])
+      in  (c, [Entry (ECon $ ConData [(c, n)] c []) $ EForall QExpl vks $ EForall QExpl [] $ foldr tArrow r ts ])
   in  map tuple (0 : enumFromTo 2 maxTuple)
 
 kArrow :: EKind -> EKind -> EKind
@@ -882,7 +882,7 @@
   case etaReduce iks t of
     (iks', t') -> do
       senv <- gets synTable
-      putSynTable (M.insert i (EForall True iks' t') senv)
+      putSynTable (M.insert i (EForall QExpl iks' t') senv)
 
 extData :: Ident -> EDef -> T ()
 extData i d = do
@@ -1086,9 +1086,9 @@
     Newtype lhs c  ds      -> withLHS lhs $ \ lhs' -> cm kType       <$> (Newtype lhs'  <$> tcConstr c       <*> mapM (tcDeriving lhs') ds)
     Type    lhs t          -> withLHS lhs $ \ lhs' -> first              (Type    lhs') <$> tInferTypeT t
     Class   ctx lhs fds ms -> withLHS lhs $ \ lhs' -> cm kConstraint <$> (Class         <$> tcCtx ctx <*> return lhs' <*> mapM tcFD fds <*> mapM tcMethod ms)
-    Sign      is t         ->                                            Sign      is   <$> tCheckTypeTImpl False kType t
-    ForImp ie i t          ->                                            ForImp ie i    <$> tCheckTypeTImpl False kType t
-    Instance ct m          ->                                            Instance       <$> tCheckTypeTImpl True kConstraint ct <*> return m
+    Sign      is t         ->                                            Sign      is   <$> tCheckTypeTImpl QImpl kType t
+    ForImp ie i t          ->                                            ForImp ie i    <$> tCheckTypeTImpl QImpl kType t
+    Instance ct m          ->                                            Instance       <$> tCheckTypeTImpl QExpl kConstraint ct <*> return m
     Default mc ts          ->                                            Default (Just c) <$> mapM (tcDefault c) ts
                                                                            where c = fromMaybe num mc
 -- We cant't do this now, because the classTable has not been fully populated yet.
@@ -1097,8 +1097,8 @@
     _                      -> return def
  where
    cm = flip (,)
-   tcMethod (Sign    is t) = Sign    is <$> (tCheckTypeTImpl False kType t >>= expandSyn)
-   tcMethod (DfltSign i t) = DfltSign i <$> (tCheckTypeTImpl False kType t >>= expandSyn)
+   tcMethod (Sign    is t) = Sign    is <$> (tCheckTypeTImpl QImpl kType t >>= expandSyn)
+   tcMethod (DfltSign i t) = DfltSign i <$> (tCheckTypeTImpl QImpl kType t >>= expandSyn)
    tcMethod m              = return m
    tcFD (is, os) = (,) <$> mapM tcV is <*> mapM tcV os
      where tcV i = do { _ <- tLookup "fundep" i; return i }
@@ -1112,7 +1112,7 @@
 -- as the type in the instance head.
 tcStand :: DerStrategy -> EConstraint -> T EDef
 tcStand st ct = do
-     ct' <- tCheckTypeTImpl True kConstraint ct
+     ct' <- tCheckTypeTImpl QExpl kConstraint ct
      -- We need the kind of the type in the instance head.
      -- It's needed for the number of arguments to "eta reduce",
      -- and also for kind checking the via type.
@@ -1141,7 +1141,7 @@
         -- Check that it is.
         k <- newUVar
         --traceM $ "tcDerive 1: " ++ show c
-        c' <- tCheckTypeTImpl True (k `kArrow` kConstraint) c
+        c' <- tCheckTypeTImpl QExpl (k `kArrow` kConstraint) c
         --traceM $ "tcDerive 2: " ++ show c
         (ks, _) <- getArrows <$> derefUVar k  -- get [k1,...,kn] and final kind
         -- Checking that the final kind is Type happens with the tc call below.
@@ -1154,7 +1154,7 @@
         -- The generated instance has the form 'instance ... => c ty'.
         -- Check that this has kind Constraint.
         -- Also check that any via type also fulfills this.
-        let tc t = do _ <- tCheckTypeTImpl True kConstraint (tApp c t); return ()
+        let tc t = do _ <- tCheckTypeTImpl QExpl kConstraint (tApp c t); return ()
         tc ty
         case strat of
           DerVia v -> tc v  -- XXX should this allow implicit quantification?
@@ -1247,7 +1247,7 @@
       dflttys = [ (i, t) | DfltSign i t <- ms ]
       tCtx = tApps (qualIdent mn iCls) (map (EVar . idKindIdent) vks)
       mkDflt (Sign is t) = concatMap method is
-        where method methId = [ Sign [iDflt] $ EForall True vks $ tCtx `tImplies` ty, def $ lookup methId mdflts ]
+        where method methId = [ Sign [iDflt] $ EForall QExpl vks $ tCtx `tImplies` ty, def $ lookup methId mdflts ]
                 where ty = fromMaybe t $ lookup methId dflttys
                       def Nothing = Fcn iDflt $ etaExp ty noDflt
                       def (Just eqns) = Fcn iDflt eqns
@@ -1466,7 +1466,7 @@
         tret = tApps (qualIdent mn tycon) (map tVarK vks)
         addCon (Constr evks ectx c ets) = do
           let ts = either id (map snd) ets
-              cty = EForall True vks $ EForall True evks $ addConstraints ectx $ foldr (tArrow . snd) tret ts
+              cty = EForall QExpl vks $ EForall QExpl evks $ addConstraints ectx $ foldr (tArrow . snd) tret ts
               fs = either (const []) (map fst) ets
           extValETop c cty (ECon $ ConData cti (qualIdent mn c) fs)
       mapM_ addCon cs
@@ -1476,7 +1476,7 @@
         t = snd $ head $ either id (map snd) ets
         tret = tApps (qualIdent mn tycon) (map tVarK vks)
         fs = either (const []) (map fst) ets
-      extValETop c (EForall True vks $ EForall True [] $ tArrow t tret) (ECon $ ConNew (qualIdent mn c) fs)
+      extValETop c (EForall QExpl vks $ EForall QExpl [] $ tArrow t tret) (ECon $ ConNew (qualIdent mn c) fs)
       addConFields tycon con
     ForImp _ i t -> extValQTop i t
     Class ctx (i, vks) fds ms -> addValueClass ctx i vks fds ms
@@ -1509,9 +1509,9 @@
       tret = tApps qiCls (map tVarK vks)
       cti = [ (qualIdent mn iCon, length targs) ]
       iCon = mkClassConstructor iCls
-      iConTy = EForall True vks $ foldr tArrow tret targs
+      iConTy = EForall QExpl vks $ foldr tArrow tret targs
       tvs = map (EVar . idKindIdent) vks
-      methIdTys' = map (\ (i, t) -> (i, EForall True vks $ tApps qiCls tvs `tImplies` t)) methIdTys
+      methIdTys' = map (\ (i, t) -> (i, EForall QExpl vks $ tApps qiCls tvs `tImplies` t)) methIdTys
       addMethod (i, t) = extValETop i t (EVar $ qualIdent mn i)
   extValETop iCon iConTy (ECon $ ConData cti (qualIdent mn iCon) [])
   mapM_ addMethod methIdTys'
@@ -1585,7 +1585,7 @@
       ty1 = subst sub ty0                        --    into rigid tyvars
   ty2 <- quantify (metaTvs [ty1]) (addConstraints ctx1' ty1)
   let (vs, ty3) = unForall ty2
-      ty4 = eForall' False (sks' ++ vs) ty3      -- add the skolems tyvars
+      ty4 = eForall' QImpl (sks' ++ vs) ty3      -- add the skolems tyvars
   ty5 <- canonPatSynType ty4
 --  traceM $ "tcPatSyn: tys " ++ show (ty0, ty1, ty2, ty3, ty4, ty5)
   addPatSyn ty5 ip
@@ -1594,7 +1594,7 @@
 tcPatSyn _ = impossible
 
 -- Add implicit forall
-addForall :: Bool -> EType -> T EType
+addForall :: QForm -> EType -> T EType
 addForall _ t@EForall{} = return t
 addForall expl t = do
   bvs <- stKeysLcl <$> gets valueTable         -- bound outside
@@ -1605,7 +1605,7 @@
   return $ eForall' expl iks t
 
 -- Add implicit forall and kind check, in type mode
-tCheckTypeTImpl :: HasCallStack => Bool -> EType -> EType -> T EType
+tCheckTypeTImpl :: HasCallStack => QForm -> EType -> EType -> T EType
 tCheckTypeTImpl expl tchk t = tCheckTypeT tchk =<< addForall expl t
 
 -- Check type in type mode
@@ -1913,7 +1913,7 @@
       tcExpr mt $ ELet [Sign [i] t, Fcn i $ eEqns [] e] (EVar i)
 -}
       -- XXX wrong for kind signatures
-      t' <- withTypeTable $ tCheckTypeTImpl False kType t >>= expandSyn
+      t' <- withTypeTable $ tCheckTypeTImpl QImpl kType t >>= expandSyn
       case splitContext t' of
         -- No context, handle this without a 'let' to avoid bloat.
         ([], [], _) -> do
@@ -1983,9 +1983,14 @@
 tcExprApFn :: HasCallStack =>
               Expected -> Expr -> EType -> [Expr] -> T Expr
 --tcExprApFn mt fn fnt args | trace ("tcExprApFn: " ++ show (fn, fnt, args, mt)) False = undefined
-tcExprApFn mt fn (EForall {-True-}_ (IdKind i k:iks) ft) (ETypeArg t : args) = do
-  t' <- if t `eqEType` EVar dummyIdent then newUVar else tcType (Check k) t >>= expandSyn
-  tcExprApFn mt fn (subst [(i, t')] $ eForall iks ft) args
+tcExprApFn mt fn (EForall q (IdKind i k:iks) ft) (arg : args) | Just t <- qarg q arg = do
+  t' <- if t `eqEType` EVar dummyIdent
+        then newUVar
+        else tcType (Check k) t >>= expandSyn
+  tcExprApFn mt fn (subst [(i, t')] $ eForall' q iks ft) args
+ where qarg QReqd t            = Just t
+       qarg _     (ETypeArg t) = Just t
+       qarg _     _            = Nothing
 tcExprApFn mt fn atfn aargs = do
 --  traceM $ "tcExprApFn: " ++ show (mt, fn, tfn, aargs)
 --  xx <- gets ctxTables
@@ -2080,6 +2085,10 @@
   where proxy = EVar $ mkBuiltin loc "Proxy"
         loc = getSLoc i
 
+dsEFieldsBind :: EBind -> T EBind
+dsEFieldsBind (PatBind p e) = PatBind <$> dsEFields p <*> return e
+dsEFieldsBind b = return b
+
 dsEField :: Expr -> EField -> T [EField]
 dsEField _ e@(EField _ _) = return [e]
 dsEField _ (EFieldPun is) = return [EField is $ EVar (last is)]
@@ -2239,24 +2248,28 @@
   ELam loc <$> tcEqns False t qs
 
 tcEqns :: HasCallStack => Bool -> EType -> [Eqn] -> T [Eqn]
+tcEqns top t eqns = tcEqns' top t [] eqns
+
+tcEqns' :: HasCallStack => Bool -> EType -> [IdKind] -> [Eqn] -> T [Eqn]
 --tcEqns _ t eqns | trace ("tcEqns: " ++ showEBind (Fcn dummyIdent eqns) ++ " :: " ++ show t) False = undefined
-tcEqns top (EForall expl iks t) eqns | expl      = withExtTyps iks $ tcEqns top t eqns
-                                     | otherwise =                   tcEqns top t eqns
-tcEqns top t eqns | Just (ctx, t') <- getImplies t = do
+tcEqns' top (EForall QExpl iks t) reqd eqns = withExtTyps iks $ tcEqns' top t reqd eqns
+tcEqns' top (EForall QImpl   _ t) reqd eqns =                   tcEqns' top t reqd eqns
+tcEqns' top (EForall QReqd iks t) reqd eqns =                   tcEqns' top t (reqd ++ iks) eqns
+tcEqns' top t reqd eqns | Just (ctx, t') <- getImplies t = do
   let loc = getSLoc eqns
   d <- newADictIdent loc
   f <- newIdent loc "fcnD"
   withDict d ctx $ do
-    eqns' <- tcEqns top t' eqns
+    eqns' <- tcEqns' top t' reqd eqns
     let eqn =
           case eqns' of
             [Eqn [] alts] -> Eqn [EVar d] alts
             _             -> Eqn [EVar d] $ EAlts [([], EVar f)] [Fcn f eqns']
     return [eqn]
-tcEqns top t eqns = do
+tcEqns' top t reqd eqns = do
   let loc = getSLoc eqns
   f <- newIdent loc "fcnS"
-  (eqns', ds) <- solveAndDefault top $ mapM (tcEqn t) eqns
+  (eqns', ds) <- solveAndDefault top $ mapM (tcEqn t reqd) eqns
 --  tcTrace $ "tcEqns done: " ++ showEBind (Fcn dummyIdent eqns')
   case ds of
     [] -> return eqns'
@@ -2266,14 +2279,19 @@
         eqn = Eqn [] $ EAlts [([], EVar f)] (bs ++ [Fcn f eqns'])
       return [eqn]
 
-tcEqn :: HasCallStack => EType -> Eqn -> T Eqn
+tcEqn :: HasCallStack => EType -> [IdKind] -> Eqn -> T Eqn
 --tcEqn t eqn | trace ("tcEqn: " ++ show eqn ++ " :: " ++ show t) False = undefined
-tcEqn t eqn =
-  case eqn of
-    Eqn ps alts -> tcPats t ps $ \ t' ps' -> do
+tcEqn t (IdKind a k : iks) eqn@(Eqn ps alts) =
+  case ps of
+    EVar i : ps' -> withExtTyps [IdKind i k] $ do
+      addEqDict (EVar a) (EVar i)     -- This bound type variable is actually equal to the one in the signature
+      tcEqn t iks (Eqn ps' alts)
+    _ -> tcError (getSLoc eqn) "Bad required type argument"
+tcEqn t [] (Eqn ps alts) =
+  tcPats t ps $ \ t' ps' -> do
 --      tcTrace $ "tcEqn " ++ show ps ++ " ---> " ++ show ps'
-      alts' <- tcAlts t' alts
-      return (Eqn ps' alts')
+    alts' <- tcAlts t' alts
+    return (Eqn ps' alts')
 
 -- Only used above
 tcPats :: HasCallStack =>
@@ -2560,13 +2578,14 @@
 tcBinds :: HasCallStack =>
            [EBind] -> ([EBind] -> T a) -> T a
 tcBinds xbs ta = withFixes [ (i, fx) | Infix fx is <- xbs, i <- is ] $ do
+  xbs' <- mapM dsEFieldsBind xbs
   let
-    tmap = M.fromList [ (i, t) | Sign is t <- xbs, i <- is ]
-    xs = getBindsVars xbs
+    tmap = M.fromList [ (i, t) | Sign is t <- xbs', i <- is ]
+    xs = getBindsVars xbs'
   multCheck xs
   xts <- mapM (tcBindVarT tmap) xs
   withExtVals xts $ do
-    nbs <- mapM tcBind xbs
+    nbs <- mapM tcBind xbs'
     ta nbs
 
 -- Temporarily extend the fixity table
@@ -2586,7 +2605,7 @@
       t <- newUVar
       return (x, t)
     Just t -> do
-      tt <- withTypeTable $ tCheckTypeTImpl False kType t >>= expandSyn
+      tt <- withTypeTable $ tCheckTypeTImpl QImpl kType t >>= expandSyn
       return (x, tt)
 
 tcBind :: EBind -> T EBind
@@ -2671,7 +2690,7 @@
   mapM_ (uncurry setUVar) sub
   ty' <- derefUVar ty
   putUvarSubst osubst  -- reset the setUVar we did above
-  return (EForall False newVarsK ty')
+  return (EForall QImpl newVarsK ty')
 
 -- Skolemize the given variables
 shallowSkolemise :: [IdKind] -> EType -> T ([TyVar], EType)
@@ -2886,8 +2905,8 @@
       conn = ConData cti ni []
       tycon = mkMatchDataTypeName qi
       tr = tApps tycon $ map (EVar . idKindIdent) vks1
-      tn = EForall True vks1 $ EForall True [] tr
-      tm = EForall True vks1 $ EForall True vks2 $ etImplies ctx2 $ foldr tArrow tr ats
+      tn = EForall QExpl vks1 $ EForall QExpl [] tr
+      tm = EForall QExpl vks1 $ EForall QExpl vks2 $ etImplies ctx2 $ foldr tArrow tr ats
 
       ddata = Data lhs [cm, cn] []
             where lhs = (unQualIdent tycon, vks1)
@@ -2915,13 +2934,13 @@
 canonPatSynType :: EType -> T EType
 canonPatSynType at = do
   let mkTyp rVks rCtx pVks pCtx ty =
-        EForall True rVks $ tImplies rCtx $
-        EForall True pVks $ tImplies pCtx ty
+        EForall QExpl rVks $ tImplies rCtx $
+        EForall QExpl pVks $ tImplies pCtx ty
       getImplies' :: EType -> (EConstraint, EType)
       getImplies' ty = fromMaybe (emptyCtx, ty) $ getImplies ty
 
   case at of
-    EForall False vks t0 -> do
+    EForall QImpl vks t0 -> do
       -- Implicit forall, the xs need to be split between required and provided.
       let (reqCtx, t1) = getImplies' t0
           (proCtx, t2) = getImplies' t1
@@ -2930,7 +2949,7 @@
 --      traceM "%%% implicit"
       pure $ mkTyp reqVks reqCtx proVks proCtx t2
 
-    EForall True reqVks t0 -> do
+    EForall _ reqVks t0 -> do   -- QExpl/QReqd
       -- Explicit forall
       let (reqCtx, t1) = getImplies' t0
           (proVks, t2) = unForall t1
@@ -3424,10 +3443,10 @@
 --   v -> rhs
 -- where v is a type variable (rigid or skolem), and the rhs contains
 -- only type constructors and type variables that are not the LHS of any rule.
--- To find out if two type are equal according to the known equalites,
+-- To find out if two types are equal according to the known equalites,
 -- we just normalize both type using the rewrite rules (which is just a substitution).
 -- When we get TypeFamilies the LHS has to be a type expression as well.
--- And the rewrite rules can probably be obtained with Knuth-Bendix completion
+-- And then rewrite rules can probably be obtained with Knuth-Bendix completion
 -- of the equalities.
 -- Note: there should be no meta variables in t1 and t2.
 -- XXX This guaranteed by how it's called, but I'm not sure it always works properly.
@@ -3448,7 +3467,7 @@
         (_, EVar i2) | isVar i2 -> (i2, t1') : aeqs
         (EApp f1 a1, EApp f2 a2) -> addTypeEq f1 f2 (addTypeEq a1 a2 aeqs)
         _ | t1' `eqEType` t2 -> aeqs
-        _ -> errorMessage (getSLoc t1) $ "inconsisten type equality " ++ showEType t1' ++ " ~ " ++ showEType t2'
+        _ -> errorMessage (getSLoc t1) $ "inconsistent type equality " ++ showEType t1' ++ " ~ " ++ showEType t2'
 
 -- Normalize a type with the known type equalties.
 -- For now, it's just substitution.
diff --git a/src/runtime/bfile.c b/src/runtime/bfile.c
--- a/src/runtime/bfile.c
+++ b/src/runtime/bfile.c
@@ -945,21 +945,21 @@
   flushb(p->bfile);
 }
 
-#define MAXBYTE 256
+#define MAX_BYTE 256
 
 void
 decode_bwt(uint8_t *data, size_t len, uint8_t *odata, size_t zero)
 {
-  size_t count[MAXBYTE];
+  size_t count[MAX_BYTE];
   uint32_t *pred = MALLOC(len * sizeof(uint32_t));
-  for(size_t i = 0; i < MAXBYTE; i++) {
+  for(size_t i = 0; i < MAX_BYTE; i++) {
     count[i] = 0;
   }
   for(size_t i = 0; i < len; i++) {
     pred[i] = count[data[i]]++;
   }
   size_t sum = 0;
-  for(size_t i = 0; i < MAXBYTE; i++) {
+  for(size_t i = 0; i < MAX_BYTE; i++) {
     size_t s = count[i];
     count[i] = sum;
     sum += s;
diff --git a/src/runtime/config-unix-64.h b/src/runtime/config-unix-64.h
--- a/src/runtime/config-unix-64.h
+++ b/src/runtime/config-unix-64.h
@@ -200,6 +200,32 @@
 #define TMPNAME tmpname
 
 /*
+ * Define CLOCK_INIT is there is a ticking clock.
+ * CLOCK_INIT will be called for initializing the clock
+ */
+/* On Unix we just use gettimeofday() to get the clock,
+ * so no initialization is needed.
+ */
+#define CLOCK_INIT() do { } while(0)
+/* CLOCK_T is the type of the clock values. */
+#define CLOCK_T int64_t       /* large enough for 290Myears */
+/* CLOCK_GET returns the current clock in microseconds. */
+#define CLOCK_GET clock_get
+/* CLOCK_SLEEP sleeps some number of microseconds */
+#define CLOCK_SLEEP usleep
+CLOCK_T CLOCK_GET(void)
+{
+  struct timeval tv;
+  (void)gettimeofday(&tv, 0);   /* this is very fast, about 16ns on an M4 MacMini */
+  return (uint64_t)(tv.tv_sec * 1000000 + tv.tv_usec);
+}
+
+/*
+ * We want a signal handler for SIGINT.
+ */
+#define WANT_SIGINT 1
+
+/*
  * The ERR macro should report an error and exit.
  * If not defined, a generic one will be used.
  */
diff --git a/src/runtime/eval.c b/src/runtime/eval.c
--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -29,4940 +29,5939 @@
 #if WANT_GMP
 #include <gmp.h>
 #endif
-
-#if WANT_MD5
-#include "md5.h"
-#endif
-
-#if !defined(WANT_LZ77)
-#define WANT_LZ77 1
-#endif
-
-#if !defined(WANT_RLE)
-#define WANT_RLE 1
-#endif
-
-#if !defined(WANT_BWT)
-#define WANT_BWT 1
-#endif
-
-#if WANT_LZ77
-size_t lz77d(uint8_t *src, size_t srclen, uint8_t **bufp);
-size_t lz77c(uint8_t *src, size_t srclen, uint8_t **bufp);
-#endif
-
-#if defined(__GNUC__) && __GNUC__ >= 14 && defined(__aarch64__)
-#define REGISTER(dcl, reg) register dcl asm(#reg)
-#else
-#define REGISTER(dcl, reg) dcl
-#endif
-
-#include "mhsffi.h"
-struct ffi_entry ffi_table[];
-int num_ffi;
-#define FFI_IX(i) ((i) < num_ffi ? ffi_table[i] : xffi_table[i - num_ffi])
-
-//#include "config.h"
-
-#define VERSION "v7.2\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 */
-
-typedef uintptr_t counter_t;    /* Statistics counter, can be smaller since overflow doesn't matter */
-#define PRIcounter PRIuPTR
-typedef uintptr_t bits_t;       /* One word of bits */
-
-#if !defined(MALLOC)
-#define MALLOC malloc
-#endif
-
-#if !defined(REALLOC)
-#define REALLOC realloc
-#endif
-
-#if !defined(FREE)
-#define FREE free
-#endif
-
-#if !defined(EXIT)
-#define EXIT exit
-#endif
-
-#if !defined(PRINT)
-#define PRINT printf
-#endif
-
-#if !defined(MAIN)
-#define MAIN int main(int argc, char **argv)
-#endif
-
-#if !defined(PCOMMA)
-#define PCOMMA "'"
-#endif  /* !defined(PCOMMA) */
-
-#if !defined(GETRAW)
-int GETRAW(void) { return -1; }
-#endif  /* !defined(getraw) */
-
-#if !defined(GETTIMEMILLI)
-value_t GETTIMEMILLI(void) { return 0; }
-#endif  /* !define(GETTIMEMILLI) */
-
-#if !defined(TMPNAME)
-/* This is a really bad implementation, since it doesn't check for anything. */
-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(FFS)
-/* This is pretty bad, could use deBruijn multiplication instead. */
-int
-FFS(bits_t x)
-{
-  int i;
-  if (!x)
-    return 0;
-  for(i = 1; !(x & 1); x >>= 1, i++)
-    ;
-  return i;
-}
-#endif  /* !defined(FFS) */
-
-#if defined(__has_builtin)
-
-#if __has_builtin(__builtin_popcountl)
-#define BUILTIN_POPCOUNT
-#endif
-
-#endif
-
-#if !defined(POPCOUNT)
-uvalue_t POPCOUNT(uvalue_t x) {
-#if defined(BUILTIN_POPCOUNT)
-  return __builtin_popcountl(x);
-#else
-  uvalue_t count = 0;
-  while (x) {
-    x = x & (x - 1); // clear lowest 1 bit
-    count += 1;
-  }
-  return count;
-#endif
-}
-#endif
-
-#if defined(__GNUC__)
-#define BUILTIN_CLZ
-#elif defined(__clang__)
-
-#if __has_builtin(__builtin_clzl)
-#define BUILTIN_CLZ
-#endif
-
-#endif
-
-
-#if !defined(CLZ)
-uvalue_t CLZ(uvalue_t x) {
-#if defined(BUILTIN_CLZ)
-  if (x == 0) return WORD_SIZE;
-  return __builtin_clzl(x);
-#else
-  value_t count = WORD_SIZE;
-  while (x) {
-    x = x >> 1;
-    count -= 1;
-  }
-  return count;
-#endif
-}
-#endif
-
-#if defined(__has_builtin)
-
-#if __has_builtin(__builtin_ctzl)
-#define BUILTIN_CTZ
-#endif
-
-#endif
-
-
-#if !defined(CTZ)
-uvalue_t CTZ(uvalue_t x) {
-  if (x == 0) return WORD_SIZE;
-#if defined(BUILTIN_CLZ)
-  return __builtin_ctzl(x);
-#else
-  uvalue_t count = 0;
-  while ((x & 1) == 0) {
-    x = x >> 1;
-    count += 1;
-  }
-  return count;
-#endif
-}
-#endif
-
-#if !defined(WANT_ARGS)
-#define WANT_ARGS 1
-#endif
-
-#if !defined(INLINE)
-#define INLINE inline
-#endif  /* !define(INLINE) */
-
-#if !defined(NORETURN)
-#define NORETURN __attribute__ ((noreturn))
-#endif /* !defined(NORETURN) */
-
-#if !defined(COUNT)
-#define COUNT(n) ++(n)
-#endif
-
-value_t
-iswindows(void)
-{
-#if defined(ISWINDOWS)
-  return 1;
-#else
-  return 0;
-#endif
-}
-
-/***************************************/
-
-/* Keep permanent nodes for LOW_INT <= i < HIGH_INT */
-#define LOW_INT (-10)
-#define HIGH_INT 256
-
-#if !defined(HEAP_CELLS)
-#define HEAP_CELLS 50000000
-#endif
-
-#if !defined(STACK_SIZE)
-#define STACK_SIZE 100000
-#endif
-
-#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_FUNPTR, T_FORPTR, T_BADDYN, T_ARR,
-                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_J,
-                T_K2, T_K3, T_K4, T_CCB,
-                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_POPCOUNT, T_CLZ, T_CTZ,
-                T_EQ, T_NE, T_LT, T_LE, T_GT, T_GE, T_ULT, T_ULE, T_UGT, T_UGE, T_ICMP, T_UCMP,
-                T_FPADD, T_FP2P, T_FPNEW, T_FPFIN, // T_FPSTR,
-                T_FP2BS, T_BS2FP,
-                T_TOPTR, T_TOINT, T_TODBL, T_TOFUNPTR,
-                T_BININT2, T_BININT1, T_UNINT1,
-                T_BINDBL2, T_BINDBL1, T_UNDBL1,
-                T_BINBS2, T_BINBS1,
-#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_ARR_ALLOC, T_ARR_COPY, T_ARR_SIZE, T_ARR_READ, T_ARR_WRITE, T_ARR_EQ,
-                T_RAISE, T_SEQ, T_EQUAL, T_COMPARE, T_RNF,
-                T_TICK,
-                T_IO_BIND, T_IO_THEN, T_IO_RETURN,
-                T_IO_CCBIND,
-                T_IO_SERIALIZE, T_IO_DESERIALIZE,
-                T_IO_GETARGREF,
-                T_IO_PERFORMIO, T_IO_PRINT, T_CATCH,
-                T_IO_CCALL, T_IO_GC, T_DYNSYM,
-                T_NEWCASTRINGLEN, T_PACKCSTRING, T_PACKCSTRINGLEN,
-                T_BSAPPEND, T_BSEQ, T_BSNE, T_BSLT, T_BSLE, T_BSGT, T_BSGE, T_BSCMP,
-                T_BSPACK, T_BSUNPACK, T_BSREPLICATE, T_BSLENGTH, T_BSSUBSTR, T_BSINDEX,
-                T_BSFROMUTF8, T_BSTOUTF8, T_BSHEADUTF8, T_BSTAILUTF8,
-                T_BSAPPENDDOT,
-                T_IO_STDIN, T_IO_STDOUT, T_IO_STDERR,
-                T_LAST_TAG,
-};
-static const char* tag_names[T_LAST_TAG+1] =
-  { "FREE", "IND", "AP", "INT", "DBL", "PTR", "FUNPTR", "FORPTR", "BADDYN", "ARR", "THID" };
-
-struct ioarray;
-struct bytestring;
-struct forptr;
-
-typedef struct node {
-  union {
-    struct node *uufun;
-    intptr_t     uuifun;
-    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;
-    flt_t           uufloatvalue;
-    const char     *uucstring;
-    void           *uuptr;
-    HsFunPtr        uufunptr;
-    struct ioarray *uuarray;
-    struct forptr  *uuforptr;      /* foreign pointers and byte arrays */
-  } uarg;
-} node;
-#define BIT_TAG   1
-#define BIT_IND   2
-#define BIT_NOTAP (BIT_TAG | BIT_IND)
-#define TAG_SHIFT 2
-
-typedef struct node* NODEPTR;
-#define NIL 0
-#define HEAPREF(i) &cells[(i)]
-#define GETTAG(p) ((p)->ufun.uutag & BIT_NOTAP ? ( (p)->ufun.uutag & BIT_IND ? T_IND : (int)((p)->ufun.uutag >> TAG_SHIFT) ) : T_AP)
-#define SETTAG(p,t) do { if (t != T_AP) { if (t == T_IND) { (p)->ufun.uutag = BIT_IND; } else { (p)->ufun.uutag = ((t) << TAG_SHIFT) | BIT_TAG; } } } while(0)
-#define GETVALUE(p) (p)->uarg.uuvalue
-#define GETDBLVALUE(p) (p)->uarg.uufloatvalue
-#define SETVALUE(p,v) (p)->uarg.uuvalue = v
-#define SETDBLVALUE(p,v) (p)->uarg.uufloatvalue = v
-#define FUN(p) (p)->ufun.uufun
-#define ARG(p) (p)->uarg.uuarg
-#define CSTR(p) (p)->uarg.uucstring
-#define PTR(p) (p)->uarg.uuptr
-#define FUNPTR(p) (p)->uarg.uufunptr
-#define FORPTR(p) (p)->uarg.uuforptr
-#define BSTR(p) (p)->uarg.uuforptr->payload
-#define ARR(p) (p)->uarg.uuarray
-#define ISINDIR(p) ((p)->ufun.uuifun & BIT_IND)
-#define GETINDIR(p) ((struct node*) ((p)->ufun.uuifun & ~BIT_IND))
-#define SETINDIR(p,q) do { (p)->ufun.uuifun = (intptr_t)(q) | BIT_IND; } while(0)
-#define NODE_SIZE sizeof(node)
-#define ALLOC_HEAP(n) do { cells = MALLOC(n * sizeof(node)); } while(0)
-#define LABEL(n) ((heapoffs_t)((n) - cells))
-node *cells;                 /* All cells */
-
-/*
- * byte arrays
- */
-struct bytestring {
-  size_t size;
-  void *string;
-};
-
-/*
- * Arrays are allocated with MALLOC()/FREE().
- * During GC they are marked, and all elements in the array are
- * recursively marked.
- * At the end of the the mark phase there is a scan of all
- * arrays, and the unmarked ones are freed.
- */
-struct ioarray {
-  struct ioarray *next;         /* all ioarrays are linked together */
-  int permanent;                /* this array should never be GC-ed */
-  size_t marked;                /* marked during GC */
-  size_t size;                  /* number of elements in the array */
-  NODEPTR array[1];             /* actual size may be bigger */
-};
-struct ioarray *array_root = 0; /* root of all allocated arrays, linked by next */
-
-enum fptype {
-  FP_FORPTR = 0,                /* a regular foreign pointer to unknown memory */
-  FP_BSTR,                      /* a bytestring */
-  FP_MPZ,                       /* a GMP MPZ pointer */
-};
-
-/*
- * A Haskell ForeignPtr has a normal pointer, and a finalizer
- * function that is to be called when there are no more references
- * to the ForeignPtr.
- * A complication is that using plusForeignPtr creates a new
- * ForeignPtr that must share the same finalizer.
- * There is one struct forptr for each ForeignPtr.  It has pointer
- * to the actual data, and to a struct final which is shared between
- * all ForeignPtrs that have been created with plusForeignPtr.
- * During GC the used bit is set for any references to the forptr.
- * The scan phase will traverse the struct final chain and run
- * the finalizer, and free associated structs.
- */
-struct final {
-  struct final  *next;      /* the next finalizer */
-  HsFunPtr       final;     /* function to call to release resource */
-  void          *arg;       /* argument to final when called */
-  size_t         size;      /* size of memory, if known, otherwise NOSIZE */
-#define NOSIZE ~0           /* used as the size in payload for actual foreign pointers */
-  struct forptr *back;      /* back pointer to the first forptr */
-  short          marked;    /* mark bit for GC */
-  enum fptype    fptype;    /* what kind of foreign pointer */
-};
-
-/*
- * Foreign pointers are also used to represent bytestrings.
- * The difference between a foreign pointer and a bytestring
- * is that we can serialize the latter.
- * The size field is non-zero only for bytestrings.
- */
-struct forptr {
-  struct forptr *next;       /* the next ForeignPtr that shares the same finalizer */
-  struct final  *finalizer;  /* the finalizer for this ForeignPtr */
-  struct bytestring payload; /* the actual pointer to allocated data, and maybe a size */
-  //  char          *desc;
-};
-struct final *final_root = 0;   /* root of all allocated foreign pointers, linked by next */
-
-REGISTER(counter_t num_reductions,r19);
-counter_t num_alloc = 0;
-counter_t num_gc = 0;
-uintptr_t gc_mark_time = 0;
-uintptr_t gc_scan_time = 0;
-uintptr_t run_time = 0;
-
-#define MAXSTACKDEPTH 0
-#if MAXSTACKDEPTH
-stackptr_t max_stack_depth = 0;
-counter_t max_c_stack = 0;
-counter_t cur_c_stack = 0;
-#define MAXSTACK if (stack_ptr > max_stack_depth) max_stack_depth = stack_ptr
-#else
-#define MAXSTACK
-#endif
-
-NODEPTR *topnode;
-NODEPTR atptr;
-
-REGISTER(NODEPTR *stack,r20);
-REGISTER(stackptr_t stack_ptr,r21);
-#if STACKOVL
-#define PUSH(x) do { if (stack_ptr >= stack_size-1) stackerr(); stack[++stack_ptr] = (x); MAXSTACK; } while(0)
-#else  /* STACKOVL */
-#define PUSH(x) do {                                            stack[++stack_ptr] = (x); MAXSTACK; } while(0)
-#endif  /* STACKOVL */
-#define TOP(n) stack[stack_ptr - (n)]
-#define POP(n) stack_ptr -= (n)
-#define POPTOP() stack[stack_ptr--]
-#define GCCHECK(n) gc_check((n))
-
-heapoffs_t heap_size;       /* number of heap cells */
-heapoffs_t heap_start;      /* first location in heap that needs GC */
-REGISTER(stackptr_t stack_size,r22);      /* number of stack slots */
-
-counter_t num_marked;
-counter_t max_num_marked = 0;
-counter_t num_free;
-counter_t num_arr_alloc;
-counter_t num_arr_free;
-counter_t num_fin_alloc;
-counter_t num_fin_free;
-counter_t num_bs_alloc;
-counter_t num_bs_alloc_max;
-counter_t num_bs_free;
-counter_t num_bs_bytes;
-counter_t num_bs_inuse;
-counter_t num_bs_inuse_max;
-
-#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;
-
-int want_gc_red = 0;
-
-NORETURN
-void
-memerr(void)
-{
-  ERR("Out of memory");
-  EXIT(1);
-}
-
-NORETURN
-void
-stackerr(void)
-{
-  ERR("stack overflow");
-  EXIT(1);
-}
-
-/***************************************/
-
-#include "bfile.c"
-
-/***************************************/
-
-struct ioarray*
-arr_alloc(size_t sz, NODEPTR e)
-{
-  struct ioarray *arr = MALLOC(sizeof(struct ioarray) + (sz-1) * sizeof(NODEPTR));
-  size_t i;
-
-  if (!arr)
-    memerr();
-  arr->next = array_root;
-  array_root = arr;
-  arr->marked = 0;
-  arr->permanent = 0;
-  arr->size = sz;
-  for(i = 0; i < sz; i++)
-    arr->array[i] = e;
-  //PRINT("arr_alloc(%d, %p) = %p\n", (int)sz, e, arr);
-  num_arr_alloc++;
-  return arr;
-}
-
-struct ioarray*
-arr_copy(struct ioarray *oarr)
-{
-  size_t sz = oarr->size;
-  struct ioarray *arr = MALLOC(sizeof(struct ioarray) + (sz-1) * sizeof(NODEPTR));
-
-  if (!arr)
-    memerr();
-  arr->next = array_root;
-  array_root = arr;
-  arr->marked = 0;
-  arr->permanent = 0;
-  arr->size = sz;
-  memcpy(arr->array, oarr->array, sz * sizeof(NODEPTR));
-  num_arr_alloc++;
-  return arr;
-}
-
-/*****************************************************************************/
-
-#if WANT_TICK
-struct tick_entry {
-  struct bytestring tick_name;
-  counter_t tick_count;
-} *tick_table = 0;
-size_t tick_table_size;
-size_t tick_index;
-
-/* Allocate a new tick table entry and return the index. */
-size_t
-add_tick_table(struct bytestring name)
-{
-  if (!tick_table) {
-    tick_table_size = 100;
-    tick_table = malloc(tick_table_size * sizeof(struct tick_entry));
-    if (!tick_table)
-      memerr();
-    tick_index = 0;
-  }
-  if (tick_index >= tick_table_size) {
-    tick_table_size *= 2;
-    tick_table = REALLOC(tick_table, tick_table_size * sizeof(struct tick_entry));
-    if (!tick_table)
-      memerr();
-  }
-  tick_table[tick_index].tick_name = name;
-  tick_table[tick_index].tick_count = 0;
-  return tick_index++;
-}
-
-/* Called with the tick index. */
-static inline void
-dotick(value_t i)
-{
-  tick_table[i].tick_count++;
-}
-
-void
-dump_tick_table(FILE *f)
-{
-  if (!tick_table) {
-    fprintf(f, "Tick table empty\n");
-    return;
-  }
-  for (size_t i = 0; i < tick_index; i++) {
-    counter_t n = tick_table[i].tick_count;
-    if (n)
-      fprintf(f, "%-60s %10"PRIcounter"\n", (char *)tick_table[i].tick_name.string, n);
-  }
-}
-#endif
-
-/*****************************************************************************/
-
-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));
-}
-
-/* Set FREE bit to 1, used to undo marking in GC */
-static INLINE void mark_unused(NODEPTR n)
-{
-  heapoffs_t i = LABEL(n);
-#if SANITY
-  if (i < heap_start)
-    ERR("Unmarking invalid heap address.");
-  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;
-}
-
-#if WANT_ARGS
-/* This single element array hold a list of the program arguments. */
-struct ioarray *argarray;
-#endif  /* WANT_ARGS */
-
-int verbose = 0;
-int gcbell = 0;
-
-static INLINE NODEPTR
-alloc_node(enum node_tag t)
-{
-  heapoffs_t i = next_scan_index / BITS_PER_WORD;
-  int k;                        /* will contain bit pos + 1 */
-  heapoffs_t pos;
-  NODEPTR n;
-  heapoffs_t word;
-
-  /* This can happen if we run out of memory when parsing. */
-  if (num_free <= 0)
-    ERR("alloc_node");
-
-  for(;;) {
-    word = free_map[i];
-    if (word)
-      break;
-    i++;
-#if SANITY
-    if (i >= free_map_nwords) {
-#if 0
-      fprintf(stderr, "wordsize=%u, num_free=%u next_scan_index=%u i=%u free_map_nwords=%u\n", (uint)BITS_PER_WORD,
-              (uint)num_free, (uint)next_scan_index, (uint)i, (uint)free_map_nwords);
-#endif
-      ERR("alloc_node: free_map");
-    }
-#endif
-  }
-  k = FFS(word);
-  pos = i * BITS_PER_WORD + k - 1; /* first free node */
-  n = HEAPREF(pos);
-  // mark_used(n); // equivalent to:
-  free_map[i] = word & (word-1);
-  next_scan_index = pos;
-
-  SETTAG(n, t);
-  COUNT(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 combK, combTrue, combUnit, combCons, combPair;
-NODEPTR combCC, combZ, combIOBIND, combIORETURN, combIOCCBIND, combB, combC;
-NODEPTR combLT, combEQ, combGT;
-NODEPTR combShowExn, combU, combK2, combK3;
-NODEPTR combBININT1, combBININT2, combUNINT1;
-NODEPTR combBINDBL1, combBINDBL2, combUNDBL1;
-NODEPTR combBINBS1, combBINBS2;
-NODEPTR comb_stdin, comb_stdout, comb_stderr;
-#define combFalse combK
-
-/* 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 {
-  const char *name;
-  const enum node_tag tag;
-  const enum node_tag flipped;        /* What should (C op) reduce to? defaults to T_FREE */
-  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 },
-  /*  { "J", T_J },*/
-  { "K2", T_K2 },
-  { "K3", T_K3 },
-  { "K4", T_K4 },
-  { "C'B", T_CCB },
-/* primops */
-  { "+", T_ADD, T_ADD },
-  { "-", T_SUB, T_SUBR },
-  { "*", T_MUL, T_MUL },
-  { "quot", T_QUOT },
-  { "rem", T_REM },
-  { "uquot", T_UQUOT },
-  { "urem", T_UREM },
-  { "subtract", T_SUBR, T_SUB },
-  { "neg", T_NEG },
-  { "and", T_AND, T_AND },
-  { "or", T_OR, T_OR },
-  { "xor", T_XOR, T_XOR },
-  { "inv", T_INV },
-  { "shl", T_SHL },
-  { "shr", T_SHR },
-  { "ashr", T_ASHR },
-  { "popcount", T_POPCOUNT },
-  { "clz", T_CLZ },
-  { "ctz", T_CTZ },
-#if WANT_FLOAT
-  { "f+" , T_FADD, T_FADD},
-  { "f-" , T_FSUB },
-  { "f*" , T_FMUL, T_FMUL},
-  { "f/", T_FDIV},
-  { "fneg", T_FNEG},
-  { "itof", T_ITOF},
-  { "f==", T_FEQ, T_FEQ},
-  { "f/=", T_FNE, T_FNE},
-  { "f<", T_FLT, T_FGT},
-  { "f<=", T_FLE, T_FGE},
-  { "f>", T_FGT, T_FLT},
-  { "f>=", T_FGE, T_FLE},
-  { "fshow", T_FSHOW},
-  { "fread", T_FREAD},
-#endif  /* WANT_FLOAT */
-
-  { "bs++", T_BSAPPEND },
-  { "bs++.", T_BSAPPENDDOT },
-  { "bs==", T_BSEQ, T_BSEQ },
-  { "bs/=", T_BSNE, T_BSNE },
-  { "bs<", T_BSLT, T_BSGT },
-  { "bs<=", T_BSLE, T_BSGE  },
-  { "bs>", T_BSGT, T_BSLT },
-  { "bs>=", T_BSGE, T_BSLE  },
-  { "bscmp", T_BSCMP },
-  { "bspack", T_BSPACK },
-  { "bsunpack", T_BSUNPACK },
-  { "bsreplicate", T_BSREPLICATE },
-  { "bslength", T_BSLENGTH },
-  { "bssubstr", T_BSSUBSTR },
-  { "bsindex", T_BSINDEX },
-
-  { "ord", T_I },
-  { "chr", T_I },
-  { "==", T_EQ, T_EQ },
-  { "/=", T_NE, T_NE },
-  { "<", T_LT, T_GT },
-  { "u<", T_ULT, T_UGT },
-  { "u<=", T_ULE, T_UGE },
-  { "u>", T_UGT, T_ULT },
-  { "u>=", T_UGE, T_ULE },
-  { "<=", T_LE, T_GE },
-  { ">", T_GT, T_LT },
-  { ">=", T_GE, T_LE },
-  { "fp+", T_FPADD },
-  { "fp2p", T_FP2P },
-  { "fpnew", T_FPNEW },
-  { "fpfin", T_FPFIN },
-  //  { "fpstr", T_FPSTR },
-  { "fp2bs", T_FP2BS },
-  { "bs2fp", T_BS2FP },
-  { "seq", T_SEQ },
-  { "equal", T_EQUAL, T_EQUAL },
-  { "sequal", T_EQUAL, T_EQUAL },
-  { "compare", T_COMPARE },
-  { "scmp", T_COMPARE },
-  { "icmp", T_ICMP },
-  { "ucmp", T_UCMP },
-  { "rnf", T_RNF },
-  { "fromUTF8", T_BSFROMUTF8 },
-  { "toUTF8", T_BSTOUTF8 },
-  { "headUTF8", T_BSHEADUTF8 },
-  { "tailUTF8", T_BSTAILUTF8 },
-  /* IO primops */
-  { "IO.>>=", T_IO_BIND },
-  { "IO.>>", T_IO_THEN },
-  { "IO.return", T_IO_RETURN },
-  { "IO.C'BIND", T_IO_CCBIND },
-  { "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.getArgRef", T_IO_GETARGREF },
-  { "IO.performIO", T_IO_PERFORMIO },
-  { "IO.gc", T_IO_GC },
-  { "raise", T_RAISE },
-  { "catch", T_CATCH },
-  { "A.alloc", T_ARR_ALLOC },
-  { "A.copy", T_ARR_COPY },
-  { "A.size", T_ARR_SIZE },
-  { "A.read", T_ARR_READ },
-  { "A.write", T_ARR_WRITE },
-  { "A.==", T_ARR_EQ },
-  { "dynsym", T_DYNSYM },
-  { "newCAStringLen", T_NEWCASTRINGLEN },
-  { "packCString", T_PACKCSTRING },
-  { "packCStringLen", T_PACKCSTRINGLEN },
-  { "toPtr", T_TOPTR },
-  { "toInt", T_TOINT },
-  { "toDbl", T_TODBL },
-  { "toFunPtr", T_TOFUNPTR },
-};
-
-#if GCRED
-enum node_tag flip_ops[T_LAST_TAG+1];
-#endif
-
-#if WANT_STDIO
-/* Create a dummy foreign pointer for the standard stdio handles. */
-/* These handles are never gc():d. */
-void
-mk_std(NODEPTR n, FILE *f)
-{
-  struct final *fin = calloc(1, sizeof(struct final));
-  struct forptr *fp = calloc(1, sizeof(struct forptr));
-  if (!fin || !fp)
-    memerr();
-  BFILE *bf = add_utf8(add_FILE(f));
-  SETTAG(n, T_FORPTR);
-  FORPTR(n) = fp;
-  fin->arg = bf;
-  fin->back = fp;
-  fp->payload.string = bf;
-  fp->finalizer = fin;
-}
-#endif
-
-void
-init_nodes(void)
-{
-  enum node_tag t;
-  size_t j;
-  NODEPTR n;
-
-  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;
-  for(t = T_FREE; t < T_LAST_TAG; t++) {
-    NODEPTR n = HEAPREF(heap_start++);
-    SETTAG(n, t);
-    switch (t) {
-    case T_K: combK = n; break;
-    case T_A: combTrue = n; break;
-    case T_I: combUnit = n; break;
-    case T_O: combCons = n; break;
-    case T_P: combPair = n; break;
-    case T_CC: combCC = n; break;
-    case T_B: combB = n; break;
-    case T_C: combC = n; break;
-    case T_Z: combZ = n; break;
-    case T_U: combU = n; break;
-    case T_K2: combK2 = n; break;
-    case T_K3: combK3 = n; break;
-    case T_IO_BIND: combIOBIND = n; break;
-    case T_IO_RETURN: combIORETURN = n; break;
-    case T_IO_CCBIND: combIOCCBIND = n; break;
-    case T_BININT1: combBININT1 = n; break;
-    case T_BININT2: combBININT2 = n; break;
-    case T_UNINT1: combUNINT1 = n; break;
-    case T_BINDBL1: combBINDBL1 = n; break;
-    case T_BINDBL2: combBINDBL2 = n; break;
-    case T_UNDBL1: combUNDBL1 = n; break;
-    case T_BINBS1: combBINBS1 = n; break;
-    case T_BINBS2: combBINBS2 = n; break;
-#if WANT_STDIO
-    case T_IO_STDIN:  comb_stdin  = n; mk_std(n, stdin);  break;
-    case T_IO_STDOUT: comb_stdout = n; mk_std(n, stdout); break;
-    case T_IO_STDERR: comb_stderr = n; mk_std(n, stderr); break;
-#endif
-    default:
-      break;
-    }
-    for (j = sizeof primops / sizeof primops[0]; j-- > 0; ) {
-      if (primops[j].tag == t) {
-        primops[j].node = n;
-      }
-      tag_names[primops[j].tag] = primops[j].name;
-    }
-  }
-
-#if GCRED
-  for (j = 0; j < sizeof primops / sizeof primops[0]; j++) {
-    flip_ops[primops[j].tag] = primops[j].flipped;
-  }
-#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 { 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 */
-  {
-    /* The displaySomeException compiles to (U (U (K2 A))) */
-    NODEPTR x;
-    NEWAP(x, combK2, combTrue);        /* (K2 A) */
-    NEWAP(x, combU, x);                /* (U (K2 A)) */
-    NEWAP(combShowExn, combU, x);      /* (U (U (K2 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
-counter_t red_a, red_k, red_i, red_int, red_flip, red_bi, red_bxi, red_ccbi, red_cc;
-#endif
-counter_t red_bb, red_k4, red_k3, red_k2, red_ccb, red_z, red_r;
-
-//counter_t mark_depth;
-//counter_t max_mark_depth = 0;
-
-/* Follow indirections */
-static INLINE NODEPTR
-indir(NODEPTR *np)
-{
-  NODEPTR n = *np;
-  while (GETTAG(n) == T_IND)
-    n = GETINDIR(n);
-  *np = n;
-  return n;
-}
-
-/* Mark all used nodes reachable from *np, updating *np. */
-void
-mark(NODEPTR *np)
-{
-  stackptr_t stk = stack_ptr;
-  NODEPTR n;
-  NODEPTR *to_push = 0;         /* silence warning by initializing */
-#if GCRED
-  value_t val;
-#endif
-  enum node_tag tag;
-
-  //  mark_depth++;
-  //  if (mark_depth % 10000 == 0)
-  //    PRINT("mark depth %"PRIcounter"\n", mark_depth);
-  top:
-  n = *np;
-  tag = GETTAG(n);
-  if (tag == T_IND) {
-#if SANITY
-    int loop = 0;
-    /* Skip indirections, and redirect start pointer */
-    while ((tag = GETTAG(n)) == T_IND) {
-      //      PRINT("*"); fflush(stdout);
-      n = GETINDIR(n);
-      if (loop++ > 10000000) {
-        //PRINT("%p %p %p\n", n, GETINDIR(n), GETINDIR(GETINDIR(n)));
-        ERR("IND loop");
-      }
-    }
-    //    if (loop)
-    //      PRINT("\n");
-#else  /* SANITY */
-    while ((tag = GETTAG(n)) == T_IND) {
-      n = GETINDIR(n);
-    }
-#endif  /* SANITY */
-    *np = n;
-  }
-  if (n < cells || n > cells + heap_size)
-    ERR("bad n");
-  if (is_marked_used(n)) {
-    goto fin;
-  }
-  num_marked++;
-  mark_used(n);
-  switch (tag) {
-#if GCRED
-   case T_INT:
-#if INTTABLE
-    if (LOW_INT <= (val = GETVALUE(n)) && val < HIGH_INT) {
-      SETINDIR(n, intTable[val - LOW_INT]);
-      COUNT(red_int);
-      goto top;
-    }
-    goto fin;
-#endif  /* INTTABLE */
-   case T_AP:
-      if (want_gc_red) {
-        enum node_tag funt = GETTAG(indir(&FUN(n)));
-        enum node_tag argt = GETTAG(indir(&ARG(n)));
-        enum node_tag funfunt = funt == T_AP ? GETTAG(indir(&FUN(FUN(n)))) : T_FREE;
-
-        /* This is really only fruitful just after parsing.  It can be removed. */
-        if (funfunt == T_A) {
-          /* Do the A x y --> y reduction */
-          NODEPTR y = ARG(n);
-          SETINDIR(n, y);
-          COUNT(red_a);
-          goto top;
-        }
-
-        if (funfunt == T_K) {
-          /* Do the K x y --> x reduction */
-          NODEPTR x = ARG(FUN(n));
-          SETINDIR(n, x);
-          COUNT(red_k);
-          goto top;
-        }
-
-        if (funt == T_I) {
-          /* Do the I x --> x reduction */
-          NODEPTR x = ARG(n);
-          SETINDIR(n, x);
-          COUNT(red_i);
-          goto top;
-        }
-
-        if(funt == T_B && argt == T_I) { 
-          /* B I --> I */
-          SETTAG(n, T_I);
-          COUNT(red_bi);
-          goto top;
-        }
-
-        if(funfunt == T_B && argt == T_I) { 
-          /* B x I --> x */
-          NODEPTR x = ARG(FUN(n));
-          SETINDIR(n, x);
-          COUNT(red_bxi);
-          goto top;
-        }
-
-        if(funfunt == T_CCB && argt == T_I) { 
-          /* C'B x I --> x */
-          NODEPTR x = ARG(FUN(n));
-          SETINDIR(n, x);
-          COUNT(red_ccbi);
-          goto top;
-        }
-
-        if(funt == T_C && argt == T_C) { 
-          /* C C --> I */
-          SETTAG(n, T_I);
-          COUNT(red_cc);
-          goto top;
-        }
-
-#if 0
-        /* Very rare */
-        if (funt == T_S && argt == T_AP && GETTAG(indir(&FUN(ARG(n)))) == T_K) {
-          /* S (K x) --> B x */
-          printf("SK"); fflush(stdout);
-        }
-#endif
-
-#if 0
-        /* Happens very rarely */
-        if (funt == T_C && argt == T_AP && GETTAG(indir(&FUN(ARG(n)))) == T_C) {
-          /* C (C a) --> a */
-          NODEPTR x = ARG(ARG(n));
-          SETINDIR(n, x);
-          //COUNT(red_cc);
-          goto top;
-        }
-#endif
-#if 0
-        /* Fairly frequent, but needs allocation */
-        if (funfunt == T_B && argt == T_AP && GETTAG(indir(&FUN(ARG(n)))) == T_K) {
-          /* B x (K y) --> K x y */
-          printf("BxK\n");
-        }
-#endif
-
-#if 0
-        /* This is broken.
-         * Probably because it can happen in the middle of the C reduction code.
-         */
-        DO NOT ENABLE
-        if (GETTAG(FUN(n)) == T_C) {
-          NODEPTR q = ARG(n);
-          enum node_tag tt, tf;
-          while ((tt = GETTAG(q)) == T_IND)
-            q = GETINDIR(q);
-          if ((tf = flip_ops[tt])) {
-            /* Do the C op --> flip_op reduction */
-            // PRINT("%s -> %s\n", tag_names[tt], tag_names[tf]);
-            SETINDIR(n, HEAPREF(tf));
-            COUNT(red_flip);
-            goto fin;
-          }
-        }
-#endif
-      }
-#else   /* GCRED */
-   case T_AP:
-#endif  /* GCRED */
-    /* Avoid tail recursion */
-    np = &FUN(n);
-    to_push = &ARG(n);
-    break;
-   case T_ARR:
-    {
-      struct ioarray *arr = ARR(n);
-
-      // arr->marked records marking progress through arr.
-      if (arr->marked >= arr->size) {
-        goto fin;
-      }
-      // We unmark the array as a whole and push it as long
-      // as there's more entries to scan.
-      mark_unused(n);
-      num_marked--;
-      to_push = np;
-      np = &arr->array[arr->marked++];
-      break;
-    }
-   case T_FORPTR:
-     FORPTR(n)->finalizer->marked = 1;
-     goto fin;
-
-   default:
-     goto fin;
-  }
-
-  if (!is_marked_used(*to_push)) {
-    //  mark_depth++;
-    PUSH((NODEPTR)to_push);
-  }
-  goto top;
- fin:
-  //  if (mark_depth > max_mark_depth) {
-  //    max_mark_depth = mark_depth;
-  //  }
-  //  mark_depth--;
-  if (stack_ptr > stk) {
-    np = (NODEPTR *)POPTOP();
-    goto top;
-  }
-  return;
-}
-
-/* Perform a garbage collection:
-   - First mark from all roots; roots are on the stack.
-*/
-void
-gc(void)
-{
-  stackptr_t i;
-
-  num_gc++;
-  num_marked = 0;
-#if WANT_STDIO
-  if (verbose > 1)
-    PRINT("gc mark\n");
-#endif
-  gc_mark_time -= GETTIMEMILLI();
-  mark_all_free();
-  // mark everything reachable from the stack
-  for (i = 0; i <= stack_ptr; i++)
-    mark(&stack[i]);
-  // mark everything reachable from permanent array nodes
-  for (struct ioarray *arr = array_root; arr; arr = arr->next) {
-    if (arr->permanent) {
-      for (i = 0; i < arr->size; i++)
-        mark(&arr->array[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");
-
-  gc_scan_time -= GETTIMEMILLI();
-  /* Free unused arrays */
-  for (struct ioarray **arrp = &array_root; *arrp; ) {
-    struct ioarray *arr = *arrp;
-    if (arr->marked || arr->permanent) {
-      arr->marked = 0;
-      arrp = &arr->next;
-    } else {
-      *arrp = arr->next;        /* unlink */
-      num_arr_free++;
-      FREE(arr);                /* and FREE */
-    }
-  }
-
-  /* Run finalizers on unused foreign pointers. */
-  for (struct final **finp = &final_root; *finp; ) {
-    struct final *fin = *finp;
-    if (fin->marked) {
-      fin->marked = 0;
-      finp = &fin->next;
-    } else {
-      /* Unused, run finalizer and free all associated memory */
-      if (fin->size == NOSIZE) {
-        num_fin_free++;
-      } else {
-        num_bs_free++;
-        num_bs_inuse -= fin->size;
-        if (num_bs_alloc - num_bs_free > num_bs_alloc_max)
-          num_bs_alloc_max = num_bs_alloc - num_bs_free;
-      }
-      void (*f)(void *) = (void (*)(void *))fin->final;
-      //printf("forptr free fin=%p, f=%p", fin, f);
-      //fflush(stdout);
-      if (f) {
-        //printf("finalizer fin=%p final=%p\n", fin, f);
-        (*f)(fin->arg);
-      }
-      for (struct forptr *p = fin->back; p; ) {
-        struct forptr *q = p->next;
-        //printf("free fp=%p\n", p);
-        //printf(" p=%p desc=%s", p, p->desc ? p->desc : "NONE");
-        //fflush(stdout);
-        FREE(p);
-        //memset(p, 0x55, sizeof *p);
-        p = q;
-      }
-      //printf("\n");
-      *finp = fin->next;
-      //printf("free fin=%p\n", fin);
-      FREE(fin);
-      //memset(fin, 0x77, sizeof *fin);
-    }
-  }
-  gc_scan_time += GETTIMEMILLI();
-
-#if WANT_STDIO
-  if (verbose > 1) {
-    PRINT("gc done, %"PRIcounter" free\n", num_free);
-    /*PRINT(" GC reductions A=%"PRIcounter", K=%"PRIcounter", I=%"PRIcounter", int=%"PRIcounter" flip=%"PRIcounter"\n",
-      red_a, red_k, red_i, red_int, red_flip);*/
-  }
-  if (gcbell) {
-    fputc('\007', stderr);      /* ring the bell */
-    fflush(stderr);
-  }
-#endif  /* !WANT_STDIO */
-
-#if 0
-  /* For debugging only: mark all free cells */
-  for(int n = 0; n < heap_size; n++) {
-    NODEPTR p = HEAPREF(n);
-    if (!is_marked_used(p)) {
-      SETTAG(p, T_FREE);
-    }
-  }
-#endif
-}
-
-/* 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)
-    PRINT("gc_check: %d\n", (int)k);
-#endif
-  gc();
-}
-
-static INLINE
-value_t
-peekWord(value_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-pokeWord(value_t *p, value_t w)
-{
-  *p = w;
-}
-
-static INLINE
-void *
-peekPtr(void **p)
-{
-  return *p;
-}
-
-static INLINE
-void
-pokePtr(void **p, void *w)
-{
-  *p = w;
-}
-
-static INLINE
-uvalue_t
-peek_uint8(uint8_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_uint8(uint8_t *p, value_t w)
-{
-  *p = (uint8_t)w;
-}
-
-static INLINE
-uvalue_t
-peek_uint16(uint16_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_uint16(uint16_t *p, value_t w)
-{
-  *p = (uint16_t)w;
-}
-
-#if WORD_SIZE >= 32
-static INLINE
-uvalue_t
-peek_uint32(uint32_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_uint32(uint32_t *p, value_t w)
-{
-  *p = (uint32_t)w;
-}
-#endif  /* WORD_SIZE >= 32 */
-
-#if WORD_SIZE >= 64
-static INLINE
-uvalue_t
-peek_uint64(uint64_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_uint64(uint64_t *p, value_t w)
-{
-  *p = (uint64_t)w;
-}
-#endif  /* WORD_SIZE >= 64 */
-
-static INLINE
-value_t
-peek_int8(int8_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_int8(int8_t *p, value_t w)
-{
-  *p = (int8_t)w;
-}
-
-static INLINE
-value_t
-peek_int16(int16_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_int16(int16_t *p, value_t w)
-{
-  *p = (int16_t)w;
-}
-
-#if WORD_SIZE >= 32
-static INLINE
-value_t
-peek_int32(int32_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_int32(int32_t *p, value_t w)
-{
-  *p = (int32_t)w;
-}
-#endif  /* WORD_SIZE >= 32 */
-
-#if WORD_SIZE >= 64
-static INLINE
-value_t
-peek_int64(int64_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_int64(int64_t *p, value_t w)
-{
-  *p = (int64_t)w;
-}
-#endif  /* WORD_SIZE >= 64 */
-
-static INLINE
-value_t
-peek_int(int *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_int(int *p, value_t w)
-{
-  *p = (int)w;
-}
-
-static INLINE
-value_t
-peek_uint(unsigned int *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_uint(unsigned int *p, value_t w)
-{
-  *p = (unsigned int)w;
-}
-
-static INLINE
-value_t
-peek_short(short *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_short(short *p, value_t w)
-{
-  *p = (short)w;
-}
-
-static INLINE
-value_t
-peek_ushort(unsigned short *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_ushort(unsigned short *p, value_t w)
-{
-  *p = (unsigned short)w;
-}
-
-static INLINE
-value_t
-peek_long(long *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_long(long *p, value_t w)
-{
-  *p = (long)w;
-}
-
-static INLINE
-value_t
-peek_ulong(unsigned long *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_ulong(unsigned long *p, value_t w)
-{
-  *p = (unsigned long)w;
-}
-
-static INLINE
-value_t
-peek_llong(long long *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_llong(long long *p, value_t w)
-{
-  *p = (long long)w;
-}
-
-static INLINE
-value_t
-peek_ullong(unsigned long long *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_ullong(unsigned long long *p, value_t w)
-{
-  *p = (unsigned long long)w;
-}
-
-#if WANT_FLOAT
-static INLINE
-flt_t
-peek_flt(flt_t *p)
-{
-  return *p;
-}
-
-static INLINE
-void
-poke_flt(flt_t *p, flt_t w)
-{
-  *p = w;
-}
-#endif  /* WANT_FLOAT */
-
-/* Look up an FFI function by name */
-value_t
-lookupFFIname(const char *name)
-{
-  size_t i;
-
-  for(i = 0; ffi_table[i].ffi_name; i++)
-    if (strcmp(ffi_table[i].ffi_name, name) == 0)
-      return (value_t)i;
-  if (xffi_table) {
-    for(i = 0; xffi_table[i].ffi_name; i++)
-      if (strcmp(xffi_table[i].ffi_name, name) == 0)
-        return (value_t)(i + num_ffi);
-  }
-  return -1;
-}
-
-NODEPTR
-ffiNode(const char *buf)
-{
-  NODEPTR r;
-  value_t i = lookupFFIname(buf);
-  char *fun;
-
-  if (i < 0) {
-    /* lookup failed, generate a node that will dynamically generate an error */
-    r = alloc_node(T_BADDYN);
-    fun = MALLOC(strlen(buf) + 1);
-    strcpy(fun, buf);
-    CSTR(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 = getb(f);
-  if (c == d) {
-    return 1;
-  } else {
-    ungetb(d, f);
-    return 0;
-  }
-}
-
-/* Get a non-terminating character.  ' ' and '\n' terminates a token. */
-int
-getNT(BFILE *f)
-{
-  int c;
-
-  c = getb(f);
-  if (c == ' ' || c == '\n') {
-    return 0;
-  } else {
-    return c;
-  }
-}
-
-value_t
-parse_int(BFILE *f)
-{
-  // Parse using uvalue_t, which wraps on overflow.
-  uvalue_t i = 0;
-  int neg = 1;
-  int c = getb(f);
-  if (c == '-') {
-    neg = -1;
-    c = getb(f);
-  }
-  for(;;) {
-    i = i * 10 + (c - '0');
-    c = getb(f);
-    if (c < '0' || c > '9') {
-      ungetb(c, f);
-      break;
-    }
-  }
-  // Multiply by neg without triggering undefined behavior.
-  return (value_t)(((uvalue_t)neg) * i);
-}
-
-#if WANT_FLOAT
-flt_t
-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);
-}
-#endif
-
-struct forptr *mkForPtr(struct bytestring bs);
-NODEPTR mkFunPtr(HsFunPtr p);
-
-/* Create a forptr that has a free() finalizer. */
-struct forptr *
-mkForPtrFree(struct bytestring str)
-{
-  struct forptr *fp = mkForPtr(str);         /* Create a foreign pointer */
-  fp->finalizer->final = (HsFunPtr)FREE;     /* and set the finalizer to just free it */
-  return fp;
-}
-
-NODEPTR
-mkStrNode(struct bytestring str)
-{
-  NODEPTR n = alloc_node(T_FORPTR);
-  struct forptr *fp = mkForPtrFree(str);
-  FORPTR(n) = fp;
-  fp->finalizer->fptype = FP_BSTR;
-  //printf("mkForPtr n=%p fp=%p %d %s payload.string=%p\n", n, fp, (int)FORPTR(n)->payload.size, (char*)FORPTR(n)->payload.string, FORPTR(n)->payload.string);
-  return n;
-}
-
-NODEPTR mkInt(value_t i);
-NODEPTR mkFlt(flt_t 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 i;
-
-  for(i = (int)label; ; i++) {
-    i %= shared_table_size;
-    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. */
-  }
-}
-
-/* The memory allocated here is never freed.
- * This could be fixed by using a forptr and a
- * finalizer for read UTF-8 strings.
- * Fix this if there is a lot of deserialization.
- */
-struct bytestring
-parse_string(BFILE *f)
-{
-  struct bytestring bs;
-  size_t sz = 20;
-  uint8_t *buffer = MALLOC(sz);
-  size_t i;
-  int c;
-
-  if (!buffer)
-    memerr();
-  for(i = 0;;) {
-    c = getb(f);
-    if (c == '"')
-      break;
-    if (i >= sz - 1) {
-      sz *= 2;
-      buffer = REALLOC(buffer, sz);
-      if (!buffer)
-        memerr();
-    }
-#if 0
-    if (c == '\\') {
-      buffer[i++] = (uint8_t)parse_int(f);
-      if (!gobble(f, '&'))
-        ERR("parse string");
-    } else {
-      buffer[i++] = c;
-    }
-#else
-    /* See src/MicroHs/ExpPrint.hs for how strings are encoded. */
-    switch (c) {
-    case '\\':
-      c = getb(f);
-      if (c == '?')
-        c = 0x7f;
-      else if (c == '_')
-        c = 0xff;
-      break;
-    case '^':
-      c = getb(f);
-      if (c < 0x40)
-        c &= 0x1f;
-      else
-        c = (c & 0x1f) | 0x80;
-      break;
-    case '|':
-      c = getb(f);
-      c |= 0x80;
-      break;
-    default:
-      /* Unencoded */
-      ;
-    }
-    buffer[i++] = c;
-#endif
-  }
-  buffer[i] = 0;                /* add a trailing 0 in case we need a C string */
-  buffer = REALLOC(buffer, i + 1);
-
-  bs.size = i;
-  bs.string = buffer;
-  //printf("parse_string %d %s\n", (int)bs.size, (char*)bs.string);
-  return bs;
-}
-
-struct forptr *new_mpz(void);
-
-NODEPTR
-parse(BFILE *f)
-{
-  stackptr_t stk = stack_ptr;
-  NODEPTR r, x, y;
-  NODEPTR *nodep;
-  heapoffs_t l;
-  value_t i;
-  int c;
-  size_t j;
-  char buf[80];                 /* store names of primitives. */
-
-  for(;;) {
-    c = getb(f);
-    if (c < 0) ERR("parse EOF");
-    switch (c) {
-    case ' ':
-    case '\n':
-      continue;
-    }
-    if (num_free < 3)
-      ERR("out of heap reading code");
-    GCCHECK(1);
-    switch(c) {
-    case '@':
-      x = TOP(0);
-      y = TOP(1);
-      POP(2);
-      PUSH(new_ap(y, x));
-      break;
-    case '}':
-      x = TOP(0);
-      POP(1);
-      if (stack_ptr != stk)
-        ERR("parse: stack");
-      return x;
-#if WANT_GMP
-    case '%':
-      {
-        struct bytestring bs = parse_string(f); /* get all the digits, terminated by " */
-        struct forptr *fp = new_mpz();          /* a new mpz */
-        mpz_ptr op = fp->payload.string;        /* get actual pointer */
-        mpz_set_str(op, bs.string, 10);         /* convert to an mpz */
-        free(bs.string);
-        r = alloc_node(T_FORPTR);
-        FORPTR(r) = fp;
-        PUSH(r);
-        break;
-      }
-#endif
-    case '&':
-#if WANT_FLOAT
-      r = mkFlt(parse_double(f));
-#else
-      while (getNT(f))          /* skip the float constant */
-        ;
-      r = alloc_node(T_DBL);
-      SETVALUE(r, 0);
-#endif
-      PUSH(r);
-      break;
-    case '#':
-      i = parse_int(f);
-      r = mkInt(i);
-      PUSH(r);
-      break;
-    case '[':
-      {
-        size_t sz;
-        struct ioarray *arr;
-        size_t i;
-        sz = (size_t)parse_int(f);
-        if (!gobble(f, ']')) ERR("parse arr 1");
-        arr = arr_alloc(sz, NIL);
-        for (i = 0; i < sz; i++) {
-          arr->array[i] = TOP(sz - i - 1);
-        }
-        r = alloc_node(T_ARR);
-        ARR(r) = arr;
-        POP(sz);
-        PUSH(r);
-        break;
-      }
-    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_FREE);
-        SETINDIR(*nodep, NIL);
-      }
-      PUSH(*nodep);
-      break;
-    case ':':
-      /* Define a shared expression: :label e */
-      l = parse_int(f);  /* The label */
-      if (!gobble(f, ' ')) ERR("parse ' '");
-      nodep = find_label(l);
-      x = TOP(0);
-      if (*nodep == NIL) {
-        /* not referenced yet, so add a direct reference */
-        *nodep = x;
-      } else {
-        /* Sanity check */
-        if (GETTAG(*nodep) != T_IND || GETINDIR(*nodep) != NIL) ERR("shared != NIL");
-        SETINDIR(*nodep, x);
-      }
-      break;
-    case '"':
-      /* Everything up to the next " is a string.
-       * Special characters are encoded as \NNN&,
-       * where NNN is the decimal value of the character */
-      PUSH(mkStrNode(parse_string(f)));
-      break;
-#if WANT_TICK
-    case '!':
-      if (!gobble(f, '"'))
-        ERR("parse !");
-      i = add_tick_table(parse_string(f));
-      r = alloc_node(T_TICK);
-      SETVALUE(r, (value_t)i);
-      PUSH(r);
-      break;
-#endif
-    case '^':
-      /* An FFI name */
-      for (j = 0; (buf[j] = getNT(f)); j++)
-        ;
-      r = ffiNode(buf);
-      PUSH(r);
-      break;
-    case ';':
-      /* <name is a C function pointer to name */
-      for (j = 0; (buf[j] = getNT(f)); j++)
-        ;
-      if (strcmp(buf, "0") == 0) {
-        PUSH(mkFunPtr((HsFunPtr)0));
-      } else if (strcmp(buf, "closeb") == 0) {
-        PUSH(mkFunPtr((HsFunPtr)closeb));
-      } else {
-        ERR1("unknown funptr '%s'", buf);
-      }
-      break;
-    default:
-      buf[0] = c;
-      /* A primitive, keep getting char's until end */
-      for (j = 1; (buf[j] = getNT(f)); j++)
-        ;
-      /* Look up the primop and use the preallocated node. */
-      for (j = 0; j < sizeof primops / sizeof primops[0]; j++) {
-        if (strcmp(primops[j].name, buf) == 0) {
-          r = primops[j].node;
-          goto found;
-        }
-      }
-      ERR1("no primop %s", buf);
-    found:
-      PUSH(r);
-      break;
-    }
-  }
-}
-
-void
-checkversion(BFILE *f)
-{
-  char *p = VERSION;
-  int c;
-
-  while ((c = *p++)) {
-    if (c != getb(f))
-      ERR("version mismatch");
-  }
-  (void)gobble(f, '\r');                 /* allow extra CR */
-}
-
-/* Parse a file */
-NODEPTR
-parse_top(BFILE *f)
-{
-  heapoffs_t numLabels, i;
-  NODEPTR n;
-  checkversion(f);
-  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(i = 0; i < shared_table_size; i++)
-    shared_table[i].node = NIL;
-  n = parse(f);
-  FREE(shared_table);
-  return n;
-}
-
-#if WANT_STDIO
-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 */
-  BFILE *p = add_FILE(f);
-  NODEPTR n = parse_top(p);
-  *psize = ftell(f);
-  closeb(p);
-  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
- */
-struct print_bits {
-  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;
-}
-
-size_t strNodes(size_t len);
-NODEPTR mkStringC(char *str);
-
-#if WANT_STDIO
-#if WORD_SIZE == 64
-#define CONVDBL "%.16g"
-#elif WORD_SIZE == 32
-#define CONVDBL "%.8g"
-#endif
-void
-convdbl(char *str, flt_t x)
-{
-  /* Using 16 decimals will lose some precision.
-   * 17 would keep the precision, but it frequently looks very ugly.
-   */
-  (void)snprintf(str, 25, CONVDBL, x);
-  if (strcmp(str, "nan") != 0 && strcmp(str, "-nan") != 0 &&
-      strcmp(str, "inf") != 0 && strcmp(str, "-inf") != 0 &&
-      !strchr(str, '.') && !strchr(str, 'e') && !strchr(str, 'E')) {
-    /* There is no decimal point and no exponent, so add a decimal point */
-    strcat(str, ".0");
-  }
-}
-
-NODEPTR
-dblToString(flt_t x)
-{
-  char str[30];
-  convdbl(str, x);
-  // turn it into a mhs string
-  GCCHECK(strNodes(strlen(str)));
-  return mkStringC(str);
-}
-
-void
-putdblb(flt_t x, BFILE *p)
-{
-  char str[30];
-  convdbl(str, x);
-  putsb(str, p);
-}
-
-void printrec(BFILE *f, struct print_bits *pb, NODEPTR n, int prefix);
-
-/* Mark all reachable nodes, when a marked node is reached, mark it as shared. */
-void
-find_sharing(struct print_bits *pb, NODEPTR n)
-{
- top:
-  while (GETTAG(n) == T_IND) {
-    n = GETINDIR(n);
-  }
-  if (n < cells || n >= cells + heap_size) abort();
-  //PRINT("find_sharing %p %llu ", n, LABEL(n));
-  tag_t tag = GETTAG(n);
-  if (tag == T_AP || tag == T_ARR || tag == T_FORPTR) {
-    if (test_bit(pb->shared_bits, n)) {
-      /* Alread marked as shared */
-      //PRINT("shared\n");
-      ;
-    } else if (test_bit(pb->marked_bits, n)) {
-      /* Already marked, so now mark as shared */
-      //PRINT("marked\n");
-      set_bit(pb->shared_bits, n);
-      num_shared++;
-    } else {
-      /* Mark as visited, and recurse */
-      //PRINT("unmarked\n");
-      set_bit(pb->marked_bits, n);
-      switch(tag) {
-      case T_AP:
-        find_sharing(pb, FUN(n));
-        n = ARG(n);
-        goto top;
-      case T_ARR:
-        for(size_t i = 0; i < ARR(n)->size; i++) {
-          find_sharing(pb, ARR(n)->array[i]);
-        }
-        break;
-      default:
-        break;
-      }
-    }
-  } else {
-    /* Not an sharable node, so do nothing */
-    //PRINT("not T_AP\n");
-    ;
-  }
-}
-
-void
-print_string(BFILE *f, struct bytestring bs)
-{
-  uint8_t *str = bs.string;
-  putb('"', f);
-  for (size_t i = 0; i < bs.size; i++) {
-    int c = str[i];
-#if 0
-    if (c == '"' || c == '\\' || c < ' ' || c > '~') {
-      putb('\\', f);
-      putdecb(c, f);
-      putb('&', f);
-    } else {
-      putb(c, f);
-    }
-#else
-    if (c < 0 || c > 0xff)
-      ERR("print_string");
-    if (c < 0x20) {
-      putb('^', f); putb(c + 0x20, f);
-    } else if (c == '"' || c == '^' || c == '|' || c == '\\') {
-      putb('\\', f); putb(c, f);
-    } else if (c < 0x7f) {
-      putb(c, f);
-    } else if (c == 0x7f) {
-      putb('\\', f); putb('?', f);
-    } else if (c < 0xa0) {
-      putb('^', f); putb(c - 0x80 + 0x40, f);
-    } else if (c < 0xff) {
-      putb('|', f); putb(c - 0x80, f);
-    } else {                    /* must be c == 0xff */
-      putb('\\', f); putb('_', f);
-    }
-#endif
-  }
-  putb('"', f);
-}
-
-/*
- * Recursively print an expression.
- * This assumes that the shared nodes has been marked as such.
- * The prefix flag is used to get a readable dump.
- */
-void
-printrec(BFILE *f, struct print_bits *pb, NODEPTR n, int prefix)
-{
-  int share = 0;
-  enum node_tag tag;
-
-  while (GETTAG(n) == T_IND) {
-    //putb('*', f);
-    n = GETINDIR(n);
-  }
-
-  if (test_bit(pb->shared_bits, n)) {
-    /* The node is shared */
-    if (test_bit(pb->marked_bits, n)) {
-      /* Not yet printed, so emit a label */
-      if (prefix) {
-        putb(':', f);
-        putdecb((value_t)LABEL(n), f);
-        putb(' ', f);
-      } else {
-        share = 1;
-      }
-      clear_bit(pb->marked_bits, n);  /* mark as printed */
-    } else {
-      /* This node has already been printed, so just use a reference. */
-      putb('_', f);
-      putdecb((value_t)LABEL(n), f);
-      if (!prefix)
-        putb(' ', f);
-      return;
-    }
-  }
-
-  //if (n == atptr) putb('@', f);
-  tag = GETTAG(n);
-  switch (tag) {
-  case T_AP:
-    if (prefix) {
-      putb('(', f);
-      printrec(f, pb, FUN(n), prefix);
-      putb(' ', f);
-      printrec(f, pb, ARG(n), prefix);
-      putb(')', f);
-    } else {
-      printrec(f, pb, FUN(n), prefix);
-      printrec(f, pb, ARG(n), prefix);
-      putb('@', f);
-    }
-    break;
-  case T_INT: putb('#', f); putdecb(GETVALUE(n), f); break;
-  case T_DBL: putb('&', f); putdblb(GETDBLVALUE(n), f); break;
-  case T_ARR:
-    if (prefix) {
-      /* Arrays serialize as '[sz] e_1 ... e_sz' */
-      putb('[', f);
-      putdecb((value_t)ARR(n)->size, f);
-      putb(']', f);
-      for(size_t i = 0; i < ARR(n)->size; i++) {
-        putb(' ', f);
-        printrec(f, pb, ARR(n)->array[i], prefix);
-      }
-    } else {
-      /* Arrays serialize as 'e_1 ... e_sz [sz]' */
-      for(size_t i = 0; i < ARR(n)->size; i++) {
-        printrec(f, pb, ARR(n)->array[i], prefix);
-      }
-      putb('[', f);
-      putdecb((value_t)ARR(n)->size, f);
-      putb(']', f);
-    }
-    break;
-  case T_PTR:
-    if (prefix) {
-      char b[200]; snprintf(b,200,"PTR<%p>",PTR(n));
-      putsb(b, f);
-    } else {
-      ERR("Cannot serialize pointers");
-    }
-    break;
-  case T_FUNPTR:
-    /* There are a few function pointers that happen without user FFI.
-     * We need to be able to serialize these.
-     * XXX Make a table if we need more.
-     */
-    if (FUNPTR(n) == 0) {
-      putsb(";0 ", f);
-    } else if (FUNPTR(n) == (HsFunPtr)closeb) {
-      putsb(";closeb ", f);
-    } else {
-      ERR1("Cannot serialize function pointers %p", FUNPTR(n));
-    }
-    break;
-  case T_FORPTR:
-    if (n == comb_stdin)
-      putsb("IO.stdin", f);
-    else if (n == comb_stdout)
-      putsb("IO.stdout", f);
-    else if (n == comb_stderr)
-      putsb("IO.stderr", f);
-#if WANT_GMP
-    else if (FORPTR(n)->finalizer->fptype == FP_MPZ) {
-      /* Serialize as %99999" */
-      mpz_ptr op = FORPTR(n)->payload.string; /* get the mpz */
-      int sz = mpz_sizeinbase(op, 10);        /* maximum length */
-      char *s = malloc(sz + 2);
-      if (!s)
-        memerr();
-      (void)mpz_get_str(s, 10, op);           /* convert to a string */
-      putsb("%", f);
-      putsb(s, f);
-      putsb("\"", f);                         /* so we can use parse_string */
-      free(s);
-    }
-#endif  /* WANT_GMP */
-    else if (FORPTR(n)->finalizer->fptype == FP_BSTR) {
-      print_string(f, FORPTR(n)->payload);
-    } else {
-      ERR("Cannot serialize foreign pointers");
-    }
-    break;
-  case T_IO_CCALL: putb('^', f); putsb(FFI_IX(GETVALUE(n)).ffi_name, f); break;
-  case T_BADDYN: putb('^', f); putsb(CSTR(n), f); break;
-
-  case T_TICK:
-    putb('!', f);
-    print_string(f, tick_table[GETVALUE(n)].tick_name);
-    break;
-  default:
-    putsb(tag_names[tag], f);
-    break;
-  }
-  if (!prefix) {
-    if (GETTAG(n) != T_AP)
-      putb(' ', f);
-    if (share) {
-      putb(':', f);
-      putdecb((value_t)LABEL(n), f);
-      putb(' ', f);
-    }
-  }
-}
-
-/* Serialize a graph to file. */
-void
-printb(BFILE *f, NODEPTR n, int header)
-{
-  struct print_bits pb;
-  num_shared = 0;
-  pb.marked_bits = calloc(free_map_nwords, sizeof(bits_t));
-  if (!pb.marked_bits)
-    memerr();
-  pb.shared_bits = calloc(free_map_nwords, sizeof(bits_t));
-  if (!pb.shared_bits)
-    memerr();
-  find_sharing(&pb, n);
-  if (header) {
-    putsb(VERSION, f);
-    putdecb(num_shared, f);
-    putb('\n', f);
-  }
-  printrec(f, &pb, n, !header);
-  if (header) {
-    putb('}', f);
-  }
-  FREE(pb.marked_bits);
-  FREE(pb.shared_bits);
-}
-
-/* Show a graph. */
-void
-pp(FILE *f, NODEPTR n)
-{
-  BFILE *bf = add_FILE(f);
-  printb(bf, n, 0);
-  putb('\n', bf);
-  freeb_file(bf);
-}
-
-#if 0
-void
-ppmsg(const char *msg, NODEPTR n)
-{
-  printf("%s", msg);
-  pp(stdout, n);
-  printf("\n");
-}
-#endif
-
-void
-dump(const char *msg, NODEPTR at)
-{
-#if 0
-  atptr = at;
-  printf("dump: %s\n", msg);
-  pp(stdout, *topnode);
-#endif
-}
-
-#else  /* WANT_STDIO */
-NODEPTR
-dblToString(flt_t x)
-{
-  return mkStringC("no dblToString");
-}
-
-#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
-mkFlt(flt_t 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;
-}
-
-NODEPTR
-mkFunPtr(void (*p)(void))
-{
-  NODEPTR n;
-  n = alloc_node(T_FUNPTR);
-  FUNPTR(n) = p;
-  return n;
-}
-
-struct forptr*
-mkForPtr(struct bytestring bs)
-{
-  struct final *fin = calloc(1, sizeof(struct final));
-  struct forptr *fp = calloc(1, sizeof(struct forptr));
-  if (!fin || !fp)
-    memerr();
-  if (bs.size == NOSIZE) {
-    num_fin_alloc++;
-  } else {
-    num_bs_alloc++;
-    num_bs_inuse += bs.size;
-    num_bs_bytes += bs.size;
-    if (num_bs_inuse > num_bs_inuse_max)
-      num_bs_inuse_max = num_bs_inuse;
-  }
-  //printf("mkForPtr p=%p fin=%p fp=%p\n", p, fin, fp);
-  fin->next = final_root;
-  final_root = fin;
-  fin->final = 0;
-  fin->arg = bs.string;
-  fin->size = bs.size;          /* The size is not really needed */
-  fin->back = fp;
-  fin->marked = 0;
-  fp->next = 0;
-  fp->payload = bs;
-  fp->finalizer = fin;
-  //  fp->desc = 0;
-  return fp;
-}
-
-struct forptr*
-mkForPtrP(void *p)
-{
-  struct bytestring bs = { NOSIZE, p };
-  return mkForPtr(bs);
-}
-
-struct forptr*
-addForPtr(struct forptr *ofp, int s)
-{
-  struct forptr *fp = malloc(sizeof(struct forptr));
-  struct final *fin = ofp->finalizer;
-  if (!fp)
-    memerr();
-  fp->next = ofp;
-  fin->back = fp;
-  if (ofp->payload.size != NOSIZE)
-    fp->payload.size = ofp->payload.size - s;
-  fp->payload.string = (uint8_t*)ofp->payload.string + s;
-  fp->finalizer = fin;
-  return fp;
-}
-
-struct forptr*
-bssubstr(struct forptr *fp, value_t offs, value_t len)
-{
-  struct forptr *res = addForPtr(fp, offs);
-  res->payload.size = len;
-  return res;
-}
-
-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.
- * Does NOT do UTF decoding.
- */
-NODEPTR
-mkString(struct bytestring bs)
-{
-  NODEPTR n, nc;
-  size_t i;
-  const unsigned char *str = bs.string; /* no sign bits, please */
-
-  n = mkNil();
-  for(i = bs.size; i > 0; i--) {
-    nc = mkInt(str[i-1]);
-    n = mkCons(nc, n);
-  }
-  return n;
-}
-
-NODEPTR
-mkStringC(char *str)
-{
-  struct bytestring bs = { strlen(str), str };
-  return mkString(bs);
-}
-
-NODEPTR
-mkStringU(struct bytestring bs)
-{
-  BFILE *ubuf = add_utf8(openb_rd_buf(bs.string, bs.size));
-  NODEPTR n, *np, nc;
-
-  //printf("mkStringU %d %s\n", (int)bs.size, (char*)bs.string);
-
-  n = mkNil();
-  np = &n;
-  for(;;) {
-    int c = getb(ubuf);
-    if (c < 0)
-      break;
-    nc = mkInt(c);
-    *np = mkCons(nc, *np);
-    np = &ARG(*np);
-  }
-  closeb(ubuf);
-  return n;
-}
-
-NODEPTR
-bsunpack(struct bytestring bs)
-{
-  NODEPTR n, *np, nc;
-  size_t i;
-
-  n = mkNil();
-  np = &n;
-  for(i = 0; i < bs.size; i++) {
-    nc = mkInt(((uint8_t *)bs.string)[i]);
-    *np = mkCons(nc, *np);
-    np = &ARG(*np);
-  }
-  return n;
-}
-
-/* XXX This should somehow be merged with other utf8 decoders */
-value_t
-headutf8(struct bytestring bs, void **ret)
-{
-  uint8_t *p = bs.string;
-  if (bs.size == 0)
-    ERR("headUTF8 0");
-  int c1 = *p++;
-  if ((c1 & 0x80) == 0) {
-    if (ret)
-      *ret = p;
-    return c1;
-  }
-  if (bs.size == 1)
-    ERR("headUTF8 1");
-  int c2 = *p++;
-  if ((c1 & 0xe0) == 0xc0) {
-    if (ret)
-      *ret = p;
-    return ((c1 & 0x1f) << 6) | (c2 & 0x3f);
-  }
-  if (bs.size == 2)
-    ERR("headUTF8 2");
-  int c3 = *p++;
-  if ((c1 & 0xf0) == 0xe0) {
-    if (ret)
-      *ret = p;
-    return ((c1 & 0x0f) << 12) | ((c2 & 0x3f) << 6) | (c3 & 0x3f);
-  }
-  if (bs.size == 3)
-    ERR("headUTF8 3");
-  int c4 = *p++;
-  if ((c1 & 0xf8) == 0xf0) {
-    if (ret)
-      *ret = p;
-    return ((c1 & 0x07) << 18) | ((c2 & 0x3f) << 12) | ((c3 & 0x3f) << 6) | (c4 & 0x3f);
-  }
-  ERR("headUTF8 4");
-}
-
-NODEPTR evali(NODEPTR 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 Flt_T */
-static INLINE flt_t
-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 to a T_FUNPTR */
-HsFunPtr
-evalfunptr(NODEPTR n)
-{
-  n = evali(n);
-#if SANITY
-  if (GETTAG(n) != T_FUNPTR) {
-    ERR1("evalfunptr, bad tag %d", GETTAG(n));
-  }
-#endif
-  return FUNPTR(n);
-}
-
-/* Evaluate to a T_FORPTR */
-struct forptr *
-evalforptr(NODEPTR n)
-{
-  n = evali(n);
-#if SANITY
-  if (GETTAG(n) != T_FORPTR) {
-    ERR1("evalforptr, bad tag %d", GETTAG(n));
-  }
-#endif
-  return FORPTR(n);
-}
-
-/* Evaluate to a bytestring */
-struct forptr *
-evalbstr(NODEPTR n)
-{
-  n = evali(n);
-#if SANITY
-  if (GETTAG(n) != T_FORPTR || FORPTR(n)->finalizer->fptype != FP_BSTR) {
-    ERR1("evalbstr, bad tag %d", GETTAG(n));
-  }
-#endif
-  return FORPTR(n);
-}
-
-/* Evaluate a string, returns a newly allocated buffer.
- * XXX this is cheating, should use continuations.
- * XXX the malloc()ed string is leaked if we yield in here.
- * Caller is responsible to free().
- * Does UTF-8 encoding.
- */
-struct bytestring
-evalstring(NODEPTR n)
-{
-  size_t sz = 100;
-  char *buf = MALLOC(sz);
-  size_t offs;
-  uvalue_t c;
-  NODEPTR x;
-  struct bytestring bs;
-
-  if (!buf)
-    memerr();
-  for (offs = 0;;) {
-    if (offs >= sz - 4) {
-      sz *= 2;
-      buf = REALLOC(buf, sz);
-      if (!buf)
-        memerr();
-    }
-    PUSH(n);                    /* protect the list from GC */
-    n = evali(n);
-    POP(1);
-    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 */
-      PUSH(n);                  /* protect from GC */
-      c = evalint(ARG(x));
-      n = POPTOP();
-      if ((c & 0x1ff800) == 0xd800) {
-        // c is a surrogate
-        c = 0xfffd; // replacement character
-      }
-      if (c < 0x80) {
-        buf[offs++] = (char)c;
-      } else if (c < 0x800) {
-        buf[offs++] = ((c >> 6 )       ) | 0xc0;
-        buf[offs++] = ((c      ) & 0x3f) | 0x80;
-      } else if (c < 0x10000) {
-        buf[offs++] = ((c >> 12)       ) | 0xe0;
-        buf[offs++] = ((c >> 6 ) & 0x3f) | 0x80;
-        buf[offs++] = ((c      ) & 0x3f) | 0x80;
-      } else if (c < 0x110000) {
-        buf[offs++] = ((c >> 18)       ) | 0xf0;
-        buf[offs++] = ((c >> 12) & 0x3f) | 0x80;
-        buf[offs++] = ((c >> 6 ) & 0x3f) | 0x80;
-        buf[offs++] = ((c      ) & 0x3f) | 0x80;
-      } else {
-	ERR("invalid char");
-      }
-      n = ARG(n);
-    } else {
-      ERR("evalstring not Nil/Cons");
-    }
-  }
-  buf[offs] = 0;                /* in case we use it as a C string */
-  bs.size = offs;
-  bs.string = buf;
-  return bs;
-}
-
-/* Does not do UTF-8 encoding */
-struct bytestring
-evalbytestring(NODEPTR n)
-{
-  size_t sz = 100;
-  uint8_t *buf = MALLOC(sz);
-  size_t offs;
-  uvalue_t c;
-  NODEPTR x;
-  struct bytestring bs;
-
-  if (!buf)
-    memerr();
-  for (offs = 0;;) {
-    if (offs >= sz - 1) {
-      sz *= 2;
-      buf = REALLOC(buf, sz);
-      if (!buf)
-        memerr();
-    }
-    PUSH(n);                    /* protect list from GC */
-    n = evali(n);
-    POP(1);
-    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 */
-      PUSH(n);                  /* protect from GC */
-      c = evalint(ARG(x));
-      n = POPTOP();
-      buf[offs++] = c;
-      n = ARG(n);
-    } else {
-      //pp(stdout, n);
-      ERR("evalbytestring not Nil/Cons");
-    }
-  }
-  buf[offs] = 0;                /* in case we use it as a C string */
-  bs.size = offs;
-  bs.string = buf;
-  return bs;
-}
-
-struct bytestring
-bsreplicate(size_t size, uint8_t value)
-{
-  struct bytestring bs;
-  bs.size = size;
-  bs.string = MALLOC(size);
-  if (!bs.string)
-    memerr();
-  memset(bs.string, value, size);
-  return bs;
-}
-
-struct bytestring
-bsappend(struct bytestring p, struct bytestring q)
-{
-  struct bytestring r;
-  r.size = p.size + q.size;
-  r.string = MALLOC(r.size);
-  if (!r.string)
-    memerr();
-  memcpy(r.string, p.string, p.size);
-  memcpy((uint8_t *)r.string + p.size, q.string, q.size);
-  return r;
-}
-
-struct bytestring
-bsappenddot(struct bytestring p, struct bytestring q)
-{
-  struct bytestring r;
-  r.size = p.size + q.size + 1;
-  r.string = MALLOC(r.size);
-  if (!r.string)
-    memerr();
-  memcpy(r.string, p.string, p.size);
-  memcpy((uint8_t *)r.string + p.size, ".", 1);
-  memcpy((uint8_t *)r.string + p.size + 1, q.string, q.size);
-  return r;
-}
-
-/*
- * Compare bytestrings.
- * We can't use memcmp() directly for two reasons:
- *  - the two strings can have different lengths
- *  - the return value is only guaranteed to be ==0 or !=0
- */
-int
-bscompare(struct bytestring bsp, struct bytestring bsq)
-{
-  uint8_t *p = bsp.string;
-  uint8_t *q = bsq.string;
-  size_t len = bsp.size < bsq.size ? bsp.size : bsq.size;
-  while (len--) {
-    int r = (int)*p++ - (int)*q++;
-    if (r) {
-      /* Unequal bytes found. */
-      if (r < 0)
-        return -1;
-      if (r > 0)
-        return 1;
-      return 0;
-    }
-  }
-  /* Got to the end of the shorter string. */
-  /* The shorter string is considered smaller. */
-  if (bsp.size < bsq.size)
-    return -1;
-  if (bsp.size > bsq.size)
-    return 1;
-  return 0;
-}
-
-/* Compares anything, but really only works well on strings.
- * if p < q  return -1
- * if p > q  return 1
- * if p == q return 0
- *
- * As we compare we update the argument pointers with any
- * progress we make, in case we are interruped and resume from the top.
- *
- * XXX This is a rather dodgy comparison, since we are comparing
- * functions, and the same data type could plausibly get different
- * functions in the Scott encoding.
- * But we only use it for lists, and it seems to work fine.
- */
-int
-compare(NODEPTR cmp)
-{
-  stackptr_t stk = stack_ptr;
-#define CRET(x) do { stack_ptr = stk; return (x); } while(0)
-  value_t x, y;
-  flt_t xd, yd;
-  void *f, *g;
-  void (*ff)(void), (*fg)(void);
-  NODEPTR p, q;
-  NODEPTR *ap, *aq;
-  enum node_tag ptag, qtag;
-  int r;
-
-  /* Since FUN(cmp) can be shared, allocate a copy for it. */
-  GCCHECK(1);
-  FUN(cmp) = new_ap(FUN(FUN(cmp)), ARG(FUN(cmp)));
-  aq = &ARG(cmp);
-  ap = &ARG(FUN(cmp));
-
-  PUSH(*ap);
-  PUSH(*aq);
-  for(;;) {
-    if (stk == stack_ptr)
-      return 0;
-    q = evali(TOP(0));
-    p = evali(TOP(1));
-    POP(2);
-    if (stk == stack_ptr) {
-      /* We have made some progress, save this in the compare node. */
-      *ap = p;
-      *aq = q;
-    }
-
-    ptag = GETTAG(p);
-    qtag = GETTAG(q);
-    if (ptag != qtag) {
-      /* Hack to make Nil < Cons */
-      if (ptag == T_K && qtag == T_AP)
-        CRET(-1);
-      if (ptag == T_AP && qtag == T_K)
-        CRET(1);
-      CRET(ptag < qtag ? -1 : 1);
-    }
-    switch (ptag) {
-    case T_AP:
-      PUSH(ARG(p));             /* compare arg part later */
-      PUSH(ARG(q));
-      PUSH(FUN(p));             /* compare fun part now */
-      PUSH(FUN(q));
-      break;
-    case T_INT:
-    case T_IO_CCALL:
-      x = GETVALUE(p);
-      y = GETVALUE(q);
-      if (x < y)
-        CRET(-1);
-      if (x > y)
-        CRET(1);
-      break;
-    case T_DBL:
-      xd = GETDBLVALUE(p);
-      yd = GETDBLVALUE(q);
-      if (xd < yd)
-        CRET(-1);
-      if (xd > yd)
-        CRET(1);
-      break;
-    case T_PTR:
-      f = PTR(p);
-      g = PTR(q);
-      if (f < g)
-        CRET(-1);
-      if (f > g)
-        CRET(1);
-      break;
-    case T_FUNPTR:
-      ff = FUNPTR(p);
-      fg = FUNPTR(q);
-      if ((intptr_t)ff < (intptr_t)fg)
-        CRET(-1);
-      if ((intptr_t)ff > (intptr_t)fg)
-        CRET(1);
-      break;
-    case T_FORPTR:
-      {
-      struct forptr *fp = FORPTR(p);
-      struct forptr *fq = FORPTR(q);
-#if WANT_GMP
-      if (fp->finalizer->fptype == FP_MPZ && fq->finalizer->fptype == FP_MPZ) {
-        int i = mpz_cmp(fp->payload.string, fq->payload.string);
-        if (i < 0)
-          CRET(-1);
-        if (i > 0)
-          CRET(1);
-      } else
-#endif
-      if (fp->finalizer->fptype == FP_BSTR && fq->finalizer->fptype == FP_BSTR) {
-        r = bscompare(BSTR(p), BSTR(q));
-        if (r)
-          CRET(r);
-      } else {
-        f = fp->payload.string;
-        g = fq->payload.string;
-        if (f < g)
-          CRET(-1);
-        if (f > g)
-          CRET(1);
-      }
-      }
-      break;
-    case T_ARR:
-      if (ARR(p) < ARR(q))
-        CRET(-1);
-      if (ARR(p) > ARR(q))
-        CRET(1);
-      break;
-    default:
-      break;
-    }
-  }
-#undef CRET
-}
-
-void
-rnf_rec(bits_t *done, NODEPTR n)
-{
- top:
-  if (test_bit(done, n))
-    return;
-  set_bit(done, n);
-  n = evali(n);
-  if (GETTAG(n) == T_AP) {
-    PUSH(ARG(n));               /* protect from GC */
-    rnf_rec(done, FUN(n));
-    n = POPTOP();
-    goto top;
-  }
-}
-
-/* Used to detect calls to error while we are already in a call to error. */
-int in_raise = 0;
-
-/* 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. */
-  bits_t *done = calloc(free_map_nwords, sizeof(bits_t));
-  if (!done)
-    memerr();
-  if (doing_rnf)
-    ERR("recursive rnf()");
-  doing_rnf = (int)noerr;
-  rnf_rec(done, n);
-  doing_rnf = 0;
-  FREE(done);
-}
-
-void execio(NODEPTR *);
-
-/* Evaluate a node, returns when the node is in WHNF. */
-NODEPTR
-evali(NODEPTR an)
-{
-  NODEPTR n = an;
-  stackptr_t stk = stack_ptr;
-  NODEPTR x, y, z, w;
-  value_t xi, yi, r;
-  struct forptr *xfp;
-#if WANT_FLOAT
-  flt_t xd, rd;
-#endif  /* WANT_FLOAT */
-  char *msg;
-  heapoffs_t l;
-  enum node_tag tag;
-  struct ioarray *arr;
-  struct bytestring xbs, ybs, rbs;
-
-#if MAXSTACKDEPTH
-  counter_t old_cur_c_stack = cur_c_stack;
-  if (++cur_c_stack > max_c_stack)
-    max_c_stack = cur_c_stack;
-#endif
-
-/* Reset stack pointer and return. */
-#define RET do { goto ret; } while(0)
-#define HASNARGS(n) (stack_ptr - stk >= (n))
-/* Check that there are at least n arguments, return if not. */
-#define CHECK(n) do { if (!HASNARGS(n)) RET; } while(0)
-
-#define SETIND(n, x) SETINDIR(n, x)
-#define GOIND(x) do { NODEPTR _x = (x); SETIND(n, _x); n = _x; goto top; } while(0)
-#define GOAP(f,a) do { FUN((n)) = (f); ARG((n)) = (a); goto ap; } while(0)
-#define GOAP2(f,a,b) do { FUN((n)) = new_ap((f), (a)); ARG((n)) = (b); goto ap2; } 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)
-#define CHKARG5 do { CHECK(5); POP(5); n = TOP(-1); /*v = ARG(n);*/ w = ARG(TOP(-2)); z = ARG(TOP(-3)); y = ARG(TOP(-4)); x = ARG(TOP(-5)); } 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 SETPTR(n,r)    do { SETTAG((n), T_PTR); PTR(n) = (r); } while(0)
-#define SETFUNPTR(n,r) do { SETTAG((n), T_FUNPTR); FUNPTR(n) = (r); } while(0)
-#define SETFORPTR(n,r) do { SETTAG((n), T_FORPTR); FORPTR(n) = (r); } while(0)
-#define SETBSTR(n,r)   do { SETTAG((n), T_FORPTR); FORPTR(n) = (r); FORPTR(n)->finalizer->fptype = FP_BSTR; } while(0)
-#define OPINT1(e)      do { CHECK(1); xi = evalint(ARG(TOP(0)));                            e; POP(1); n = TOP(-1); } while(0);
-#define OPPTR2(e)      do { CHECK(2); xp = evalptr(ARG(TOP(0))); yp = evalptr(ARG(TOP(1))); e; POP(2); n = TOP(-1); } while(0);
-#define CMPP(op)       do { OPPTR2(r = xp op yp); GOIND(r ? combTrue : combFalse); } while(0)
-
- top:
-  l = LABEL(n);
-  if (l < T_IO_STDIN) {
-    /* The node is one of the permanent nodes; the address offset is the tag */
-    tag = l;
-  } else {
-    /* Heap allocated node */
-    if (ISINDIR(n)) {
-      /* Follow indirections */
-      NODEPTR on = n;
-      do {
-        n = GETINDIR(n);
-      } while(ISINDIR(n));
-      SETINDIR(on, n);          /* and short-circuit them */
-    }
-    tag = GETTAG(n);
-  }
-  COUNT(num_reductions);
-  switch (tag) {
-  ap2:         PUSH(n); n = FUN(n);
-  ap:
-  case T_AP:   PUSH(n); n = FUN(n); goto top;
-
-  case T_INT:  RET;
-  case T_DBL:  RET;
-  case T_PTR:  RET;
-  case T_FUNPTR: RET;
-  case T_FORPTR: RET;
-  case T_ARR:  RET;
-  case T_BADDYN: ERR1("FFI unknown %s", CSTR(n));
-
-  /*
-   * Some of these reductions, (e.g., Z x y = K (x y)) are there to avoid
-   * that increase in arity that some "optimizations" in Abstract.hs
-   * stop reductions from happening.  This can be important for "full laziness".
-   * In practice, these reductions almost never happen, but there they are anyway. :)
-   */
-  case T_S:    GCCHECK(2); CHKARG3; GOAP2(x, z, new_ap(y, z));                            /* S x y z = x z (y z) */
-  case T_SS:   GCCHECK(3); CHKARG4; GOAP2(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:   if (!HASNARGS(4)) {
-               GCCHECK(1); CHKARG2; COUNT(red_bb); GOAP(combB, new_ap(x, y)); } else {    /* B' x y = B (x y) */
-               GCCHECK(2); CHKARG4; GOAP2(x, y, new_ap(z, w)); }                          /* B' x y z w = x y (z w) */
-  case T_Z:    if (!HASNARGS(3)) {
-               GCCHECK(1); CHKARG2; COUNT(red_z); GOAP(combK, new_ap(x, y)); } else {     /* Z x y = K (x y) */
-                           CHKARG3; GOAP(x, y); }                                         /* Z x y z = x y */
-//case T_J:                CHKARG3; GOAP(z, x);                                           /* J x y z = z x */
-  case T_C:    GCCHECK(1); CHKARG3; GOAP2(x, z, y);                                       /* C x y z = x z y */
-  case T_CC:   GCCHECK(2); CHKARG4; GOAP2(x, new_ap(y, w), z);                            /* C' x y z w = x (y w) z */
-  case T_P:    GCCHECK(1); CHKARG3; GOAP2(z, x, y);                                       /* P x y z = z x y */
-  case T_R:    if(!HASNARGS(3)) {
-               GCCHECK(1); CHKARG2; COUNT(red_r); GOAP2(combC, y, x); } else {            /* R x y = C y x */
-               GCCHECK(1); CHKARG3; GOAP2(y, z, x); }                                     /* R x y z = y z x */
-  case T_O:    GCCHECK(1); CHKARG4; GOAP2(w, x, y);                                       /* O x y z w = w x y */
-  case T_K2:   if (!HASNARGS(3)) {
-                           CHKARG2; COUNT(red_k2); GOAP(combK, x); } else {               /* K2 x y = K x */
-                           CHKARG3; GOIND(x); }                                           /* K2 x y z = *x */
-  case T_K3:   if (!HASNARGS(4)) {
-                           CHKARG2; COUNT(red_k3); GOAP(combK2, x); } else {              /* K3 x y = K2 x */
-                           CHKARG4; GOIND(x); }                                           /* K3 x y z w = *x */
-  case T_K4:   if (!HASNARGS(5)) {
-                           CHKARG2; COUNT(red_k4); GOAP(combK3, x); } else {              /* K4 x y = K3 x */
-                           CHKARG5; GOIND(x); }                                           /* K4 x y z w v = *x */
-  case T_CCB:  if (!HASNARGS(4)) {
-               GCCHECK(2); CHKARG3; COUNT(red_ccb); GOAP2(combB, new_ap(x, z), y);} else{ /* C'B x y z = B (x z) y */
-               GCCHECK(2); CHKARG4; GOAP2(x, z, new_ap(y, w)); }                          /* C'B x y z w = x z (y w) */
-
-    /*
-     * Strict primitives require evaluating the arguments before we can proceed.
-     * The easiest way to do this is to just recursively call evali() for each argument.
-     * The drawback of this is that it uses a lot of C stack.  (E.g., recompiling MicroHs
-     * uses a stack depth of 1800).
-     * Instead we use the following scheme:
-     *  When we find a strict binary (int) primitive we push T_BININT2,
-     *  set n=second argument.
-     *  Continue evaluation of n.
-     *  When n is finally evaluated and we are about to return we check if the stack top is T_BININT2.
-     *  If so, change the stack top to T_BININT1,
-     *  set n=first argument.
-     *  Continue evaluation of n.
-     *  When n is finally evaluated and we are about to return we check if the stack top is T_BININT1.
-     *  If so, we know that both arguments are now evaluated, and we perform the strict operation.
-     *
-     * On my desktop machine this is about 3% slower, on my laptop (Apple M1) it is about 3% faster.
-     *
-     * Pictorially for BININT
-     *  Before the code below:
-     *  ----
-     *  | --------> @
-     *  ----       / \
-     *  | ------> @   y
-     *  ----     / \
-     *  n ----> ADD x
-     *
-     * After
-     *  ----
-     *  | --------> @
-     *  ----       / \
-     *  | ------> @   y
-     *  ----     / \
-     *  | ->BI2 ADD x
-     *  ----        ^
-     *  n ----------|
-     *
-     *  x becomes an INT, stack is not empty, BININT2 found on top
-     *  ----
-     *  | --------> @
-     *  ----       / \
-     *  | ------> @   y
-     *  ----     / \
-     *  | ->BI2 ADD INT
-     *  ----        ^
-     *  n ----------|
-     *
-     *  After
-     *  ----
-     *  | --------> @
-     *  ----       / \
-     *  | ------> @   y
-     *  ----     / \    \
-     *  | ->BI1 ADD INT  |
-     *  ----             |
-     *  n ---------------|
-     *
-     *  y becomes an INT, stack is not empty, BININT1 found on top
-     *  do arithmetic
-     *  ----
-     *  | --------> @
-     *  ----       / \
-     *  | ------> @   INT
-     *  ----     / \    \
-     *  | ->BI1 ADD INT  |
-     *  ----             |
-     *  n ---------------|
-     *
-     *  ----
-     *  n -------> INT(x+y)
-     */
-  case T_ADD:
-  case T_SUB:
-  case T_MUL:
-  case T_QUOT:
-  case T_REM:
-  case T_SUBR:
-  case T_UQUOT:
-  case T_UREM:
-  case T_AND:
-  case T_OR:
-  case T_XOR:
-  case T_SHL:
-  case T_SHR:
-  case T_ASHR:
-  case T_EQ:
-  case T_NE:
-  case T_LT:
-  case T_LE:
-  case T_GT:
-  case T_GE:
-  case T_ICMP:
-  case T_ULT:
-  case T_ULE:
-  case T_UGT:
-  case T_UGE:
-  case T_UCMP:
-    CHECK(2);
-    n = ARG(TOP(1));
-    if (GETTAG(n) == T_INT) {
-      n = ARG(TOP(0));
-      PUSH(combBININT1);
-      if (GETTAG(n) == T_INT)
-        goto binint1;
-    } else {
-      PUSH(combBININT2);
-    }
-    goto top;
-  case T_NEG:
-  case T_INV:
-  case T_POPCOUNT:
-  case T_CLZ:
-  case T_CTZ:
-    CHECK(1);
-    n = ARG(TOP(0));
-    PUSH(combUNINT1);
-    goto top;
-
-#if WANT_FLOAT
-  case T_FADD:
-  case T_FSUB:
-  case T_FMUL:
-  case T_FDIV:
-  case T_FEQ:
-  case T_FNE:
-  case T_FLT:
-  case T_FLE:
-  case T_FGT:
-  case T_FGE:
-    CHECK(2);
-    n = ARG(TOP(1));
-    PUSH(combBINDBL2);
-    goto top;
-  case T_FNEG:
-    CHECK(1);
-    n = ARG(TOP(0));
-    PUSH(combUNDBL1);
-    goto top;
-
-  case T_ITOF: OPINT1(rd = (flt_t)xi); SETDBL(n, rd); RET;
-  case T_FREAD:
-    CHECK(1);
-    msg = evalstring(ARG(TOP(0))).string;
-#if WORD_SIZE == 64
-    xd = strtod(msg, NULL);
-#elif WORD_SIZE == 32
-    xd = strtof(msg, NULL);
-#else  /* WORD_SIZE */
-#error Unknown WORD_SIZE
-#endif  /* WORD_SIZE */
-    FREE(msg);
-    POP(1);
-    n = TOP(-1);
-    SETDBL(n, xd);
-    RET;
-
-  case T_FSHOW:
-    CHECK(1);
-    xd = evaldbl(ARG(TOP(0)));
-    POP(1);
-    n = TOP(-1);
-    GOIND(dblToString(xd));
-#endif  /* WANT_FLOAT */
-
-  case T_BSAPPEND:
-  case T_BSAPPENDDOT:
-  case T_BSEQ:
-  case T_BSNE:
-  case T_BSLT:
-  case T_BSLE:
-  case T_BSGT:
-  case T_BSGE:
-  case T_BSCMP:
-    CHECK(2);
-    n = ARG(TOP(1));
-    PUSH(combBINBS2);
-    goto top;
-
-  /* Retag a word sized value, keeping the value bits */
-#define CONV(t) do { CHECK(1); x = evali(ARG(TOP(0))); n = POPTOP(); SETTAG(n, t); SETVALUE(n, GETVALUE(x)); RET; } while(0)
-  case T_TODBL: CONV(T_DBL);
-  case T_TOINT: CONV(T_INT);
-  case T_TOPTR: CONV(T_PTR);
-  case T_TOFUNPTR: CONV(T_FUNPTR);
-#undef CONV
-
-  case T_FPADD: CHECK(2); xfp = evalforptr(ARG(TOP(0))); yi = evalint(ARG(TOP(1))); POP(2); n = TOP(-1); SETFORPTR(n, addForPtr(xfp, yi)); RET;
-  case T_FP2P:
-    CHECK(1);
-    xfp = evalforptr(ARG(TOP(0)));
-    POP(1);
-    n = TOP(-1);
-    SETPTR(n, xfp->payload.string);
-    RET;
-
-  case T_FP2BS:
-    CHECK(2);
-    xfp = evalforptr(ARG(TOP(0)));
-    xi = evalint(ARG(TOP(1)));
-    POP(2);
-    n = TOP(-1);
-    xfp->payload.size = xi;
-    SETBSTR(n, xfp);
-    RET;
-
-  case T_BS2FP:
-    CHECK(1);
-    xfp = evalbstr(ARG(TOP(0)));
-    POP(1);
-    n = TOP(-1);
-    SETFORPTR(n, xfp);
-    RET;
-
-  case T_ARR_EQ:
-    {
-      CHECK(2);
-      x = evali(ARG(TOP(0)));
-      arr = ARR(x);
-      y = evali(ARG(TOP(1)));
-      POP(2);
-      n = TOP(-1);
-      GOIND(arr == ARR(y) ? combTrue : combFalse);
-    }
-
-  case T_BSTOUTF8:
-    {
-      CHECK(1);
-      n = ARG(TOP(0));
-      /* Zap the pointer to the list so it can be GC:ed.
-       * The actual list is protected from GC by evalbytestring().
-       */
-      // ARG(TOP(0)) = combK;
-      struct bytestring bs = evalstring(n);
-      POP(1);
-      n = TOP(-1);
-      SETBSTR(n, mkForPtrFree(bs));
-      RET;
-    }
-
-  case T_BSHEADUTF8:
-    CHECK(1);
-    xfp = evalbstr(ARG(TOP(0)));
-    POP(1);
-    n = TOP(-1);
-    SETINT(n, headutf8(xfp->payload, (void**)0));
-    RET;
-
-  case T_BSTAILUTF8:
-    CHECK(1);
-    xfp = evalbstr(ARG(TOP(0)));
-    POP(1);
-    n = TOP(-1);
-    { void *out;
-      (void)headutf8(xfp->payload, &out);           /* skip one UTF8 character */
-      xi = (char*)out - (char*)xfp->payload.string; /* offset */
-      yi = xfp->payload.size - xi;                  /* remaining length */
-      SETBSTR(n, bssubstr(xfp, xi, yi));            /* make a substring */
-    }
-    RET;
-
-  case T_BSFROMUTF8:
-    if (doing_rnf) RET;
-    CHECK(1);
-
-    xfp = evalbstr(ARG(TOP(0)));
-    GCCHECK(strNodes(xfp->payload.size));
-    POP(1);
-    n = TOP(-1);
-    //printf("T_FROMUTF8 x = %p fp=%p payload.string=%p\n", x, x->uarg.uuforptr, x->uarg.uuforptr->payload.string);
-    GOIND(mkStringU(xfp->payload));
-
-  case T_BSUNPACK:
-    if (doing_rnf) RET;
-    CHECK(1);
-    struct forptr *xfp = evalbstr(ARG(TOP(0)));
-    GCCHECK(strNodes(xfp->payload.size));
-    POP(1);
-    n = TOP(-1);
-    GOIND(bsunpack(xfp->payload));
-
-  case T_BSPACK:
-    CHECK(1);
-    n = ARG(TOP(0));
-    /* Zap the pointer to the list so it can be GC:ed.
-     * The actual list is protected from GC by evalbytestring().
-     */
-    ARG(TOP(0)) = combK;
-    struct bytestring rbs = evalbytestring(n);
-    POP(1);
-    n = TOP(-1);
-    SETBSTR(n, mkForPtrFree(rbs));
-    RET;
-
-  case T_BSREPLICATE:
-    CHECK(2);
-    xi = evalint(ARG(TOP(0)));
-    yi = evalint(ARG(TOP(1)));
-    POP(2);
-    n = TOP(-1);
-    SETBSTR(n, mkForPtrFree(bsreplicate(xi, yi)));
-    RET;
-
-  case T_BSLENGTH:
-    CHECK(1);
-    xfp = evalbstr(ARG(TOP(0)));
-    POP(1);
-    n = TOP(-1);
-    SETINT(n, xfp->payload.size);
-    RET;
-
-  case T_BSSUBSTR:
-    CHECK(3);
-    xfp = evalbstr(ARG(TOP(0)));
-    xi = evalint(ARG(TOP(1)));
-    yi = evalint(ARG(TOP(2)));
-    POP(3);
-    n = TOP(-1);
-    SETBSTR(n, bssubstr(xfp, xi, yi));
-    RET;
-
-  case T_BSINDEX:
-    CHECK(2);
-    xfp = evalbstr(ARG(TOP(0)));
-    xi = evalint(ARG(TOP(1)));
-    POP(2);
-    n = TOP(-1);
-    SETINT(n, ((uint8_t *)xfp->payload.string)[xi]);
-    RET;
-
-  case T_RAISE:
-    if (doing_rnf) RET;
-    if (cur_handler) {
-      /* Pass the exception to the handler */
-      CHKARG1;
-      cur_handler->hdl_exn = x;
-      longjmp(cur_handler->hdl_buf, 1);
-    } else {
-      /* No handler:
-       * First convert the exception to a string by calling displaySomeException.
-       * The display function compiles to combShowExn, so we need to build
-       * (combShowExn x) and evaluate it.
-       */
-      if (in_raise) {
-        ERR("recursive error");
-        EXIT(1);
-      }
-      in_raise = 1;
-      CHECK(1);
-      GCCHECK(1);
-      //TOP(0) = new_ap(combShowExn, TOP(0));
-      FUN(TOP(0)) = combShowExn; /* TOP(0) = (combShowExn exn) */
-      x = evali(TOP(0));        /* evaluate it */
-      msg = evalstring(x).string;   /* and convert to a C string */
-      POP(1);
-#if WANT_STDIO
-      /* A horrible hack until we get proper exceptions */
-      if (strcmp(msg, "ExitSuccess") == 0) {
-        EXIT(0);
-      } else {
-        fprintf(stderr, "mhs: %s\n", msg);
-        EXIT(1);
-      }
-#else  /* WANT_STDIO */
-      ERR1("mhs error: %s", msg);
-#endif  /* WANT_STDIO */
-    }
-
-
-  case T_SEQ:  CHECK(2); evali(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(TOP(1)); POP(2); n = TOP(-1); GOIND(r==0 ? combTrue : combFalse);
-  case T_COMPARE:
-    CHECK(2); r = compare(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:
-    CHECK(1);
-    if (doing_rnf) RET;
-    execio(&ARG(TOP(0)));       /* run IO action */
-    x = ARG(TOP(0));            /* should be RETURN e */
-    if (GETTAG(x) != T_AP || GETTAG(FUN(x)) != T_IO_RETURN)
-      ERR("PERFORMIO");
-    POP(1);
-    n = TOP(-1);
-    GOIND(ARG(x));
-
-  case T_IO_CCBIND:           /* We should never have to reduce this */
-  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_GETARGREF:
-  case T_IO_CCALL:
-  case T_CATCH:
-  case T_NEWCASTRINGLEN:
-  case T_PACKCSTRING:
-  case T_PACKCSTRINGLEN:
-  case T_ARR_ALLOC:
-  case T_ARR_COPY:
-  case T_ARR_SIZE:
-  case T_ARR_READ:
-  case T_ARR_WRITE:
-  case T_FPNEW:
-  case T_FPFIN:
-    //  case T_FPSTR:
-  case T_IO_GC:
-    RET;
-
-  case T_DYNSYM:
-    /* A dynamic FFI lookup */
-    CHECK(1);
-    msg = evalstring(ARG(TOP(0))).string;
-    GCCHECK(1);
-    x = ffiNode(msg);
-    FREE(msg);
-    POP(1);
-    n = TOP(-1);
-    GOIND(x);
-
-#if WANT_TICK
-  case T_TICK:
-    xi = GETVALUE(n);
-    CHKARG1;
-    dotick(xi);
-    GOIND(x);
-#endif
-
-  default:
-    ERR1("eval tag %s", tag_names[GETTAG(n)]);
-  }
-
-
- ret:
-  if (stack_ptr != stk) {
-    // In this case, n was an AP that got pushed and potentially
-    // updated.
-    uvalue_t xu, yu, ru;
-#if WANT_FLOAT
-    flt_t xd, yd, rd;
-#endif  /* WANT_FLOAT */
-    NODEPTR p;
-
-    tag = GETTAG(TOP(0));
-    switch (tag) {
-    case T_BININT2:
-      n = ARG(TOP(1));
-      TOP(0) = combBININT1;
-      goto top;
-
-    case T_BININT1:
-      /* First argument */
-#if SANITY
-      if (GETTAG(n) != T_INT)
-        ERR("BININT 0");
-#endif  /* SANITY */
-    binint1:
-      xu = (uvalue_t)GETVALUE(n);
-      /* Second argument */
-      y = ARG(TOP(2));
-      while (GETTAG(y) == T_IND)
-        y = GETINDIR(y);
-#if SANITY
-      if (GETTAG(y) != T_INT)
-        ERR("BININT 1");
-#endif  /* SANITY */
-      yu = (uvalue_t)GETVALUE(y);
-      p = FUN(TOP(1));
-      POP(3);
-      n = TOP(-1);
-    binint:
-      switch (GETTAG(p)) {
-      case T_IND:   p = GETINDIR(p); goto binint;
-      case T_ADD:   ru = xu + yu; break;
-      case T_SUB:   ru = xu - yu; break;
-      case T_MUL:   ru = xu * yu; break;
-      case T_QUOT:  ru = (uvalue_t)((value_t)xu / (value_t)yu); break;
-      case T_REM:   ru = (uvalue_t)((value_t)xu % (value_t)yu); break;
-      case T_SUBR:  ru = yu - xu; break;
-      case T_UQUOT: ru = xu / yu; break;
-      case T_UREM:  ru = xu % yu; break;
-      case T_AND:   ru = xu & yu; break;
-      case T_OR:    ru = xu | yu; break;
-      case T_XOR:   ru = xu ^ yu; break;
-      case T_SHL:   ru = xu << yu; break;
-      case T_SHR:   ru = xu >> yu; break;
-      case T_ASHR:  ru = (uvalue_t)((value_t)xu >> yu); break;
-
-      case T_EQ:    GOIND(xu == yu ? combTrue : combFalse);
-      case T_NE:    GOIND(xu != yu ? combTrue : combFalse);
-      case T_ULT:   GOIND(xu <  yu ? combTrue : combFalse);
-      case T_ULE:   GOIND(xu <= yu ? combTrue : combFalse);
-      case T_UGT:   GOIND(xu >  yu ? combTrue : combFalse);
-      case T_UGE:   GOIND(xu >= yu ? combTrue : combFalse);
-      case T_UCMP:  GOIND(xu <  yu ? combLT   : xu > yu ? combGT : combEQ);
-      case T_LT:    GOIND((value_t)xu <  (value_t)yu ? combTrue : combFalse);
-      case T_LE:    GOIND((value_t)xu <= (value_t)yu ? combTrue : combFalse);
-      case T_GT:    GOIND((value_t)xu >  (value_t)yu ? combTrue : combFalse);
-      case T_GE:    GOIND((value_t)xu >= (value_t)yu ? combTrue : combFalse);
-      case T_ICMP:  GOIND((value_t)xu <  (value_t)yu ? combLT   : (value_t)xu > (value_t)yu ? combGT : combEQ);
-
-      default:
-        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
-        ERR("BININT");
-      }
-      SETINT(n, (value_t)ru);
-      goto ret;
-
-    case T_UNINT1:
-      /* The argument */
-#if SANITY
-      if (GETTAG(n) != T_INT)
-        ERR("UNINT 0");
-#endif
-      xu = (uvalue_t)GETVALUE(n);
-      p = FUN(TOP(1));
-      POP(2);
-      n = TOP(-1);
-    unint:
-      switch (GETTAG(p)) {
-      case T_IND:      p = GETINDIR(p); goto unint;
-      case T_NEG:      ru = -xu; break;
-      case T_INV:      ru = ~xu; break;
-      case T_POPCOUNT: ru = POPCOUNT(xu); break;
-      case T_CLZ:      ru = CLZ(xu); break;
-      case T_CTZ:      ru = CTZ(xu); break;
-      default:
-        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
-        ERR("UNINT");
-      }
-      SETINT(n, (value_t)ru);
-      goto ret;
-
-#if WANT_FLOAT
-    case T_BINDBL2:
-      n = ARG(TOP(1));
-      TOP(0) = combBINDBL1;
-      goto top;
-
-    case T_BINDBL1:
-      /* First argument */
-#if SANITY
-      if (GETTAG(n) != T_DBL)
-        ERR("BINDBL 0");
-#endif  /* SANITY */
-      xd = GETDBLVALUE(n);
-      /* Second argument */
-      y = ARG(TOP(2));
-      while (GETTAG(y) == T_IND)
-        y = GETINDIR(y);
-#if SANITY
-      if (GETTAG(y) != T_DBL)
-        ERR("BINDBL 1");
-#endif  /* SANITY */
-      yd = GETDBLVALUE(y);
-      p = FUN(TOP(1));
-      POP(3);
-      n = TOP(-1);
-    bindbl:
-      switch (GETTAG(p)) {
-      case T_IND:   p = GETINDIR(p); goto bindbl;
-      case T_FADD:  rd = xd + yd; break;
-      case T_FSUB:  rd = xd - yd; break;
-      case T_FMUL:  rd = xd * yd; break;
-      case T_FDIV:  rd = xd / yd; break;
-
-      case T_FEQ:   GOIND(xd == yd ? combTrue : combFalse);
-      case T_FNE:   GOIND(xd != yd ? combTrue : combFalse);
-      case T_FLT:   GOIND(xd <  yd ? combTrue : combFalse);
-      case T_FLE:   GOIND(xd <= yd ? combTrue : combFalse);
-      case T_FGT:   GOIND(xd >  yd ? combTrue : combFalse);
-      case T_FGE:   GOIND(xd >= yd ? combTrue : combFalse);
-
-      default:
-        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
-        ERR("BINDBL");
-      }
-      SETDBL(n, rd);
-      goto ret;
-
-    case T_UNDBL1:
-      /* The argument */
-#if SANITY
-      if (GETTAG(n) != T_DBL)
-        ERR("UNDBL 0");
-#endif
-      xd = GETDBLVALUE(n);
-      p = FUN(TOP(1));
-      POP(2);
-      n = TOP(-1);
-    undbl:
-      switch (GETTAG(p)) {
-      case T_IND:   p = GETINDIR(p); goto undbl;
-      case T_FNEG:  rd = -xd; break;
-      default:
-        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
-        ERR("UNDBL");
-      }
-      SETDBL(n, rd);
-      goto ret;
-#endif  /* WANT_FLOAT */
-
-    case T_BINBS2:
-      n = ARG(TOP(1));
-      TOP(0) = combBINBS1;
-      goto top;
-
-    case T_BINBS1:
-      /* First argument */
-#if SANITY
-      if (GETTAG(n) != T_FORPTR || FORPTR(n)->finalizer->fptype != FP_BSTR)
-        ERR("BINBS 0");
-#endif  /* SANITY */
-      xbs = BSTR(n);
-      /* Second argument */
-      y = ARG(TOP(2));
-      while (GETTAG(y) == T_IND)
-        y = GETINDIR(y);
-#if SANITY
-      if (GETTAG(y) != T_FORPTR || FORPTR(y)->finalizer->fptype != FP_BSTR)
-        ERR("BINBS 1");
-#endif  /* SANITY */
-      ybs = BSTR(y);
-      p = FUN(TOP(1));
-      POP(3);
-      n = TOP(-1);
-    binbs:
-      switch (GETTAG(p)) {
-      case T_IND:    p = GETINDIR(p); goto binbs;
-
-      case T_BSAPPEND: rbs = bsappend(xbs, ybs); break;
-      case T_BSAPPENDDOT: rbs = bsappenddot(xbs, ybs); break;
-      case T_BSEQ:   GOIND(bscompare(xbs, ybs) == 0 ? combTrue : combFalse);
-      case T_BSNE:   GOIND(bscompare(xbs, ybs) != 0 ? combTrue : combFalse);
-      case T_BSLT:   GOIND(bscompare(xbs, ybs) <  0 ? combTrue : combFalse);
-      case T_BSLE:   GOIND(bscompare(xbs, ybs) <= 0 ? combTrue : combFalse);
-      case T_BSGT:   GOIND(bscompare(xbs, ybs) >  0 ? combTrue : combFalse);
-      case T_BSGE:   GOIND(bscompare(xbs, ybs) >= 0 ? combTrue : combFalse);
-      case T_BSCMP:  r = bscompare(xbs, ybs); GOIND(r < 0 ? combLT : r > 0 ? combGT : combEQ);
-
-      default:
-        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
-        ERR("BINBS");
-      }
-      SETBSTR(n, mkForPtrFree(rbs));
-      goto ret;
-
-    default:
-      stack_ptr = stk;
-      n = TOP(-1);
-    }
-  }
-#if MAXSTACKDEPTH
-  cur_c_stack = old_cur_c_stack; /* reset rather than counting down, in case of longjump */
-#endif
-  return n;
-}
-
-/* This is the interpreter for the IO monad operations.
- *
- * Assuming every graph rewrite is atomic we want the graph
- * to always represent the rest of the program to run.
- * To this end, we need to mutate the graph every time
- * an IO operation has been performed to make sure we don't
- * execute it again.
- * To have a cell that is safe to mutate, we allocate a new
- * application on entry to execio().
- * Given the call execio(np) we allocate this graph, top = BIND (*np) RETURN.
- * I.e.
- *          @
- *         / \
- *        @  RETURN
- *       / \
- *    BIND (*np) 
- * and make np point to it.
- * This graph will be updated continuously as we execute IO actions.
- *
- * Invariant: the second argument to this BIND is always either RETURN
- * or a C'BIND.  The second argument to C'BIND has the same invariant.
- * C'BIND has the reduction rule (which is normally never used): 
- *   C'BIND x y z = BIND (x z) y
- *
- * This is the cycle of the execio loop:
- *  again:
- *   given top = BIND n q
- *   eval(n)
- *   case n
- *     BIND r s:  rewrite to top := BIND r (C'BIND s q)  -- (r >>= s) >>= q  -->  r >>= (\ x -> s x >>= q)
- *     THEN r s:  ... K s ...
- *     otherwise: res = execute n
- *       case q
- *         RETURN:     rewrite to  top := RETURN res;  return to caller
- *         C'BIND r s: rewrite to  top := BIND (r res) s; goto again
- */
-void
-execio(NODEPTR *np)
-{
-  stackptr_t stk = stack_ptr;
-  NODEPTR f, x, n, q, r, s, res, top1;
-  char *cstr;
-  struct handler *h;
-#if WANT_STDIO
-  void *ptr;
-  int hdr;
-#endif  /* WANT_STDIO */
-  NODEPTR top;
-  enum node_tag tag;
-  heapoffs_t l;
-
-/* IO operations need all arguments, anything else should not happen. */
-#define CHECKIO(n) do { if (stack_ptr - stk != (n)+1) {/*printf("\nLINE=%d\n", __LINE__);*/ 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)
-#define RETIO(p) do { stack_ptr = stk; res = (p); goto rest; } while(0)
-#define IOASSERT(p,s) do { if (!(p)) ERR("IOASSERT " s); } while(0)
-
-  GCCHECK(2);
-  top = new_ap(new_ap(combIOBIND, *np), combIORETURN);
-  *np = top;
-
- start:
-  //dump("start", top);
-  IOASSERT(stack_ptr == stk, "start");
-  //ppmsg("n before = ", ARG(FUN(top)));
-  n = evali(ARG(FUN(top)));     /* eval(n) */
-  //ppmsg("n after  = ", n);
-  if (GETTAG(n) == T_AP && GETTAG(top1 = indir(&FUN(n))) == T_AP) {
-    switch (GETTAG(indir(&FUN(top1)))) {
-    case T_IO_BIND:
-      GCCHECKSAVE(n, 2);
-      s = ARG(n);
-    bind:
-      q = ARG(top);
-      r = ARG(top1);
-      ARG(FUN(top)) = r;
-      ARG(top) = x = new_ap(new_ap(combIOCCBIND, s), q);
-      goto start;
-    case T_IO_THEN:
-      GCCHECKSAVE(n, 3);
-      s = new_ap(combFalse, ARG(n));
-      goto bind;
-    default:
-      break;
-    }
-  }
-  goto execute;
-
- rest:                          /* result is in res */
-  //ppmsg("res=", res);
-  q = ARG(top);
-  //ppmsg("q=", q);
-  if (GETTAG(q) == T_IO_RETURN) {
-    /* execio is done */
-    FUN(top) = combIORETURN;
-    ARG(top) = res;
-    IOASSERT(stack_ptr == stk, "stk");
-    return;
-  }
-  /* not done, it must be a C'BIND */
-  GCCHECKSAVE(res, 1);
-  IOASSERT(GETTAG(q) == T_AP && GETTAG(FUN(q)) == T_AP && GETTAG(FUN(FUN(q))) == T_IO_CCBIND, "rest-AP");
-  r = ARG(FUN(q));
-  s = ARG(q);
-  ARG(FUN(top)) = new_ap(r, res);
-  ARG(top) = s;
-  goto start;
-
- execute:
-  PUSH(n);
-  for(;;) {
-    COUNT(num_reductions);
-    //printf("execute switch %s\n", tag_names[GETTAG(n)]);
-
-    l = LABEL(n);
-    if (l < T_IO_STDIN) {
-      /* The node is one of the permanent nodes; the address offset is the tag */
-      tag = l;
-    } else {
-      /* Heap allocated node */
-      if (ISINDIR(n)) {
-        /* Follow indirections */
-        NODEPTR on = n;
-        do {
-          n = GETINDIR(n);
-        } while(ISINDIR(n));
-        SETINDIR(on, n);          /* and short-circuit them */
-      }
-      tag = GETTAG(n);
-    }
-
-    switch (tag) {
-    case T_AP:
-      n = FUN(n);
-      PUSH(n);
-      break;
-    case T_IO_BIND:
-      ERR("T_IO_BIND");
-    case T_IO_THEN:
-      ERR("T_IO_THEN");
-    case T_IO_CCBIND:
-      ERR("T_IO_CCBIND");
-    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);
-      gc();                     /* DUBIOUS: do a GC to get possible GC reductions */
-      ptr = (struct BFILE*)evalptr(ARG(TOP(1)));
-      x = evali(ARG(TOP(2)));
-      //x = ARG(TOP(1));
-      printb(ptr, x, hdr);
-      putb('\n', ptr);
-      RETIO(combUnit);
-    case T_IO_DESERIALIZE:
-      CHECKIO(1);
-      ptr = (struct BFILE*)evalptr(ARG(TOP(1)));
-      gc();                     /* make sure we have room.  GC during parse is dodgy. */
-      n = parse_top(ptr);
-      RETIO(n);
-#endif
-#if WANT_ARGS
-    case T_IO_GETARGREF:
-      CHECKIO(0);
-      n = alloc_node(T_ARR);
-      ARR(n) = argarray;
-      RETIO(n);
-#endif
-
-    case T_IO_CCALL:
-      {
-        int a = (int)GETVALUE(n);
-        funptr_t f = FFI_IX(a).ffi_fun;
-        GCCHECK(1);             /* room for placeholder */
-        PUSH(mkFlt(0.0));       /* placeholder for result, protected from GC */
-        f(stk);                 /* call FFI function */
-        n = TOP(0);             /* pop actual result */
-        RETIO(n);               /* and this is the result */
-      }
-
-    case T_CATCH:
-      {
-        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);
-          ARG(FUN(top)) = n;
-          goto start;
-        } else {
-          /* Normal execution: */
-          n = ARG(TOP(1));          /* first argument, should be evaluated (but not overwritten) */
-          PUSH(n);
-          execio(&TOP(0));          /* execute first argument */
-          cur_handler = h->hdl_old; /* restore old handler */
-          FREE(h);
-          n = TOP(0);
-          POP(1);
-          IOASSERT(GETTAG(n) == T_AP && GETTAG(FUN(n)) == T_IO_RETURN, "CATCH");
-          RETIO(ARG(n));             /* return result */
-        }
-      }
-
-    case T_NEWCASTRINGLEN:
-      {
-      CHECKIO(1);
-      n = ARG(TOP(1));
-      /* Zap the pointer to the list so it can be GC:ed.
-       * The actual list is protected from GC by evalbytestring().
-       */
-      // ARG(TOP(1)) = combK;
-      struct bytestring bs = evalbytestring(n);
-      GCCHECK(4);
-      n = new_ap(new_ap(combPair, x = alloc_node(T_PTR)), mkInt(bs.size));
-      PTR(x) = bs.string;
-      RETIO(n);
-      }
-
-    case T_PACKCSTRING:
-      {
-      size_t size;
-      CHECKIO(1);
-      cstr = evalptr(ARG(TOP(1)));
-      size = strlen(cstr);
-      char *str = MALLOC(size);
-      memcpy(str, cstr, size);
-      struct bytestring bs = { size, str };
-      RETIO(mkStrNode(bs));
-      }
-
-    case T_PACKCSTRINGLEN:
-      {
-      size_t size;
-      CHECKIO(2);
-      cstr = evalptr(ARG(TOP(1)));
-      size = evalint(ARG(TOP(2)));
-      char *str = MALLOC(size);
-      memcpy(str, cstr, size);
-      struct bytestring bs = { size, str };
-      RETIO(mkStrNode(bs));
-      }
-
-    case T_ARR_ALLOC:
-      {
-      size_t size;
-      NODEPTR elem;
-      struct ioarray *arr;
-      CHECKIO(2);
-      GCCHECK(1);
-      size = evalint(ARG(TOP(1)));
-      elem = ARG(TOP(2));
-      arr = arr_alloc(size, elem);
-      n = alloc_node(T_ARR);
-      ARR(n) = arr;
-      RETIO(n);
-      }
-    case T_ARR_COPY:
-      {
-      struct ioarray *arr;
-      CHECKIO(1);
-      GCCHECK(1);
-      n = evali(ARG(TOP(1)));
-      if (GETTAG(n) != T_ARR)
-        ERR("T_ARR_COPY tag");
-      arr = arr_copy(ARR(n));
-      n = alloc_node(T_ARR);
-      ARR(n) = arr;
-      RETIO(n);
-      }
-    case T_ARR_SIZE:
-      CHECKIO(1);
-      n = evali(ARG(TOP(1)));
-      if (GETTAG(n) != T_ARR)
-        ERR("bad ARR tag");
-      RETIO(mkInt(ARR(n)->size));
-    case T_ARR_READ:
-      {
-      size_t i;
-      CHECKIO(2);
-      i = evalint(ARG(TOP(2)));
-      n = evali(ARG(TOP(1)));
-      if (GETTAG(n) != T_ARR)
-        ERR("bad ARR tag");
-      if (i >= ARR(n)->size)
-        ERR("ARR_READ");
-      RETIO(ARR(n)->array[i]);
-      }
-    case T_ARR_WRITE:
-      {
-      size_t i;
-      CHECKIO(3);
-      i = evalint(ARG(TOP(2)));
-      n = evali(ARG(TOP(1)));
-      if (GETTAG(n) != T_ARR)
-        ERR("bad ARR tag");
-      if (i >= ARR(n)->size) {
-        //PRINT("%d %p %d\n", (int)i, ARR(n), (int)ARR(n)->size);
-        ERR("ARR_WRITE");
-      }
-      ARR(n)->array[i] = ARG(TOP(3));
-      RETIO(combUnit);
-      }
-
-    case T_FPNEW:
-      {
-        CHECKIO(1);
-        //printf("T_FPNEW\n");
-        void *xp = evalptr(ARG(TOP(1)));
-        //printf("T_FPNEW xp=%p\n", xp);
-        n = alloc_node(T_FORPTR);
-        SETFORPTR(n, mkForPtrP(xp));
-        RETIO(n);
-      }
-    case T_FPFIN:
-      {
-        CHECKIO(2);
-        //printf("T_FPFIN\n");
-        struct forptr *xfp = evalforptr(ARG(TOP(2)));
-        //printf("T_FPFIN xfp=%p\n", xfp);
-        HsFunPtr yp = evalfunptr(ARG(TOP(1)));
-        //printf("T_FPFIN yp=%p\n", yp);
-        xfp->finalizer->final = yp;
-        RETIO(combUnit);
-      }
-
-#if 0
-    case T_FPSTR:
-      {
-        CHECKIO(2);
-        //printf("T_FPFIN\n");
-        struct forptr *xfp = evalforptr(ARG(TOP(2)));
-        //printf("T_FPFIN xfp=%p\n", xfp);
-        struct bytestring bs = evalstring(ARG(TOP(1)));
-        //printf("T_FPFIN yp=%p\n", yp);
-        xfp->desc = bs.string;
-        RETIO(combUnit);
-      }
-#endif
-
-    case T_IO_GC:
-      CHECKIO(0);
-      //printf("gc()\n");
-      gc();
-      RETIO(combUnit);
-
-    default:
-      //printf("bad tag %s\n", tag_names[GETTAG(n)]);
-      ERR1("execio tag %d", GETTAG(n));
-    }
-  }
-}
-
-#if WANT_ARGS
-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;
-}
-#endif
-
-extern uint8_t *combexpr;
-extern int combexprlen;
-
-MAIN
-{
-  NODEPTR prog;
-#if WANT_ARGS
-  char *inname = 0;
-  char **av;
-  char *progname;
-  char **gargv;
-  int gargc;
-  int inrts;
-#if WANT_TICK
-  int dump_ticks = 0;
-#endif
-#endif
-#if WANT_STDIO
-  char *outname = 0;
-  size_t file_size = 0;
-#endif
-
-#if 0
-  /* MINGW doesn't do buffering right */
-  setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
-  setvbuf(stderr, NULL, _IONBF, BUFSIZ);
-#endif
-
-#ifdef INITIALIZATION
-  main_setup(); /* Do platform specific start-up. */
-#endif
-
-  heap_size = HEAP_CELLS;       /* number of heap cells */
-  stack_size = STACK_SIZE;      /* number of stack slots */
-
-#if WANT_ARGS
-  progname = argv[0];
-  argc--, argv++;
-  gargv = 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++;
-#if WANT_TICK
-        else if (strcmp(p, "-T") == 0)
-          dump_ticks = 1;
-#endif
-        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];
-        else if (strcmp(p, "-B") == 0)
-          gcbell++;
-#endif  /* WANT_STDIO */
-        else
-          ERR("Usage: eval [+RTS [-v] [-B] [-T] [-Hheap-size] [-Kstack-size] [-rFILE] [-oFILE] -RTS] arg ...");
-      }
-    } else {
-      if (strcmp(p, "+RTS") == 0) {
-        inrts = 1;
-      } else {
-        *av++ = p;
-      }
-    }
-  }
-  gargc = av - gargv;
-
-  if (inname == 0)
-    inname = "out.comb";
-#endif
-
-  init_nodes();
-  stack = MALLOC(sizeof(NODEPTR) * stack_size);
-  if (!stack)
-    memerr();
-  stack_ptr = -1;
-  num_reductions = 0;
-
-#if WANT_ARGS
-  /* Initialize an IORef (i.e., single element IOArray
-   * to contain the list of program arguments.
-   * The 0th element is the program name, and the rest
-   * are the non RTS arguments.
-   */
-  {
-    NODEPTR n;
-    /* No GC checks, the heap is empty. */
-    n = mkNil();
-    for(int i = gargc-1; i >= 0; i--) {
-      n = mkCons(mkStringC(gargv[i]), n);
-    }
-    n = mkCons(mkStringC(progname), n);
-    argarray = arr_alloc(1, n);      /* An IORef contains a single element array */
-    argarray->permanent = 1;         /* never GC the arguments, because a T_IO_GETARGREF can reach argarray */
-  }
-#endif  /* WANT_ARGS */
-
-  if (combexpr) {
-    int c;
-    BFILE *bf = openb_rd_buf(combexpr, combexprlen);
-    c = getb(bf);
-    /* Compressed combinators start with a 'Z' or 'z', otherwise 'v' (for version) */
-    if (c == 'z') {
-      /* add LZ77 compressor transducer */
-      bf = add_lz77_decompressor(bf);
-    } else {
-      /* put it back, we need it */
-      ungetb(c, bf);
-    }
-    prog = parse_top(bf);
-    closeb(bf);
-#if WANT_STDIO
-    file_size = combexprlen;
-#endif
-  } else {
-#if WANT_STDIO
-    prog = parse_file(inname, &file_size);
-#else
-    ERR("no stdio");
-#endif
-  }
-
-  /* GC unused stuff, nice for -o */
-  PUSH(prog);
-  want_gc_red = 1;
-  gc();
-  gc();                         /* this finds some more GC reductions */
-  want_gc_red = 0;
-  prog = POPTOP();
-
-#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);
-    struct BFILE *bf = add_FILE(out);
-    printb(bf, prog, 1);
-    closeb(bf);
-    EXIT(0);
-  }
-  if (verbose > 2) {
-    pp(stdout, prog);
-  }
-#endif
-  run_time -= GETTIMEMILLI();
-  PUSH(prog);
-  topnode = &TOP(0);
-  execio(&TOP(0));
-  prog = TOP(0);
-  POP(1);
-#if SANITY
-  if (GETTAG(prog) != T_AP || GETTAG(FUN(prog)) != T_IO_RETURN)
-    ERR("main execio");
-  NODEPTR res = evali(ARG(prog));
-  if (GETTAG(res) != T_I)
-    ERR("main execio I");
-#endif
-  /* Flush standard handles in case there is some BFILE buffering */
-  flushb((BFILE*)FORPTR(comb_stdout)->payload.string);
-  flushb((BFILE*)FORPTR(comb_stderr)->payload.string);
-  gc();                      /* Run finalizers */
-  run_time += GETTIMEMILLI();
-
-#if WANT_STDIO
-  if (verbose) {
-    if (verbose > 1) {
-      PRINT("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 */
-    PRINT("%"PCOMMA"15"PRIheap" combinator file size\n", (heapoffs_t)file_size);
-    PRINT("%"PCOMMA"15"PRIheap" cells at start\n", start_size);
-    PRINT("%"PCOMMA"15"PRIheap" cells heap size (%"PCOMMA""PRIheap" bytes)\n", heap_size, heap_size * NODE_SIZE);
-    PRINT("%"PCOMMA"15"PRIcounter" cells allocated (%"PCOMMA".1f Mbyte/s)\n", num_alloc, num_alloc * NODE_SIZE / ((double)run_time / 1000) / 1000000);
-    PRINT("%"PCOMMA"15"PRIcounter" GCs\n", num_gc);
-    PRINT("%"PCOMMA"15"PRIcounter" max cells used\n", max_num_marked);
-    PRINT("%"PCOMMA"15"PRIcounter" reductions (%"PCOMMA".1f Mred/s)\n", num_reductions, num_reductions / ((double)run_time / 1000) / 1000000);
-    PRINT("%"PCOMMA"15"PRIcounter" array alloc\n", num_arr_alloc);
-    PRINT("%"PCOMMA"15"PRIcounter" array free\n", num_arr_free);
-    PRINT("%"PCOMMA"15"PRIcounter" foreign alloc\n", num_fin_alloc);
-    PRINT("%"PCOMMA"15"PRIcounter" foreign free\n", num_fin_free);
-    PRINT("%"PCOMMA"15"PRIcounter" bytestring alloc (max %"PCOMMA""PRIcounter")\n", num_bs_alloc, num_bs_alloc_max);
-    PRINT("%"PCOMMA"15"PRIcounter" bytestring alloc bytes (max %"PCOMMA""PRIcounter")\n", num_bs_bytes, num_bs_inuse_max);
-    PRINT("%"PCOMMA"15"PRIcounter" bytestring free\n", num_bs_free);
-#if MAXSTACKDEPTH
-    PRINT("%"PCOMMA"15d max stack depth\n", (int)max_stack_depth);
-    PRINT("%"PCOMMA"15d max C stack depth\n", (int)max_c_stack);
-#endif
-    // PRINT("%"PCOMMA"15"PRIcounter" max mark depth\n", max_mark_depth);
-    PRINT("%15.2fs total expired time\n", (double)run_time / 1000);
-    PRINT("%15.2fs total gc time (%.2f + %.2f)\n",
-          (double)(gc_mark_time + gc_scan_time) / 1000,
-          (double)gc_mark_time / 1000,
-          (double)gc_scan_time / 1000);
-#if GCRED
-    PRINT(" GC reductions A=%"PRIcounter", K=%"PRIcounter", I=%"PRIcounter", int=%"PRIcounter", flip=%"PRIcounter", BI=%"PRIcounter", BxI=%"PRIcounter", C'BxI=%"PRIcounter", CC=%"PRIcounter"\n",
-          red_a, red_k, red_i, red_int, red_flip, red_bi, red_bxi, red_ccbi, red_cc);
-    PRINT(" special reductions B'=%"PRIcounter" K4=%"PRIcounter" K3=%"PRIcounter" K2=%"PRIcounter" C'B=%"PRIcounter", Z=%"PRIcounter", R=%"PRIcounter"\n",
-          red_bb, red_k4, red_k3, red_k2, red_ccb, red_z, red_r);
-#endif
-  }
-#endif  /* WANT_STDIO */
-
-#if WANT_TICK
-  if (dump_ticks) {
-    dump_tick_table(stdout);
-  }
-#endif
-
-#ifdef TEARDOWN
-  main_teardown(); /* do some platform specific teardown */
-#endif
-  EXIT(0);
-}
-
-#if WANT_MD5
-#include "md5.c"
-#endif  /* WANT_MD5 */
-
-#if WANT_LZ77
-#include "lz77.c"
-#endif
-
-/*********************/
-/* FFI adapters      */
-
-#define MHS_FROM(name, set, type) \
-void \
-name(stackptr_t stk, int n, type x) \
-{ \
-  NODEPTR r = TOP(0);           /* The pre-allocated cell for the result, */ \
-  CHECKIO(n+1);                 /* Check that we actually had the right number of arguments. */ \
-  set(r, x);                    /* Put result in pre-allocated cell. */ \
-}
-MHS_FROM(mhs_from_FloatW, SETDBL, flt_t);
-MHS_FROM(mhs_from_Int, SETINT, value_t);
-MHS_FROM(mhs_from_Word, SETINT, uvalue_t);
-MHS_FROM(mhs_from_Word8, SETINT, uvalue_t);
-MHS_FROM(mhs_from_Ptr, SETPTR, void*);
-MHS_FROM(mhs_from_ForPtr, SETFORPTR, struct forptr *);
-MHS_FROM(mhs_from_FunPtr, SETFUNPTR, HsFunPtr);
-MHS_FROM(mhs_from_CChar, SETINT, char);
-MHS_FROM(mhs_from_CSChar, SETINT, signed char);
-MHS_FROM(mhs_from_CUChar, SETINT, unsigned char);
-MHS_FROM(mhs_from_CShort, SETINT, short);
-MHS_FROM(mhs_from_CUShort, SETINT, unsigned short);
-MHS_FROM(mhs_from_CInt, SETINT, int);
-MHS_FROM(mhs_from_CUInt, SETINT, unsigned int);
-MHS_FROM(mhs_from_CLong, SETINT, long);
-MHS_FROM(mhs_from_CULong, SETINT, unsigned long);
-MHS_FROM(mhs_from_CLLong, SETINT, long long);
-MHS_FROM(mhs_from_CULLong, SETINT, unsigned long long);
-MHS_FROM(mhs_from_CSize, SETINT, size_t);
-#if WANT_TIME
-MHS_FROM(mhs_from_CTime, SETINT, time_t);
-#endif
-// MHS_FROM(mhs_from_CSSize, SETINT, ssize_t);
-MHS_FROM(mhs_from_CIntPtr, SETINT, intptr_t);
-MHS_FROM(mhs_from_CUIntPtr, SETINT, uintptr_t);
-void
-mhs_from_Unit(stackptr_t stk, int n)
-{
-  CHECKIO(n+1);                 /* Check that we actually had the right number of arguments. */
-  TOP(0) = combUnit;            /* Put result on top of stack */
-}
-
-#define MHS_TO(name, eval, type) \
-type name(stackptr_t stk, int n) \
-{ \
-  return eval(ARG(TOP(n+2)));                /* The stack has a reserved cell, and the FFI node on top of the arguments */ \
-}
-MHS_TO(mhs_to_FloatW, evaldbl, flt_t);
-MHS_TO(mhs_to_Int, evalint, value_t);
-MHS_TO(mhs_to_Word, evalint, uvalue_t);
-MHS_TO(mhs_to_Word8, evalint, uint8_t);
-MHS_TO(mhs_to_Ptr, evalptr, void*);
-MHS_TO(mhs_to_FunPtr, evalfunptr, HsFunPtr);
-MHS_TO(mhs_to_CChar, evalint, char);
-MHS_TO(mhs_to_CSChar, evalint, signed char);
-MHS_TO(mhs_to_CUChar, evalint, unsigned char);
-MHS_TO(mhs_to_CShort, evalint, short);
-MHS_TO(mhs_to_CUShort, evalint, unsigned short);
-MHS_TO(mhs_to_CInt, evalint, int);
-MHS_TO(mhs_to_CUInt, evalint, unsigned int);
-MHS_TO(mhs_to_CLong, evalint, long);
-MHS_TO(mhs_to_CULong, evalint, unsigned long);
-MHS_TO(mhs_to_CLLong, evalint, long long);
-MHS_TO(mhs_to_CULLong, evalint, unsigned long long);
-MHS_TO(mhs_to_CSize, evalint, size_t);
-#if WANT_TIME
-MHS_TO(mhs_to_CTime, evalint, time_t);
-#endif
-// MHS_TO(mhs_to_CSSize, evalint, ssize_t);
-MHS_TO(mhs_to_CIntPtr, evalint, intptr_t);
-MHS_TO(mhs_to_CUIntPtr, evalint, uintptr_t);
-
-
-/* The rest of this file was generated by the compiler, with some minor edits with #if. */
-void mhs_GETRAW(int s) { mhs_from_Int(s, 0, GETRAW()); }
-void mhs_GETTIMEMILLI(int s) { mhs_from_Int(s, 0, GETTIMEMILLI()); }
-#if WANT_MATH
-#if WORD_SIZE == 64
-void mhs_acos(int s) { mhs_from_FloatW(s, 1, acos(mhs_to_FloatW(s, 0))); }
-void mhs_asin(int s) { mhs_from_FloatW(s, 1, asin(mhs_to_FloatW(s, 0))); }
-void mhs_atan(int s) { mhs_from_FloatW(s, 1, atan(mhs_to_FloatW(s, 0))); }
-void mhs_atan2(int s) { mhs_from_FloatW(s, 2, atan2(mhs_to_FloatW(s, 0), mhs_to_FloatW(s, 1))); }
-void mhs_cos(int s) { mhs_from_FloatW(s, 1, cos(mhs_to_FloatW(s, 0))); }
-void mhs_exp(int s) { mhs_from_FloatW(s, 1, exp(mhs_to_FloatW(s, 0))); }
-void mhs_log(int s) { mhs_from_FloatW(s, 1, log(mhs_to_FloatW(s, 0))); }
-void mhs_sin(int s) { mhs_from_FloatW(s, 1, sin(mhs_to_FloatW(s, 0))); }
-void mhs_sqrt(int s) { mhs_from_FloatW(s, 1, sqrt(mhs_to_FloatW(s, 0))); }
-void mhs_tan(int s) { mhs_from_FloatW(s, 1, tan(mhs_to_FloatW(s, 0))); }
-#elif WORD_SIZE == 32  /* WORD_SIZE */
-void mhs_acos(int s) { mhs_from_FloatW(s, 1, acosf(mhs_to_FloatW(s, 0))); }
-void mhs_asin(int s) { mhs_from_FloatW(s, 1, asinf(mhs_to_FloatW(s, 0))); }
-void mhs_atan(int s) { mhs_from_FloatW(s, 1, atanf(mhs_to_FloatW(s, 0))); }
-void mhs_atan2(int s) { mhs_from_FloatW(s, 2, atan2f(mhs_to_FloatW(s, 0), mhs_to_FloatW(s, 1))); }
-void mhs_cos(int s) { mhs_from_FloatW(s, 1, cosf(mhs_to_FloatW(s, 0))); }
-void mhs_exp(int s) { mhs_from_FloatW(s, 1, expf(mhs_to_FloatW(s, 0))); }
-void mhs_log(int s) { mhs_from_FloatW(s, 1, logf(mhs_to_FloatW(s, 0))); }
-void mhs_sin(int s) { mhs_from_FloatW(s, 1, sinf(mhs_to_FloatW(s, 0))); }
-void mhs_sqrt(int s) { mhs_from_FloatW(s, 1, sqrtf(mhs_to_FloatW(s, 0))); }
-void mhs_tan(int s) { mhs_from_FloatW(s, 1, tanf(mhs_to_FloatW(s, 0))); }
-#else
-#error Unknown WORD_SIZE
-#endif  /* WORD_SIZE */
-#endif  /* WANT_MATH */
-
-#if WANT_STDIO
-void mhs_add_FILE(int s) { mhs_from_Ptr(s, 1, add_FILE(mhs_to_Ptr(s, 0))); }
-void mhs_add_utf8(int s) { mhs_from_Ptr(s, 1, add_utf8(mhs_to_Ptr(s, 0))); }
-void mhs_closeb(int s) { closeb(mhs_to_Ptr(s, 0)); mhs_from_Unit(s, 1); }
-void mhs_addr_closeb(int s) { mhs_from_FunPtr(s, 0, (HsFunPtr)&closeb); }
-void mhs_flushb(int s) { flushb(mhs_to_Ptr(s, 0)); mhs_from_Unit(s, 1); }
-void mhs_fopen(int s) { mhs_from_Ptr(s, 2, fopen(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1))); }
-
-void mhs_getb(int s) { mhs_from_Int(s, 1, getb(mhs_to_Ptr(s, 0))); }
-void mhs_putb(int s) { putb(mhs_to_Int(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_ungetb(int s) { ungetb(mhs_to_Int(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_openwrbuf(int s) { mhs_from_Ptr(s, 0, openb_wr_buf()); }
-void mhs_openrdbuf(int s) { mhs_from_Ptr(s, 2, openb_rd_buf(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
-void mhs_getbuf(int s) { get_buf(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2));  mhs_from_Unit(s, 3); }
-void mhs_system(int s) { mhs_from_Int(s, 1, system(mhs_to_Ptr(s, 0))); }
-void mhs_tmpname(int s) { mhs_from_Ptr(s, 2, TMPNAME(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1))); }
-void mhs_unlink(int s) { mhs_from_Int(s, 1, unlink(mhs_to_Ptr(s, 0))); }
-void mhs_readb(int s) { mhs_from_Int(s, 3, readb(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1), mhs_to_Ptr(s, 2))); }
-void mhs_writeb(int s) { mhs_from_Int(s, 3, writeb(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1), mhs_to_Ptr(s, 2))); }
-#endif  /* WANT_STDIO */
-
-#if WANT_MD5
-void mhs_md5Array(int s) { md5Array(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Int(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_md5BFILE(int s) { md5BFILE(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_md5String(int s) { md5String(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-#endif  /* WANT_MD5 */
-
-#if WANT_LZ77
-void mhs_add_lz77_compressor(int s) { mhs_from_Ptr(s, 1, add_lz77_compressor(mhs_to_Ptr(s, 0))); }
-void mhs_add_lz77_decompressor(int s) { mhs_from_Ptr(s, 1, add_lz77_decompressor(mhs_to_Ptr(s, 0))); }
-void mhs_lz77c(int s) { mhs_from_CSize(s, 3, lz77c(mhs_to_Ptr(s, 0), mhs_to_CSize(s, 1), mhs_to_Ptr(s, 2))); }
-#endif  /* WANT_LZ77 */
-
-#if WANT_RLE
-void mhs_add_rle_compressor(int s) { mhs_from_Ptr(s, 1, add_rle_compressor(mhs_to_Ptr(s, 0))); }
-void mhs_add_rle_decompressor(int s) { mhs_from_Ptr(s, 1, add_rle_decompressor(mhs_to_Ptr(s, 0))); }
-#endif  /* WANT_RLE */
-
-#if WANT_BWT
-void mhs_add_bwt_compressor(int s) { mhs_from_Ptr(s, 1, add_bwt_compressor(mhs_to_Ptr(s, 0))); }
-void mhs_add_bwt_decompressor(int s) { mhs_from_Ptr(s, 1, add_bwt_decompressor(mhs_to_Ptr(s, 0))); }
-#endif  /* WANT_BWT */
-
-void mhs_calloc(int s) { mhs_from_Ptr(s, 2, calloc(mhs_to_CSize(s, 0), mhs_to_CSize(s, 1))); }
-void mhs_free(int s) { free(mhs_to_Ptr(s, 0)); mhs_from_Unit(s, 1); }
-void mhs_addr_free(int s) { mhs_from_FunPtr(s, 0, (HsFunPtr)&FREE); }
-void mhs_getenv(int s) { mhs_from_Ptr(s, 1, getenv(mhs_to_Ptr(s, 0))); }
-void mhs_iswindows(int s) { mhs_from_Int(s, 0, iswindows()); }
-void mhs_malloc(int s) { mhs_from_Ptr(s, 1, MALLOC(mhs_to_CSize(s, 0))); }
-void mhs_memcpy(int s) { memcpy(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_CSize(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_memmove(int s) { memmove(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_CSize(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_peekPtr(int s) { mhs_from_Ptr(s, 1, peekPtr(mhs_to_Ptr(s, 0))); }
-void mhs_peekWord(int s) { mhs_from_Word(s, 1, peekWord(mhs_to_Ptr(s, 0))); }
-void mhs_pokePtr(int s) { pokePtr(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_pokeWord(int s) { pokeWord(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-
-void mhs_peek_uint8(int s) { mhs_from_Word(s, 1, peek_uint8(mhs_to_Ptr(s, 0))); }
-void mhs_poke_uint8(int s) { poke_uint8(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_peek_uint16(int s) { mhs_from_Word(s, 1, peek_uint16(mhs_to_Ptr(s, 0))); }
-void mhs_poke_uint16(int s) { poke_uint16(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-#if WORD_SIZE >= 32
-void mhs_peek_uint32(int s) { mhs_from_Word(s, 1, peek_uint32(mhs_to_Ptr(s, 0))); }
-void mhs_poke_uint32(int s) { poke_uint32(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-#endif  /* WORD_SIZE */
-#if WORD_SIZE >= 64
-void mhs_peek_uint64(int s) { mhs_from_Word(s, 1, peek_uint64(mhs_to_Ptr(s, 0))); }
-void mhs_poke_uint64(int s) { poke_uint64(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-#endif  /* WORD_SIZE */
-void mhs_peek_uint(int s) { mhs_from_Word(s, 1, peek_uint(mhs_to_Ptr(s, 0))); }
-void mhs_poke_uint(int s) { poke_uint(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-
-void mhs_peek_int8(int s) { mhs_from_Int(s, 1, peek_int8(mhs_to_Ptr(s, 0))); }
-void mhs_poke_int8(int s) { poke_int8(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_peek_int16(int s) { mhs_from_Int(s, 1, peek_int16(mhs_to_Ptr(s, 0))); }
-void mhs_poke_int16(int s) { poke_int16(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); mhs_from_Unit(s, 2); }
-#if WORD_SIZE >= 32
-void mhs_peek_int32(int s) { mhs_from_Int(s, 1, peek_int32(mhs_to_Ptr(s, 0))); }
-void mhs_poke_int32(int s) { poke_int32(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); mhs_from_Unit(s, 2); }
-#endif  /* WORD_SIZE */
-#if WORD_SIZE >= 64
-void mhs_peek_int64(int s) { mhs_from_Int(s, 1, peek_int64(mhs_to_Ptr(s, 0))); }
-void mhs_poke_int64(int s) { poke_int64(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); mhs_from_Unit(s, 2); }
-#endif  /* WORD_SIZE */
-void mhs_peek_int(int s) { mhs_from_Int(s, 1, peek_int(mhs_to_Ptr(s, 0))); }
-void mhs_poke_int(int s) { poke_int(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_peek_llong(int s) { mhs_from_CLLong(s, 1, peek_llong(mhs_to_Ptr(s, 0))); }
-void mhs_peek_long(int s) { mhs_from_CLong(s, 1, peek_long(mhs_to_Ptr(s, 0))); }
-void mhs_peek_ullong(int s) { mhs_from_CULLong(s, 1, peek_ullong(mhs_to_Ptr(s, 0))); }
-void mhs_peek_ulong(int s) { mhs_from_CULong(s, 1, peek_ulong(mhs_to_Ptr(s, 0))); }
-void mhs_poke_llong(int s) { poke_llong(mhs_to_Ptr(s, 0), mhs_to_CLLong(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_poke_long(int s) { poke_long(mhs_to_Ptr(s, 0), mhs_to_CLong(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_poke_ullong(int s) { poke_ullong(mhs_to_Ptr(s, 0), mhs_to_CULLong(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_poke_ulong(int s) { poke_ulong(mhs_to_Ptr(s, 0), mhs_to_CULong(s, 1)); mhs_from_Unit(s, 2); }
-#if WANT_FLOAT
-void mhs_peek_flt(int s) { mhs_from_FloatW(s, 1, peek_flt(mhs_to_Ptr(s, 0))); }
-void mhs_poke_flt(int s) { poke_flt(mhs_to_Ptr(s, 0), mhs_to_FloatW(s, 1)); mhs_from_Unit(s, 2); }
-#endif  /* WANT_FLOAT */
-void mhs_sizeof_int(int s) { mhs_from_Int(s, 0, sizeof(int)); }
-void mhs_sizeof_llong(int s) { mhs_from_Int(s, 0, sizeof(long long)); }
-void mhs_sizeof_long(int s) { mhs_from_Int(s, 0, sizeof(long)); }
-#if WANT_DIR
-void mhs_closedir(int s) { mhs_from_Int(s, 1, closedir(mhs_to_Ptr(s, 0))); }
-void mhs_opendir(int s) { mhs_from_Ptr(s, 1, opendir(mhs_to_Ptr(s, 0))); }
-void mhs_readdir(int s) { mhs_from_Ptr(s, 1, readdir(mhs_to_Ptr(s, 0))); }
-void mhs_c_d_name(int s) { mhs_from_Ptr(s, 1, ((struct dirent *)(mhs_to_Ptr(s, 0)))->d_name); }
-void mhs_chdir(int s) { mhs_from_Int(s, 1, chdir(mhs_to_Ptr(s, 0))); }
-void mhs_mkdir(int s) { mhs_from_Int(s, 2, mkdir(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
-void mhs_getcwd(int s) { mhs_from_Ptr(s, 2, getcwd(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
-#endif  /* WANT_DIR */
-
-/* Use this to detect if we have (and want) GMP or not. */
-void mhs_want_gmp(int s) { mhs_from_Int(s, 0, WANT_GMP); }
-
-#if WANT_GMP
-void
-free_mpz(void *p)
-{
-  /*  printf("free_mpz %p\n", p);*/
-  mpz_clear(p);                 /* free any extra storage */
-  FREE(p);                      /* and free the mpz itself */
-}
-
-/* Allocate an initialize a GMP integer */
-struct forptr *
-new_mpz(void)
-{
-#if 0
-  {
-    static int done = 0;
-    if (!done) {
-      printf("GMP\n");
-      done = 1;
-    }
-  }
-#endif
-  mpz_ptr p = MALLOC(sizeof(*p));
-  if (!p)
-    memerr();
-  mpz_init(p);
-  struct forptr *fp = mkForPtrP(p);
-  fp->finalizer->final = (HsFunPtr)free_mpz;
-  fp->finalizer->fptype = FP_MPZ;
-  /*  printf("new_mpz %p %p\n", p, fp); */
-  return fp;
-}
-
-#if 0
-void
-print_mpz(mpz_ptr p)
-{
-  mpz_out_str(stdout, 10, p);
-}
-#endif
-
-void mhs_new_mpz(int s) { mhs_from_ForPtr(s, 0, new_mpz()); }
-
-/* Stubs for GMP functions */
-void mhs_mpz_abs(int s) { mpz_abs(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_mpz_add(int s) { mpz_add(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_and(int s) { mpz_and(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_cmp(int s) { mhs_from_Int(s, 2, mpz_cmp(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1))); }
-void mhs_mpz_get_d(int s) { mhs_from_FloatW(s, 1, mpz_get_d(mhs_to_Ptr(s, 0))); }
-void mhs_mpz_get_si(int s) { mhs_from_Int(s, 1, mpz_get_si(mhs_to_Ptr(s, 0))); }
-void mhs_mpz_get_ui(int s) { mhs_from_Word(s, 1, mpz_get_ui(mhs_to_Ptr(s, 0))); }
-void mhs_mpz_init_set_si(int s) { mpz_init_set_si(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_mpz_init_set_ui(int s) { mpz_init_set_ui(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_mpz_ior(int s) { mpz_ior(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_mul(int s) { mpz_mul(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_mul_2exp(int s) { mpz_mul_2exp(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Int(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_neg(int s) { mpz_neg(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); mhs_from_Unit(s, 2); }
-void mhs_mpz_popcount(int s) {
-  mpz_ptr a = mhs_to_Ptr(s, 0);
-  if (mpz_sgn(a) < 0) {
-    mpz_t neg_a;
-    mpz_init(neg_a);
-    mpz_neg(neg_a, a);
-    mhs_from_Int(s, 1, -mpz_popcount(neg_a));
-    mpz_clear(neg_a);
-  } else {
-    mhs_from_Int(s, 1, mpz_popcount(a));
-  }
-}
-void mhs_mpz_sub(int s) { mpz_sub(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_fdiv_q_2exp(int s) { mpz_fdiv_q_2exp(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Int(s, 2)); mhs_from_Unit(s, 3); }
-void mhs_mpz_tdiv_qr(int s) { mpz_tdiv_qr(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2), mhs_to_Ptr(s, 3)); mhs_from_Unit(s, 4); }
-void mhs_mpz_tstbit(int s) { mhs_from_Int(s, 2, mpz_tstbit(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
-void mhs_mpz_xor(int s) { mpz_xor(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); mhs_from_Unit(s, 3); }
-#endif  /* WANT_GMP */
-
-struct ffi_entry ffi_table[] = {
-{ "GETRAW", mhs_GETRAW},
-{ "GETTIMEMILLI", mhs_GETTIMEMILLI},
-#if WANT_MATH
-{ "acos", mhs_acos},
-{ "asin", mhs_asin},
-{ "atan", mhs_atan},
-{ "atan2", mhs_atan2},
-{ "cos", mhs_cos},
-{ "exp", mhs_exp},
-{ "log", mhs_log},
-{ "sin", mhs_sin},
-{ "sqrt", mhs_sqrt},
-{ "tan", mhs_tan},
-#endif  /* WANT_MATH */
-
-#if WANT_STDIO
-{ "add_FILE", mhs_add_FILE},
-{ "add_utf8", mhs_add_utf8},
-{ "closeb", mhs_closeb},
-{ "&closeb", mhs_addr_closeb},
-{ "flushb", mhs_flushb},
-{ "fopen", mhs_fopen},
-{ "getb", mhs_getb},
-{ "putb", mhs_putb},
-{ "ungetb", mhs_ungetb},
-{ "openb_wr_buf", mhs_openwrbuf},
-{ "openb_rd_buf", mhs_openrdbuf},
-{ "get_buf", mhs_getbuf},
-{ "system", mhs_system},
-{ "tmpname", mhs_tmpname},
-{ "unlink", mhs_unlink},
-{ "readb", mhs_readb},
-{ "writeb", mhs_writeb},
-#endif  /* WANT_STDIO */
-
-#if WANT_MD5
-{ "md5Array", mhs_md5Array},
-{ "md5BFILE", mhs_md5BFILE},
-{ "md5String", mhs_md5String},
-#endif  /* WANT_MD5 */
-
-#if WANT_LZ77
-{ "add_lz77_compressor", mhs_add_lz77_compressor},
-{ "add_lz77_decompressor", mhs_add_lz77_decompressor},
-{ "lz77c", mhs_lz77c},
-#endif  /* WANT_LZ77 */
-
-#if WANT_RLE
-{ "add_rle_compressor", mhs_add_rle_compressor},
-{ "add_rle_decompressor", mhs_add_rle_decompressor},
-#endif  /* WANT_RLE */
-
-#if WANT_BWT
-{ "add_bwt_compressor", mhs_add_bwt_compressor},
-{ "add_bwt_decompressor", mhs_add_bwt_decompressor},
-#endif  /* WANT_RLE */
-
-{ "calloc", mhs_calloc},
-{ "free", mhs_free},
-{ "&free", mhs_addr_free},
-{ "getenv", mhs_getenv},
-{ "iswindows", mhs_iswindows},
-{ "malloc", mhs_malloc},
-{ "memcpy", mhs_memcpy},
-{ "memmove", mhs_memmove},
-{ "peekPtr", mhs_peekPtr},
-{ "peekWord", mhs_peekWord},
-{ "pokePtr", mhs_pokePtr},
-{ "pokeWord", mhs_pokeWord},
-
-{ "peek_uint8", mhs_peek_uint8},
-{ "poke_uint8", mhs_poke_uint8},
-{ "peek_uint16", mhs_peek_uint16},
-{ "poke_uint16", mhs_poke_uint16},
-#if WORD_SIZE >= 32
-{ "peek_uint32", mhs_peek_uint32},
-{ "poke_uint32", mhs_poke_uint32},
-#endif  /* WORD_SIZE >= 32 */
-#if WORD_SIZE >= 64
-{ "peek_uint64", mhs_peek_uint64},
-{ "poke_uint64", mhs_poke_uint64},
-#endif  /* WORD_SIZE >= 64 */
-{ "peek_uint", mhs_peek_uint},
-{ "poke_uint", mhs_poke_uint},
-
-{ "peek_int8", mhs_peek_int8},
-{ "poke_int8", mhs_poke_int8},
-{ "peek_int16", mhs_peek_int16},
-{ "poke_int16", mhs_poke_int16},
-#if WORD_SIZE >= 32
-{ "peek_int32", mhs_peek_int32},
-{ "poke_int32", mhs_poke_int32},
-#endif  /* WORD_SIZE >= 32 */
-#if WORD_SIZE >= 64
-{ "peek_int64", mhs_peek_int64},
-{ "poke_int64", mhs_poke_int64},
-#endif  /* WORD_SIZE >= 64 */
-{ "peek_int", mhs_peek_int},
-{ "poke_int", mhs_poke_int},
-{ "peek_llong", mhs_peek_llong},
-{ "peek_long", mhs_peek_long},
-{ "peek_ullong", mhs_peek_ullong},
-{ "peek_ulong", mhs_peek_ulong},
-{ "poke_llong", mhs_poke_llong},
-{ "poke_long", mhs_poke_long},
-{ "poke_ullong", mhs_poke_ullong},
-{ "poke_ulong", mhs_poke_ulong},
-#if WANT_FLOAT
-{ "poke_flt", mhs_poke_flt},
-{ "poke_flt", mhs_poke_flt},
-#endif  /* WANT_FLOAT */
-{ "sizeof_int", mhs_sizeof_int},
-{ "sizeof_llong", mhs_sizeof_llong},
-{ "sizeof_long", mhs_sizeof_long},
-#if WANT_DIR
-{ "c_d_name", mhs_c_d_name},
-{ "closedir", mhs_closedir},
-{ "opendir", mhs_opendir},
-{ "readdir", mhs_readdir},
-{ "chdir", mhs_chdir},
-{ "mkdir", mhs_mkdir},
-{ "getcwd", mhs_getcwd},
-#endif  /* WANT_DIR */
-{ "want_gmp", mhs_want_gmp},
-#if WANT_GMP
-{ "new_mpz", mhs_new_mpz},
-{ "mpz_abs", mhs_mpz_abs},
-{ "mpz_add", mhs_mpz_add},
-{ "mpz_and", mhs_mpz_and},
-{ "mpz_cmp", mhs_mpz_cmp},
-{ "mpz_get_d", mhs_mpz_get_d},
-{ "mpz_get_si", mhs_mpz_get_si},
-{ "mpz_get_ui", mhs_mpz_get_ui},
-{ "mpz_init_set_si", mhs_mpz_init_set_si},
-{ "mpz_init_set_ui", mhs_mpz_init_set_ui},
-{ "mpz_ior", mhs_mpz_ior},
-{ "mpz_mul", mhs_mpz_mul},
-{ "mpz_mul_2exp", mhs_mpz_mul_2exp},
-{ "mpz_neg", mhs_mpz_neg},
-{ "mpz_popcount", mhs_mpz_popcount},
-{ "mpz_sub", mhs_mpz_sub},
-{ "mpz_fdiv_q_2exp", mhs_mpz_fdiv_q_2exp},
-{ "mpz_tdiv_qr", mhs_mpz_tdiv_qr},
-{ "mpz_tstbit", mhs_mpz_tstbit},
-{ "mpz_xor", mhs_mpz_xor},
-#endif  /* WANT_GMP */
-{ 0,0 }
+#if WANT_SIGINT
+#include <signal.h>
+#endif
+
+#if WANT_MD5
+#include "md5.h"
+#endif
+
+#if !defined(WANT_LZ77)
+#define WANT_LZ77 1
+#endif
+
+#if !defined(WANT_RLE)
+#define WANT_RLE 1
+#endif
+
+#if !defined(WANT_BWT)
+#define WANT_BWT 1
+#endif
+
+#if WANT_LZ77
+size_t lz77d(uint8_t *src, size_t srclen, uint8_t **bufp);
+size_t lz77c(uint8_t *src, size_t srclen, uint8_t **bufp);
+#endif
+
+#if defined(__GNUC__) && __GNUC__ >= 14 && defined(__aarch64__)
+#define REGISTER(dcl, reg) register dcl asm(#reg)
+#else
+#define REGISTER(dcl, reg) dcl
+#endif
+
+#include "mhsffi.h"
+struct ffi_entry ffi_table[];
+int num_ffi;
+#define FFI_IX(i) ((i) < num_ffi ? ffi_table[i] : xffi_table[i - num_ffi])
+
+//#include "config.h"
+
+#if WANT_STDIO
+#define THREAD_DEBUG 1
+#else
+#define THREAD_DEBUG 0
+#endif
+
+#define VERSION "v8.0\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 */
+
+typedef uintptr_t counter_t;    /* Statistics counter, can be smaller since overflow doesn't matter */
+#define PRIcounter PRIuPTR
+typedef uintptr_t bits_t;       /* One word of bits */
+
+#if !defined(MALLOC)
+#define MALLOC malloc
+#endif
+
+#if !defined(REALLOC)
+#define REALLOC realloc
+#endif
+
+#if !defined(CALLOC)
+#define CALLOC calloc
+#endif
+
+#if !defined(FREE)
+#define FREE free
+#endif
+
+#if !defined(EXIT)
+#define EXIT exit
+#endif
+
+#if !defined(PRINT)
+#define PRINT printf
+#endif
+
+#if !defined(MAIN)
+#define MAIN int main(int argc, char **argv)
+#endif
+
+#if !defined(PCOMMA)
+#define PCOMMA "'"
+#endif  /* !defined(PCOMMA) */
+
+#if !defined(GETRAW)
+int GETRAW(void) { return -1; }
+#endif  /* !defined(getraw) */
+
+#if !defined(GETTIMEMILLI)
+value_t GETTIMEMILLI(void) { return 0; }
+#endif  /* !define(GETTIMEMILLI) */
+
+#if !defined(INLINE)
+#define INLINE inline
+#endif  /* !define(INLINE) */
+
+#if !defined(NORETURN)
+/*#define NORETURN [[noreturn]]*/
+#define NORETURN _Noreturn
+#endif /* !defined(NORETURN) */
+
+NORETURN void memerr(void);
+
+void *
+mmalloc(size_t s)
+{
+  void *p = MALLOC(s);
+  if (!p)
+    memerr();
+  return p;
+}
+
+void *
+mrealloc(void *q, size_t s)
+{
+  void *p = REALLOC(q, s);
+  if (!p)
+    memerr();
+  return p;
+}
+
+void *
+mcalloc(size_t n, size_t s)
+{
+  void *p = CALLOC(n, s);
+  if (!p)
+    memerr();
+  return p;
+}
+
+#if !defined(TMPNAME)
+/* This is a really bad implementation, since it doesn't check for anything. */
+char* TMPNAME(const char* pre, const char* post) {
+  char *s = mmalloc(strlen(pre) + 3 + strlen(post) + 1);
+  strcpy(s, pre);
+  strcat(s, "TMP");
+  strcat(s, post);
+  return s;
+}
+#endif
+
+#if !defined(FFS)
+/* This is pretty bad, could use deBruijn multiplication instead. */
+int
+FFS(bits_t x)
+{
+  int i;
+  if (!x)
+    return 0;
+  for(i = 1; !(x & 1); x >>= 1, i++)
+    ;
+  return i;
+}
+#endif  /* !defined(FFS) */
+
+#if defined(__has_builtin)
+
+#if __has_builtin(__builtin_popcountl)
+#define BUILTIN_POPCOUNT
+#endif
+
+#endif
+
+#if !defined(POPCOUNT)
+uvalue_t POPCOUNT(uvalue_t x) {
+#if defined(BUILTIN_POPCOUNT)
+  return __builtin_popcountl(x);
+#else
+  uvalue_t count = 0;
+  while (x) {
+    x = x & (x - 1); // clear lowest 1 bit
+    count += 1;
+  }
+  return count;
+#endif
+}
+#endif
+
+#if defined(__GNUC__)
+#define BUILTIN_CLZ
+#elif defined(__clang__)
+
+#if __has_builtin(__builtin_clzl)
+#define BUILTIN_CLZ
+#endif
+
+#endif
+
+
+#if !defined(CLZ)
+uvalue_t CLZ(uvalue_t x) {
+#if defined(BUILTIN_CLZ)
+  if (x == 0) return WORD_SIZE;
+  return __builtin_clzl(x);
+#else
+  value_t count = WORD_SIZE;
+  while (x) {
+    x = x >> 1;
+    count -= 1;
+  }
+  return count;
+#endif
+}
+#endif
+
+#if defined(__has_builtin)
+
+#if __has_builtin(__builtin_ctzl)
+#define BUILTIN_CTZ
+#endif
+
+#endif
+
+
+#if !defined(CTZ)
+uvalue_t CTZ(uvalue_t x) {
+  if (x == 0) return WORD_SIZE;
+#if defined(BUILTIN_CLZ)
+  return __builtin_ctzl(x);
+#else
+  uvalue_t count = 0;
+  while ((x & 1) == 0) {
+    x = x >> 1;
+    count += 1;
+  }
+  return count;
+#endif
+}
+#endif
+
+#if !defined(WANT_ARGS)
+#define WANT_ARGS 1
+#endif
+
+#if !defined(COUNT)
+#define COUNT(n) ++(n)
+#endif
+
+value_t
+iswindows(void)
+{
+#if defined(ISWINDOWS)
+  return 1;
+#else
+  return 0;
+#endif
+}
+
+/***************************************/
+
+/* Keep permanent nodes for LOW_INT <= i < HIGH_INT */
+#define LOW_INT (-10)
+#define HIGH_INT 256
+
+#if !defined(HEAP_CELLS)
+#define HEAP_CELLS 50000000
+#endif
+
+#if !defined(STACK_SIZE)
+#define STACK_SIZE 100000
+#endif
+
+#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_FUNPTR, T_FORPTR, T_BADDYN, T_ARR, T_THID, T_MVAR,
+                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_J,
+                T_K2, T_K3, T_K4, T_CCB,
+                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_POPCOUNT, T_CLZ, T_CTZ,
+                T_EQ, T_NE, T_LT, T_LE, T_GT, T_GE, T_ULT, T_ULE, T_UGT, T_UGE, T_ICMP, T_UCMP,
+                T_FPADD, T_FP2P, T_FPNEW, T_FPFIN, // T_FPSTR,
+                T_FP2BS, T_BS2FP,
+                T_TOPTR, T_TOINT, T_TODBL, T_TOFUNPTR,
+                T_BININT2, T_BININT1, T_UNINT1,
+                T_BINDBL2, T_BINDBL1, T_UNDBL1,
+                T_BINBS2, T_BINBS1,
+                T_ISINT,
+#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_ARR_ALLOC, T_ARR_COPY, T_ARR_SIZE, T_ARR_READ, T_ARR_WRITE, T_ARR_EQ,
+                T_RAISE, T_SEQ, T_EQUAL, T_COMPARE, T_RNF,
+                T_TICK,
+                T_IO_BIND, T_IO_THEN, T_IO_RETURN,
+                T_IO_SERIALIZE, T_IO_DESERIALIZE,
+                T_IO_GETARGREF,
+                T_IO_PERFORMIO, T_IO_PRINT, T_CATCH, T_CATCHR,
+                T_IO_CCALL, T_IO_GC, T_DYNSYM,
+                T_IO_FORK, T_IO_THID, T_THNUM, T_IO_THROWTO, T_IO_YIELD,
+                T_IO_NEWMVAR,
+                T_IO_TAKEMVAR, T_IO_PUTMVAR, T_IO_READMVAR,
+                T_IO_TRYTAKEMVAR, T_IO_TRYPUTMVAR, T_IO_TRYREADMVAR,
+                T_IO_THREADDELAY, T_IO_THREADSTATUS,
+                T_IO_GETMASKINGSTATE, T_IO_SETMASKINGSTATE,
+                T_NEWCASTRINGLEN, T_PACKCSTRING, T_PACKCSTRINGLEN,
+                T_BSAPPEND, T_BSEQ, T_BSNE, T_BSLT, T_BSLE, T_BSGT, T_BSGE, T_BSCMP,
+                T_BSPACK, T_BSUNPACK, T_BSREPLICATE, T_BSLENGTH, T_BSSUBSTR, T_BSINDEX,
+                T_BSFROMUTF8, T_BSTOUTF8, T_BSHEADUTF8, T_BSTAILUTF8,
+                T_BSAPPENDDOT,
+                T_IO_PP,           /* for debugging */
+                T_IO_STDIN, T_IO_STDOUT, T_IO_STDERR,
+                T_LAST_TAG,
+};
+/* Most entries are initialized from the primops table. */
+static const char* tag_names[T_LAST_TAG+1] =
+  { "FREE", "IND", "AP", "INT", "DBL", "PTR", "FUNPTR", "FORPTR", "BADDYN", "ARR", "THID", "MVAR" };
+
+struct ioarray;
+struct bytestring;
+struct forptr;
+struct mthread;
+struct mvar;
+
+typedef struct node {
+  union {
+    struct node *uufun;
+    intptr_t     uuifun;
+    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;
+    flt_t           uufloatvalue;
+    const char     *uucstring;
+    void           *uuptr;
+    HsFunPtr        uufunptr;
+    struct ioarray *uuarray;
+    struct forptr  *uuforptr;      /* foreign pointers and byte arrays */
+    struct mthread *uuthread;
+    struct mvar    *uumvar;
+  } uarg;
+} node;
+#define BIT_TAG   1
+#define BIT_IND   2
+#define BIT_NOTAP (BIT_TAG | BIT_IND)
+#define TAG_SHIFT 2
+
+typedef struct node* NODEPTR;
+#define NIL 0
+#define HEAPREF(i) &cells[(i)]
+#define GETTAG(p) ((p)->ufun.uutag & BIT_NOTAP ? ( (p)->ufun.uutag & BIT_IND ? T_IND : (int)((p)->ufun.uutag >> TAG_SHIFT) ) : T_AP)
+#define SETTAG(p,t) do { if (t != T_AP) { if (t == T_IND) { (p)->ufun.uutag = BIT_IND; } else { (p)->ufun.uutag = ((t) << TAG_SHIFT) | BIT_TAG; } } } while(0)
+#define GETVALUE(p) (p)->uarg.uuvalue
+#define GETDBLVALUE(p) (p)->uarg.uufloatvalue
+#define SETVALUE(p,v) (p)->uarg.uuvalue = v
+#define SETDBLVALUE(p,v) (p)->uarg.uufloatvalue = v
+#define FUN(p) (p)->ufun.uufun
+#define ARG(p) (p)->uarg.uuarg
+#define CSTR(p) (p)->uarg.uucstring
+#define PTR(p) (p)->uarg.uuptr
+#define FUNPTR(p) (p)->uarg.uufunptr
+#define FORPTR(p) (p)->uarg.uuforptr
+#define BSTR(p) (p)->uarg.uuforptr->payload
+#define ARR(p) (p)->uarg.uuarray
+#define THR(p) (p)->uarg.uuthread
+#define MVAR(p) (p)->uarg.uumvar
+#define ISINDIR(p) ((p)->ufun.uuifun & BIT_IND)
+#define GETINDIR(p) ((struct node*) ((p)->ufun.uuifun & ~BIT_IND))
+#define SETINDIR(p,q) do { (p)->ufun.uuifun = (intptr_t)(q) | BIT_IND; } while(0)
+#define NODE_SIZE sizeof(node)
+#define ALLOC_HEAP(n) do { cells = mmalloc(n * sizeof(node)); } while(0)
+#define LABEL(n) ((heapoffs_t)((n) - cells))
+node *cells;                 /* All cells */
+
+/*
+ * byte arrays
+ */
+struct bytestring {
+  size_t size;
+  void *string;
+};
+
+/*
+ * Arrays are allocated with malloc()/free().
+ * During GC they are marked, and all elements in the array are
+ * recursively marked.
+ * At the end of the the mark phase there is a scan of all
+ * arrays, and the unmarked ones are freed.
+ */
+struct ioarray {
+  struct ioarray *next;         /* all ioarrays are linked together */
+  int permanent;                /* this array should never be GC-ed */
+  size_t marked;                /* marked during GC */
+  size_t size;                  /* number of elements in the array */
+  NODEPTR array[1];             /* actual size may be bigger */
+};
+struct ioarray *array_root = 0; /* root of all allocated arrays, linked by next */
+
+enum fptype {
+  FP_FORPTR = 0,                /* a regular foreign pointer to unknown memory */
+  FP_BSTR,                      /* a bytestring */
+  FP_MPZ,                       /* a GMP MPZ pointer */
+};
+
+/*
+ * A Haskell ForeignPtr has a normal pointer, and a finalizer
+ * function that is to be called when there are no more references
+ * to the ForeignPtr.
+ * A complication is that using plusForeignPtr creates a new
+ * ForeignPtr that must share the same finalizer.
+ * There is one struct forptr for each ForeignPtr.  It has pointer
+ * to the actual data, and to a struct final which is shared between
+ * all ForeignPtrs that have been created with plusForeignPtr.
+ * During GC the used bit is set for any references to the forptr.
+ * The scan phase will traverse the struct final chain and run
+ * the finalizer, and free associated structs.
+ */
+struct final {
+  struct final  *next;      /* the next finalizer */
+  HsFunPtr       final;     /* function to call to release resource */
+  void          *arg;       /* argument to final when called */
+  size_t         size;      /* size of memory, if known, otherwise NOSIZE */
+#define NOSIZE ~0           /* used as the size in payload for actual foreign pointers */
+  struct forptr *back;      /* back pointer to the first forptr */
+  short          marked;    /* mark bit for GC */
+  enum fptype    fptype;    /* what kind of foreign pointer */
+};
+
+/*
+ * Foreign pointers are also used to represent bytestrings.
+ * The difference between a foreign pointer and a bytestring
+ * is that we can serialize the latter.
+ * The size field is non-zero only for bytestrings.
+ */
+struct forptr {
+  struct forptr *next;       /* the next ForeignPtr that shares the same finalizer */
+  struct final  *finalizer;  /* the finalizer for this ForeignPtr */
+  struct bytestring payload; /* the actual pointer to allocated data, and maybe a size */
+  //  char          *desc;
+};
+struct final *final_root = 0;   /* root of all allocated foreign pointers, linked by next */
+
+//REGISTER(counter_t num_reductions,r19);
+counter_t num_reductions = 0;
+counter_t num_alloc = 0;
+counter_t num_gc = 0;
+counter_t num_yield = 0;
+counter_t num_resched = 0;
+counter_t num_thread_reap = 0;
+counter_t num_mvar_alloc = 0;
+counter_t num_mvar_free = 0;
+uintptr_t gc_mark_time = 0;
+uintptr_t gc_scan_time = 0;
+uintptr_t run_time = 0;
+
+#define MAIN_THREAD 1
+uvalue_t num_thread_create = MAIN_THREAD;
+
+#define MAXSTACKDEPTH 0
+#if MAXSTACKDEPTH
+stackptr_t max_stack_depth = 0;
+counter_t max_c_stack = 0;
+counter_t cur_c_stack = 0;
+#define MAXSTACK if (stack_ptr > max_stack_depth) max_stack_depth = stack_ptr
+#else
+#define MAXSTACK
+#endif
+
+NODEPTR *topnode;
+NODEPTR atptr;
+
+REGISTER(NODEPTR *stack,r20);
+REGISTER(stackptr_t stack_ptr,r21);
+#if STACKOVL
+#define PUSH(x) do { if (stack_ptr >= stack_size-2) stackerr(); stack[++stack_ptr] = (x); MAXSTACK; } while(0)
+#else  /* STACKOVL */
+#define PUSH(x) do {                                            stack[++stack_ptr] = (x); MAXSTACK; } while(0)
+#endif  /* STACKOVL */
+#define TOP(n) stack[stack_ptr - (n)]
+#define POP(n) stack_ptr -= (n)
+#define POPTOP() stack[stack_ptr--]
+#define GCCHECK(n) gc_check((n))
+#define CLEARSTK() do { stack_ptr = -1; } while(0)
+#define GCCHECKSAVE(p, n) do { PUSH(p); GCCHECK(n); (p) = TOP(0); POP(1); } while(0)
+
+heapoffs_t heap_size;       /* number of heap cells */
+heapoffs_t heap_start;      /* first location in heap that needs GC */
+REGISTER(stackptr_t stack_size,r22);      /* number of stack slots */
+
+counter_t num_marked;
+counter_t max_num_marked = 0;
+counter_t num_free;
+counter_t num_arr_alloc;
+counter_t num_arr_free;
+counter_t num_fin_alloc;
+counter_t num_fin_free;
+counter_t num_bs_alloc;
+counter_t num_bs_alloc_max;
+counter_t num_bs_free;
+counter_t num_bs_bytes;
+counter_t num_bs_inuse;
+counter_t num_bs_inuse_max;
+
+#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;
+
+int want_gc_red = 0;
+
+NORETURN void
+memerr(void)
+{
+  ERR("Out of memory");
+  EXIT(1);
+}
+
+NORETURN
+void
+stackerr(void)
+{
+  ERR("stack overflow");
+  EXIT(1);
+}
+
+/***************************************/
+
+#include "bfile.c"
+
+/***************************************/
+
+struct ioarray*
+arr_alloc(size_t sz, NODEPTR e)
+{
+  struct ioarray *arr = mmalloc(sizeof(struct ioarray) + (sz-1) * sizeof(NODEPTR));
+  size_t i;
+
+  arr->next = array_root;
+  array_root = arr;
+  arr->marked = 0;
+  arr->permanent = 0;
+  arr->size = sz;
+  for(i = 0; i < sz; i++)
+    arr->array[i] = e;
+  //PRINT("arr_alloc(%d, %p) = %p\n", (int)sz, e, arr);
+  num_arr_alloc++;
+  return arr;
+}
+
+struct ioarray*
+arr_copy(struct ioarray *oarr)
+{
+  size_t sz = oarr->size;
+  struct ioarray *arr = mmalloc(sizeof(struct ioarray) + (sz-1) * sizeof(NODEPTR));
+
+  arr->next = array_root;
+  array_root = arr;
+  arr->marked = 0;
+  arr->permanent = 0;
+  arr->size = sz;
+  memcpy(arr->array, oarr->array, sz * sizeof(NODEPTR));
+  num_arr_alloc++;
+  return arr;
+}
+
+/*****************************************************************************/
+
+#if WANT_TICK
+struct tick_entry {
+  struct bytestring tick_name;
+  counter_t tick_count;
+} *tick_table = 0;
+size_t tick_table_size;
+size_t tick_index;
+
+/* Allocate a new tick table entry and return the index. */
+size_t
+add_tick_table(struct bytestring name)
+{
+  if (!tick_table) {
+    tick_table_size = 100;
+    tick_table = mmalloc(tick_table_size * sizeof(struct tick_entry));
+    tick_index = 0;
+  }
+  if (tick_index >= tick_table_size) {
+    tick_table_size *= 2;
+    tick_table = mrealloc(tick_table, tick_table_size * sizeof(struct tick_entry));
+  }
+  tick_table[tick_index].tick_name = name;
+  tick_table[tick_index].tick_count = 0;
+  return tick_index++;
+}
+
+/* Called with the tick index. */
+static inline void
+dotick(value_t i)
+{
+  tick_table[i].tick_count++;
+}
+
+void
+dump_tick_table(FILE *f)
+{
+  if (!tick_table) {
+    fprintf(f, "Tick table empty\n");
+    return;
+  }
+  for (size_t i = 0; i < tick_index; i++) {
+    counter_t n = tick_table[i].tick_count;
+    if (n)
+      fprintf(f, "%-60s %10"PRIcounter"\n", (char *)tick_table[i].tick_name.string, n);
+  }
+}
+#endif
+
+enum th_sched { mt_main, mt_resched, mt_raise };
+/* The two enums below are known by the Haskell code.  Do not change order */
+enum th_state { ts_runnable, ts_wait_mvar, ts_wait_time, ts_finished, ts_died };
+enum mask_state { mask_unmasked, mask_interruptible, mask_uninterruptible };
+
+/***************** HANDLER *****************/
+
+struct handler {
+  jmp_buf         hdl_buf;      /* env storage */
+  struct handler *hdl_old;      /* old handler */
+  NODEPTR         hdl_exn;      /* used temporarily to pass the exception value */
+} *cur_handler = 0;
+
+/***************** THREAD ******************/
+
+struct mthread {
+  enum th_state   mt_state;      /* thread state */
+  enum mask_state mt_mask;       /* making state. */
+  struct mthread *mt_next;       /* all threads linked together */
+  struct mthread *mt_queue;      /* runq/waitq link */
+  counter_t       mt_slice;      /* reduction steps until yielding */
+  counter_t       mt_num_slices; /* number of slices so far */
+  NODEPTR         mt_root;       /* root of the graph to reduce */
+  struct mvar    *mt_exn;        /* possible thrown exception */
+  NODEPTR         mt_mval;       /* filled after waiting for take/read */
+  int             mt_mark;       /* marked as accessible */
+  uvalue_t        mt_id;         /* thread number, thread 1 is the main thread */
+#if defined(CLOCK_INIT)
+  CLOCK_T         mt_at;         /* time to wake up when in threadDelay */
+#endif
+};
+struct mthread  *all_threads = 0;   /* all threads */
+
+struct mqueue {
+  struct mthread *mq_head;
+  struct mthread *mq_tail;
+};
+struct mqueue runq = { 0, 0 };;
+struct mqueue timeq = { 0, 0 };
+
+struct mvar {
+  struct mvar    *mv_next;      /* all mvars linked together */
+  NODEPTR         mv_data;      /* contents of the mvar, or NIL when empty */
+  struct mqueue   mv_takeput;   /* queue of threads waiting for take or put, single wakeup */
+  struct mqueue   mv_read;      /* queue of threads waiting for read, multiple wakeup */
+  int             mv_mark;      /* marked as accessible */
+};
+struct mvar      *all_mvars = 0;   /* all mvars */
+
+jmp_buf          sched;             /* jump here to yield */
+counter_t        slice = 100000;    /* normal time slice;
+                                     * on an M4 Mac this is about 0.3ms */
+//REGISTER(counter_t glob_slice,r23);
+REGISTER(int glob_slice,r23);
+
+NODEPTR          the_exn;       /* Used to propagate the exception for longjmp(sched, mt_raise) */
+
+/* The order of these must be kept in sync with Control.Exception.Internal.rtsExn */
+enum rts_exn { exn_stackoverflow, exn_heapoverflow, exn_threadkilled, exn_userinterrupt, exn_dividebyzero };
+
+NORETURN void raise_exn(NODEPTR exn);
+struct mvar* new_mvar(void);
+NODEPTR take_mvar(int try, struct mvar *mv);
+NORETURN void die_exn(NODEPTR exn);
+void thread_intr(struct mthread *mt);
+int put_mvar(int try, struct mvar *mv, NODEPTR v);
+NODEPTR mkInt(value_t i);
+NODEPTR mkFlt(flt_t d);
+NODEPTR mkPtr(void* p);
+struct mthread* new_thread(NODEPTR root);
+void gc(void);
+void async_throwto(struct mthread*, NODEPTR);
+
+#if WANT_STDIO
+void pp(FILE*, NODEPTR);
+#endif
+
+/* Needed during reduction */
+NODEPTR intTable[HIGH_INT - LOW_INT];
+NODEPTR combK, combTrue, combUnit, combCons, combPair;
+NODEPTR combCC, combZ, combIOBIND, combIORETURN, combIOTHEN, combB, combC, combBB;
+NODEPTR combSETMASKINGSTATE;
+NODEPTR combLT, combEQ, combGT;
+NODEPTR combShowExn, combU, combK2, combK3;
+NODEPTR combBININT1, combBININT2, combUNINT1;
+NODEPTR combBINDBL1, combBINDBL2, combUNDBL1;
+NODEPTR combBINBS1, combBINBS2;
+NODEPTR comb_stdin, comb_stdout, comb_stderr;
+NODEPTR combJust;
+NODEPTR combTHROWTO;
+NODEPTR combPairUnit;
+NODEPTR combWorld;
+NODEPTR combCATCHR;
+#define combFalse combK
+#define combNothing combK
+
+#if WANT_ARGS
+/* This single element array hold a list of the program arguments. */
+struct ioarray *argarray;
+#endif  /* WANT_ARGS */
+
+int verbose = 0;
+int gcbell = 0;
+
+
+#if WANT_SIGINT
+volatile int has_sigint = 0;
+void
+handle_sigint(int s)
+{
+  has_sigint = 1;
+}
+#endif
+
+/* 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)
+    PRINT("gc_check: %d\n", (int)k);
+#endif
+  gc();
+}
+
+/* Add the thread to the tail of runq */
+void
+add_q_tail(struct mqueue *q, struct mthread *mt)
+{
+  if (!q->mq_head) {
+    /* q is empty, so mt goes first */
+    q->mq_head = mt;
+  } else {
+    /* link mt to the end of the runq */
+    q->mq_tail->mt_queue = mt;
+  }
+  q->mq_tail = mt;               /* mt is now last */
+  mt->mt_queue = 0;           /* mt is last, so no next */
+}
+
+void
+add_runq_tail(struct mthread *mt)
+{
+  mt->mt_state = ts_runnable;
+  add_q_tail(&runq, mt);
+}
+
+struct mthread*
+remove_q_head(struct mqueue *q)
+{
+  struct mthread *mt = q->mq_head; /* front thread */
+  if (!mt)
+    return 0;
+  q->mq_head = mt->mt_queue;       /* skip to next thread */
+  if (!q->mq_head)
+    q->mq_tail = 0;                /* q is now empty */
+  return mt;
+}
+
+int
+find_and_unlink(struct mqueue *mq, struct mthread *mt)
+{
+  struct mthread **mtp;
+  
+  for(mtp = &mq->mq_head; *mtp && *mtp != mt; mtp = &(*mtp)->mt_queue)
+    ;
+  if (!*mtp)
+    return 0;                   /* not found */
+  *mtp = mt->mt_queue;          /* unlink */
+  if (*mtp)
+    return 1;                   /* the unlinked thread was not the tail */
+  if (mq->mq_head) {
+    for (mt = mq->mq_head; mt->mt_queue; mt = mt->mt_queue)
+      ;                         /* find the last element */
+    mq->mq_tail = mt;
+  } else {
+    /* q is empty */
+    mq->mq_tail = 0;
+  }
+  return 1;
+}
+
+/* This is a yucky hack */
+int doing_rnf = 0;              /* REMOVE */
+#if THREAD_DEBUG
+const int thread_trace = 0;
+#endif  /* THREAD_DEBUG */
+
+/* clean up temporary globals to prepare for rescheduling */
+void
+cleanup(struct mthread *mt, enum th_state ts)
+{
+  /* We are going to reschedule, so clean up thread state:
+   *  stack pointer
+   *  error handlers
+   */
+#if THREAD_DEBUG
+  if (thread_trace)
+    printf("cleanup: %d state=%d\n", (int)mt->mt_id, ts);
+#endif  /* THREAD_DEBUG */
+  mt->mt_slice = stack_ptr;   /* we need stack_ptr reductions to just reach where we left off */
+  mt->mt_state = ts;
+  CLEARSTK();                 /* reset stack */
+  doing_rnf = 0;
+  /* free all error handlers */
+  for (struct handler *h = cur_handler; h; ) {
+    struct handler *n = h;
+    h = h->hdl_old;
+    free(n);
+  }
+  cur_handler = 0;
+}
+
+/* reschedule, does not return */
+NORETURN void
+resched(struct mthread *mt, enum th_state ts)
+{
+  cleanup(mt, ts);
+  longjmp(sched, mt_resched);
+}
+
+#if THREAD_DEBUG
+void
+dump_q(const char *s, struct mqueue q)
+{
+  printf("%s=[", s);
+  for(struct mthread *mt = q.mq_head; mt; mt = mt->mt_queue) {
+    printf("%d ", (int)mt->mt_id);
+  }
+  printf("]\n");
+}
+#endif  /* THREAD_DEBUG */
+
+/* Check if its time to wake up some threads waiting for a time. */
+void
+check_timeq(void)
+{
+#if defined(CLOCK_INIT)
+  CLOCK_T now = CLOCK_GET();
+  while (timeq.mq_head && timeq.mq_head->mt_at <= now) {
+    struct mthread *mt = remove_q_head(&timeq);
+    add_runq_tail(mt);
+    mt->mt_at = -1;             /* indicate that the delay has expired */
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("check_timeq: %d done\n", (int)mt->mt_id);
+#endif  /* THREAD_DEBUG */
+  }
+#endif
+}
+
+void
+throwto(struct mthread *mt, NODEPTR exn)
+{
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("throwto: id=%d\n", (int)mt->mt_id);
+  }
+#endif  /* THREAD_DEBUG */
+  thread_intr(mt);
+  if (mt->mt_state != ts_died && mt->mt_state != ts_finished) {
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("throwto: id=%d put_mvar exn\n", (int)mt->mt_id);
+    }
+#endif  /* THREAD_DEBUG */
+    (void)put_mvar(0, mt->mt_exn, exn); /* never returns if it blocks */
+  }
+}
+
+void
+check_thrown(void)
+{
+  if (runq.mq_head->mt_exn->mv_data == NIL)
+    return;            /* no thrown exception */
+  if (runq.mq_head->mt_mask != mask_unmasked)
+    return;            /* interrupts are masked, so don't throw */
+  /* the current thread has an async exception */
+#if THREAD_DEBUG
+  if (thread_trace)
+    printf("check_thrown: exn for %d\n", (int)runq.mq_head->mt_id);
+#endif  /* THREAD_DEBUG */
+  NODEPTR exn = take_mvar(0, runq.mq_head->mt_exn); /* get the exception */
+  raise_exn(exn);
+}
+
+void
+check_sigint(void)
+{
+#if WANT_SIGINT
+  if (has_sigint) {
+    /* We have a signal, so send an async exception  to the main thread */
+    has_sigint = 0;
+    for(struct mthread *mt= all_threads; mt; mt = mt->mt_next) {
+      if (mt->mt_id == MAIN_THREAD) {
+#if THREAD_DEBUG
+        if (thread_trace)
+          printf("sending signal to main\n");
+#endif  /* THREAD_DEBUG */
+        async_throwto(mt, mkInt(exn_userinterrupt));
+        break;
+      }
+    }
+  }
+#endif
+}
+
+/* Used to detect calls to error while we are already in a call to error. */
+int in_raise = 0;
+
+/* Inlining makes very little difference */
+/*static INLINE*/ void
+yield(void)
+{
+  if (in_raise)                 /* don't context switch when we are dying */
+    return;
+  //printf("yield stk=%d\n", (int)stack_ptr);
+  //pp(stdout, runq.mt_root);
+  COUNT(num_yield);
+  runq.mq_head->mt_num_slices++;
+  // XXX should check mt_thrown here
+  
+  if (timeq.mq_head)
+    check_timeq();
+  check_thrown();
+  check_sigint();
+  // printf("yield %p %d\n", runq, (int)stack_ptr);
+  /* if there is nothing after in the runq then there is no need to reschedule */
+  if (!runq.mq_head->mt_queue) {
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("yield: %d no other threads\n", (int)runq.mq_head->mt_id);
+      dump_q("runq", runq);
+    }
+#endif  /* THREAD_DEBUG */
+    glob_slice = slice;
+    num_reductions += glob_slice-1;
+    return;
+  }
+
+  /* Unlink from runq */
+  struct mthread *mt = remove_q_head(&runq);
+  /* link into back of runq */
+  add_runq_tail(mt);
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("yield: resched %d\n", (int)mt->mt_id);
+    dump_q("runq", runq);
+  }
+#endif  /* THREAD_DEBUG */
+  resched(mt, ts_runnable);
+}
+
+struct mthread*
+new_thread(NODEPTR root)
+{
+  struct mthread *mt = mmalloc(sizeof(struct mthread));
+
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("new_thread: mt=%p root=%p\n", mt, root);
+  }
+#endif  /* THREAD_DEBUG */
+  mt->mt_mask = mask_unmasked;
+  mt->mt_root = root;
+  mt->mt_exn = new_mvar();
+  mt->mt_mval = NIL;
+  mt->mt_slice = 0;
+  mt->mt_mark = 0;
+  mt->mt_num_slices = 0;
+  mt->mt_id = num_thread_create++;
+#if defined(CLOCK_INIT)
+  mt->mt_at = 0;                /* delay has not expired */
+#endif
+
+  /* add to all_threads */
+  mt->mt_next = all_threads;
+  all_threads = mt;
+
+  /* add to tail of runq */
+  add_runq_tail(mt);            /* sets runnable */
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("new_thread: add %d to runq tail\n", (int)mt->mt_id);
+    dump_q("runq", runq);
+  }
+#endif  /* THREAD_DEBUG */
+  return mt;
+}
+
+struct mvar*
+new_mvar(void)
+{
+  COUNT(num_mvar_alloc);
+  struct mvar *mv = mmalloc(sizeof(struct mvar));
+
+  mv->mv_data = NIL;
+  mv->mv_takeput.mq_head = 0;
+  mv->mv_takeput.mq_tail = 0;
+  mv->mv_read.mq_head = 0;
+  mv->mv_read.mq_tail = 0;
+
+  /* add to all_mvars */
+  mv->mv_next = all_mvars;
+  mv->mv_mark = 0;
+  all_mvars = mv;
+  
+#if THREAD_DEBUG
+  if (thread_trace)
+    printf("new_mvar: mvar=%p\n", mv);
+#endif  /* THREAD_DEBUG */
+  return mv;
+}
+
+NODEPTR
+take_mvar(int try, struct mvar *mv)
+{
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("take_mvar: mvar=%p\n", mv);
+    dump_q("takeput", mv->mv_takeput);
+  }
+#endif  /* THREAD_DEBUG */
+  NODEPTR n;
+  if ((n = runq.mq_head->mt_mval) != NIL) {
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("take_mvar: mvar=%p got data %d\n", mv, (int)runq.mq_head->mt_id);
+#endif  /* THREAD_DEBUG */
+    /* We have after waking up */
+    runq.mq_head->mt_mval = NIL;
+    return n;                   /* returned the stashed data */
+  }
+  if ((n = mv->mv_data) != NIL) {
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("take_mvar: mvar=%p full\n", mv);
+#endif  /* THREAD_DEBUG */
+    /* mvar is full */
+    mv->mv_data = NIL;           /* now empty */
+    /* move all threads waiting to put to the runq */
+    for (struct mthread *mt = mv->mv_takeput.mq_head; mt; ) {
+#if THREAD_DEBUG
+      if (thread_trace) {
+        printf("take_mvar: mvar=%p wake %d\n", mv, (int)mt->mt_id);
+      }
+#endif  /* THREAD_DEBUG */
+      struct mthread *nt = mt->mt_queue;
+      add_runq_tail(mt);
+#if THREAD_DEBUG
+      if (thread_trace) {
+        dump_q("runq", runq);
+      }
+#endif  /* THREAD_DEBUG */
+      mt = nt;
+    }
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("take_mvar: mvar=%p return %p\n", mv, n);
+    }
+#endif  /* THREAD_DEBUG */
+    return n;                   /* return the data */
+  } else {
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("take_mvar: mvar=%p empty\n", mv);
+#endif  /* THREAD_DEBUG */
+    /* mvar is empty */
+    if (try)
+      return NIL;
+    struct mthread *mt = remove_q_head(&runq);
+    add_q_tail(&mv->mv_takeput, mt);
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("take_mvar: mvar=%p suspend %d\n", mv, (int)mt->mt_id);
+      dump_q("runq", runq);
+      dump_q("takeput", mv->mv_takeput);
+    }
+#endif  /* THREAD_DEBUG */
+    /* Unlink from runq */
+    resched(mt, ts_wait_mvar);    /* never returns */
+  }
+}
+
+NODEPTR
+read_mvar(int try, struct mvar *mv)
+{
+  NODEPTR n;
+  if ((n = runq.mq_head->mt_mval) != NIL) {
+    /* We have after waking up */
+    runq.mq_head->mt_mval = NIL;
+    return n;                   /* returned the stashed data */
+  }
+  if ((n = mv->mv_data) != NIL) {
+    /* mvar is full */
+    return n;                   /* return the data */
+  } else {
+    /* mvar is empty */
+    if (try)
+      return NIL;
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("read_mvar: suspend %d\n", (int)runq.mq_head->mt_id);
+      dump_q("runq", runq);
+    }
+#endif  /* THREAD_DEBUG */
+    struct mthread *mt = remove_q_head(&runq);
+    add_q_tail(&mv->mv_read, mt);
+    resched(mt, ts_wait_mvar);                /* never returns */
+  }
+}
+
+int
+put_mvar(int try, struct mvar *mv, NODEPTR v)
+{
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("put_mvar: mvar=%p\n", mv);
+    dump_q("takeput", mv->mv_takeput);
+    dump_q("read", mv->mv_read);
+  }
+#endif  /* THREAD_DEBUG */
+  if (mv->mv_data != NIL) {
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("put_mvar: mvar=%p full\n", mv);
+#endif  /* THREAD_DEBUG */
+    /* mvar is full */
+    if (try)
+      return 0;
+    struct mthread *mt = remove_q_head(&runq);
+    add_q_tail(&mv->mv_takeput, mt); /* put on mvar queue */
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("put_mvar: suspend %d\n", (int)mt->mt_id);
+      dump_q("runq", runq);
+      dump_q("takeput", mv->mv_takeput);
+    }
+#endif  /* THREAD_DEBUG */
+    resched(mt, ts_wait_mvar);                  /* never returns */
+  } else {
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("put_mvar: mvar=%p empty\n", mv);
+#endif  /* THREAD_DEBUG */
+    /* mvar is empty */
+    if (mv->mv_takeput.mq_head || mv->mv_read.mq_head) {
+      /* one or more threads are waiting */
+      struct mthread *mt;
+      if (mv->mv_takeput.mq_head) {
+        /* wake up one 'take' */
+        mt = remove_q_head(&mv->mv_takeput);
+#if THREAD_DEBUG
+        if (thread_trace)
+          printf("put_mvar: wake-1 %d\n", (int)mt->mt_id);
+#endif  /* THREAD_DEBUG */
+        add_runq_tail(mt);             /* and schedule for execution later */
+        mt->mt_mval = v;
+      }
+      for (mt = mv->mv_read.mq_head; mt; ) { /* XXX use q primitives */
+#if THREAD_DEBUG
+        if (thread_trace)
+          printf("put_mvar: wake-N %d\n", (int)mt->mt_id);
+#endif  /* THREAD_DEBUG */
+        mt->mt_mval = v;               /* value for restarted read */
+        mt = mt->mt_queue;             /* next waiter */
+        add_runq_tail(mt);             /* and schedule for execution later */
+      }
+#if THREAD_DEBUG
+      if (thread_trace)
+        dump_q("runq", runq);
+#endif  /* THREAD_DEBUG */
+      /* return to caller */
+    } else {
+#if THREAD_DEBUG
+      if (thread_trace) {
+        printf("put_mvar: mvar=%p no waiters\n", mv);
+      }
+#endif  /* THREAD_DEBUG */
+      /* no threads waiting, so store the value */
+      mv->mv_data = v;
+      /* return to caller */
+    }
+  }
+  return 1;
+}
+
+NORETURN void
+thread_delay(uvalue_t usecs)
+{
+#if !defined(CLOCK_INIT)
+  ERR("thread_delay: no clock");
+#else
+  /* XXX should check if there is already a throw exn */
+  struct mthread *mt = remove_q_head(&runq);
+  mt->mt_at = CLOCK_GET() + usecs; /* wakeup time */
+#if THREAD_DEBUG
+  if (thread_trace)
+    printf("thread_delay: id=%d usecs=%ld\n", (int)mt->mt_id, (long)usecs);
+#endif  /* THREAD_DEBUG */
+  /* insert in delayq which is kept sorted in time order */
+  struct mthread **tq;
+  for (tq = &timeq.mq_head; *tq; tq = &(*tq)->mt_queue) {
+    if (mt->mt_at <= (*tq)->mt_at)
+      break;
+  }
+  mt->mt_queue = *tq;           /* forward link */
+  *tq = mt;                     /* and put mt in place */
+  if (!mt->mt_queue)            /* no forward link */
+    timeq.mq_tail = mt;
+  resched(mt, ts_wait_time);
+#endif  
+}
+
+/* Pause execution if something might still happen */
+void
+pause_exec(void)
+{
+#if defined(CLOCK_INIT)
+  if (timeq.mq_head) {
+    struct mthread *mt;
+    while (!runq.mq_head && (mt = timeq.mq_head)) {
+      /* We are waiting for a delay to expire, so sleep a while */
+      CLOCK_T dly = mt->mt_at - CLOCK_GET();
+      if (dly > 0) {
+        /* usleep() can be unreliable, so sleep shorter than the delay */
+        dly /= 4;
+        if (dly < 50) dly = 50;
+        CLOCK_SLEEP((useconds_t)dly);
+      }
+      check_timeq();
+    }
+  } else {
+    ERR("deadlock");            /* XXX throw async to main thread */
+  }
+#else  /* CLOCK_INIT */
+  ERR("no clock");
+#endif  /* CLOCK_INIT */
+}
+
+/* Interrupt a sleeping thread in a throwTo/threadDelay */
+void
+thread_intr(struct mthread *mt)
+{
+#if THREAD_DEBUG
+  if (thread_trace)
+    printf("thread_intr: id=%d state=%d\n", (int)mt->mt_id, mt->mt_state);
+#endif  /* THREAD_DEBUG */
+  switch(mt->mt_state) {
+  case ts_runnable:
+    break;                      /* already on runq */
+  case ts_wait_mvar:
+    if (mt->mt_mask == mask_uninterruptible) /* uninterruptible */
+      break;
+    /* we don't know which mvar we are waiting on, so look at all of them */
+    /* XXX should add a pointer in mthread to the mvar */
+    for (struct mvar *mv = all_mvars; mv; mv = mv->mv_next) {
+      if (find_and_unlink(&mv->mv_takeput, mt))
+          goto found;
+      if (find_and_unlink(&mv->mv_read, mt))
+          goto found;
+    }
+    ERR("thread_intr: mvar");
+  found:
+#if defined(CLOCK_INIT)
+    mt->mt_at = -1;             /* don't wait again */
+#endif
+    add_runq_tail(mt);
+    break;
+  case ts_wait_time:
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("thread_intr: ts_wait_time mask=%d\n", (int)mt->mt_mask);
+    }
+#endif  /* THREAD_DEBUG */
+    if (mt->mt_mask == mask_uninterruptible) /* uninterruptible */
+      break;
+    /* find thread in timeq */
+    if (!find_and_unlink(&timeq, mt))
+      ERR("thread_intr: timeq");
+    /* XXX should adjust mq_tail */
+    add_runq_tail(mt);
+    break;
+  case ts_finished:
+  case ts_died:
+    (void)take_mvar(0, mt->mt_exn); /* ignore exception */
+    break;
+  default:
+    ERR("thread_intr");
+  }
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("thread_intr: done\n");
+    dump_q("runq", runq);
+  }
+#endif  /* THREAD_DEBUG */
+}
+
+NORETURN void
+raise_exn(NODEPTR exn)
+{
+  if (cur_handler) {
+    /* Pass the exception to the handler */
+    cur_handler->hdl_exn = exn;
+    longjmp(cur_handler->hdl_buf, 1);
+  } else {
+    /* No exception handler, jump to the scheduler */
+    the_exn = exn;
+    longjmp(sched, mt_raise);
+  }
+}
+
+NORETURN void
+raise_rts(enum rts_exn exn) {
+  raise_exn(mkInt(exn));
+}
+
+/***************** GC ******************/
+
+/* 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));
+}
+
+/* Set FREE bit to 1, used to undo marking in GC */
+static INLINE void mark_unused(NODEPTR n)
+{
+  heapoffs_t i = LABEL(n);
+#if SANITY
+  if (i < heap_start)
+    ERR("Unmarking invalid heap address.");
+  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;
+}
+
+static INLINE NODEPTR
+alloc_node(enum node_tag t)
+{
+  heapoffs_t i = next_scan_index / BITS_PER_WORD;
+  int k;                        /* will contain bit pos + 1 */
+  heapoffs_t pos;
+  NODEPTR n;
+  heapoffs_t word;
+
+  /* This can happen if we run out of memory when parsing. */
+  if (num_free <= 0)
+    ERR("alloc_node");
+
+  for(;;) {
+    word = free_map[i];
+    if (word)
+      break;
+    i++;
+#if SANITY
+    if (i >= free_map_nwords) {
+#if 0
+      fprintf(stderr, "wordsize=%u, num_free=%u next_scan_index=%u i=%u free_map_nwords=%u\n", (uint)BITS_PER_WORD,
+              (uint)num_free, (uint)next_scan_index, (uint)i, (uint)free_map_nwords);
+#endif
+      ERR("alloc_node: free_map");
+    }
+#endif
+  }
+  k = FFS(word);
+  pos = i * BITS_PER_WORD + k - 1; /* first free node */
+  n = HEAPREF(pos);
+  // mark_used(n); // equivalent to:
+  free_map[i] = word & (word-1);
+  next_scan_index = pos;
+
+  SETTAG(n, t);
+  COUNT(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;
+}
+
+NODEPTR evali(NODEPTR n);
+
+void
+start_exec(NODEPTR root)
+{
+  struct mthread *mt;
+
+  new_thread(new_ap(root, combWorld)); /* main thread */
+
+  switch(setjmp(sched)) {
+  case mt_main:
+    break;
+  case mt_resched:
+    COUNT(num_resched);
+    break;
+  case mt_raise:
+    /* We have an uncaught exception.
+     * If it's the main thread, this kills the program.
+     * Otherwise, it just kills the thread.
+     */
+    mt = remove_q_head(&runq);
+    if (mt->mt_id == MAIN_THREAD) {
+      die_exn(the_exn);
+    } else {
+#if THREAD_DEBUG
+      if (thread_trace) {
+        printf("start_exec: mt=%p id=%d died from exn\n", mt, (int)mt->mt_id);
+      }
+#endif  /* THREAD_DEBUG */
+      mt->mt_state = ts_died;
+      mt->mt_root = NIL;
+    }
+  }
+#if THREAD_DEBUG
+  if (thread_trace) {
+    printf("start_exec:\n");
+    dump_q("runq", runq);
+  }
+#endif  /* THREAD_DEBUG */
+  for(;;) {
+    if (!runq.mq_head)
+      pause_exec();
+    mt = runq.mq_head;          /* front thread */
+    if (!mt)                    /* this should never happen */
+      ERR("no threads");
+
+    glob_slice = mt->mt_slice + slice;
+#if THREAD_DEBUG
+    if (thread_trace)
+      printf("start_exec: start %d, slice=%d\n", (int)mt->mt_id, (int)glob_slice);
+#endif  /* THREAD_DEBUG */
+    num_reductions += glob_slice-1;
+    (void)evali(mt->mt_root);         /* run it */
+    num_reductions -= glob_slice;
+    /* when evali() returns the thread is done */
+    (void)remove_q_head(&runq);                      /* remove front thread */
+
+#if THREAD_DEBUG
+    if (thread_trace) {
+      printf("start_exec: mt=%p id=%d finished\n", mt, (int)mt->mt_id);
+    }
+#endif  /* THREAD_DEBUG */
+    mt->mt_state = ts_finished;
+    mt->mt_root = NIL;
+    /* XXX mt_mval, mt_thrown */
+
+    if (mt->mt_id == MAIN_THREAD)
+      return;                   /* when the main thread dies it's all over */
+  }
+}
+
+/* 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 {
+  const char *name;
+  const enum node_tag tag;
+  const enum node_tag flipped;        /* What should (C op) reduce to? defaults to T_FREE */
+  NODEPTR node;
+} primops[] = {
+  /* combinators */
+  /* sorted by frequency in a typical program */
+  { "B", T_B },
+  { "O", T_O },
+  { "K", T_K, T_A },
+  { "C'", T_CC },
+  { "C", T_C },
+  { "A", T_A, T_K },
+  { "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 },
+  /*  { "J", T_J },*/
+  { "K2", T_K2 },
+  { "K3", T_K3 },
+  { "K4", T_K4 },
+  { "C'B", T_CCB },
+/* primops */
+  { "+", T_ADD, T_ADD },
+  { "-", T_SUB, T_SUBR },
+  { "*", T_MUL, T_MUL },
+  { "quot", T_QUOT },
+  { "rem", T_REM },
+  { "uquot", T_UQUOT },
+  { "urem", T_UREM },
+  { "subtract", T_SUBR, T_SUB },
+  { "neg", T_NEG },
+  { "and", T_AND, T_AND },
+  { "or", T_OR, T_OR },
+  { "xor", T_XOR, T_XOR },
+  { "inv", T_INV },
+  { "shl", T_SHL },
+  { "shr", T_SHR },
+  { "ashr", T_ASHR },
+  { "popcount", T_POPCOUNT },
+  { "clz", T_CLZ },
+  { "ctz", T_CTZ },
+#if WANT_FLOAT
+  { "f+" , T_FADD, T_FADD},
+  { "f-" , T_FSUB },
+  { "f*" , T_FMUL, T_FMUL},
+  { "f/", T_FDIV},
+  { "fneg", T_FNEG},
+  { "itof", T_ITOF},
+  { "f==", T_FEQ, T_FEQ},
+  { "f/=", T_FNE, T_FNE},
+  { "f<", T_FLT, T_FGT},
+  { "f<=", T_FLE, T_FGE},
+  { "f>", T_FGT, T_FLT},
+  { "f>=", T_FGE, T_FLE},
+  { "fshow", T_FSHOW},
+  { "fread", T_FREAD},
+#endif  /* WANT_FLOAT */
+
+  { "bs++", T_BSAPPEND },
+  { "bs++.", T_BSAPPENDDOT },
+  { "bs==", T_BSEQ, T_BSEQ },
+  { "bs/=", T_BSNE, T_BSNE },
+  { "bs<", T_BSLT, T_BSGT },
+  { "bs<=", T_BSLE, T_BSGE  },
+  { "bs>", T_BSGT, T_BSLT },
+  { "bs>=", T_BSGE, T_BSLE  },
+  { "bscmp", T_BSCMP },
+  { "bspack", T_BSPACK },
+  { "bsunpack", T_BSUNPACK },
+  { "bsreplicate", T_BSREPLICATE },
+  { "bslength", T_BSLENGTH },
+  { "bssubstr", T_BSSUBSTR },
+  { "bsindex", T_BSINDEX },
+
+  { "ord", T_I },
+  { "chr", T_I },
+  { "==", T_EQ, T_EQ },
+  { "/=", T_NE, T_NE },
+  { "<", T_LT, T_GT },
+  { "u<", T_ULT, T_UGT },
+  { "u<=", T_ULE, T_UGE },
+  { "u>", T_UGT, T_ULT },
+  { "u>=", T_UGE, T_ULE },
+  { "<=", T_LE, T_GE },
+  { ">", T_GT, T_LT },
+  { ">=", T_GE, T_LE },
+  { "fp+", T_FPADD },
+  { "fp2p", T_FP2P },
+  { "fpnew", T_FPNEW },
+  { "fpfin", T_FPFIN },
+  //  { "fpstr", T_FPSTR },
+  { "fp2bs", T_FP2BS },
+  { "bs2fp", T_BS2FP },
+  { "seq", T_SEQ },
+  { "equal", T_EQUAL, T_EQUAL },
+  { "sequal", T_EQUAL, T_EQUAL },
+  { "compare", T_COMPARE },
+  { "scmp", T_COMPARE },
+  { "icmp", T_ICMP },
+  { "ucmp", T_UCMP },
+  { "rnf", T_RNF },
+  { "fromUTF8", T_BSFROMUTF8 },
+  { "toUTF8", T_BSTOUTF8 },
+  { "headUTF8", T_BSHEADUTF8 },
+  { "tailUTF8", T_BSTAILUTF8 },
+  /* 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.getArgRef", T_IO_GETARGREF },
+  { "IO.performIO", T_IO_PERFORMIO },
+  { "IO.gc", T_IO_GC },
+  { "IO.pp", T_IO_PP },
+  { "raise", T_RAISE },
+  { "catch", T_CATCH },
+  { "catchr", T_CATCHR },
+  { "A.alloc", T_ARR_ALLOC },
+  { "A.copy", T_ARR_COPY },
+  { "A.size", T_ARR_SIZE },
+  { "A.read", T_ARR_READ },
+  { "A.write", T_ARR_WRITE },
+  { "A.==", T_ARR_EQ },
+  { "dynsym", T_DYNSYM },
+  { "IO.fork", T_IO_FORK },
+  { "IO.thid", T_IO_THID },
+  { "thnum", T_THNUM },
+  { "IO.throwto", T_IO_THROWTO },
+  { "IO.yield", T_IO_YIELD },
+  { "IO.newmvar", T_IO_NEWMVAR },
+  { "IO.takemvar", T_IO_TAKEMVAR },
+  { "IO.putmvar", T_IO_PUTMVAR },
+  { "IO.readmvar", T_IO_READMVAR },
+  { "IO.trytakemvar", T_IO_TRYTAKEMVAR },
+  { "IO.tryputmvar", T_IO_TRYPUTMVAR },
+  { "IO.tryreadmvar", T_IO_TRYREADMVAR },
+  { "IO.threaddelay", T_IO_THREADDELAY },
+  { "IO.threadstatus", T_IO_THREADSTATUS },
+  { "IO.getmaskingstate", T_IO_GETMASKINGSTATE },
+  { "IO.setmaskingstate", T_IO_SETMASKINGSTATE },
+  { "newCAStringLen", T_NEWCASTRINGLEN },
+  { "packCString", T_PACKCSTRING },
+  { "packCStringLen", T_PACKCSTRINGLEN },
+  { "toPtr", T_TOPTR },
+  { "toInt", T_TOINT },
+  { "toDbl", T_TODBL },
+  { "toFunPtr", T_TOFUNPTR },
+  { "IO.ccall", T_IO_CCALL },
+  { "isint", T_ISINT },
+  { "binint2", T_BININT2 },
+  { "binint1", T_BININT1 },
+  { "bindbl2", T_BINDBL2 },
+  { "bindbl1", T_BINDBL1 },
+  { "binbs2", T_BINBS2 },
+  { "binbs1", T_BINBS1 },
+  { "unint1", T_UNINT1 },
+  { "undbl1", T_UNDBL1 },
+};
+
+#if GCRED
+enum node_tag flip_ops[T_LAST_TAG+1];
+#endif
+
+#if WANT_STDIO
+/* Create a dummy foreign pointer for the standard stdio handles. */
+/* These handles are never gc():d. */
+void
+mk_std(NODEPTR n, FILE *f)
+{
+  struct final *fin = mcalloc(1, sizeof(struct final));
+  struct forptr *fp = mcalloc(1, sizeof(struct forptr));
+  BFILE *bf = add_utf8(add_FILE(f));
+  SETTAG(n, T_FORPTR);
+  FORPTR(n) = fp;
+  fin->arg = bf;
+  fin->back = fp;
+  fp->payload.string = bf;
+  fp->finalizer = fin;
+}
+#endif
+
+void
+init_nodes(void)
+{
+  enum node_tag t;
+  size_t j;
+  NODEPTR n;
+
+  ALLOC_HEAP(heap_size);
+  free_map_nwords = (heap_size + BITS_PER_WORD - 1) / BITS_PER_WORD; /* bytes needed for free map */
+  free_map = mmalloc(free_map_nwords * sizeof(bits_t));
+
+  /* Set up permanent nodes */
+  heap_start = 0;
+  for(t = T_FREE; t <= T_LAST_TAG; t++) {
+    NODEPTR n = HEAPREF(heap_start++);
+    SETTAG(n, t);
+    switch (t) {
+    case T_K: combK = n; break;
+    case T_A: combTrue = n; break;
+    case T_I: combUnit = n; break;
+    case T_O: combCons = n; break;
+    case T_P: combPair = n; break;
+    case T_CC: combCC = n; break;
+    case T_BB: combBB = n; break;
+    case T_B: combB = n; break;
+    case T_C: combC = n; break;
+    case T_Z: combZ = n; break;
+    case T_U: combU = n; break;
+    case T_K2: combK2 = n; break;
+    case T_K3: combK3 = n; break;
+    case T_IO_BIND: combIOBIND = n; break;
+    case T_IO_THEN: combIOTHEN = n; break;
+    case T_IO_RETURN: combIORETURN = n; break;
+    case T_IO_SETMASKINGSTATE: combSETMASKINGSTATE = n; break;
+    case T_BININT1: combBININT1 = n; break;
+    case T_BININT2: combBININT2 = n; break;
+    case T_UNINT1: combUNINT1 = n; break;
+    case T_BINDBL1: combBINDBL1 = n; break;
+    case T_BINDBL2: combBINDBL2 = n; break;
+    case T_UNDBL1: combUNDBL1 = n; break;
+    case T_BINBS1: combBINBS1 = n; break;
+    case T_BINBS2: combBINBS2 = n; break;
+    case T_IO_THROWTO: combTHROWTO = n; break;
+    case T_CATCHR: combCATCHR = n; break;
+#if WANT_STDIO
+    case T_IO_STDIN:  comb_stdin  = n; mk_std(n, stdin);  break;
+    case T_IO_STDOUT: comb_stdout = n; mk_std(n, stdout); break;
+    case T_IO_STDERR: comb_stderr = n; mk_std(n, stderr); break;
+#endif
+    default:
+      break;
+    }
+    for (j = sizeof primops / sizeof primops[0]; j-- > 0; ) {
+      if (primops[j].tag == t) {
+        primops[j].node = n;
+      }
+      tag_names[primops[j].tag] = primops[j].name;
+    }
+  }
+
+#if GCRED
+  for (j = 0; j < sizeof primops / sizeof primops[0]; j++) {
+    flip_ops[primops[j].tag] = primops[j].flipped;
+  }
+#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 { n = HEAPREF(heap_start++); SETTAG(n, T_AP); FUN(n) = (f); ARG(n) = (a); (c) = n;} while(0)
+#define MKINT(c, i) do { n = HEAPREF(heap_start++); SETTAG(n, T_INT); SETVALUE(n, i); (c) = n; } while(0)
+  NEWAP(combLT, combZ,     combFalse);  /* Z B */
+  NEWAP(combEQ, combFalse, combFalse);  /* K K */
+  NEWAP(combGT, combFalse, combTrue);   /* K A */
+  {
+    /* The displaySomeException compiles to (U (U (K2 A))) */
+    NODEPTR x;
+    NEWAP(x, combK2, combTrue);        /* (K2 A) */
+    NEWAP(x, combU, x);                /* (U (K2 A)) */
+    NEWAP(combShowExn, combU, x);      /* (U (U (K2 A))) */
+  }
+  NEWAP(combJust, combZ, combU);       /* (Z U) */
+  MKINT(combWorld, 99999);
+  NEWAP(combPairUnit, combPair, combUnit);
+#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
+counter_t red_a, red_k, red_i, red_int, red_flip, red_bi, red_bxi, red_ccbi, red_cc, red_cci, red_ccbbcp;
+#endif
+counter_t red_bb, red_k4, red_k3, red_k2, red_ccb, red_z, red_r;
+
+//counter_t mark_depth;
+//counter_t max_mark_depth = 0;
+
+void mark(NODEPTR *np);
+void mark_mvar(struct mvar *mv);
+
+/* Throwing, e.g., a UserInterrupt exception to the main thread
+ * it can happen from any thread (the one that happens to poll).
+ * Throwing an exception can block, so we can't throw it from
+ * the current thread.  Instead, we spawn a new thread, whose
+ * only job it is to throw the exception.
+ */
+void
+async_throwto(struct mthread *mt, NODEPTR exn)
+{
+  GCCHECK(4);
+  NODEPTR thid = alloc_node(T_THID);
+  THR(thid) = mt;
+  NODEPTR root = new_ap(new_ap(new_ap(combTHROWTO, thid), exn), combWorld);
+  (void)new_thread(root);       /* spawn and put on runq */
+}
+
+void
+mark_thread(struct mthread *mt)
+{
+  if (mt->mt_mark)
+    return;                     /* already marked */
+  mt->mt_mark = 1;
+  if (mt->mt_root != NIL)
+    mark(&mt->mt_root);
+  mark_mvar(mt->mt_exn);         
+  if (mt->mt_mval != NIL)
+    mark(&mt->mt_mval);
+}
+
+void
+mark_mvar(struct mvar *mv)
+{
+  if (mv->mv_mark)
+    return;
+  mv->mv_mark = 1;
+  if (mv->mv_data != NIL)
+    mark(&mv->mv_data);
+  for (struct mthread *mt = mv->mv_takeput.mq_head; mt; mt = mt->mt_next)
+    mark_thread(mt);
+  for (struct mthread *mt = mv->mv_read.mq_head; mt; mt = mt->mt_next)
+    mark_thread(mt);
+}
+  
+/* Follow indirections */
+static INLINE NODEPTR
+indir(NODEPTR *np)
+{
+  NODEPTR n = *np;
+  while (GETTAG(n) == T_IND)
+    n = GETINDIR(n);
+  *np = n;
+  return n;
+}
+
+/* Mark all used nodes reachable from *np, updating *np. */
+void
+mark(NODEPTR *np)
+{
+  stackptr_t stk = stack_ptr;
+  NODEPTR n;
+  NODEPTR *to_push = 0;         /* silence warning by initializing */
+#if GCRED
+  value_t val;
+#endif
+  enum node_tag tag;
+
+  //  mark_depth++;
+  //  if (mark_depth % 10000 == 0)
+  //    PRINT("mark depth %"PRIcounter"\n", mark_depth);
+  top:
+  n = *np;
+  tag = GETTAG(n);
+  if (tag == T_IND) {
+#if SANITY
+    int loop = 0;
+    /* Skip indirections, and redirect start pointer */
+    while ((tag = GETTAG(n)) == T_IND) {
+      //      PRINT("*"); fflush(stdout);
+      n = GETINDIR(n);
+      if (loop++ > 10000000) {
+        //PRINT("%p %p %p\n", n, GETINDIR(n), GETINDIR(GETINDIR(n)));
+        ERR("IND loop");
+      }
+    }
+    //    if (loop)
+    //      PRINT("\n");
+#else  /* SANITY */
+    while ((tag = GETTAG(n)) == T_IND) {
+      n = GETINDIR(n);
+    }
+#endif  /* SANITY */
+    *np = n;
+  }
+  if (n < cells || n > cells + heap_size)
+    ERR("bad n");
+  if (is_marked_used(n)) {
+    goto fin;
+  }
+  num_marked++;
+  mark_used(n);
+  switch (tag) {
+#if GCRED
+#define GCREDIND(x) do { NODEPTR nn = (x); mark(&nn); SETINDIR(n, nn); goto fin; } while(0)
+   case T_INT:
+#if INTTABLE
+    if (LOW_INT <= (val = GETVALUE(n)) && val < HIGH_INT) {
+      SETINDIR(n, intTable[val - LOW_INT]);
+      COUNT(red_int);
+      goto top;
+    }
+    goto fin;
+#endif  /* INTTABLE */
+   case T_AP:
+      if (want_gc_red) {
+        NODEPTR fun = indir(&FUN(n));
+        NODEPTR arg = indir(&ARG(n));
+        enum node_tag funt = GETTAG(fun);
+        enum node_tag argt = GETTAG(arg);
+        enum node_tag funfunt = funt == T_AP ? GETTAG(indir(&FUN(fun))) : T_FREE;
+        enum node_tag funargt = argt == T_AP ? GETTAG(indir(&FUN(arg))) : T_FREE;
+
+        /* This is really only fruitful just after parsing.  It can be removed. */
+        if (funfunt == T_A) {
+          /* Do the A x y --> y reduction */
+          NODEPTR y = ARG(n);
+          COUNT(red_a);
+          GCREDIND(y);
+        }
+
+        if (funfunt == T_K) {
+          /* Do the K x y --> x reduction */
+          NODEPTR x = ARG(FUN(n));
+          COUNT(red_k);
+          GCREDIND(x);
+        }
+
+        if (funt == T_I) {
+          /* Do the I x --> x reduction */
+          NODEPTR x = ARG(n);
+          COUNT(red_i);
+          GCREDIND(x);
+        }
+
+        if(funt == T_CC && argt == T_I) { 
+          /* C' I --> C */
+          SETTAG(n, T_C);
+          COUNT(red_cci);
+          goto top;
+        }
+
+        if(funt == T_CCB && argt == T_AP) {
+          NODEPTR funarg = indir(&FUN(arg));
+          NODEPTR argarg = indir(&ARG(arg));
+          if (GETTAG(argarg) == T_P && GETTAG(funarg) == T_AP) {
+            if (GETTAG(indir(&FUN(funarg))) == T_B && GETTAG(indir(&ARG(funarg))) == T_C) { 
+              /* C'B ((B C) P) --> C */
+              SETTAG(n, T_C);
+              COUNT(red_ccbbcp);
+              goto top;
+            }
+          }
+        }
+
+        if(funt == T_B && argt == T_I) { 
+          /* B I --> I */
+          SETTAG(n, T_I);
+          COUNT(red_bi);
+          goto top;
+        }
+
+        if(funfunt == T_B && argt == T_I) { 
+          /* B x I --> x */
+          NODEPTR x = ARG(FUN(n));
+          COUNT(red_bxi);
+          GCREDIND(x);
+        }
+
+        if(funfunt == T_CCB && argt == T_I) { 
+          /* C'B x I --> x */
+          NODEPTR x = ARG(FUN(n));
+          COUNT(red_ccbi);
+          GCREDIND(x);
+        }
+
+        if(funt == T_C && funargt == T_C) { 
+          /* C (C x) --> x */
+          NODEPTR x = ARG(ARG(n));
+          COUNT(red_cc);
+          GCREDIND(x);
+        }
+
+#if 0
+        /* Very rare */
+        if (funt == T_S && funargt == T_K) {
+          /* S (K x) --> B x */
+          printf("SK"); fflush(stdout);
+        }
+#endif
+
+#if 0
+        /* Fairly frequent, but needs allocation */
+        if (funfunt == T_B && funargt == T_K) {
+          /* B x (K y) --> K x y */
+          printf("BxK\n");
+        }
+#endif
+
+#if 1
+        if (funt == T_C) {
+          enum node_tag tf;
+          if ((tf = flip_ops[argt])) {
+            /* Do the C op --> flip_op reduction */
+            // PRINT("%s -> %s\n", tag_names[tt], tag_names[tf]);
+            COUNT(red_flip);
+            GCREDIND(HEAPREF(tf));
+          }
+        }
+#endif
+      }
+#else   /* GCRED */
+   case T_AP:
+#endif  /* GCRED */
+    /* Avoid tail recursion */
+    np = &FUN(n);
+    to_push = &ARG(n);
+    break;
+   case T_ARR:
+    {
+      struct ioarray *arr = ARR(n);
+
+      // arr->marked records marking progress through arr.
+      if (arr->marked >= arr->size) {
+        goto fin;
+      }
+      // We unmark the array as a whole and push it as long
+      // as there's more entries to scan.
+      mark_unused(n);
+      num_marked--;
+      to_push = np;
+      np = &arr->array[arr->marked++];
+      break;
+    }
+
+   case T_FORPTR:
+     FORPTR(n)->finalizer->marked = 1;
+     goto fin;
+
+   case T_THID:
+     mark_thread(THR(n));
+     break;
+
+   case T_MVAR:
+     mark_mvar(MVAR(n));
+     break;
+
+   default:
+     goto fin;
+  }
+
+  if (!is_marked_used(*to_push)) {
+    //  mark_depth++;
+    PUSH((NODEPTR)to_push);
+  }
+  goto top;
+ fin:
+  //  if (mark_depth > max_mark_depth) {
+  //    max_mark_depth = mark_depth;
+  //  }
+  //  mark_depth--;
+  if (stack_ptr > stk) {
+    np = (NODEPTR *)POPTOP();
+    goto top;
+  }
+  return;
+}
+
+/* Perform a garbage collection:
+   - Mark nodes from the stack
+   - Mark permanent arrays
+   - Mark threads that have a root
+   - Scan and free arrays
+   - Scan and free foreign pointers and run finalizers
+   - Scan and free threads
+   - Scan and free mvars
+*/
+void
+gc(void)
+{
+  stackptr_t i;
+
+  num_gc++;
+  num_marked = 0;
+#if WANT_STDIO
+  if (verbose > 1)
+    PRINT("gc mark\n");
+#endif
+  gc_mark_time -= GETTIMEMILLI();
+  mark_all_free();
+  /* Mark everything reachable from the stack */
+  for (i = 0; i <= stack_ptr; i++)
+    mark(&stack[i]);
+
+  /* Mark everything reachable from permanent array nodes */
+  for (struct ioarray *arr = array_root; arr; arr = arr->next) {
+    if (arr->permanent) {
+      for (i = 0; i < arr->size; i++)
+        mark(&arr->array[i]);
+    }
+  }
+
+  /* Mark everything reachable from the threads.
+   * Note, zombie threads have no root so they are not marked.
+   */
+  for (struct mthread *mt = all_threads; mt; mt = mt->mt_next) {
+    if (mt->mt_root != NIL)
+      mark_thread(mt);
+  }
+
+  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");
+
+  gc_scan_time -= GETTIMEMILLI();
+  /* Free unused arrays */
+  for (struct ioarray **arrp = &array_root; *arrp; ) {
+    struct ioarray *arr = *arrp;
+    if (arr->marked || arr->permanent) {
+      arr->marked = 0;
+      arrp = &arr->next;
+    } else {
+      *arrp = arr->next;        /* unlink */
+      num_arr_free++;
+      FREE(arr);                /* and FREE */
+    }
+  }
+
+  /* Run finalizers on unused foreign pointers. */
+  for (struct final **finp = &final_root; *finp; ) {
+    struct final *fin = *finp;
+    if (fin->marked) {
+      fin->marked = 0;
+      finp = &fin->next;
+    } else {
+      /* Unused, run finalizer and free all associated memory */
+      if (fin->size == NOSIZE) {
+        num_fin_free++;
+      } else {
+        num_bs_free++;
+        num_bs_inuse -= fin->size;
+        if (num_bs_alloc - num_bs_free > num_bs_alloc_max)
+          num_bs_alloc_max = num_bs_alloc - num_bs_free;
+      }
+      void (*f)(void *) = (void (*)(void *))fin->final;
+      //printf("forptr free fin=%p, f=%p", fin, f);
+      //fflush(stdout);
+      if (f) {
+        //printf("finalizer fin=%p final=%p\n", fin, f);
+        (*f)(fin->arg);
+      }
+      for (struct forptr *p = fin->back; p; ) {
+        struct forptr *q = p->next;
+        //printf("free fp=%p\n", p);
+        //printf(" p=%p desc=%s", p, p->desc ? p->desc : "NONE");
+        //fflush(stdout);
+        FREE(p);
+        //memset(p, 0x55, sizeof *p);
+        p = q;
+      }
+      //printf("\n");
+      *finp = fin->next;
+      //printf("free fin=%p\n", fin);
+      FREE(fin);
+      //memset(fin, 0x77, sizeof *fin);
+    }
+  }
+
+  /* Remove unreferenced zombie threads */
+  for (struct mthread **mtp = &all_threads; *mtp; ) {
+    struct mthread *mt = *mtp;
+    if ((mt->mt_state == ts_died || mt->mt_state == ts_finished) && !mt->mt_mark) {
+      COUNT(num_thread_reap);
+      *mtp = mt->mt_next;
+      free(mt);
+    } else {
+      mt->mt_mark = 0;
+      mtp = &mt->mt_next;
+    }
+  }
+  
+  /* Remove unreferences mvars */
+  for (struct mvar **mvp = &all_mvars; *mvp; ) {
+    struct mvar *mv = *mvp;
+    if (!mv->mv_mark) {
+      COUNT(num_mvar_free);
+      *mvp = mv->mv_next;
+      free(mv);
+    } else {
+      mv->mv_mark = 0;
+      mvp = &mv->mv_next;
+    }
+  }
+
+  gc_scan_time += GETTIMEMILLI();
+
+#if WANT_STDIO
+  if (verbose > 1) {
+    PRINT("gc done, %"PRIcounter" free\n", num_free);
+    /*PRINT(" GC reductions A=%"PRIcounter", K=%"PRIcounter", I=%"PRIcounter", int=%"PRIcounter" flip=%"PRIcounter"\n",
+      red_a, red_k, red_i, red_int, red_flip);*/
+  }
+  if (gcbell) {
+    fputc('\007', stderr);      /* ring the bell */
+    fflush(stderr);
+  }
+#endif  /* !WANT_STDIO */
+
+#if 0
+  /* For debugging only: mark all free cells */
+  for(int n = 0; n < heap_size; n++) {
+    NODEPTR p = HEAPREF(n);
+    if (!is_marked_used(p)) {
+      SETTAG(p, T_FREE);
+    }
+  }
+#endif
+}
+
+static INLINE
+value_t
+peekWord(value_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+pokeWord(value_t *p, value_t w)
+{
+  *p = w;
+}
+
+static INLINE
+void *
+peekPtr(void **p)
+{
+  return *p;
+}
+
+static INLINE
+void
+pokePtr(void **p, void *w)
+{
+  *p = w;
+}
+
+static INLINE
+uvalue_t
+peek_uint8(uint8_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_uint8(uint8_t *p, value_t w)
+{
+  *p = (uint8_t)w;
+}
+
+static INLINE
+uvalue_t
+peek_uint16(uint16_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_uint16(uint16_t *p, value_t w)
+{
+  *p = (uint16_t)w;
+}
+
+#if WORD_SIZE >= 32
+static INLINE
+uvalue_t
+peek_uint32(uint32_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_uint32(uint32_t *p, value_t w)
+{
+  *p = (uint32_t)w;
+}
+#endif  /* WORD_SIZE >= 32 */
+
+#if WORD_SIZE >= 64
+static INLINE
+uvalue_t
+peek_uint64(uint64_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_uint64(uint64_t *p, value_t w)
+{
+  *p = (uint64_t)w;
+}
+#endif  /* WORD_SIZE >= 64 */
+
+static INLINE
+value_t
+peek_int8(int8_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_int8(int8_t *p, value_t w)
+{
+  *p = (int8_t)w;
+}
+
+static INLINE
+value_t
+peek_int16(int16_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_int16(int16_t *p, value_t w)
+{
+  *p = (int16_t)w;
+}
+
+#if WORD_SIZE >= 32
+static INLINE
+value_t
+peek_int32(int32_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_int32(int32_t *p, value_t w)
+{
+  *p = (int32_t)w;
+}
+#endif  /* WORD_SIZE >= 32 */
+
+#if WORD_SIZE >= 64
+static INLINE
+value_t
+peek_int64(int64_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_int64(int64_t *p, value_t w)
+{
+  *p = (int64_t)w;
+}
+#endif  /* WORD_SIZE >= 64 */
+
+static INLINE
+value_t
+peek_int(int *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_int(int *p, value_t w)
+{
+  *p = (int)w;
+}
+
+static INLINE
+value_t
+peek_uint(unsigned int *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_uint(unsigned int *p, value_t w)
+{
+  *p = (unsigned int)w;
+}
+
+static INLINE
+value_t
+peek_short(short *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_short(short *p, value_t w)
+{
+  *p = (short)w;
+}
+
+static INLINE
+value_t
+peek_ushort(unsigned short *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_ushort(unsigned short *p, value_t w)
+{
+  *p = (unsigned short)w;
+}
+
+static INLINE
+value_t
+peek_long(long *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_long(long *p, value_t w)
+{
+  *p = (long)w;
+}
+
+static INLINE
+value_t
+peek_ulong(unsigned long *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_ulong(unsigned long *p, value_t w)
+{
+  *p = (unsigned long)w;
+}
+
+static INLINE
+value_t
+peek_llong(long long *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_llong(long long *p, value_t w)
+{
+  *p = (long long)w;
+}
+
+static INLINE
+value_t
+peek_ullong(unsigned long long *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_ullong(unsigned long long *p, value_t w)
+{
+  *p = (unsigned long long)w;
+}
+
+#if WANT_FLOAT
+static INLINE
+flt_t
+peek_flt(flt_t *p)
+{
+  return *p;
+}
+
+static INLINE
+void
+poke_flt(flt_t *p, flt_t w)
+{
+  *p = w;
+}
+#endif  /* WANT_FLOAT */
+
+/* Look up an FFI function by name */
+value_t
+lookupFFIname(const char *name)
+{
+  size_t i;
+
+  for(i = 0; ffi_table[i].ffi_name; i++)
+    if (strcmp(ffi_table[i].ffi_name, name) == 0)
+      return (value_t)i;
+  if (xffi_table) {
+    for(i = 0; xffi_table[i].ffi_name; i++)
+      if (strcmp(xffi_table[i].ffi_name, name) == 0)
+        return (value_t)(i + num_ffi);
+  }
+  return -1;
+}
+
+NODEPTR
+ffiNode(const char *buf)
+{
+  NODEPTR r;
+  value_t i = lookupFFIname(buf);
+  char *fun;
+
+  if (i < 0) {
+    /* lookup failed, generate a node that will dynamically generate an error */
+    r = alloc_node(T_BADDYN);
+    fun = mmalloc(strlen(buf) + 1);
+    strcpy(fun, buf);
+    CSTR(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 = getb(f);
+  if (c == d) {
+    return 1;
+  } else {
+    ungetb(d, f);
+    return 0;
+  }
+}
+
+/* Get a non-terminating character.  ' ' and '\n' terminates a token. */
+int
+getNT(BFILE *f)
+{
+  int c;
+
+  c = getb(f);
+  if (c == ' ' || c == '\n') {
+    return 0;
+  } else {
+    return c;
+  }
+}
+
+value_t
+parse_int(BFILE *f)
+{
+  // Parse using uvalue_t, which wraps on overflow.
+  uvalue_t i = 0;
+  int neg = 1;
+  int c = getb(f);
+  if (c == '-') {
+    neg = -1;
+    c = getb(f);
+  }
+  for(;;) {
+    i = i * 10 + (c - '0');
+    c = getb(f);
+    if (c < '0' || c > '9') {
+      ungetb(c, f);
+      break;
+    }
+  }
+  // Multiply by neg without triggering undefined behavior.
+  return (value_t)(((uvalue_t)neg) * i);
+}
+
+#if WANT_FLOAT
+flt_t
+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);
+}
+#endif
+
+struct forptr *mkForPtr(struct bytestring bs);
+NODEPTR mkFunPtr(HsFunPtr p);
+
+/* Create a forptr that has a free() finalizer. */
+struct forptr *
+mkForPtrFree(struct bytestring str)
+{
+  struct forptr *fp = mkForPtr(str);         /* Create a foreign pointer */
+  fp->finalizer->final = (HsFunPtr)FREE;     /* and set the finalizer to just free it */
+  return fp;
+}
+
+NODEPTR
+mkStrNode(struct bytestring str)
+{
+  NODEPTR n = alloc_node(T_FORPTR);
+  struct forptr *fp = mkForPtrFree(str);
+  FORPTR(n) = fp;
+  fp->finalizer->fptype = FP_BSTR;
+  //printf("mkForPtr n=%p fp=%p %d %s payload.string=%p\n", n, fp, (int)FORPTR(n)->payload.size, (char*)FORPTR(n)->payload.string, FORPTR(n)->payload.string);
+  return n;
+}
+
+/* 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 i;
+
+  for(i = (int)label; ; i++) {
+    i %= shared_table_size;
+    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. */
+  }
+}
+
+/* The memory allocated here is never freed.
+ * This could be fixed by using a forptr and a
+ * finalizer for read UTF-8 strings.
+ * Fix this if there is a lot of deserialization.
+ */
+struct bytestring
+parse_string(BFILE *f)
+{
+  struct bytestring bs;
+  size_t sz = 20;
+  uint8_t *buffer = mmalloc(sz);
+  size_t i;
+  int c;
+
+  for(i = 0;;) {
+    c = getb(f);
+    if (c == '"')
+      break;
+    if (i >= sz - 1) {
+      sz *= 2;
+      buffer = mrealloc(buffer, sz);
+    }
+#if 0
+    if (c == '\\') {
+      buffer[i++] = (uint8_t)parse_int(f);
+      if (!gobble(f, '&'))
+        ERR("parse string");
+    } else {
+      buffer[i++] = c;
+    }
+#else
+    /* See src/MicroHs/ExpPrint.hs for how strings are encoded. */
+    switch (c) {
+    case '\\':
+      c = getb(f);
+      if (c == '?')
+        c = 0x7f;
+      else if (c == '_')
+        c = 0xff;
+      break;
+    case '^':
+      c = getb(f);
+      if (c < 0x40)
+        c &= 0x1f;
+      else
+        c = (c & 0x1f) | 0x80;
+      break;
+    case '|':
+      c = getb(f);
+      c |= 0x80;
+      break;
+    default:
+      /* Unencoded */
+      ;
+    }
+    buffer[i++] = c;
+#endif
+  }
+  buffer[i] = 0;                /* add a trailing 0 in case we need a C string */
+  buffer = mrealloc(buffer, i + 1);
+
+  bs.size = i;
+  bs.string = buffer;
+  //printf("parse_string %d %s\n", (int)bs.size, (char*)bs.string);
+  return bs;
+}
+
+struct forptr *new_mpz(void);
+
+NODEPTR
+parse(BFILE *f)
+{
+  stackptr_t stk = stack_ptr;
+  NODEPTR r, x, y;
+  NODEPTR *nodep;
+  heapoffs_t l;
+  value_t i;
+  int c;
+  size_t j;
+  char buf[80];                 /* store names of primitives. */
+
+  for(;;) {
+    c = getb(f);
+    if (c < 0) ERR("parse EOF");
+    switch (c) {
+    case ' ':
+    case '\n':
+      continue;
+    }
+    if (num_free < 3)
+      ERR("out of heap reading code");
+    GCCHECK(1);
+    switch(c) {
+    case '@':
+      x = TOP(0);
+      y = TOP(1);
+      POP(2);
+      PUSH(new_ap(y, x));
+      break;
+    case '}':
+      x = TOP(0);
+      POP(1);
+      if (stack_ptr != stk)
+        ERR("parse: stack");
+      return x;
+#if WANT_GMP
+    case '%':
+      {
+        struct bytestring bs = parse_string(f); /* get all the digits, terminated by " */
+        struct forptr *fp = new_mpz();          /* a new mpz */
+        mpz_ptr op = fp->payload.string;        /* get actual pointer */
+        mpz_set_str(op, bs.string, 10);         /* convert to an mpz */
+        free(bs.string);
+        r = alloc_node(T_FORPTR);
+        FORPTR(r) = fp;
+        PUSH(r);
+        break;
+      }
+#endif
+    case '&':
+#if WANT_FLOAT
+      r = mkFlt(parse_double(f));
+#else
+      while (getNT(f))          /* skip the float constant */
+        ;
+      r = alloc_node(T_DBL);
+      SETVALUE(r, 0);
+#endif
+      PUSH(r);
+      break;
+    case '#':
+      i = parse_int(f);
+      r = mkInt(i);
+      PUSH(r);
+      break;
+    case '[':
+      {
+        size_t sz;
+        struct ioarray *arr;
+        size_t i;
+        sz = (size_t)parse_int(f);
+        if (!gobble(f, ']')) ERR("parse arr 1");
+        arr = arr_alloc(sz, NIL);
+        for (i = 0; i < sz; i++) {
+          arr->array[i] = TOP(sz - i - 1);
+        }
+        r = alloc_node(T_ARR);
+        ARR(r) = arr;
+        POP(sz);
+        PUSH(r);
+        break;
+      }
+    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_FREE);
+        SETINDIR(*nodep, NIL);
+      }
+      PUSH(*nodep);
+      break;
+    case ':':
+      /* Define a shared expression: :label e */
+      l = parse_int(f);  /* The label */
+      if (!gobble(f, ' ')) ERR("parse ' '");
+      nodep = find_label(l);
+      x = TOP(0);
+      if (*nodep == NIL) {
+        /* not referenced yet, so add a direct reference */
+        *nodep = x;
+      } else {
+        /* Sanity check */
+        if (GETTAG(*nodep) != T_IND || GETINDIR(*nodep) != NIL) ERR("shared != NIL");
+        SETINDIR(*nodep, x);
+      }
+      break;
+    case '"':
+      /* Everything up to the next " is a string.
+       * Special characters are encoded as \NNN&,
+       * where NNN is the decimal value of the character */
+      PUSH(mkStrNode(parse_string(f)));
+      break;
+#if WANT_TICK
+    case '!':
+      if (!gobble(f, '"'))
+        ERR("parse !");
+      i = add_tick_table(parse_string(f));
+      r = alloc_node(T_TICK);
+      SETVALUE(r, (value_t)i);
+      PUSH(r);
+      break;
+#endif
+    case '^':
+      /* An FFI name */
+      for (j = 0; (buf[j] = getNT(f)); j++)
+        ;
+      r = ffiNode(buf);
+      PUSH(r);
+      break;
+    case ';':
+      /* <name is a C function pointer to name */
+      for (j = 0; (buf[j] = getNT(f)); j++)
+        ;
+      if (strcmp(buf, "0") == 0) {
+        PUSH(mkFunPtr((HsFunPtr)0));
+      } else if (strcmp(buf, "closeb") == 0) {
+        PUSH(mkFunPtr((HsFunPtr)closeb));
+      } else {
+        ERR1("unknown funptr '%s'", buf);
+      }
+      break;
+    default:
+      buf[0] = c;
+      /* A primitive, keep getting char's until end */
+      for (j = 1; (buf[j] = getNT(f)); j++)
+        ;
+      /* Look up the primop and use the preallocated node. */
+      for (j = 0; j < sizeof primops / sizeof primops[0]; j++) {
+        if (strcmp(primops[j].name, buf) == 0) {
+          r = primops[j].node;
+          goto found;
+        }
+      }
+      ERR1("no primop %s", buf);
+    found:
+      PUSH(r);
+      break;
+    }
+  }
+}
+
+void
+checkversion(BFILE *f)
+{
+  char *p = VERSION;
+  int c;
+
+  while ((c = *p++)) {
+    if (c != getb(f))
+      ERR("version mismatch");
+  }
+  (void)gobble(f, '\r');                 /* allow extra CR */
+}
+
+/* Parse a file */
+NODEPTR
+parse_top(BFILE *f)
+{
+  heapoffs_t numLabels, i;
+  NODEPTR n;
+  checkversion(f);
+  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 = mmalloc(shared_table_size * sizeof(struct shared_entry));
+  for(i = 0; i < shared_table_size; i++)
+    shared_table[i].node = NIL;
+  n = parse(f);
+  FREE(shared_table);
+  return n;
+}
+
+#if WANT_STDIO
+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 */
+  BFILE *p = add_FILE(f);
+  NODEPTR n = parse_top(p);
+  *psize = ftell(f);
+  closeb(p);
+  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
+ */
+struct print_bits {
+  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;
+}
+
+size_t strNodes(size_t len);
+NODEPTR mkStringC(char *str);
+
+#if WANT_STDIO
+#if WORD_SIZE == 64
+#define CONVDBL "%.16g"
+#elif WORD_SIZE == 32
+#define CONVDBL "%.8g"
+#endif
+void
+convdbl(char *str, flt_t x)
+{
+  /* Using 16 decimals will lose some precision.
+   * 17 would keep the precision, but it frequently looks very ugly.
+   */
+  (void)snprintf(str, 25, CONVDBL, x);
+  if (strcmp(str, "nan") != 0 && strcmp(str, "-nan") != 0 &&
+      strcmp(str, "inf") != 0 && strcmp(str, "-inf") != 0 &&
+      !strchr(str, '.') && !strchr(str, 'e') && !strchr(str, 'E')) {
+    /* There is no decimal point and no exponent, so add a decimal point */
+    strcat(str, ".0");
+  }
+}
+
+NODEPTR
+dblToString(flt_t x)
+{
+  char str[30];
+  convdbl(str, x);
+  // turn it into a mhs string
+  GCCHECK(strNodes(strlen(str)));
+  return mkStringC(str);
+}
+
+void
+putdblb(flt_t x, BFILE *p)
+{
+  char str[30];
+  convdbl(str, x);
+  putsb(str, p);
+}
+
+void printrec(BFILE *f, struct print_bits *pb, NODEPTR n, int prefix);
+
+/* Mark all reachable nodes, when a marked node is reached, mark it as shared. */
+void
+find_sharing(struct print_bits *pb, NODEPTR n)
+{
+ top:
+  while (GETTAG(n) == T_IND) {
+    n = GETINDIR(n);
+  }
+  if (n < cells || n >= cells + heap_size) abort();
+  //PRINT("find_sharing %p %llu ", n, LABEL(n));
+  tag_t tag = GETTAG(n);
+  if (tag == T_AP || tag == T_ARR || tag == T_FORPTR) {
+    if (test_bit(pb->shared_bits, n)) {
+      /* Alread marked as shared */
+      //PRINT("shared\n");
+      ;
+    } else if (test_bit(pb->marked_bits, n)) {
+      /* Already marked, so now mark as shared */
+      //PRINT("marked\n");
+      set_bit(pb->shared_bits, n);
+      num_shared++;
+    } else {
+      /* Mark as visited, and recurse */
+      //PRINT("unmarked\n");
+      set_bit(pb->marked_bits, n);
+      switch(tag) {
+      case T_AP:
+        find_sharing(pb, FUN(n));
+        n = ARG(n);
+        goto top;
+      case T_ARR:
+        for(size_t i = 0; i < ARR(n)->size; i++) {
+          find_sharing(pb, ARR(n)->array[i]);
+        }
+        break;
+      default:
+        break;
+      }
+    }
+  } else {
+    /* Not an sharable node, so do nothing */
+    //PRINT("not T_AP\n");
+    ;
+  }
+}
+
+void
+print_string(BFILE *f, struct bytestring bs)
+{
+  uint8_t *str = bs.string;
+  putb('"', f);
+  for (size_t i = 0; i < bs.size; i++) {
+    int c = str[i];
+#if 0
+    if (c == '"' || c == '\\' || c < ' ' || c > '~') {
+      putb('\\', f);
+      putdecb(c, f);
+      putb('&', f);
+    } else {
+      putb(c, f);
+    }
+#else
+    if (c < 0 || c > 0xff)
+      ERR("print_string");
+    if (c < 0x20) {
+      putb('^', f); putb(c + 0x20, f);
+    } else if (c == '"' || c == '^' || c == '|' || c == '\\') {
+      putb('\\', f); putb(c, f);
+    } else if (c < 0x7f) {
+      putb(c, f);
+    } else if (c == 0x7f) {
+      putb('\\', f); putb('?', f);
+    } else if (c < 0xa0) {
+      putb('^', f); putb(c - 0x80 + 0x40, f);
+    } else if (c < 0xff) {
+      putb('|', f); putb(c - 0x80, f);
+    } else {                    /* must be< c == 0xff */
+      putb('\\', f); putb('_', f);
+    }
+#endif
+  }
+  putb('"', f);
+}
+
+/*
+ * Recursively print an expression.
+ * This assumes that the shared nodes has been marked as such.
+ * The prefix flag is used to get a readable dump.
+ */
+void
+printrec(BFILE *f, struct print_bits *pb, NODEPTR n, int prefix)
+{
+  int share = 0;
+  enum node_tag tag;
+  char prbuf[30];
+
+  while (GETTAG(n) == T_IND) {
+    /*putb('*', f);*/
+    n = GETINDIR(n);
+  }
+
+  if (test_bit(pb->shared_bits, n)) {
+    /* The node is shared */
+    if (test_bit(pb->marked_bits, n)) {
+      /* Not yet printed, so emit a label */
+      if (prefix) {
+        putb(':', f);
+        putdecb((value_t)LABEL(n), f);
+        putb(' ', f);
+      } else {
+        share = 1;
+      }
+      clear_bit(pb->marked_bits, n);  /* mark as printed */
+    } else {
+      /* This node has already been printed, so just use a reference. */
+      putb('_', f);
+      putdecb((value_t)LABEL(n), f);
+      if (!prefix)
+        putb(' ', f);
+      return;
+    }
+  }
+
+  //if (n == atptr) putb('@', f);
+  tag = GETTAG(n);
+  switch (tag) {
+  case T_AP:
+    if (prefix) {
+      putb('(', f);
+      printrec(f, pb, FUN(n), prefix);
+      putb(' ', f);
+      printrec(f, pb, ARG(n), prefix);
+      putb(')', f);
+    } else {
+      printrec(f, pb, FUN(n), prefix);
+      printrec(f, pb, ARG(n), prefix);
+      putb('@', f);
+    }
+    break;
+  case T_INT: putb('#', f); putdecb(GETVALUE(n), f); break;
+  case T_DBL: putb('&', f); putdblb(GETDBLVALUE(n), f); break;
+  case T_ARR:
+    if (prefix) {
+      /* Arrays serialize as '[sz] e_1 ... e_sz' */
+      putb('[', f);
+      putdecb((value_t)ARR(n)->size, f);
+      putb(']', f);
+      for(size_t i = 0; i < ARR(n)->size; i++) {
+        putb(' ', f);
+        printrec(f, pb, ARR(n)->array[i], prefix);
+      }
+    } else {
+      /* Arrays serialize as 'e_1 ... e_sz [sz]' */
+      for(size_t i = 0; i < ARR(n)->size; i++) {
+        printrec(f, pb, ARR(n)->array[i], prefix);
+      }
+      putb('[', f);
+      putdecb((value_t)ARR(n)->size, f);
+      putb(']', f);
+    }
+    break;
+  case T_PTR:
+    if (prefix) {
+      snprintf(prbuf, sizeof prbuf, "PTR<%p>",PTR(n));
+      putsb(prbuf, f);
+    } else {
+      ERR("Cannot serialize pointers");
+    }
+    break;
+  case T_FUNPTR:
+    /* There are a few function pointers that happen without user FFI.
+     * We need to be able to serialize these.
+     * XXX Make a table if we need more.
+     */
+    if (FUNPTR(n) == 0) {
+      putsb(";0 ", f);
+    } else if (FUNPTR(n) == (HsFunPtr)closeb) {
+      putsb(";closeb ", f);
+    } else if (prefix) {
+      snprintf(prbuf, sizeof prbuf, "FUNPTR<%p>",FUNPTR(n));
+      putsb(prbuf, f);
+    } else {
+      ERR1("Cannot serialize function pointers %p", FUNPTR(n));
+    }
+    break;
+  case T_THID:
+    if (prefix) {
+      snprintf(prbuf, sizeof prbuf, "FUNPTR<%d>",(int)THR(n)->mt_id);
+    } else {
+      ERR("cannot serialize ThreadId yet");
+    }
+  case T_FORPTR:
+    if (n == comb_stdin)
+      putsb("IO.stdin", f);
+    else if (n == comb_stdout)
+      putsb("IO.stdout", f);
+    else if (n == comb_stderr)
+      putsb("IO.stderr", f);
+#if WANT_GMP
+    else if (FORPTR(n)->finalizer->fptype == FP_MPZ) {
+      /* Serialize as %99999" */
+      mpz_ptr op = FORPTR(n)->payload.string; /* get the mpz */
+      int sz = mpz_sizeinbase(op, 10);        /* maximum length */
+      char *s = mmalloc(sz + 2);
+      (void)mpz_get_str(s, 10, op);           /* convert to a string */
+      putsb("%", f);
+      putsb(s, f);
+      putsb("\"", f);                         /* so we can use parse_string */
+      free(s);
+    }
+#endif  /* WANT_GMP */
+    else if (FORPTR(n)->finalizer->fptype == FP_BSTR) {
+      print_string(f, FORPTR(n)->payload);
+    } else if (prefix) {
+      snprintf(prbuf, sizeof prbuf, "FORPTR<%p>",FORPTR(n));
+      putsb(prbuf, f);
+    } else {
+      ERR("Cannot serialize foreign pointers");
+    }
+    break;
+  case T_IO_CCALL: putb('^', f); putsb(FFI_IX(GETVALUE(n)).ffi_name, f); break;
+  case T_BADDYN: putb('^', f); putsb(CSTR(n), f); break;
+  case T_TICK:
+    putb('!', f);
+    print_string(f, tick_table[GETVALUE(n)].tick_name);
+    break;
+  default:
+    if (0 <= tag && tag <= T_LAST_TAG)
+      if (tag_names[tag])
+        putsb(tag_names[tag], f);
+      else {
+        snprintf(prbuf, sizeof prbuf, "TAG=%d", (int)tag);
+        putsb(prbuf, f);
+      }
+    else {
+      snprintf(prbuf, sizeof prbuf, "BADTAG(%d)", (int)tag);
+      putsb(prbuf, f);
+    }
+    break;
+  }
+  if (!prefix) {
+    if (GETTAG(n) != T_AP)
+      putb(' ', f);
+    if (share) {
+      putb(':', f);
+      putdecb((value_t)LABEL(n), f);
+      putb(' ', f);
+    }
+  }
+}
+
+/* Serialize a graph to file. */
+void
+printb(BFILE *f, NODEPTR n, int header)
+{
+  struct print_bits pb;
+  num_shared = 0;
+  pb.marked_bits = mcalloc(free_map_nwords, sizeof(bits_t));
+  pb.shared_bits = mcalloc(free_map_nwords, sizeof(bits_t));
+  find_sharing(&pb, n);
+  if (header) {
+    putsb(VERSION, f);
+    putdecb(num_shared, f);
+    putb('\n', f);
+  }
+  printrec(f, &pb, n, !header);
+  if (header) {
+    putb('}', f);
+  }
+  FREE(pb.marked_bits);
+  FREE(pb.shared_bits);
+}
+
+/* Show a graph. */
+void
+pps(NODEPTR n)
+{
+  pp(stdout, n);
+}
+
+void
+pp(FILE *f, NODEPTR n)
+{
+  BFILE *bf = add_FILE(f);
+  printb(bf, n, 0);
+  putb('\n', bf);
+  freeb_file(bf);
+}
+
+#if 0
+void
+ppmsg(const char *msg, NODEPTR n)
+{
+  printf("%s", msg);
+  pp(stdout, n);
+  printf("\n");
+}
+
+void
+dump(const char *msg, NODEPTR at)
+{
+  atptr = at;
+  printf("dump: %s\n", msg);
+  pp(stdout, *topnode);
+}
+#endif
+
+#else  /* WANT_STDIO */
+NODEPTR
+dblToString(flt_t x)
+{
+  return mkStringC("no dblToString");
+}
+
+#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
+mkFlt(flt_t 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;
+}
+
+NODEPTR
+mkFunPtr(void (*p)(void))
+{
+  NODEPTR n;
+  n = alloc_node(T_FUNPTR);
+  FUNPTR(n) = p;
+  return n;
+}
+
+struct forptr*
+mkForPtr(struct bytestring bs)
+{
+  struct final *fin = mcalloc(1, sizeof(struct final));
+  struct forptr *fp = mcalloc(1, sizeof(struct forptr));
+  if (bs.size == NOSIZE) {
+    num_fin_alloc++;
+  } else {
+    num_bs_alloc++;
+    num_bs_inuse += bs.size;
+    num_bs_bytes += bs.size;
+    if (num_bs_inuse > num_bs_inuse_max)
+      num_bs_inuse_max = num_bs_inuse;
+  }
+  //printf("mkForPtr p=%p fin=%p fp=%p\n", p, fin, fp);
+  fin->next = final_root;
+  final_root = fin;
+  fin->final = 0;
+  fin->arg = bs.string;
+  fin->size = bs.size;          /* The size is not really needed */
+  fin->back = fp;
+  fin->marked = 0;
+  fp->next = 0;
+  fp->payload = bs;
+  fp->finalizer = fin;
+  //  fp->desc = 0;
+  return fp;
+}
+
+struct forptr*
+mkForPtrP(void *p)
+{
+  struct bytestring bs = { NOSIZE, p };
+  return mkForPtr(bs);
+}
+
+struct forptr*
+addForPtr(struct forptr *ofp, int s)
+{
+  struct forptr *fp = mmalloc(sizeof(struct forptr));
+  struct final *fin = ofp->finalizer;
+
+  fp->next = ofp;
+  fin->back = fp;
+  if (ofp->payload.size != NOSIZE)
+    fp->payload.size = ofp->payload.size - s;
+  fp->payload.string = (uint8_t*)ofp->payload.string + s;
+  fp->finalizer = fin;
+  return fp;
+}
+
+struct forptr*
+bssubstr(struct forptr *fp, value_t offs, value_t len)
+{
+  struct forptr *res = addForPtr(fp, offs);
+  res->payload.size = len;
+  return res;
+}
+
+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.
+ * Does NOT do UTF decoding.
+ */
+NODEPTR
+mkString(struct bytestring bs)
+{
+  NODEPTR n, nc;
+  size_t i;
+  const unsigned char *str = bs.string; /* no sign bits, please */
+
+  n = mkNil();
+  for(i = bs.size; i > 0; i--) {
+    nc = mkInt(str[i-1]);
+    n = mkCons(nc, n);
+  }
+  return n;
+}
+
+NODEPTR
+mkStringC(char *str)
+{
+  struct bytestring bs = { strlen(str), str };
+  return mkString(bs);
+}
+
+NODEPTR
+mkStringU(struct bytestring bs)
+{
+  BFILE *ubuf = add_utf8(openb_rd_buf(bs.string, bs.size));
+  NODEPTR n, *np, nc;
+
+  //printf("mkStringU %d %s\n", (int)bs.size, (char*)bs.string);
+
+  n = mkNil();
+  np = &n;
+  for(;;) {
+    int c = getb(ubuf);
+    if (c < 0)
+      break;
+    nc = mkInt(c);
+    *np = mkCons(nc, *np);
+    np = &ARG(*np);
+  }
+  closeb(ubuf);
+  return n;
+}
+
+NODEPTR
+bsunpack(struct bytestring bs)
+{
+  NODEPTR n, *np, nc;
+  size_t i;
+
+  n = mkNil();
+  np = &n;
+  for(i = 0; i < bs.size; i++) {
+    nc = mkInt(((uint8_t *)bs.string)[i]);
+    *np = mkCons(nc, *np);
+    np = &ARG(*np);
+  }
+  return n;
+}
+
+/* XXX This should somehow be merged with other utf8 decoders */
+value_t
+headutf8(struct bytestring bs, void **ret)
+{
+  uint8_t *p = bs.string;
+  if (bs.size == 0)
+    ERR("headUTF8 0");
+  int c1 = *p++;
+  if ((c1 & 0x80) == 0) {
+    if (ret)
+      *ret = p;
+    return c1;
+  }
+  if (bs.size == 1)
+    ERR("headUTF8 1");
+  int c2 = *p++;
+  if ((c1 & 0xe0) == 0xc0) {
+    if (ret)
+      *ret = p;
+    return ((c1 & 0x1f) << 6) | (c2 & 0x3f);
+  }
+  if (bs.size == 2)
+    ERR("headUTF8 2");
+  int c3 = *p++;
+  if ((c1 & 0xf0) == 0xe0) {
+    if (ret)
+      *ret = p;
+    return ((c1 & 0x0f) << 12) | ((c2 & 0x3f) << 6) | (c3 & 0x3f);
+  }
+  if (bs.size == 3)
+    ERR("headUTF8 3");
+  int c4 = *p++;
+  if ((c1 & 0xf8) == 0xf0) {
+    if (ret)
+      *ret = p;
+    return ((c1 & 0x07) << 18) | ((c2 & 0x3f) << 12) | ((c3 & 0x3f) << 6) | (c4 & 0x3f);
+  }
+  ERR("headUTF8 4");
+}
+
+/* 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 Flt_T */
+static INLINE flt_t
+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 to a T_FUNPTR */
+HsFunPtr
+evalfunptr(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_FUNPTR) {
+    ERR1("evalfunptr, bad tag %d", GETTAG(n));
+  }
+#endif
+  return FUNPTR(n);
+}
+
+/* Evaluate to a T_FORPTR */
+struct forptr *
+evalforptr(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_FORPTR) {
+    ERR1("evalforptr, bad tag %d", GETTAG(n));
+  }
+#endif
+  return FORPTR(n);
+}
+
+/* Evaluate to a bytestring */
+struct forptr *
+evalbstr(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_FORPTR || FORPTR(n)->finalizer->fptype != FP_BSTR) {
+    ERR1("evalbstr, bad tag %d", GETTAG(n));
+  }
+#endif
+  return FORPTR(n);
+}
+
+/* Evaluate to a T_THID */
+struct mthread *
+evalthid(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_THID) {
+    ERR1("evalthid, bad tag %d", GETTAG(n));
+  }
+#endif
+  return THR(n);
+}
+
+/* Evaluate to a T_MVAR */
+struct mvar *
+evalmvar(NODEPTR n)
+{
+  n = evali(n);
+#if SANITY
+  if (GETTAG(n) != T_MVAR) {
+    ERR1("evalmvar, bad tag %d", GETTAG(n));
+  }
+#endif
+  return MVAR(n);
+}
+
+/* Evaluate a string, returns a newly allocated buffer.
+ * XXX this is cheating, should use continuations.
+ * XXX the malloc()ed string is leaked if we yield in here.
+ * Caller is responsible to free().
+ * Does UTF-8 encoding.
+ */
+struct bytestring
+evalstring(NODEPTR n)
+{
+  size_t sz = 100;
+  char *buf = mmalloc(sz);
+  size_t offs;
+  uvalue_t c;
+  NODEPTR x;
+  struct bytestring bs;
+
+  for (offs = 0;;) {
+    if (offs >= sz - 4) {
+      sz *= 2;
+      buf = mrealloc(buf, sz);
+    }
+    PUSH(n);                    /* protect the list from GC */
+    n = evali(n);
+    POP(1);
+    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 */
+      PUSH(n);                  /* protect from GC */
+      c = evalint(ARG(x));
+      n = POPTOP();
+      if ((c & 0x1ff800) == 0xd800) {
+        // c is a surrogate
+        c = 0xfffd; // replacement character
+      }
+      if (c < 0x80) {
+        buf[offs++] = (char)c;
+      } else if (c < 0x800) {
+        buf[offs++] = ((c >> 6 )       ) | 0xc0;
+        buf[offs++] = ((c      ) & 0x3f) | 0x80;
+      } else if (c < 0x10000) {
+        buf[offs++] = ((c >> 12)       ) | 0xe0;
+        buf[offs++] = ((c >> 6 ) & 0x3f) | 0x80;
+        buf[offs++] = ((c      ) & 0x3f) | 0x80;
+      } else if (c < 0x110000) {
+        buf[offs++] = ((c >> 18)       ) | 0xf0;
+        buf[offs++] = ((c >> 12) & 0x3f) | 0x80;
+        buf[offs++] = ((c >> 6 ) & 0x3f) | 0x80;
+        buf[offs++] = ((c      ) & 0x3f) | 0x80;
+      } else {
+	ERR("invalid char");
+      }
+      n = ARG(n);
+    } else {
+      ERR("evalstring not Nil/Cons");
+    }
+  }
+  buf[offs] = 0;                /* in case we use it as a C string */
+  bs.size = offs;
+  bs.string = buf;
+  return bs;
+}
+
+/* Does not do UTF-8 encoding */
+struct bytestring
+evalbytestring(NODEPTR n)
+{
+  size_t sz = 100;
+  uint8_t *buf = mmalloc(sz);
+  size_t offs;
+  uvalue_t c;
+  NODEPTR x;
+  struct bytestring bs;
+
+  for (offs = 0;;) {
+    if (offs >= sz - 1) {
+      sz *= 2;
+      buf = mrealloc(buf, sz);
+    }
+    PUSH(n);                    /* protect list from GC */
+    n = evali(n);
+    POP(1);
+    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 */
+      PUSH(n);                  /* protect from GC */
+      c = evalint(ARG(x));
+      n = POPTOP();
+      buf[offs++] = c;
+      n = ARG(n);
+    } else {
+      //pp(stdout, n);
+      ERR("evalbytestring not Nil/Cons");
+    }
+  }
+  buf[offs] = 0;                /* in case we use it as a C string */
+  bs.size = offs;
+  bs.string = buf;
+  return bs;
+}
+
+struct bytestring
+bsreplicate(size_t size, uint8_t value)
+{
+  struct bytestring bs;
+  bs.size = size;
+  bs.string = mmalloc(size);
+  memset(bs.string, value, size);
+  return bs;
+}
+
+struct bytestring
+bsappend(struct bytestring p, struct bytestring q)
+{
+  struct bytestring r;
+  r.size = p.size + q.size;
+  r.string = mmalloc(r.size);
+  memcpy(r.string, p.string, p.size);
+  memcpy((uint8_t *)r.string + p.size, q.string, q.size);
+  return r;
+}
+
+struct bytestring
+bsappenddot(struct bytestring p, struct bytestring q)
+{
+  struct bytestring r;
+  r.size = p.size + q.size + 1;
+  r.string = mmalloc(r.size);
+  memcpy(r.string, p.string, p.size);
+  memcpy((uint8_t *)r.string + p.size, ".", 1);
+  memcpy((uint8_t *)r.string + p.size + 1, q.string, q.size);
+  return r;
+}
+
+/*
+ * Compare bytestrings.
+ * We can't use memcmp() directly for two reasons:
+ *  - the two strings can have different lengths
+ *  - the return value is only guaranteed to be ==0 or !=0
+ */
+int
+bscompare(struct bytestring bsp, struct bytestring bsq)
+{
+  uint8_t *p = bsp.string;
+  uint8_t *q = bsq.string;
+  size_t len = bsp.size < bsq.size ? bsp.size : bsq.size;
+  while (len--) {
+    int r = (int)*p++ - (int)*q++;
+    if (r) {
+      /* Unequal bytes found. */
+      if (r < 0)
+        return -1;
+      if (r > 0)
+        return 1;
+      return 0;
+    }
+  }
+  /* Got to the end of the shorter string. */
+  /* The shorter string is considered smaller. */
+  if (bsp.size < bsq.size)
+    return -1;
+  if (bsp.size > bsq.size)
+    return 1;
+  return 0;
+}
+
+/* Compares anything, but really only works well on strings.
+ * if p < q  return -1
+ * if p > q  return 1
+ * if p == q return 0
+ *
+ * As we compare we update the argument pointers with any
+ * progress we make, in case we are interruped and resume from the top.
+ *
+ * XXX This is a rather dodgy comparison, since we are comparing
+ * functions, and the same data type could plausibly get different
+ * functions in the Scott encoding.
+ * But we only use it for lists, and it seems to work fine.
+ */
+int
+compare(NODEPTR cmp)
+{
+  stackptr_t stk = stack_ptr;
+#define CRET(x) do { stack_ptr = stk; return (x); } while(0)
+  value_t x, y;
+  flt_t xd, yd;
+  void *f, *g;
+  void (*ff)(void), (*fg)(void);
+  NODEPTR p, q;
+  NODEPTR *ap, *aq;
+  enum node_tag ptag, qtag;
+  int r;
+
+  /* Since FUN(cmp) can be shared, allocate a copy for it. */
+  GCCHECK(1);
+  FUN(cmp) = new_ap(FUN(FUN(cmp)), ARG(FUN(cmp)));
+  aq = &ARG(cmp);
+  ap = &ARG(FUN(cmp));
+
+  PUSH(*ap);
+  PUSH(*aq);
+  for(;;) {
+    if (stk == stack_ptr)
+      return 0;
+    q = evali(TOP(0));
+    p = evali(TOP(1));
+    POP(2);
+    if (stk == stack_ptr) {
+      /* We have made some progress, save this in the compare node. */
+      *ap = p;
+      *aq = q;
+    }
+
+    ptag = GETTAG(p);
+    qtag = GETTAG(q);
+    if (ptag != qtag) {
+      /* Hack to make Nil < Cons */
+      if (ptag == T_K && qtag == T_AP)
+        CRET(-1);
+      if (ptag == T_AP && qtag == T_K)
+        CRET(1);
+      CRET(ptag < qtag ? -1 : 1);
+    }
+    switch (ptag) {
+    case T_AP:
+      PUSH(ARG(p));             /* compare arg part later */
+      PUSH(ARG(q));
+      PUSH(FUN(p));             /* compare fun part now */
+      PUSH(FUN(q));
+      break;
+    case T_INT:
+    case T_IO_CCALL:
+    case T_THID:
+      x = GETVALUE(p);
+      y = GETVALUE(q);
+      if (x < y)
+        CRET(-1);
+      if (x > y)
+        CRET(1);
+      break;
+    case T_DBL:
+      xd = GETDBLVALUE(p);
+      yd = GETDBLVALUE(q);
+      if (xd < yd)
+        CRET(-1);
+      if (xd > yd)
+        CRET(1);
+      break;
+    case T_PTR:
+      f = PTR(p);
+      g = PTR(q);
+      if (f < g)
+        CRET(-1);
+      if (f > g)
+        CRET(1);
+      break;
+    case T_FUNPTR:
+      ff = FUNPTR(p);
+      fg = FUNPTR(q);
+      if ((intptr_t)ff < (intptr_t)fg)
+        CRET(-1);
+      if ((intptr_t)ff > (intptr_t)fg)
+        CRET(1);
+      break;
+    case T_FORPTR:
+      {
+      struct forptr *fp = FORPTR(p);
+      struct forptr *fq = FORPTR(q);
+#if WANT_GMP
+      if (fp->finalizer->fptype == FP_MPZ && fq->finalizer->fptype == FP_MPZ) {
+        int i = mpz_cmp(fp->payload.string, fq->payload.string);
+        if (i < 0)
+          CRET(-1);
+        if (i > 0)
+          CRET(1);
+      } else
+#endif
+      if (fp->finalizer->fptype == FP_BSTR && fq->finalizer->fptype == FP_BSTR) {
+        r = bscompare(BSTR(p), BSTR(q));
+        if (r)
+          CRET(r);
+      } else {
+        f = fp->payload.string;
+        g = fq->payload.string;
+        if (f < g)
+          CRET(-1);
+        if (f > g)
+          CRET(1);
+      }
+      }
+      break;
+    case T_ARR:
+      if (ARR(p) < ARR(q))
+        CRET(-1);
+      if (ARR(p) > ARR(q))
+        CRET(1);
+      break;
+    default:
+      break;
+    }
+  }
+#undef CRET
+}
+
+void
+rnf_rec(bits_t *done, NODEPTR n)
+{
+ top:
+  if (test_bit(done, n))
+    return;
+  set_bit(done, n);
+  n = evali(n);
+  if (GETTAG(n) == T_AP) {
+    PUSH(ARG(n));               /* protect from GC */
+    rnf_rec(done, FUN(n));
+    n = POPTOP();
+    goto top;
+  }
+}
+
+void
+rnf(value_t noerr, NODEPTR n)
+{
+  /* Mark visited nodes to avoid getting stuck in loops. */
+  bits_t *done = mcalloc(free_map_nwords, sizeof(bits_t));
+  if (doing_rnf)
+    ERR("recursive rnf()");
+  doing_rnf = (int)noerr;
+  rnf_rec(done, n);
+  doing_rnf = 0;
+  FREE(done);
+}
+
+/* Evaluate a node, returns when the node is in WHNF. */
+NODEPTR
+evali(NODEPTR an)
+{
+  NODEPTR n = an;
+  stackptr_t stk = stack_ptr;
+  NODEPTR x, y, z, w;
+  value_t xi, yi, r;
+  struct forptr *xfp;
+#if WANT_FLOAT
+  flt_t xd, rd;
+#endif  /* WANT_FLOAT */
+  char *msg;
+  heapoffs_t l;
+  enum node_tag tag;
+  struct ioarray *arr;
+  struct bytestring xbs, ybs, rbs;
+#if WANT_STDIO
+  void *bfile;
+  int hdr;
+#endif  /* WANT_STDIO */
+
+#if MAXSTACKDEPTH
+  counter_t old_cur_c_stack = cur_c_stack;
+  if (++cur_c_stack > max_c_stack)
+    max_c_stack = cur_c_stack;
+#endif
+
+/* Reset stack pointer and return. */
+#define RET do { goto ret; } while(0)
+#define HASNARGS(n) (stack_ptr - stk >= (n))
+/* Check that there are at least n arguments, return if not. */
+#define CHECK(n) do { if (!HASNARGS(n)) RET; } while(0)
+
+#define SETIND(n, x) SETINDIR(n, x)
+#define GOIND(x) do { NODEPTR _x = (x); SETIND(n, _x); n = _x; goto top; } while(0)
+#define GOAP(f,a) do { FUN(n) = (f); ARG(n) = (a); goto ap; } while(0)
+#define GOAP2(f,a,b) do { FUN(n) = new_ap((f), (a)); ARG(n) = (b); goto ap2; } while(0)
+#define GOPAIR(a) do { FUN(n) = new_ap(combPair, (a)); goto ap; } while(0)
+#define GOPAIRUNIT do { FUN(n) = combPairUnit; 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)
+#define CHKARG5 do { CHECK(5); POP(5); n = TOP(-1); /*v = ARG(n);*/ w = ARG(TOP(-2)); z = ARG(TOP(-3)); y = ARG(TOP(-4)); x = ARG(TOP(-5)); } while(0)
+/* Non-popping versions */
+#define CHKARG1NP do { CHECK(1); n = TOP(0);                                               x = ARG(n);      } while(0)
+#define CHKARG2NP do { CHECK(2); n = TOP(1);                              y = ARG(n);      x = ARG(TOP(0)); } while(0)
+#define CHKARG3NP do { CHECK(3); n = TOP(2);             z = ARG(n);      y = ARG(TOP(1)); x = ARG(TOP(0)); } while(0)
+#define CHKARG4NP do { CHECK(4); n = TOP(3); w = ARG(n); z = ARG(TOP(2)); y = ARG(TOP(1)); x = ARG(TOP(0)); } 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 SETPTR(n,r)    do { SETTAG((n), T_PTR); PTR(n) = (r); } while(0)
+#define SETFUNPTR(n,r) do { SETTAG((n), T_FUNPTR); FUNPTR(n) = (r); } while(0)
+#define SETFORPTR(n,r) do { SETTAG((n), T_FORPTR); FORPTR(n) = (r); } while(0)
+#define SETBSTR(n,r)   do { SETTAG((n), T_FORPTR); FORPTR(n) = (r); FORPTR(n)->finalizer->fptype = FP_BSTR; } while(0)
+#define OPINT1(e)      do { CHECK(1); xi = evalint(ARG(TOP(0)));                            e; POP(1); n = TOP(-1); } while(0);
+#define OPPTR2(e)      do { CHECK(2); xp = evalptr(ARG(TOP(0))); yp = evalptr(ARG(TOP(1))); e; POP(2); n = TOP(-1); } while(0);
+#define CMPP(op)       do { OPPTR2(r = xp op yp); GOIND(r ? combTrue : combFalse); } while(0)
+
+ top:
+  /*pp(stdout, an);*/
+  if (--glob_slice <= 0)
+    yield();
+  l = LABEL(n);
+  if (l < T_IO_STDIN) {
+    /* The node is one of the permanent nodes; the address offset is the tag */
+    tag = l;
+  } else {
+    /* Heap allocated node */
+    if (ISINDIR(n)) {
+      /* Follow indirections */
+      NODEPTR on = n;
+      do {
+        n = GETINDIR(n);
+      } while(ISINDIR(n));
+      SETINDIR(on, n);          /* and short-circuit them */
+    }
+    tag = GETTAG(n);
+  }
+  //COUNT(num_reductions);
+  //printf("%s %d\n", tag_names[tag], (int)stack_ptr);
+  //if (stack_ptr < -1)
+  //  ERR("stack_ptr");
+  switch (tag) {
+  ap2:         PUSH(n); n = FUN(n);
+  ap:
+  case T_AP:   PUSH(n);
+    n = FUN(n); goto top;
+
+  case T_INT:    RET;
+  case T_DBL:    RET;
+  case T_PTR:    RET;
+  case T_FUNPTR: RET;
+  case T_FORPTR: RET;
+  case T_ARR:    RET;
+  case T_THID:   RET;
+  case T_MVAR:   RET;
+  case T_BADDYN: ERR1("FFI unknown %s", CSTR(n));
+
+  /*
+   * Some of these reductions, (e.g., Z x y = K (x y)) are there to avoid
+   * that increase in arity that some "optimizations" in Abstract.hs
+   * stop reductions from happening.  This can be important for "full laziness".
+   * In practice, these reductions almost never happen, but there they are anyway. :)
+   */
+  case T_S:    GCCHECK(2); CHKARG3; GOAP2(x, z, new_ap(y, z));                            /* S x y z = x z (y z) */
+  case T_SS:   GCCHECK(3); CHKARG4; GOAP2(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:   if (!HASNARGS(4)) {
+               GCCHECK(1); CHKARG2; COUNT(red_bb); GOAP(combB, new_ap(x, y)); } else {    /* B' x y = B (x y) */
+               GCCHECK(2); CHKARG4; GOAP2(x, y, new_ap(z, w)); }                          /* B' x y z w = x y (z w) */
+  case T_Z:    if (!HASNARGS(3)) {
+               GCCHECK(1); CHKARG2; COUNT(red_z); GOAP(combK, new_ap(x, y)); } else {     /* Z x y = K (x y) */
+                           CHKARG3; GOAP(x, y); }                                         /* Z x y z = x y */
+//case T_J:                CHKARG3; GOAP(z, x);                                           /* J x y z = z x */
+  t_c:
+  case T_C:    GCCHECK(1); CHKARG3; GOAP2(x, z, y);                                       /* C x y z = x z y */
+  case T_CC:   GCCHECK(2); CHKARG4; GOAP2(x, new_ap(y, w), z);                            /* C' x y z w = x (y w) z */
+  t_p:
+  case T_P:    GCCHECK(1); CHKARG3; GOAP2(z, x, y);                                       /* P x y z = z x y */
+  case T_R:    if(!HASNARGS(3)) {
+               GCCHECK(1); CHKARG2; COUNT(red_r); GOAP2(combC, y, x); } else {            /* R x y = C y x */
+               GCCHECK(1); CHKARG3; GOAP2(y, z, x); }                                     /* R x y z = y z x */
+  case T_O:    GCCHECK(1); CHKARG4; GOAP2(w, x, y);                                       /* O x y z w = w x y */
+  case T_K2:   if (!HASNARGS(3)) {
+                           CHKARG2; COUNT(red_k2); GOAP(combK, x); } else {               /* K2 x y = K x */
+                           CHKARG3; GOIND(x); }                                           /* K2 x y z = *x */
+  case T_K3:   if (!HASNARGS(4)) {
+                           CHKARG2; COUNT(red_k3); GOAP(combK2, x); } else {              /* K3 x y = K2 x */
+                           CHKARG4; GOIND(x); }                                           /* K3 x y z w = *x */
+  case T_K4:   if (!HASNARGS(5)) {
+                           CHKARG2; COUNT(red_k4); GOAP(combK3, x); } else {              /* K4 x y = K3 x */
+                           CHKARG5; GOIND(x); }                                           /* K4 x y z w v = *x */
+  case T_CCB:  if (!HASNARGS(4)) {
+               GCCHECK(2); CHKARG3; COUNT(red_ccb); GOAP2(combB, new_ap(x, z), y);} else{ /* C'B x y z = B (x z) y */
+               GCCHECK(2); CHKARG4; GOAP2(x, z, new_ap(y, w)); }                          /* C'B x y z w = x z (y w) */
+
+    /*
+     * Strict primitives require evaluating the arguments before we can proceed.
+     * The easiest way to do this is to just recursively call evali() for each argument.
+     * The drawback of this is that it uses a lot of C stack.  (E.g., recompiling MicroHs
+     * uses a stack depth of 1800).
+     * Instead we use the following scheme:
+     *  When we find a strict binary (int) primitive we push T_BININT2,
+     *  set n=second argument.
+     *  Continue evaluation of n.
+     *  When n is finally evaluated and we are about to return we check if the stack top is T_BININT2.
+     *  If so, change the stack top to T_BININT1,
+     *  set n=first argument.
+     *  Continue evaluation of n.
+     *  When n is finally evaluated and we are about to return we check if the stack top is T_BININT1.
+     *  If so, we know that both arguments are now evaluated, and we perform the strict operation.
+     *
+     * On my desktop machine this is about 3% slower, on my laptop (Apple M1) it is about 3% faster.
+     *
+     * Pictorially for BININT
+     *  Before the code below:
+     *  ----
+     *  | --------> @
+     *  ----       / \
+     *  | ------> @   y
+     *  ----     / \
+     *  n ----> ADD x
+     *
+     * After
+     *  ----
+     *  | --------> @
+     *  ----       / \
+     *  | ------> @   y
+     *  ----     / \
+     *  | ->BI2 ADD x
+     *  ----        ^
+     *  n ----------|
+     *
+     *  x becomes an INT, stack is not empty, BININT2 found on top
+     *  ----
+     *  | --------> @
+     *  ----       / \
+     *  | ------> @   y
+     *  ----     / \
+     *  | ->BI2 ADD INT
+     *  ----        ^
+     *  n ----------|
+     *
+     *  After
+     *  ----
+     *  | --------> @
+     *  ----       / \
+     *  | ------> @   y
+     *  ----     / \    \
+     *  | ->BI1 ADD INT  |
+     *  ----             |
+     *  n ---------------|
+     *
+     *  y becomes an INT, stack is not empty, BININT1 found on top
+     *  do arithmetic
+     *  ----
+     *  | --------> @
+     *  ----       / \
+     *  | ------> @   INT
+     *  ----     / \    \
+     *  | ->BI1 ADD INT  |
+     *  ----             |
+     *  n ---------------|
+     *
+     *  ----
+     *  n -------> INT(x+y)
+     */
+  case T_ADD:
+  case T_SUB:
+  case T_MUL:
+  case T_QUOT:
+  case T_REM:
+  case T_SUBR:
+  case T_UQUOT:
+  case T_UREM:
+  case T_AND:
+  case T_OR:
+  case T_XOR:
+  case T_SHL:
+  case T_SHR:
+  case T_ASHR:
+  case T_EQ:
+  case T_NE:
+  case T_LT:
+  case T_LE:
+  case T_GT:
+  case T_GE:
+  case T_ICMP:
+  case T_ULT:
+  case T_ULE:
+  case T_UGT:
+  case T_UGE:
+  case T_UCMP:
+    CHECK(2);
+    n = ARG(TOP(1));
+    if (GETTAG(n) == T_INT) {
+      n = ARG(TOP(0));
+      PUSH(combBININT1);
+      if (GETTAG(n) == T_INT)
+        goto binint1;
+    } else {
+      PUSH(combBININT2);
+    }
+    goto top;
+  case T_NEG:
+  case T_INV:
+  case T_POPCOUNT:
+  case T_CLZ:
+  case T_CTZ:
+    CHECK(1);
+    n = ARG(TOP(0));
+    PUSH(combUNINT1);
+    goto top;
+
+#if WANT_FLOAT
+  case T_FADD:
+  case T_FSUB:
+  case T_FMUL:
+  case T_FDIV:
+  case T_FEQ:
+  case T_FNE:
+  case T_FLT:
+  case T_FLE:
+  case T_FGT:
+  case T_FGE:
+    CHECK(2);
+    n = ARG(TOP(1));
+    PUSH(combBINDBL2);
+    goto top;
+  case T_FNEG:
+    CHECK(1);
+    n = ARG(TOP(0));
+    PUSH(combUNDBL1);
+    goto top;
+
+  case T_ITOF: OPINT1(rd = (flt_t)xi); SETDBL(n, rd); RET;
+  case T_FREAD:
+    CHECK(1);
+    msg = evalstring(ARG(TOP(0))).string;
+#if WORD_SIZE == 64
+    xd = strtod(msg, NULL);
+#elif WORD_SIZE == 32
+    xd = strtof(msg, NULL);
+#else  /* WORD_SIZE */
+#error Unknown WORD_SIZE
+#endif  /* WORD_SIZE */
+    FREE(msg);
+    POP(1);
+    n = TOP(-1);
+    SETDBL(n, xd);
+    RET;
+
+  case T_FSHOW:
+    CHECK(1);
+    xd = evaldbl(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    GOIND(dblToString(xd));
+#endif  /* WANT_FLOAT */
+
+  case T_ISINT:
+    CHECK(1);
+    x = evali(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    SETINT(n, GETTAG(x) == T_INT ? GETVALUE(x) : -1);
+    RET;
+
+  case T_BSAPPEND:
+  case T_BSAPPENDDOT:
+  case T_BSEQ:
+  case T_BSNE:
+  case T_BSLT:
+  case T_BSLE:
+  case T_BSGT:
+  case T_BSGE:
+  case T_BSCMP:
+    CHECK(2);
+    n = ARG(TOP(1));
+    PUSH(combBINBS2);
+    goto top;
+
+  /* Retag a word sized value, keeping the value bits */
+#define CONV(t) do { CHECK(1); x = evali(ARG(TOP(0))); n = POPTOP(); SETTAG(n, t); SETVALUE(n, GETVALUE(x)); RET; } while(0)
+  case T_TODBL: CONV(T_DBL);
+  case T_TOINT: CONV(T_INT);
+  case T_TOPTR: CONV(T_PTR);
+  case T_TOFUNPTR: CONV(T_FUNPTR);
+#undef CONV
+
+  case T_FPADD: CHECK(2); xfp = evalforptr(ARG(TOP(0))); yi = evalint(ARG(TOP(1))); POP(2); n = TOP(-1); SETFORPTR(n, addForPtr(xfp, yi)); RET;
+  case T_FP2P:
+    CHECK(1);
+    xfp = evalforptr(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    SETPTR(n, xfp->payload.string);
+    RET;
+
+  case T_FP2BS:
+    CHECK(2);
+    xfp = evalforptr(ARG(TOP(0)));
+    xi = evalint(ARG(TOP(1)));
+    POP(2);
+    n = TOP(-1);
+    xfp->payload.size = xi;
+    SETBSTR(n, xfp);
+    RET;
+
+  case T_BS2FP:
+    CHECK(1);
+    xfp = evalbstr(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    SETFORPTR(n, xfp);
+    RET;
+
+  case T_ARR_EQ:
+    {
+      CHECK(2);
+      x = evali(ARG(TOP(0)));
+      arr = ARR(x);
+      y = evali(ARG(TOP(1)));
+      POP(2);
+      n = TOP(-1);
+      GOIND(arr == ARR(y) ? combTrue : combFalse);
+    }
+
+  case T_BSTOUTF8:
+    {
+      CHECK(1);
+      n = ARG(TOP(0));
+      /* Zap the pointer to the list so it can be GC:ed.
+       * The actual list is protected from GC by evalbytestring().
+       */
+      // ARG(TOP(0)) = combK;
+      struct bytestring bs = evalstring(n);
+      POP(1);
+      n = TOP(-1);
+      SETBSTR(n, mkForPtrFree(bs));
+      RET;
+    }
+
+  case T_BSHEADUTF8:
+    CHECK(1);
+    xfp = evalbstr(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    SETINT(n, headutf8(xfp->payload, (void**)0));
+    RET;
+
+  case T_BSTAILUTF8:
+    CHECK(1);
+    xfp = evalbstr(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    { void *out;
+      (void)headutf8(xfp->payload, &out);           /* skip one UTF8 character */
+      xi = (char*)out - (char*)xfp->payload.string; /* offset */
+      yi = xfp->payload.size - xi;                  /* remaining length */
+      SETBSTR(n, bssubstr(xfp, xi, yi));            /* make a substring */
+    }
+    RET;
+
+  case T_BSFROMUTF8:
+    if (doing_rnf) RET;
+    CHECK(1);
+
+    xfp = evalbstr(ARG(TOP(0)));
+    GCCHECK(strNodes(xfp->payload.size));
+    POP(1);
+    n = TOP(-1);
+    //printf("T_FROMUTF8 x = %p fp=%p payload.string=%p\n", x, x->uarg.uuforptr, x->uarg.uuforptr->payload.string);
+    GOIND(mkStringU(xfp->payload));
+
+  case T_BSUNPACK:
+    if (doing_rnf) RET;
+    CHECK(1);
+    struct forptr *xfp = evalbstr(ARG(TOP(0)));
+    GCCHECK(strNodes(xfp->payload.size));
+    POP(1);
+    n = TOP(-1);
+    GOIND(bsunpack(xfp->payload));
+
+  case T_BSPACK:
+    CHECK(1);
+    n = ARG(TOP(0));
+    /* Zap the pointer to the list so it can be GC:ed.
+     * The actual list is protected from GC by evalbytestring().
+     */
+    ARG(TOP(0)) = combK;
+    struct bytestring rbs = evalbytestring(n);
+    POP(1);
+    n = TOP(-1);
+    SETBSTR(n, mkForPtrFree(rbs));
+    RET;
+
+  case T_BSREPLICATE:
+    CHECK(2);
+    xi = evalint(ARG(TOP(0)));
+    yi = evalint(ARG(TOP(1)));
+    POP(2);
+    n = TOP(-1);
+    SETBSTR(n, mkForPtrFree(bsreplicate(xi, yi)));
+    RET;
+
+  case T_BSLENGTH:
+    CHECK(1);
+    xfp = evalbstr(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    SETINT(n, xfp->payload.size);
+    RET;
+
+  case T_BSSUBSTR:
+    CHECK(3);
+    xfp = evalbstr(ARG(TOP(0)));
+    xi = evalint(ARG(TOP(1)));
+    yi = evalint(ARG(TOP(2)));
+    POP(3);
+    n = TOP(-1);
+    SETBSTR(n, bssubstr(xfp, xi, yi));
+    RET;
+
+  case T_BSINDEX:
+    CHECK(2);
+    xfp = evalbstr(ARG(TOP(0)));
+    xi = evalint(ARG(TOP(1)));
+    POP(2);
+    n = TOP(-1);
+    SETINT(n, ((uint8_t *)xfp->payload.string)[xi]);
+    RET;
+
+  case T_RAISE:
+    if (doing_rnf) RET;
+    CHKARG1;
+    raise_exn(x);               /* never returns */
+    
+
+  case T_SEQ:  CHECK(2); evali(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(TOP(1)); POP(2); n = TOP(-1); GOIND(r==0 ? combTrue : combFalse);
+  case T_COMPARE:
+    CHECK(2); r = compare(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:
+    GCCHECK(2);
+    if (doing_rnf) RET;
+    CHKARG1;
+    /* Conjure up a new world and evaluate the io with that world, finally selecting the result */
+    /* PERFORMIO io  -->  io World K */
+    GOAP2(x, combWorld, combK);
+
+  case T_IO_BIND:
+    goto t_c;
+  case T_IO_RETURN:
+    goto t_p;
+  case T_IO_THEN:
+    GCCHECK(2); CHKARG2; GOAP2(combIOBIND, x, new_ap(combK, y));
+#if WANT_STDIO
+  case T_IO_PP:
+    CHKARG2;
+    pp(stderr, x);
+    GOPAIRUNIT;
+  case T_IO_PRINT:
+    hdr = 0;
+    goto ser;
+  case T_IO_SERIALIZE:
+    hdr = 1;
+  ser:
+#if 0
+    gc();                     /* DUBIOUS: do a GC to get possible GC reductions */
+#endif
+    CHKARG3NP;
+    bfile = (struct BFILE*)evalptr(x);
+    printb(bfile, evali(y), hdr);
+    putb('\n', bfile);
+    POP(3);
+    GOPAIRUNIT;
+  case T_IO_DESERIALIZE:
+    CHKARG2NP;
+    bfile = (struct BFILE*)evalptr(x);
+    gc();                     /* make sure we have room.  GC during parse is dodgy. */
+    x = parse_top(bfile);
+    POP(2);
+    GOPAIR(x);                /* allocates a cell, but we did a GC above */
+#endif
+#if WANT_ARGS
+  case T_IO_GETARGREF:
+    GCCHECK(2);
+    CHKARG1;
+    x = alloc_node(T_ARR);
+    ARR(x) = argarray;
+    GOPAIR(x);
+#endif
+  case T_IO_CCALL:
+    {
+      GCCHECK(1);                 /* room for placeholder */
+      int a = (int)GETVALUE(n);   /* function number */
+      int arity = FFI_IX(a).ffi_arity;
+      CHECK(arity);
+      funptr_t f = FFI_IX(a).ffi_fun;
+      PUSH(mkFlt(0.0));           /* placeholder for result, protected from GC */
+      int k = f(stk);             /* call FFI function, return number of arguments */
+      if (k != arity) {
+#if WANT_STDIO
+        fprintf(stderr, "ccall arity %s %d!=%d\n", FFI_IX(a).ffi_name, arity, k);
+#endif
+        ERR("ccall arity");     /* temporary sanity check */
+      }
+      GCCHECK(1);                 /* room for pair */
+      x = POPTOP();               /* pop actual result */
+      POP(arity);                 /* pop the pushed arguments */
+      if (stack_ptr < 0)
+        ERR("CCALL POP");
+      n = POPTOP();               /* node to update */
+      GOPAIR(x);                  /* and this is the result */
+    }
+
+  case T_NEWCASTRINGLEN:
+    {
+      CHKARG2NP;                /* set x,y,n */
+      struct bytestring bs = evalbytestring(x);
+      GCCHECK(5);
+      NODEPTR cs = alloc_node(T_PTR);
+      PTR(cs) = bs.string;
+      NODEPTR res = new_ap(new_ap(combPair, cs), mkInt(bs.size));
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_PACKCSTRING:
+    {
+      CHKARG2NP;                  /* sets x, y, n */
+      char *cstr = evalptr(x);
+      size_t size = strlen(cstr);
+      char *str = mmalloc(size);
+      memcpy(str, cstr, size);
+      struct bytestring bs = { size, str };
+      NODEPTR res = mkStrNode(bs);
+      GCCHECKSAVE(res, 1);
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_PACKCSTRINGLEN:
+    {
+      CHKARG3NP;                /* sets x,y,z,n */
+      char *cstr = evalptr(x);
+      size_t size = evalint(y);
+      char *str = mmalloc(size);
+      memcpy(str, cstr, size);
+      struct bytestring bs = { size, str };
+      NODEPTR res = mkStrNode(bs);
+      POP(3);
+      GCCHECKSAVE(res, 1);
+      GOPAIR(res);
+    }
+
+  case T_ARR_ALLOC:
+    {
+      CHKARG3NP;                /* sets x,y,z,n */
+      size_t size = evalint(x);
+      struct ioarray *arr = arr_alloc(size, y);
+      GCCHECK(2);
+      NODEPTR res = alloc_node(T_ARR);
+      ARR(res) = arr;
+      POP(3);
+      GOPAIR(res);
+    }
+  case T_ARR_COPY:
+    {
+      CHKARG2NP;
+      NODEPTR a = evali(x);
+      if (GETTAG(a) != T_ARR)
+        ERR("T_ARR_COPY tag");
+      struct ioarray *arr = arr_copy(ARR(a));
+      GCCHECK(2);
+      NODEPTR res = alloc_node(T_ARR);
+      ARR(res) = arr;
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_ARR_SIZE:
+    {
+      CHKARG2NP;
+      NODEPTR a = evali(x);
+      if (GETTAG(a) != T_ARR)
+        ERR("bad ARR tag");
+      GCCHECK(2);
+      NODEPTR res = mkInt(ARR(a)->size);
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_ARR_READ:
+    {
+      CHKARG3NP;                /* sets x,y,n */
+      size_t i = evalint(y);
+      NODEPTR a = evali(x);
+      if (GETTAG(a) != T_ARR)
+        ERR("bad ARR tag");
+      if (i >= ARR(a)->size)
+        ERR("ARR_READ");
+      GCCHECK(1);
+      NODEPTR res = ARR(a)->array[i];
+      POP(3);
+      GOPAIR(res);
+    }
+  case T_ARR_WRITE:
+    {
+      CHKARG4NP;                /* sets x,y,z,n */
+      size_t i = evalint(y);
+      NODEPTR a = evali(x);
+      if (GETTAG(a) != T_ARR)
+        ERR("bad ARR tag");
+      if (i >= ARR(a)->size) {
+        ERR("ARR_WRITE");
+      }
+      ARR(a)->array[i] = z;
+      POP(4);
+      GOPAIRUNIT;
+      }
+
+  case T_FPNEW:
+    {
+      CHKARG2NP;
+      //printf("T_FPNEW\n");
+      void *xp = evalptr(x);
+      //printf("T_FPNEW xp=%p\n", xp);
+      GCCHECK(2);
+      NODEPTR res = alloc_node(T_FORPTR);
+      SETFORPTR(res, mkForPtrP(xp));
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_FPFIN:
+    {
+      CHKARG3NP;
+      //printf("T_FPFIN\n");
+      struct forptr *xfp = evalforptr(y);
+      //printf("T_FPFIN xfp=%p\n", xfp);
+      HsFunPtr xp = evalfunptr(x);
+      //printf("T_FPFIN yp=%p\n", yp);
+      xfp->finalizer->final = xp;
+      POP(3);
+      GOPAIRUNIT;
+    }
+  case T_IO_GC:
+    //printf("gc()\n");
+    CHKARG1;
+    gc();
+    GOPAIRUNIT;
+
+  case T_IO_FORK:
+    {
+      GCCHECK(3);
+      CHKARG2;                /* set x=io, y=ST, n */
+      struct mthread *mt = new_thread(new_ap(x, y)); /* copy the world */
+      mt->mt_mask = runq.mq_head->mt_mask; /* inherit masking state */
+      NODEPTR res = alloc_node(T_THID);
+      THR(res) = mt;
+      GOPAIR(res);
+    }
+
+  case T_IO_THID:
+    {
+      GCCHECK(2);
+      CHKARG1;
+      NODEPTR res = alloc_node(T_THID);
+      THR(res) = runq.mq_head;            /* head of the run queue is the current thread */
+      GOPAIR(res);
+    }
+  case T_IO_THROWTO:
+    {
+      CHKARG3NP;                /* x=this, y=exn, z=ST */
+      struct mthread *mt = evalthid(x);
+      throwto(mt, y);
+      POP(3);
+      GOPAIRUNIT;
+    }
+  case T_IO_YIELD:
+    CHKARG1;
+    yield();
+    GOPAIRUNIT;
+
+  case T_IO_NEWMVAR:
+    {
+      GCCHECK(2);
+      CHKARG1;
+      struct mvar *mv = new_mvar();
+      NODEPTR res = alloc_node(T_MVAR);
+      MVAR(res) = mv;
+      GOPAIR(res);
+    }
+  case T_IO_TAKEMVAR:
+    {
+      CHKARG2NP;             /* set x=mvar, y=ST */
+      check_thrown();        /* check if we have a thrown exception */
+      NODEPTR res = take_mvar(0, evalmvar(x));         /* never returns if it blocks */
+      GCCHECKSAVE(res, 1);
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_IO_READMVAR:
+    {
+      CHKARG2NP;
+      check_thrown();           /* check if we have a thrown exception */
+      NODEPTR res = read_mvar(0, evalmvar(x));         /* never returns if it blocks */
+      GCCHECKSAVE(res, 1);
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_IO_PUTMVAR:
+    {
+      CHKARG3NP;             /* set x=mvar, y=value, z=ST */
+      check_thrown();        /* check if we have a thrown exception */
+      (void)put_mvar(0, evalmvar(x), y); /* never returns if it blocks */
+      POP(3);
+      GOPAIRUNIT;
+    }
+  case T_IO_TRYTAKEMVAR:
+    {
+      CHKARG2NP;
+      NODEPTR res = take_mvar(1, evalmvar(x));
+      GCCHECKSAVE(res, 2);
+      if (res != NIL)
+        res = new_ap(combJust, res);
+      else
+        res = combNothing;
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_IO_TRYREADMVAR:
+    {
+      CHKARG2NP;
+      NODEPTR res = read_mvar(1, evalmvar(x));
+      if (res != NIL) {
+        GCCHECKSAVE(res, 2);
+        res = new_ap(combJust, res);
+      } else {
+        res = combNothing;
+      }
+      POP(2);
+      GOPAIR(res);
+    }
+  case T_IO_TRYPUTMVAR:
+    {
+      CHKARG3NP;
+      NODEPTR res = put_mvar(1, evalmvar(x), y) ? combTrue : combFalse;
+      GCCHECKSAVE(res, 1);
+      POP(3);
+      GOPAIR(res);
+    }
+  case T_IO_THREADDELAY:
+    {
+      CHKARG2NP;
+#if defined(CLOCK_INIT)
+      check_thrown();           /* check if we have a thrown exception */
+      if (runq.mq_head->mt_at == -1) {
+        /* delay has already expired, so just return */
+        runq.mq_head->mt_at = 0;
+        POP(2);
+        GOPAIRUNIT;
+      } else {
+        thread_delay(evalint(x)); /* never returns */
+      }
+#else
+      ERR("threadDelay: no clock");
+#endif
+    }
+  case T_IO_THREADSTATUS:
+    {
+      CHKARG2NP;
+      struct mthread *mt = evalthid(x);
+      GCCHECK(2);
+      POP(2);
+      GOPAIR(mkInt(mt->mt_state));
+    }
+  case T_IO_GETMASKINGSTATE:
+    CHKARG1;                    /* x = ST */
+    GOPAIR(mkInt(runq.mq_head->mt_mask));
+
+  case T_IO_SETMASKINGSTATE:
+    CHKARG2;                    /* x = level, y = ST */
+    runq.mq_head->mt_mask = evalint(x);
+    GOPAIRUNIT;
+
+  case T_CATCH:
+    /* CATCH x y z --> CATCHR (x z) y z */
+    GCCHECK(3);
+    CHKARG3;                    /* x=io, y=hdl, z=ST */
+    GOAP(new_ap(new_ap(combCATCHR, new_ap(x, z)), y), z);
+  case T_CATCHR:
+    {
+      CHKARG3NP;                /* x = (io st), y = hdl, z = st, n = (CATCHR (io st)) h */
+      struct handler *h = mmalloc(sizeof *h);
+      h->hdl_old = cur_handler;
+      cur_handler = h;
+      stackptr_t ostack = stack_ptr;;    /* old stack pointer */
+      enum mask_state omask = runq.mq_head->mt_mask;     /* old mask */
+      if (setjmp(h->hdl_buf)) {
+        /* An exception occurred: */
+        stack_ptr = ostack;
+        runq.mq_head->mt_mask = mask_interruptible; /* evaluate with mask */
+        NODEPTR exn = h->hdl_exn;       /* exception value */
+        cur_handler = h->hdl_old;       /* reset handler */
+        FREE(h);
+        GCCHECK(8);
+        POP(3);
+        /*
+         * Run:
+         *  hdl exn `primBind` \ r ->
+         *  primSetMaskingState omask `primThen`
+         *  primReturn r
+         * i.e.,
+         *  primBind (hdl exn) (B' primThen (primSetMaskingState omask) primReturn)
+         */
+        NODEPTR p = new_ap(combIOBIND, new_ap(y, exn));
+        NODEPTR q = new_ap(new_ap(new_ap(combBB, combIOTHEN), new_ap(combSETMASKINGSTATE, mkInt(omask))), combIORETURN);
+        GOAP2(p, q, z);
+      } else {
+        /* Normal execution: */
+        x = evali(x);             /* execute first argument */
+        /* No exception occurred */
+        cur_handler = h->hdl_old; /* restore old handler */
+        FREE(h);
+        POP(3);
+        GOIND(x);
+      }
+    }
+
+  case T_THNUM:
+    {
+    CHECK(1);
+    struct mthread *mt = evalthid(ARG(TOP(0)));
+    POP(1);
+    n = TOP(-1);
+    SETINT(n, (uvalue_t)mt->mt_id);
+    RET;
+    }
+
+  case T_DYNSYM:
+    /* A dynamic FFI lookup */
+    CHECK(1);
+    msg = evalstring(ARG(TOP(0))).string;
+    GCCHECK(1);
+    x = ffiNode(msg);
+    FREE(msg);
+    POP(1);
+    n = TOP(-1);
+    GOIND(x);
+
+#if WANT_TICK
+  case T_TICK:
+    xi = GETVALUE(n);
+    CHKARG1;
+    dotick(xi);
+    GOIND(x);
+#endif
+
+  default:
+    ERR1("eval tag %s", tag_names[GETTAG(n)]);
+  }
+
+
+ ret:
+  if (stack_ptr != stk) {
+    // In this case, n was an AP that got pushed and potentially
+    // updated.
+    uvalue_t xu, yu, ru;
+#if WANT_FLOAT
+    flt_t xd, yd, rd;
+#endif  /* WANT_FLOAT */
+    NODEPTR p;
+
+    tag = GETTAG(TOP(0));
+    switch (tag) {
+    case T_BININT2:
+      n = ARG(TOP(1));
+      TOP(0) = combBININT1;
+      goto top;
+
+    case T_BININT1:
+      /* First argument */
+#if SANITY
+      if (GETTAG(n) != T_INT)
+        ERR("BININT 0");
+#endif  /* SANITY */
+    binint1:
+      xu = (uvalue_t)GETVALUE(n);
+      /* Second argument */
+      y = ARG(TOP(2));
+      while (GETTAG(y) == T_IND)
+        y = GETINDIR(y);
+#if SANITY
+      if (GETTAG(y) != T_INT)
+        ERR("BININT 1");
+#endif  /* SANITY */
+      yu = (uvalue_t)GETVALUE(y);
+      p = FUN(TOP(1));
+      POP(3);
+      n = TOP(-1);
+    binint:
+      switch (GETTAG(p)) {
+      case T_IND:   p = GETINDIR(p); goto binint;
+      case T_ADD:   ru = xu + yu; break;
+      case T_SUB:   ru = xu - yu; break;
+      case T_MUL:   ru = xu * yu; break;
+      case T_SUBR:  ru = yu - xu; break;
+      case T_QUOT:  if (yu == 0)
+                      raise_rts(exn_dividebyzero);
+                    else
+                      ru = (uvalue_t)((value_t)xu / (value_t)yu);
+                    break;
+      case T_REM:   if (yu == 0)
+                      raise_rts(exn_dividebyzero);
+                    else
+                      ru = (uvalue_t)((value_t)xu % (value_t)yu);
+                    break;
+      case T_UQUOT: if (yu == 0)
+                      raise_rts(exn_dividebyzero);
+                    else
+                      ru = xu / yu;
+                    break;
+      case T_UREM:  if (yu == 0)
+                      raise_rts(exn_dividebyzero);
+                    else
+                      ru = xu % yu;
+                    break;
+      case T_AND:   ru = xu & yu; break;
+      case T_OR:    ru = xu | yu; break;
+      case T_XOR:   ru = xu ^ yu; break;
+      case T_SHL:   ru = xu << yu; break;
+      case T_SHR:   ru = xu >> yu; break;
+      case T_ASHR:  ru = (uvalue_t)((value_t)xu >> yu); break;
+
+      case T_EQ:    GOIND(xu == yu ? combTrue : combFalse);
+      case T_NE:    GOIND(xu != yu ? combTrue : combFalse);
+      case T_ULT:   GOIND(xu <  yu ? combTrue : combFalse);
+      case T_ULE:   GOIND(xu <= yu ? combTrue : combFalse);
+      case T_UGT:   GOIND(xu >  yu ? combTrue : combFalse);
+      case T_UGE:   GOIND(xu >= yu ? combTrue : combFalse);
+      case T_UCMP:  GOIND(xu <  yu ? combLT   : xu > yu ? combGT : combEQ);
+      case T_LT:    GOIND((value_t)xu <  (value_t)yu ? combTrue : combFalse);
+      case T_LE:    GOIND((value_t)xu <= (value_t)yu ? combTrue : combFalse);
+      case T_GT:    GOIND((value_t)xu >  (value_t)yu ? combTrue : combFalse);
+      case T_GE:    GOIND((value_t)xu >= (value_t)yu ? combTrue : combFalse);
+      case T_ICMP:  GOIND((value_t)xu <  (value_t)yu ? combLT   : (value_t)xu > (value_t)yu ? combGT : combEQ);
+
+      default:
+        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
+        ERR("BININT");
+      }
+      SETINT(n, (value_t)ru);
+      goto ret;
+
+    case T_UNINT1:
+      /* The argument */
+#if SANITY
+      if (GETTAG(n) != T_INT)
+        ERR("UNINT 0");
+#endif
+      xu = (uvalue_t)GETVALUE(n);
+      p = FUN(TOP(1));
+      POP(2);
+      n = TOP(-1);
+    unint:
+      switch (GETTAG(p)) {
+      case T_IND:      p = GETINDIR(p); goto unint;
+      case T_NEG:      ru = -xu; break;
+      case T_INV:      ru = ~xu; break;
+      case T_POPCOUNT: ru = POPCOUNT(xu); break;
+      case T_CLZ:      ru = CLZ(xu); break;
+      case T_CTZ:      ru = CTZ(xu); break;
+      default:
+        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
+        ERR("UNINT");
+      }
+      SETINT(n, (value_t)ru);
+      goto ret;
+
+#if WANT_FLOAT
+    case T_BINDBL2:
+      n = ARG(TOP(1));
+      TOP(0) = combBINDBL1;
+      goto top;
+
+    case T_BINDBL1:
+      /* First argument */
+#if SANITY
+      if (GETTAG(n) != T_DBL)
+        ERR("BINDBL 0");
+#endif  /* SANITY */
+      xd = GETDBLVALUE(n);
+      /* Second argument */
+      y = ARG(TOP(2));
+      while (GETTAG(y) == T_IND)
+        y = GETINDIR(y);
+#if SANITY
+      if (GETTAG(y) != T_DBL)
+        ERR("BINDBL 1");
+#endif  /* SANITY */
+      yd = GETDBLVALUE(y);
+      p = FUN(TOP(1));
+      POP(3);
+      n = TOP(-1);
+    bindbl:
+      switch (GETTAG(p)) {
+      case T_IND:   p = GETINDIR(p); goto bindbl;
+      case T_FADD:  rd = xd + yd; break;
+      case T_FSUB:  rd = xd - yd; break;
+      case T_FMUL:  rd = xd * yd; break;
+      case T_FDIV:  rd = xd / yd; break;
+
+      case T_FEQ:   GOIND(xd == yd ? combTrue : combFalse);
+      case T_FNE:   GOIND(xd != yd ? combTrue : combFalse);
+      case T_FLT:   GOIND(xd <  yd ? combTrue : combFalse);
+      case T_FLE:   GOIND(xd <= yd ? combTrue : combFalse);
+      case T_FGT:   GOIND(xd >  yd ? combTrue : combFalse);
+      case T_FGE:   GOIND(xd >= yd ? combTrue : combFalse);
+
+      default:
+        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
+        ERR("BINDBL");
+      }
+      SETDBL(n, rd);
+      goto ret;
+
+    case T_UNDBL1:
+      /* The argument */
+#if SANITY
+      if (GETTAG(n) != T_DBL)
+        ERR("UNDBL 0");
+#endif
+      xd = GETDBLVALUE(n);
+      p = FUN(TOP(1));
+      POP(2);
+      n = TOP(-1);
+    undbl:
+      switch (GETTAG(p)) {
+      case T_IND:   p = GETINDIR(p); goto undbl;
+      case T_FNEG:  rd = -xd; break;
+      default:
+        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
+        ERR("UNDBL");
+      }
+      SETDBL(n, rd);
+      goto ret;
+#endif  /* WANT_FLOAT */
+
+    case T_BINBS2:
+      n = ARG(TOP(1));
+      TOP(0) = combBINBS1;
+      goto top;
+
+    case T_BINBS1:
+      /* First argument */
+#if SANITY
+      if (GETTAG(n) != T_FORPTR || FORPTR(n)->finalizer->fptype != FP_BSTR)
+        ERR("BINBS 0");
+#endif  /* SANITY */
+      xbs = BSTR(n);
+      /* Second argument */
+      y = ARG(TOP(2));
+      while (GETTAG(y) == T_IND)
+        y = GETINDIR(y);
+#if SANITY
+      if (GETTAG(y) != T_FORPTR || FORPTR(y)->finalizer->fptype != FP_BSTR)
+        ERR("BINBS 1");
+#endif  /* SANITY */
+      ybs = BSTR(y);
+      p = FUN(TOP(1));
+      POP(3);
+      n = TOP(-1);
+    binbs:
+      switch (GETTAG(p)) {
+      case T_IND:    p = GETINDIR(p); goto binbs;
+
+      case T_BSAPPEND: rbs = bsappend(xbs, ybs); break;
+      case T_BSAPPENDDOT: rbs = bsappenddot(xbs, ybs); break;
+      case T_BSEQ:   GOIND(bscompare(xbs, ybs) == 0 ? combTrue : combFalse);
+      case T_BSNE:   GOIND(bscompare(xbs, ybs) != 0 ? combTrue : combFalse);
+      case T_BSLT:   GOIND(bscompare(xbs, ybs) <  0 ? combTrue : combFalse);
+      case T_BSLE:   GOIND(bscompare(xbs, ybs) <= 0 ? combTrue : combFalse);
+      case T_BSGT:   GOIND(bscompare(xbs, ybs) >  0 ? combTrue : combFalse);
+      case T_BSGE:   GOIND(bscompare(xbs, ybs) >= 0 ? combTrue : combFalse);
+      case T_BSCMP:  r = bscompare(xbs, ybs); GOIND(r < 0 ? combLT : r > 0 ? combGT : combEQ);
+
+      default:
+        //fprintf(stderr, "tag=%d\n", GETTAG(FUN(TOP(0))));
+        ERR("BINBS");
+      }
+      SETBSTR(n, mkForPtrFree(rbs));
+      goto ret;
+
+    default:
+      stack_ptr = stk;
+      n = TOP(-1);
+    }
+  }
+#if MAXSTACKDEPTH
+  cur_c_stack = old_cur_c_stack; /* reset rather than counting down, in case of longjump */
+#endif
+  return n;
+}
+
+NORETURN void
+die_exn(NODEPTR exn)
+{
+  /* No handler:
+   * First convert the exception to a string by calling displaySomeException.
+   * The display function compiles to combShowExn, so we need to build
+   * (combShowExn exn) and evaluate it.
+   */
+  NODEPTR x;
+  char *msg;
+
+  if (in_raise) {
+    ERR("recursive error");
+    EXIT(1);
+  }
+  in_raise = 1;
+
+  if (GETTAG(exn) == T_INT) {
+    /* This is the special hack for RTS generated exception, represented by a T_INT */
+    switch(GETVALUE(exn)) {
+    case 0: msg = "stack overflow"; break;
+    case 1: msg = "heap overflow"; break;
+    case 2: msg = "thread killed"; break;
+    case 3: msg = "user interrupt"; break;
+    case 4: msg = "DivideByZero"; break;
+    default: msg = "unknown"; break;
+    }
+  } else {
+    /* just overwrite the top stack element, we don't need it */
+    CLEARSTK();
+    GCCHECK(1);
+    PUSH(new_ap(combShowExn, exn));/* TOP(0) = (combShowExn exn) */
+    x = evali(TOP(0));             /* evaluate it */
+    msg = evalstring(x).string;    /* and convert to a C string */
+    POP(1);
+  }
+#if WANT_STDIO
+  /* A horrible hack until we get proper exceptions */
+  if (strcmp(msg, "ExitSuccess") == 0) {
+    EXIT(0);
+  } else {
+    fprintf(stderr, "\nmhs: uncaught exception: %s\n", msg);
+    EXIT(1);
+  }
+#else  /* WANT_STDIO */
+  ERR1("mhs error: %s", msg);
+#endif  /* WANT_STDIO */
+}
+
+#if WANT_ARGS
+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;
+}
+#endif
+
+extern uint8_t *combexpr;
+extern int combexprlen;
+
+MAIN
+{
+  NODEPTR prog;
+#if WANT_ARGS
+  char *inname = 0;
+  char **av;
+  char *progname;
+  char **gargv;
+  int gargc;
+  int inrts;
+#if WANT_TICK
+  int dump_ticks = 0;
+#endif
+#endif
+#if WANT_STDIO
+  char *outname = 0;
+  size_t file_size = 0;
+#endif
+
+#if 0
+  /* MINGW doesn't do buffering right */
+  setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
+  setvbuf(stderr, NULL, _IONBF, BUFSIZ);
+#endif
+
+#ifdef INITIALIZATION
+  main_setup(); /* Do platform specific start-up. */
+#endif
+
+#ifdef CLOCK_INIT
+  CLOCK_INIT();
+#endif
+
+#if WANT_SIGINT
+  (void)signal(SIGINT, handle_sigint);
+#endif
+
+  heap_size = HEAP_CELLS;       /* number of heap cells */
+  stack_size = STACK_SIZE;      /* number of stack slots */
+
+#if WANT_ARGS
+  progname = argv[0];
+  argc--, argv++;
+  gargv = 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++;
+#if WANT_TICK
+        else if (strcmp(p, "-T") == 0)
+          dump_ticks = 1;
+#endif
+        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];
+        else if (strcmp(p, "-B") == 0)
+          gcbell++;
+#endif  /* WANT_STDIO */
+        else
+          ERR("Usage: eval [+RTS [-v] [-B] [-T] [-Hheap-size] [-Kstack-size] [-rFILE] [-oFILE] -RTS] arg ...");
+      }
+    } else {
+      if (strcmp(p, "+RTS") == 0) {
+        inrts = 1;
+      } else {
+        *av++ = p;
+      }
+    }
+  }
+  gargc = av - gargv;
+
+  if (inname == 0)
+    inname = "out.comb";
+#endif
+
+  init_nodes();
+  stack = mmalloc(sizeof(NODEPTR) * stack_size);
+  CLEARSTK();
+  num_reductions = 0;
+
+#if WANT_ARGS
+  /* Initialize an IORef (i.e., single element IOArray
+   * to contain the list of program arguments.
+   * The 0th element is the program name, and the rest
+   * are the non RTS arguments.
+   */
+  {
+    NODEPTR n;
+    /* No GC checks, the heap is empty. */
+    n = mkNil();
+    for(int i = gargc-1; i >= 0; i--) {
+      n = mkCons(mkStringC(gargv[i]), n);
+    }
+    n = mkCons(mkStringC(progname), n);
+    argarray = arr_alloc(1, n);      /* An IORef contains a single element array */
+    argarray->permanent = 1;         /* never GC the arguments, because a T_IO_GETARGREF can reach argarray */
+  }
+#endif  /* WANT_ARGS */
+
+  if (combexpr) {
+    int c;
+    BFILE *bf = openb_rd_buf(combexpr, combexprlen);
+    c = getb(bf);
+    /* Compressed combinators start with a 'Z' or 'z', otherwise 'v' (for version) */
+    if (c == 'z') {
+      /* add LZ77 compressor transducer */
+      bf = add_lz77_decompressor(bf);
+    } else {
+      /* put it back, we need it */
+      ungetb(c, bf);
+    }
+    prog = parse_top(bf);
+    closeb(bf);
+#if WANT_STDIO
+    file_size = combexprlen;
+#endif
+  } else {
+#if WANT_STDIO
+    prog = parse_file(inname, &file_size);
+#else
+    ERR("no stdio");
+#endif
+  }
+
+  /* GC unused stuff, nice for -o */
+  PUSH(prog);
+  want_gc_red = 1;
+  gc();
+  gc();                         /* this finds some more GC reductions */
+  want_gc_red = 0;              /* disabled due to UB */
+  prog = POPTOP();
+
+#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);
+    struct BFILE *bf = add_FILE(out);
+    printb(bf, prog, 1);
+    closeb(bf);
+    EXIT(0);
+  }
+  if (verbose > 2) {
+    pp(stdout, prog);
+  }
+#endif
+  run_time -= GETTIMEMILLI();
+
+  topnode = &prog;
+  start_exec(prog);
+  /* Flush standard handles in case there is some BFILE buffering */
+  flushb((BFILE*)FORPTR(comb_stdout)->payload.string);
+  flushb((BFILE*)FORPTR(comb_stderr)->payload.string);
+  gc();                      /* Run finalizers */
+  run_time += GETTIMEMILLI();
+
+#if WANT_STDIO
+  if (verbose) {
+    if (verbose > 1) {
+      PRINT("node size=%"PRIheap", heap size bytes=%"PRIheap"\n", (heapoffs_t)NODE_SIZE, heap_size * NODE_SIZE);
+    }
+    setlocale(LC_NUMERIC, "en_US");  /* Make %' work on platforms that support it */
+    PRINT("%"PCOMMA"15"PRIheap" combinator file size\n", (heapoffs_t)file_size);
+    PRINT("%"PCOMMA"15"PRIheap" cells at start\n", start_size);
+    PRINT("%"PCOMMA"15"PRIheap" cells heap size (%"PCOMMA""PRIheap" bytes)\n", heap_size, heap_size * NODE_SIZE);
+    PRINT("%"PCOMMA"15"PRIcounter" cells allocated (%"PCOMMA".1f Mbyte/s)\n", num_alloc, num_alloc * NODE_SIZE / ((double)run_time / 1000) / 1000000);
+    PRINT("%"PCOMMA"15"PRIcounter" GCs\n", num_gc);
+    PRINT("%"PCOMMA"15"PRIcounter" max cells used\n", max_num_marked);
+    PRINT("%"PCOMMA"15"PRIcounter" reductions (%"PCOMMA".1f Mred/s)\n", num_reductions, num_reductions / ((double)run_time / 1000) / 1000000);
+    PRINT("%"PCOMMA"15"PRIcounter" yields (%"PCOMMA""PRIcounter" resched)\n", num_yield, num_resched);
+    PRINT("%"PCOMMA"15"PRIcounter" array alloc\n", num_arr_alloc);
+    PRINT("%"PCOMMA"15"PRIcounter" array free\n", num_arr_free);
+    PRINT("%"PCOMMA"15"PRIcounter" foreign alloc\n", num_fin_alloc);
+    PRINT("%"PCOMMA"15"PRIcounter" foreign free\n", num_fin_free);
+    PRINT("%"PCOMMA"15"PRIcounter" bytestring alloc (max %"PCOMMA""PRIcounter")\n", num_bs_alloc, num_bs_alloc_max);
+    PRINT("%"PCOMMA"15"PRIcounter" bytestring alloc bytes (max %"PCOMMA""PRIcounter")\n", num_bs_bytes, num_bs_inuse_max);
+    PRINT("%"PCOMMA"15"PRIcounter" bytestring free\n", num_bs_free);
+    PRINT("%"PCOMMA"15"PRIcounter" thread create\n", num_thread_create-1);
+    PRINT("%"PCOMMA"15"PRIcounter" thread reap\n", num_thread_reap);
+#if MAXSTACKDEPTH
+    PRINT("%"PCOMMA"15d max stack depth\n", (int)max_stack_depth);
+    PRINT("%"PCOMMA"15d max C stack depth\n", (int)max_c_stack);
+#endif
+    // PRINT("%"PCOMMA"15"PRIcounter" max mark depth\n", max_mark_depth);
+    PRINT("%15.2fs total expired time\n", (double)run_time / 1000);
+    PRINT("%15.2fs total gc time (%.2f + %.2f)\n",
+          (double)(gc_mark_time + gc_scan_time) / 1000,
+          (double)gc_mark_time / 1000,
+          (double)gc_scan_time / 1000);
+#if GCRED
+    PRINT(" GC reductions A=%"PRIcounter", K=%"PRIcounter", I=%"PRIcounter", int=%"PRIcounter", flip=%"PRIcounter","
+          " BI=%"PRIcounter", BxI=%"PRIcounter", C'BxI=%"PRIcounter", CC=%"PRIcounter", C'I=%"PRIcounter", C'BBCP=%"PRIcounter"\n",
+          red_a, red_k, red_i, red_int, red_flip, red_bi, red_bxi, red_ccbi, red_cc, red_cci, red_ccbbcp);
+    PRINT(" special reductions B'=%"PRIcounter" K4=%"PRIcounter" K3=%"PRIcounter" K2=%"PRIcounter" C'B=%"PRIcounter", Z=%"PRIcounter", R=%"PRIcounter"\n",
+          red_bb, red_k4, red_k3, red_k2, red_ccb, red_z, red_r);
+#endif
+  }
+#endif  /* WANT_STDIO */
+
+#if WANT_TICK
+  if (dump_ticks) {
+    dump_tick_table(stdout);
+  }
+#endif
+
+#ifdef TEARDOWN
+  main_teardown(); /* do some platform specific teardown */
+#endif
+  EXIT(0);
+}
+
+#if WANT_MD5
+#include "md5.c"
+#endif  /* WANT_MD5 */
+
+#if WANT_LZ77
+#include "lz77.c"
+#endif
+
+/*********************/
+/* FFI adapters      */
+
+#define MHS_FROM(name, set, type) \
+from_t \
+name(stackptr_t stk, int n, type x) \
+{ \
+  NODEPTR r = TOP(0);           /* The pre-allocated cell for the result, */ \
+  set(r, x);                    /* Put result in pre-allocated cell. */ \
+  return n;                     /* return arity */ \
+}
+MHS_FROM(mhs_from_FloatW, SETDBL, flt_t);
+MHS_FROM(mhs_from_Int, SETINT, value_t);
+MHS_FROM(mhs_from_Word, SETINT, uvalue_t);
+MHS_FROM(mhs_from_Word8, SETINT, uvalue_t);
+MHS_FROM(mhs_from_Ptr, SETPTR, void*);
+MHS_FROM(mhs_from_ForPtr, SETFORPTR, struct forptr *);
+MHS_FROM(mhs_from_FunPtr, SETFUNPTR, HsFunPtr);
+MHS_FROM(mhs_from_CChar, SETINT, char);
+MHS_FROM(mhs_from_CSChar, SETINT, signed char);
+MHS_FROM(mhs_from_CUChar, SETINT, unsigned char);
+MHS_FROM(mhs_from_CShort, SETINT, short);
+MHS_FROM(mhs_from_CUShort, SETINT, unsigned short);
+MHS_FROM(mhs_from_CInt, SETINT, int);
+MHS_FROM(mhs_from_CUInt, SETINT, unsigned int);
+MHS_FROM(mhs_from_CLong, SETINT, long);
+MHS_FROM(mhs_from_CULong, SETINT, unsigned long);
+MHS_FROM(mhs_from_CLLong, SETINT, long long);
+MHS_FROM(mhs_from_CULLong, SETINT, unsigned long long);
+MHS_FROM(mhs_from_CSize, SETINT, size_t);
+#if WANT_TIME
+MHS_FROM(mhs_from_CTime, SETINT, time_t);
+#endif
+// MHS_FROM(mhs_from_CSSize, SETINT, ssize_t);
+MHS_FROM(mhs_from_CIntPtr, SETINT, intptr_t);
+MHS_FROM(mhs_from_CUIntPtr, SETINT, uintptr_t);
+from_t
+mhs_from_Unit(stackptr_t stk, int n)
+{
+  POP(1);                       /* return value cell */
+  PUSH(combUnit);               /* push unit instead */
+  return n;
+}
+
+#define MHS_TO(name, eval, type) \
+type name(stackptr_t stk, int n) \
+{ \
+  return eval(ARG(TOP(n+1)));                /* The stack has a reserved cell on top of the arguments */ \
+}
+MHS_TO(mhs_to_FloatW, evaldbl, flt_t);
+MHS_TO(mhs_to_Int, evalint, value_t);
+MHS_TO(mhs_to_Word, evalint, uvalue_t);
+MHS_TO(mhs_to_Word8, evalint, uint8_t);
+MHS_TO(mhs_to_Ptr, evalptr, void*);
+MHS_TO(mhs_to_FunPtr, evalfunptr, HsFunPtr);
+MHS_TO(mhs_to_CChar, evalint, char);
+MHS_TO(mhs_to_CSChar, evalint, signed char);
+MHS_TO(mhs_to_CUChar, evalint, unsigned char);
+MHS_TO(mhs_to_CShort, evalint, short);
+MHS_TO(mhs_to_CUShort, evalint, unsigned short);
+MHS_TO(mhs_to_CInt, evalint, int);
+MHS_TO(mhs_to_CUInt, evalint, unsigned int);
+MHS_TO(mhs_to_CLong, evalint, long);
+MHS_TO(mhs_to_CULong, evalint, unsigned long);
+MHS_TO(mhs_to_CLLong, evalint, long long);
+MHS_TO(mhs_to_CULLong, evalint, unsigned long long);
+MHS_TO(mhs_to_CSize, evalint, size_t);
+#if WANT_TIME
+MHS_TO(mhs_to_CTime, evalint, time_t);
+#endif
+// MHS_TO(mhs_to_CSSize, evalint, ssize_t);
+MHS_TO(mhs_to_CIntPtr, evalint, intptr_t);
+MHS_TO(mhs_to_CUIntPtr, evalint, uintptr_t);
+
+
+/* The rest of this file was generated by the compiler, with some minor edits with #if. */
+from_t mhs_GETRAW(int s) { return  mhs_from_Int(s, 0, GETRAW()); }
+from_t mhs_GETTIMEMILLI(int s) { return  mhs_from_Int(s, 0, GETTIMEMILLI()); }
+#if WANT_MATH
+#if WORD_SIZE == 64
+from_t mhs_acos(int s) { return mhs_from_FloatW(s, 1, acos(mhs_to_FloatW(s, 0))); }
+from_t mhs_asin(int s) { return mhs_from_FloatW(s, 1, asin(mhs_to_FloatW(s, 0))); }
+from_t mhs_atan(int s) { return mhs_from_FloatW(s, 1, atan(mhs_to_FloatW(s, 0))); }
+from_t mhs_atan2(int s) { return mhs_from_FloatW(s, 2, atan2(mhs_to_FloatW(s, 0), mhs_to_FloatW(s, 1))); }
+from_t mhs_cos(int s) { return mhs_from_FloatW(s, 1, cos(mhs_to_FloatW(s, 0))); }
+from_t mhs_exp(int s) { return mhs_from_FloatW(s, 1, exp(mhs_to_FloatW(s, 0))); }
+from_t mhs_log(int s) { return mhs_from_FloatW(s, 1, log(mhs_to_FloatW(s, 0))); }
+from_t mhs_sin(int s) { return mhs_from_FloatW(s, 1, sin(mhs_to_FloatW(s, 0))); }
+from_t mhs_sqrt(int s) { return mhs_from_FloatW(s, 1, sqrt(mhs_to_FloatW(s, 0))); }
+from_t mhs_tan(int s) { return mhs_from_FloatW(s, 1, tan(mhs_to_FloatW(s, 0))); }
+#elif WORD_SIZE == 32  /* WORD_SIZE */
+from_t mhs_acos(int s) { return mhs_from_FloatW(s, 1, acosf(mhs_to_FloatW(s, 0))); }
+from_t mhs_asin(int s) { return mhs_from_FloatW(s, 1, asinf(mhs_to_FloatW(s, 0))); }
+from_t mhs_atan(int s) { return mhs_from_FloatW(s, 1, atanf(mhs_to_FloatW(s, 0))); }
+from_t mhs_atan2(int s) { return mhs_from_FloatW(s, 2, atan2f(mhs_to_FloatW(s, 0), mhs_to_FloatW(s, 1))); }
+from_t mhs_cos(int s) { return mhs_from_FloatW(s, 1, cosf(mhs_to_FloatW(s, 0))); }
+from_t mhs_exp(int s) { return mhs_from_FloatW(s, 1, expf(mhs_to_FloatW(s, 0))); }
+from_t mhs_log(int s) { return mhs_from_FloatW(s, 1, logf(mhs_to_FloatW(s, 0))); }
+from_t mhs_sin(int s) { return mhs_from_FloatW(s, 1, sinf(mhs_to_FloatW(s, 0))); }
+from_t mhs_sqrt(int s) { return mhs_from_FloatW(s, 1, sqrtf(mhs_to_FloatW(s, 0))); }
+from_t mhs_tan(int s) { return mhs_from_FloatW(s, 1, tanf(mhs_to_FloatW(s, 0))); }
+#else
+#error Unknown WORD_SIZE
+#endif  /* WORD_SIZE */
+#endif  /* WANT_MATH */
+
+#if WANT_STDIO
+from_t mhs_add_FILE(int s) { return mhs_from_Ptr(s, 1, add_FILE(mhs_to_Ptr(s, 0))); }
+from_t mhs_add_utf8(int s) { return mhs_from_Ptr(s, 1, add_utf8(mhs_to_Ptr(s, 0))); }
+from_t mhs_closeb(int s) { closeb(mhs_to_Ptr(s, 0)); return mhs_from_Unit(s, 1); }
+from_t mhs_addr_closeb(int s) { return mhs_from_FunPtr(s, 0, (HsFunPtr)&closeb); }
+from_t mhs_flushb(int s) { flushb(mhs_to_Ptr(s, 0)); return mhs_from_Unit(s, 1); }
+from_t mhs_fopen(int s) { return mhs_from_Ptr(s, 2, fopen(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1))); }
+
+from_t mhs_getb(int s) { return mhs_from_Int(s, 1, getb(mhs_to_Ptr(s, 0))); }
+from_t mhs_putb(int s) { putb(mhs_to_Int(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_ungetb(int s) { ungetb(mhs_to_Int(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_openwrbuf(int s) { return mhs_from_Ptr(s, 0, openb_wr_buf()); }
+from_t mhs_openrdbuf(int s) { return mhs_from_Ptr(s, 2, openb_rd_buf(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
+from_t mhs_getbuf(int s) { get_buf(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2));  return mhs_from_Unit(s, 3); }
+from_t mhs_system(int s) { return mhs_from_Int(s, 1, system(mhs_to_Ptr(s, 0))); }
+from_t mhs_tmpname(int s) { return mhs_from_Ptr(s, 2, TMPNAME(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1))); }
+from_t mhs_unlink(int s) { return mhs_from_Int(s, 1, unlink(mhs_to_Ptr(s, 0))); }
+from_t mhs_readb(int s) { return mhs_from_Int(s, 3, readb(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1), mhs_to_Ptr(s, 2))); }
+from_t mhs_writeb(int s) { return mhs_from_Int(s, 3, writeb(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1), mhs_to_Ptr(s, 2))); }
+from_t mhs_putchar(int s) { putchar(mhs_to_Int(s, 0)); return mhs_from_Unit(s, 1); } /* for debugging */
+#endif  /* WANT_STDIO */
+
+#if WANT_MD5
+from_t mhs_md5Array(int s) { md5Array(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Int(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_md5BFILE(int s) { md5BFILE(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_md5String(int s) { md5String(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+#endif  /* WANT_MD5 */
+
+#if WANT_LZ77
+from_t mhs_add_lz77_compressor(int s) { return mhs_from_Ptr(s, 1, add_lz77_compressor(mhs_to_Ptr(s, 0))); }
+from_t mhs_add_lz77_decompressor(int s) { return mhs_from_Ptr(s, 1, add_lz77_decompressor(mhs_to_Ptr(s, 0))); }
+from_t mhs_lz77c(int s) { return mhs_from_CSize(s, 3, lz77c(mhs_to_Ptr(s, 0), mhs_to_CSize(s, 1), mhs_to_Ptr(s, 2))); }
+#endif  /* WANT_LZ77 */
+
+#if WANT_RLE
+from_t mhs_add_rle_compressor(int s) { return mhs_from_Ptr(s, 1, add_rle_compressor(mhs_to_Ptr(s, 0))); }
+from_t mhs_add_rle_decompressor(int s) { return mhs_from_Ptr(s, 1, add_rle_decompressor(mhs_to_Ptr(s, 0))); }
+#endif  /* WANT_RLE */
+
+#if WANT_BWT
+from_t mhs_add_bwt_compressor(int s) { return mhs_from_Ptr(s, 1, add_bwt_compressor(mhs_to_Ptr(s, 0))); }
+from_t mhs_add_bwt_decompressor(int s) { return mhs_from_Ptr(s, 1, add_bwt_decompressor(mhs_to_Ptr(s, 0))); }
+#endif  /* WANT_BWT */
+
+from_t mhs_calloc(int s) { return mhs_from_Ptr(s, 2, calloc(mhs_to_CSize(s, 0), mhs_to_CSize(s, 1))); }
+from_t mhs_free(int s) { free(mhs_to_Ptr(s, 0)); return mhs_from_Unit(s, 1); }
+from_t mhs_addr_free(int s) { return mhs_from_FunPtr(s, 0, (HsFunPtr)&FREE); }
+from_t mhs_getenv(int s) { return mhs_from_Ptr(s, 1, getenv(mhs_to_Ptr(s, 0))); }
+from_t mhs_iswindows(int s) { return mhs_from_Int(s, 0, iswindows()); }
+from_t mhs_malloc(int s) { return mhs_from_Ptr(s, 1, MALLOC(mhs_to_CSize(s, 0))); }
+from_t mhs_memcpy(int s) { memcpy(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_CSize(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_memmove(int s) { memmove(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_CSize(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_peekPtr(int s) { return mhs_from_Ptr(s, 1, peekPtr(mhs_to_Ptr(s, 0))); }
+from_t mhs_peekWord(int s) { return mhs_from_Word(s, 1, peekWord(mhs_to_Ptr(s, 0))); }
+from_t mhs_pokePtr(int s) { pokePtr(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_pokeWord(int s) { pokeWord(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+
+from_t mhs_peek_uint8(int s) { return mhs_from_Word(s, 1, peek_uint8(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_uint8(int s) { poke_uint8(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_peek_uint16(int s) { return mhs_from_Word(s, 1, peek_uint16(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_uint16(int s) { poke_uint16(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+#if WORD_SIZE >= 32
+from_t mhs_peek_uint32(int s) { return mhs_from_Word(s, 1, peek_uint32(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_uint32(int s) { poke_uint32(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+#endif  /* WORD_SIZE */
+#if WORD_SIZE >= 64
+from_t mhs_peek_uint64(int s) { return mhs_from_Word(s, 1, peek_uint64(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_uint64(int s) { poke_uint64(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+#endif  /* WORD_SIZE */
+from_t mhs_peek_uint(int s) { return mhs_from_Word(s, 1, peek_uint(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_uint(int s) { poke_uint(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+
+from_t mhs_peek_int8(int s) { return mhs_from_Int(s, 1, peek_int8(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_int8(int s) { poke_int8(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_peek_int16(int s) { return mhs_from_Int(s, 1, peek_int16(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_int16(int s) { poke_int16(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); return mhs_from_Unit(s, 2); }
+#if WORD_SIZE >= 32
+from_t mhs_peek_int32(int s) { return mhs_from_Int(s, 1, peek_int32(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_int32(int s) { poke_int32(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); return mhs_from_Unit(s, 2); }
+#endif  /* WORD_SIZE */
+#if WORD_SIZE >= 64
+from_t mhs_peek_int64(int s) { return mhs_from_Int(s, 1, peek_int64(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_int64(int s) { poke_int64(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); return mhs_from_Unit(s, 2); }
+#endif  /* WORD_SIZE */
+from_t mhs_peek_int(int s) { return mhs_from_Int(s, 1, peek_int(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_int(int s) { poke_int(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_peek_llong(int s) { return mhs_from_CLLong(s, 1, peek_llong(mhs_to_Ptr(s, 0))); }
+from_t mhs_peek_long(int s) { return mhs_from_CLong(s, 1, peek_long(mhs_to_Ptr(s, 0))); }
+from_t mhs_peek_ullong(int s) { return mhs_from_CULLong(s, 1, peek_ullong(mhs_to_Ptr(s, 0))); }
+from_t mhs_peek_ulong(int s) { return mhs_from_CULong(s, 1, peek_ulong(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_llong(int s) { poke_llong(mhs_to_Ptr(s, 0), mhs_to_CLLong(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_poke_long(int s) { poke_long(mhs_to_Ptr(s, 0), mhs_to_CLong(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_poke_ullong(int s) { poke_ullong(mhs_to_Ptr(s, 0), mhs_to_CULLong(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_poke_ulong(int s) { poke_ulong(mhs_to_Ptr(s, 0), mhs_to_CULong(s, 1)); return mhs_from_Unit(s, 2); }
+#if WANT_FLOAT
+from_t mhs_peek_flt(int s) { return mhs_from_FloatW(s, 1, peek_flt(mhs_to_Ptr(s, 0))); }
+from_t mhs_poke_flt(int s) { poke_flt(mhs_to_Ptr(s, 0), mhs_to_FloatW(s, 1)); return mhs_from_Unit(s, 2); }
+#endif  /* WANT_FLOAT */
+from_t mhs_sizeof_int(int s) { return mhs_from_Int(s, 0, sizeof(int)); }
+from_t mhs_sizeof_llong(int s) { return mhs_from_Int(s, 0, sizeof(long long)); }
+from_t mhs_sizeof_long(int s) { return mhs_from_Int(s, 0, sizeof(long)); }
+#if WANT_DIR
+from_t mhs_closedir(int s) { return mhs_from_Int(s, 1, closedir(mhs_to_Ptr(s, 0))); }
+from_t mhs_opendir(int s) { return mhs_from_Ptr(s, 1, opendir(mhs_to_Ptr(s, 0))); }
+from_t mhs_readdir(int s) { return mhs_from_Ptr(s, 1, readdir(mhs_to_Ptr(s, 0))); }
+from_t mhs_c_d_name(int s) { return mhs_from_Ptr(s, 1, ((struct dirent *)(mhs_to_Ptr(s, 0)))->d_name); }
+from_t mhs_chdir(int s) { return mhs_from_Int(s, 1, chdir(mhs_to_Ptr(s, 0))); }
+from_t mhs_mkdir(int s) { return mhs_from_Int(s, 2, mkdir(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
+from_t mhs_getcwd(int s) { return mhs_from_Ptr(s, 2, getcwd(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
+#endif  /* WANT_DIR */
+
+/* Use this to detect if we have (and want) GMP or not. */
+from_t mhs_want_gmp(int s) { return mhs_from_Int(s, 0, WANT_GMP); }
+
+#if WANT_GMP
+void
+free_mpz(void *p)
+{
+  /*  printf("free_mpz %p\n", p);*/
+  mpz_clear(p);                 /* free any extra storage */
+  FREE(p);                      /* and free the mpz itself */
+}
+
+/* Allocate an initialize a GMP integer */
+struct forptr *
+new_mpz(void)
+{
+#if 0
+  {
+    static int done = 0;
+    if (!done) {
+      printf("GMP\n");
+      done = 1;
+    }
+  }
+#endif
+  mpz_ptr p = mmalloc(sizeof(*p));
+  mpz_init(p);
+  struct forptr *fp = mkForPtrP(p);
+  fp->finalizer->final = (HsFunPtr)free_mpz;
+  fp->finalizer->fptype = FP_MPZ;
+  /*  printf("new_mpz %p %p\n", p, fp); */
+  return fp;
+}
+
+#if 0
+void
+print_mpz(mpz_ptr p)
+{
+  mpz_out_str(stdout, 10, p);
+}
+#endif
+
+from_t mhs_new_mpz(int s) { mhs_from_ForPtr(s, 0, new_mpz()); }
+
+/* Stubs for GMP functions */
+from_t mhs_mpz_abs(int s) { mpz_abs(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_mpz_add(int s) { mpz_add(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_and(int s) { mpz_and(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_cmp(int s) { return mhs_from_Int(s, 2, mpz_cmp(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1))); }
+from_t mhs_mpz_get_d(int s) { return mhs_from_FloatW(s, 1, mpz_get_d(mhs_to_Ptr(s, 0))); }
+from_t mhs_mpz_get_si(int s) { return mhs_from_Int(s, 1, mpz_get_si(mhs_to_Ptr(s, 0))); }
+from_t mhs_mpz_get_ui(int s) { return mhs_from_Word(s, 1, mpz_get_ui(mhs_to_Ptr(s, 0))); }
+from_t mhs_mpz_init_set_si(int s) { mpz_init_set_si(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_mpz_init_set_ui(int s) { mpz_init_set_ui(mhs_to_Ptr(s, 0), mhs_to_Word(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_mpz_ior(int s) { mpz_ior(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_mul(int s) { mpz_mul(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_mul_2exp(int s) { mpz_mul_2exp(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Int(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_neg(int s) { mpz_neg(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1)); return mhs_from_Unit(s, 2); }
+from_t mhs_mpz_popcount(int s) {
+  mpz_ptr a = mhs_to_Ptr(s, 0);
+  if (mpz_sgn(a) < 0) {
+    mpz_t neg_a;
+    mpz_init(neg_a);
+    mpz_neg(neg_a, a);
+    (void)mhs_from_Int(s, 1, -mpz_popcount(neg_a));
+    mpz_clear(neg_a);
+  } else {
+    (void)mhs_from_Int(s, 1, mpz_popcount(a));
+  }
+  return 1;
+}
+from_t mhs_mpz_sub(int s) { mpz_sub(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_fdiv_q_2exp(int s) { mpz_fdiv_q_2exp(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Int(s, 2)); return mhs_from_Unit(s, 3); }
+from_t mhs_mpz_tdiv_qr(int s) { mpz_tdiv_qr(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2), mhs_to_Ptr(s, 3)); return mhs_from_Unit(s, 4); }
+from_t mhs_mpz_tstbit(int s) { mhs_from_Int(s, 2, mpz_tstbit(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
+from_t mhs_mpz_xor(int s) { mpz_xor(mhs_to_Ptr(s, 0), mhs_to_Ptr(s, 1), mhs_to_Ptr(s, 2)); return mhs_from_Unit(s, 3); }
+#endif  /* WANT_GMP */
+
+struct ffi_entry ffi_table[] = {
+  { "GETRAW", 0, mhs_GETRAW},
+  { "GETTIMEMILLI", 0, mhs_GETTIMEMILLI},
+#if WANT_MATH
+  { "acos", 1, mhs_acos},
+  { "asin", 1, mhs_asin},
+  { "atan", 1, mhs_atan},
+  { "atan2", 2, mhs_atan2},
+  { "cos", 1, mhs_cos},
+  { "exp", 1, mhs_exp},
+  { "log", 1, mhs_log},
+  { "sin", 1, mhs_sin},
+  { "sqrt", 1, mhs_sqrt},
+  { "tan", 1, mhs_tan},
+#endif  /* WANT_MATH */
+
+#if WANT_STDIO
+  { "add_FILE", 1, mhs_add_FILE},
+  { "add_utf8", 1, mhs_add_utf8},
+  { "closeb", 1, mhs_closeb},
+  { "&closeb", 0, mhs_addr_closeb},
+  { "flushb", 1, mhs_flushb},
+  { "fopen", 2, mhs_fopen},
+  { "getb", 1, mhs_getb},
+  { "putb", 2, mhs_putb},
+  { "ungetb", 2, mhs_ungetb},
+  { "openb_wr_buf", 0, mhs_openwrbuf},
+  { "openb_rd_buf", 2, mhs_openrdbuf},
+  { "get_buf", 3, mhs_getbuf},
+  { "system", 1, mhs_system},
+  { "tmpname", 2, mhs_tmpname},
+  { "unlink", 1, mhs_unlink},
+  { "readb", 3, mhs_readb},
+  { "writeb", 3, mhs_writeb},
+  { "putchar", 1, mhs_putchar},
+#endif  /* WANT_STDIO */
+
+#if WANT_MD5
+  { "md5Array", 3, mhs_md5Array},
+  { "md5BFILE", 2, mhs_md5BFILE},
+  { "md5String", 2, mhs_md5String},
+#endif  /* WANT_MD5 */
+
+#if WANT_LZ77
+  { "add_lz77_compressor", 1, mhs_add_lz77_compressor},
+  { "add_lz77_decompressor", 1, mhs_add_lz77_decompressor},
+  { "lz77c", 3, mhs_lz77c},
+#endif  /* WANT_LZ77 */
+
+#if WANT_RLE
+  { "add_rle_compressor", 1, mhs_add_rle_compressor},
+  { "add_rle_decompressor", 1, mhs_add_rle_decompressor},
+#endif  /* WANT_RLE */
+
+#if WANT_BWT
+  { "add_bwt_compressor", 1, mhs_add_bwt_compressor},
+  { "add_bwt_decompressor", 1, mhs_add_bwt_decompressor},
+#endif  /* WANT_RLE */
+
+  { "calloc", 2, mhs_calloc},
+  { "free", 1, mhs_free},
+  { "&free", 0, mhs_addr_free},
+  { "getenv", 1, mhs_getenv},
+  { "iswindows", 0, mhs_iswindows},
+  { "malloc", 1, mhs_malloc},
+  { "memcpy", 3, mhs_memcpy},
+  { "memmove", 3, mhs_memmove},
+  { "peekPtr", 1, mhs_peekPtr},
+  { "peekWord", 1, mhs_peekWord},
+  { "pokePtr", 2, mhs_pokePtr},
+  { "pokeWord", 2, mhs_pokeWord},
+
+  { "peek_uint8", 1, mhs_peek_uint8},
+  { "poke_uint8", 2, mhs_poke_uint8},
+  { "peek_uint16", 1, mhs_peek_uint16},
+  { "poke_uint16", 2, mhs_poke_uint16},
+#if WORD_SIZE >= 32
+  { "peek_uint32", 1, mhs_peek_uint32},
+  { "poke_uint32", 2, mhs_poke_uint32},
+#endif  /* WORD_SIZE >= 32 */
+#if WORD_SIZE >= 64
+  { "peek_uint64", 1, mhs_peek_uint64},
+  { "poke_uint64", 2, mhs_poke_uint64},
+#endif  /* WORD_SIZE >= 64 */
+  { "peek_uint", 1, mhs_peek_uint},
+  { "poke_uint", 2, mhs_poke_uint},
+
+  { "peek_int8", 1, mhs_peek_int8},
+  { "poke_int8", 2, mhs_poke_int8},
+  { "peek_int16", 1, mhs_peek_int16},
+  { "poke_int16", 2, mhs_poke_int16},
+#if WORD_SIZE >= 32
+  { "peek_int32", 1, mhs_peek_int32},
+  { "poke_int32", 2, mhs_poke_int32},
+#endif  /* WORD_SIZE >= 32 */
+#if WORD_SIZE >= 64
+  { "peek_int64", 1, mhs_peek_int64},
+  { "poke_int64", 2, mhs_poke_int64},
+#endif  /* WORD_SIZE >= 64 */
+  { "peek_int", 1, mhs_peek_int},
+  { "poke_int", 2, mhs_poke_int},
+  { "peek_llong", 1, mhs_peek_llong},
+  { "peek_long", 1, mhs_peek_long},
+  { "peek_ullong", 1, mhs_peek_ullong},
+  { "peek_ulong", 1, mhs_peek_ulong},
+  { "poke_llong", 2, mhs_poke_llong},
+  { "poke_long", 2, mhs_poke_long},
+  { "poke_ullong", 2, mhs_poke_ullong},
+  { "poke_ulong", 2, mhs_poke_ulong},
+#if WANT_FLOAT
+  { "peek_flt", 1, mhs_peek_flt},
+  { "poke_flt", 2, mhs_poke_flt},
+#endif  /* WANT_FLOAT */
+  { "sizeof_int", 0, mhs_sizeof_int},
+  { "sizeof_llong", 0, mhs_sizeof_llong},
+  { "sizeof_long", 0, mhs_sizeof_long},
+#if WANT_DIR
+  { "c_d_name", 1, mhs_c_d_name},
+  { "closedir", 1, mhs_closedir},
+  { "opendir", 1, mhs_opendir},
+  { "readdir", 1, mhs_readdir},
+  { "chdir", 1, mhs_chdir},
+  { "mkdir", 2, mhs_mkdir},
+  { "getcwd", 2, mhs_getcwd},
+#endif  /* WANT_DIR */
+  { "want_gmp", 0, mhs_want_gmp},
+#if WANT_GMP
+  { "new_mpz", 0, mhs_new_mpz},
+  { "mpz_abs", 2, mhs_mpz_abs},
+  { "mpz_add", 3, mhs_mpz_add},
+  { "mpz_and", 3, mhs_mpz_and},
+  { "mpz_cmp", 2, mhs_mpz_cmp},
+  { "mpz_get_d", 1, mhs_mpz_get_d},
+  { "mpz_get_si", 1, mhs_mpz_get_si},
+  { "mpz_get_ui", 1, mhs_mpz_get_ui},
+  { "mpz_init_set_si", 2, mhs_mpz_init_set_si},
+  { "mpz_init_set_ui", 2, mhs_mpz_init_set_ui},
+  { "mpz_ior", 3, mhs_mpz_ior},
+  { "mpz_mul", 3, mhs_mpz_mul},
+  { "mpz_mul_2exp", 3, mhs_mpz_mul_2exp},
+  { "mpz_neg", 2, mhs_mpz_neg},
+  { "mpz_popcount", 1, mhs_mpz_popcount},
+  { "mpz_sub", 3, mhs_mpz_sub},
+  { "mpz_fdiv_q_2exp", 3, mhs_mpz_fdiv_q_2exp},
+  { "mpz_tdiv_qr", 4, mhs_mpz_tdiv_qr},
+  { "mpz_tstbit", 2, mhs_mpz_tstbit},
+  { "mpz_xor", 3, mhs_mpz_xor},
+#endif  /* WANT_GMP */
+  { 0,0 }
 };
 
 int num_ffi = sizeof(ffi_table) / sizeof(ffi_table[0]);
diff --git a/src/runtime/mhsffi.h b/src/runtime/mhsffi.h
--- a/src/runtime/mhsffi.h
+++ b/src/runtime/mhsffi.h
@@ -24,37 +24,39 @@
 
 typedef void (*HsFunPtr)(void);
 
-typedef void (*funptr_t)(int);
+typedef int from_t;
+typedef from_t (*funptr_t)(int);
 struct ffi_entry {
   const char *ffi_name;
+  int         ffi_arity;
   funptr_t    ffi_fun;
 };
 extern struct ffi_entry *xffi_table;
 
-void mhs_from_Double(intptr_t, int, flt_t);
-void mhs_from_FloatW(intptr_t, int, flt_t);
-void mhs_from_Int(intptr_t, int, intptr_t);
-void mhs_from_Word(intptr_t, int, uintptr_t);
-void mhs_from_Word8(intptr_t, int, uintptr_t);
-void mhs_from_Ptr(intptr_t, int, void *);
-void mhs_from_FunPtr(intptr_t, int, HsFunPtr);
-void mhs_from_CChar(intptr_t, int, char);
-void mhs_from_CSChar(intptr_t, int, signed char);
-void mhs_from_CUChar(intptr_t, int, unsigned char);
-void mhs_from_CShort(intptr_t, int, short);
-void mhs_from_CUShort(intptr_t, int, unsigned short);
-void mhs_from_CInt(intptr_t, int, int);
-void mhs_from_CUInt(intptr_t, int, unsigned int);
-void mhs_from_CLong(intptr_t, int, long);
-void mhs_from_CULong(intptr_t, int, unsigned long);
-void mhs_from_CLLong(intptr_t, int, long long);
-void mhs_from_CULLong(intptr_t, int, unsigned long long);
-void mhs_from_CSize(intptr_t, int, size_t);
-void mhs_from_CTime(intptr_t, int, time_t); /* XXX wrong */
+from_t mhs_from_Double(intptr_t, int, flt_t);
+from_t mhs_from_FloatW(intptr_t, int, flt_t);
+from_t mhs_from_Int(intptr_t, int, intptr_t);
+from_t mhs_from_Word(intptr_t, int, uintptr_t);
+from_t mhs_from_Word8(intptr_t, int, uintptr_t);
+from_t mhs_from_Ptr(intptr_t, int, void *);
+from_t mhs_from_FunPtr(intptr_t, int, HsFunPtr);
+from_t mhs_from_CChar(intptr_t, int, char);
+from_t mhs_from_CSChar(intptr_t, int, signed char);
+from_t mhs_from_CUChar(intptr_t, int, unsigned char);
+from_t mhs_from_CShort(intptr_t, int, short);
+from_t mhs_from_CUShort(intptr_t, int, unsigned short);
+from_t mhs_from_CInt(intptr_t, int, int);
+from_t mhs_from_CUInt(intptr_t, int, unsigned int);
+from_t mhs_from_CLong(intptr_t, int, long);
+from_t mhs_from_CULong(intptr_t, int, unsigned long);
+from_t mhs_from_CLLong(intptr_t, int, long long);
+from_t mhs_from_CULLong(intptr_t, int, unsigned long long);
+from_t mhs_from_CSize(intptr_t, int, size_t);
+from_t mhs_from_CTime(intptr_t, int, time_t); /* XXX wrong */
 // not on MacOS void mhs_from_CSSize(intptr_t, int, ssize_t);
-void mhs_from_CIntPtr(intptr_t, int, intptr_t);
-void mhs_from_CUIntPtr(intptr_t, int, uintptr_t);
-void mhs_from_Unit(intptr_t, int);
+from_t mhs_from_CIntPtr(intptr_t, int, intptr_t);
+from_t mhs_from_CUIntPtr(intptr_t, int, uintptr_t);
+from_t mhs_from_Unit(intptr_t, int);
 
 flt_t              mhs_to_Double(intptr_t, int);
 flt_t              mhs_to_FloatW(intptr_t, int);
diff --git a/tests/Arith.hs b/tests/Arith.hs
--- a/tests/Arith.hs
+++ b/tests/Arith.hs
@@ -1,5 +1,4 @@
 module Arith(module Arith) where
-import Prelude
 
 vals :: [Int]
 vals = [-5, -2, -1, 0, 1, 2, 5]
diff --git a/tests/BindPat.hs b/tests/BindPat.hs
--- a/tests/BindPat.hs
+++ b/tests/BindPat.hs
@@ -1,5 +1,4 @@
 module BindPat(main) where
-import Prelude
 
 foo :: [Int] -> [Int]
 foo xs = do
diff --git a/tests/Block.hs b/tests/Block.hs
new file mode 100644
--- /dev/null
+++ b/tests/Block.hs
@@ -0,0 +1,8 @@
+module Block where
+
+main :: IO ()
+main = do
+  let x = quot
+            do 10 + 20
+            do 2 * 3
+  print x
diff --git a/tests/Block.ref b/tests/Block.ref
new file mode 100644
--- /dev/null
+++ b/tests/Block.ref
@@ -0,0 +1,1 @@
+5
diff --git a/tests/Case.hs b/tests/Case.hs
--- a/tests/Case.hs
+++ b/tests/Case.hs
@@ -1,5 +1,4 @@
 module Case(module Case) where
-import Prelude
 
 main :: IO ()
 main = do
diff --git a/tests/Catch.hs b/tests/Catch.hs
--- a/tests/Catch.hs
+++ b/tests/Catch.hs
@@ -1,5 +1,4 @@
 module Catch(main) where
-import Prelude
 import Control.Exception
 import System.IO
 
@@ -35,5 +34,7 @@
     let ln = hGetLine h `catch` exn
     a <- ln
     b <- ln
+    c <- ln
     print a
     print b
+    print c
diff --git a/tests/Catch.ref b/tests/Catch.ref
--- a/tests/Catch.ref
+++ b/tests/Catch.ref
@@ -1,8 +1,9 @@
 "ok"
 "error: bang!"
-"no match at \"./Catch.hs\",7:1"
-"no default for m, at \"./Catch.hs\",10:3"
+"no match at \"./Catch.hs\",6:1"
+"no default for m, at \"./Catch.hs\",9:3"
 "hello"
 "bye"
 "hello"
 "bye"
+"Handle(Catch.in): end of file (hGetChar)"
diff --git a/tests/Class.hs b/tests/Class.hs
--- a/tests/Class.hs
+++ b/tests/Class.hs
@@ -1,6 +1,5 @@
 module Class(main) where
 import Primitives
-import Prelude
 
 class Eqq a where
   (===) :: a -> a -> Bool
diff --git a/tests/Concur.hs b/tests/Concur.hs
new file mode 100644
--- /dev/null
+++ b/tests/Concur.hs
@@ -0,0 +1,44 @@
+module Concur(main) where
+import Control.Concurrent
+import System.IO
+
+-- Use ::Int to avoid using Integer anywhere since
+-- the can change the timing on different platforms
+-- (32 vs 64 bit, with or without GMP).
+
+delay :: Int -> IO ()
+delay i = loop i `seq` return ()
+
+loop :: Int -> Int
+loop i = if i == (0::Int) then (0::Int) else loop (i - (1::Int))
+
+showId :: String -> IO ()
+showId s = do
+  i <- myThreadId
+  putStrLn $ "thread " ++ show i ++ ": " ++ show s
+
+run :: Int -> String -> IO ()
+run i s =
+  if i == (0::Int) then
+    return ()
+   else do
+    delay (10000::Int)
+    putStr s
+    hFlush stdout
+    run (i - (1::Int)) s
+
+xrun :: Int -> String -> IO ()
+xrun i s = do
+  delay i
+  showId s
+  delay (2000::Int)
+  run (1000::Int) s
+
+main :: IO ()
+main = do
+  putStrLn "start"
+  forkIO $ xrun (1000::Int) "b"
+  forkIO $ xrun (2000::Int) "c"
+  xrun (0::Int) "a"
+  delay (100000::Int)
+  putStrLn "\ndone"
diff --git a/tests/Concur.ref b/tests/Concur.ref
new file mode 100644
--- /dev/null
+++ b/tests/Concur.ref
@@ -0,0 +1,6 @@
+start
+thread ThreadId#1: "a"
+thread ThreadId#2: "b"
+thread ThreadId#3: "c"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
+done
diff --git a/tests/Default.hs b/tests/Default.hs
--- a/tests/Default.hs
+++ b/tests/Default.hs
@@ -1,5 +1,4 @@
 module Default(main) where
-import Prelude
 default Num (Int, Double)
 default IsString (String)
 default Show (())
diff --git a/tests/Delay.hs b/tests/Delay.hs
new file mode 100644
--- /dev/null
+++ b/tests/Delay.hs
@@ -0,0 +1,30 @@
+module Delay where
+import Control.Concurrent
+import System.IO.TimeMilli
+
+-- This test is hard to get working on all CI platforms.
+-- Some seem to have very inaccurate timing.
+
+timedDelay :: String -> Int -> IO ()
+timedDelay msg usecs = do
+  t1 <- getTimeMilli
+  threadDelay usecs
+  t2 <- getTimeMilli
+  let dt = t2 - t1
+      rdt = (dt `div` 100) * 100 -- round down ms
+  putStrLn $ msg ++ " " ++ show usecs ++ " " ++ show rdt ++ "ms"
+
+thr1 :: IO ()
+thr1 = do
+  timedDelay "thr1" (100000::Int)
+
+thr2 :: IO ()
+thr2 = do
+  timedDelay "thr2" (300000::Int)
+
+main :: IO ()
+main = do
+  forkIO thr1
+  forkIO thr2
+  timedDelay "main" (200000::Int)
+  timedDelay "end" (500000::Int)
diff --git a/tests/Delay.ref b/tests/Delay.ref
new file mode 100644
--- /dev/null
+++ b/tests/Delay.ref
@@ -0,0 +1,4 @@
+thr1 100000 100ms
+main 200000 200ms
+thr2 300000 300ms
+end 500000 500ms
diff --git a/tests/Deriving.hs b/tests/Deriving.hs
--- a/tests/Deriving.hs
+++ b/tests/Deriving.hs
@@ -1,5 +1,4 @@
 module Deriving(main) where
-import Prelude
 
 data T a b c = A a | B b | C a Int | D
   deriving (Eq, Ord, Show)
diff --git a/tests/Dict.hs b/tests/Dict.hs
--- a/tests/Dict.hs
+++ b/tests/Dict.hs
@@ -1,5 +1,4 @@
 module Dict(module Dict) where
-import Prelude
 import Data.Constraint
 
 fac :: forall a . (Num a, Eq a) => a -> a
diff --git a/tests/Eq.hs b/tests/Eq.hs
--- a/tests/Eq.hs
+++ b/tests/Eq.hs
@@ -1,5 +1,4 @@
 module Eq(main) where
-import Prelude
 
 main :: IO ()
 main = do
diff --git a/tests/Exists.hs b/tests/Exists.hs
--- a/tests/Exists.hs
+++ b/tests/Exists.hs
@@ -1,5 +1,4 @@
 module Exists(main) where
-import Prelude
 
 data E = forall a . Show a => C a
 
diff --git a/tests/Exn.hs b/tests/Exn.hs
deleted file mode 100644
--- a/tests/Exn.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module Exn where
-import Control.Concurrent
-import Control.Exception
-
-main :: IO ()
-main = do
-  catch (do threadDelay 1000; error "foo")
-        (\ (e :: SomeException) -> print e)
-  putStrLn "done"
diff --git a/tests/FArith.hs b/tests/FArith.hs
--- a/tests/FArith.hs
+++ b/tests/FArith.hs
@@ -1,5 +1,4 @@
 module FArith(module FArith) where
-import Prelude
 
 readDouble :: String -> Double
 readDouble = read
diff --git a/tests/Fac.hs b/tests/Fac.hs
--- a/tests/Fac.hs
+++ b/tests/Fac.hs
@@ -1,6 +1,5 @@
 -- Simple test
 module Fac(module Fac) where
-import Prelude
 
 fac :: Int -> Int  -- ignored
 fac n =
diff --git a/tests/Floating.hs b/tests/Floating.hs
--- a/tests/Floating.hs
+++ b/tests/Floating.hs
@@ -1,5 +1,4 @@
 module Floating(main) where
-import Prelude
 
 main :: IO ()
 main = do
diff --git a/tests/ForeignC.hs b/tests/ForeignC.hs
--- a/tests/ForeignC.hs
+++ b/tests/ForeignC.hs
@@ -1,19 +1,15 @@
 module ForeignC(main) where
-import Prelude
 import Foreign.C.Types
 import Foreign.Ptr
 import Foreign.Storable
 
-foreign import ccall "llabs" iabs :: Int -> IO Int
 foreign import ccall "sys/errno.h &errno" cerrno :: IO (Ptr CInt)
-foreign import ccall "&llabs" pabs :: IO (FunPtr (Int -> IO Int))
+foreign import ccall "unistd.h getpid" getpid :: IO CInt
 
 main :: IO ()
 main = do
-  x1 <- iabs (3 - 8)
-  print x1
-  x2 <- iabs (10 - 8)
-  print x2
+  CInt pid <- getpid
+  print (pid /= 0)
   p <- cerrno
   CInt e <- peek p
   print e
diff --git a/tests/Fork.hs b/tests/Fork.hs
new file mode 100644
--- /dev/null
+++ b/tests/Fork.hs
@@ -0,0 +1,17 @@
+module Fork where
+import Control.Concurrent
+
+delay :: Int -> IO ()
+delay i = loop i `seq` return ()
+
+loop :: Int -> Int
+loop i = if i == 0 then 0 else loop (i-1)
+
+fork :: IO ()
+fork = putStrLn "fork done"
+
+main :: IO ()
+main = do
+  forkIO fork
+  delay 100000
+  putStrLn "main done"
diff --git a/tests/Fork.ref b/tests/Fork.ref
new file mode 100644
--- /dev/null
+++ b/tests/Fork.ref
@@ -0,0 +1,2 @@
+fork done
+main done
diff --git a/tests/FunDep.hs b/tests/FunDep.hs
--- a/tests/FunDep.hs
+++ b/tests/FunDep.hs
@@ -1,5 +1,4 @@
 module FunDep(main) where
-import Prelude
 import Data.Char
 
 class C a b | a -> b where
diff --git a/tests/Guard.hs b/tests/Guard.hs
--- a/tests/Guard.hs
+++ b/tests/Guard.hs
@@ -1,5 +1,4 @@
 module Guard(main) where
-import Prelude
 
 f :: [Int] -> Int
 f [x] | x < 0 = - x
diff --git a/tests/Hello.hs b/tests/Hello.hs
--- a/tests/Hello.hs
+++ b/tests/Hello.hs
@@ -1,5 +1,4 @@
 module Hello(main) where
-import Prelude
 
 main :: IO ()
 main = putStrLn "hello, world\n"
diff --git a/tests/HigherKind.hs b/tests/HigherKind.hs
--- a/tests/HigherKind.hs
+++ b/tests/HigherKind.hs
@@ -1,5 +1,4 @@
 module HigherKind(main) where
-import Prelude
 
 newtype T f = C (f Int)
 
diff --git a/tests/IOArray.hs b/tests/IOArray.hs
--- a/tests/IOArray.hs
+++ b/tests/IOArray.hs
@@ -1,5 +1,4 @@
 module IOArray(main) where
-import Prelude
 import Data.IOArray
 import Data.IORef
 import System.IO
diff --git a/tests/IOTest.hs b/tests/IOTest.hs
--- a/tests/IOTest.hs
+++ b/tests/IOTest.hs
@@ -1,5 +1,4 @@
 module IOTest(module IOTest) where
-import Prelude
 import System.IO as IO
 import System.IO.TimeMilli
 import System.Environment
diff --git a/tests/Infix.hs b/tests/Infix.hs
--- a/tests/Infix.hs
+++ b/tests/Infix.hs
@@ -1,5 +1,4 @@
 module Infix(main) where
-import Prelude
 
 infix 1 ===
 infixl 2 +++
diff --git a/tests/Info.hs b/tests/Info.hs
--- a/tests/Info.hs
+++ b/tests/Info.hs
@@ -1,5 +1,4 @@
 module Info(main) where
-import Prelude
 import Foreign.Storable
 import Foreign.Marshal.Utils
 import Foreign.Ptr
diff --git a/tests/Interactive.hs b/tests/Interactive.hs
--- a/tests/Interactive.hs
+++ b/tests/Interactive.hs
@@ -1,7 +1,5 @@
 module Interactive(module Interactive) where
-import Prelude
 import System.IO.PrintOrRun
-default (Integer, Double, String, ())
-
-_it = 1+2
-_itIO = printOrRun _it
+default Num (Integer, Double)
+default IsString (String)
+default Show (())
diff --git a/tests/ListCompr.hs b/tests/ListCompr.hs
--- a/tests/ListCompr.hs
+++ b/tests/ListCompr.hs
@@ -1,5 +1,4 @@
 module ListCompr(main) where
-import Prelude
 default (Int)
 
 main :: IO ()
diff --git a/tests/LitMatch.hs b/tests/LitMatch.hs
--- a/tests/LitMatch.hs
+++ b/tests/LitMatch.hs
@@ -1,5 +1,4 @@
 module LitMatch(main) where
-import Prelude
 
 f :: Int -> Int
 f 0 = 10
diff --git a/tests/LocalPoly.hs b/tests/LocalPoly.hs
--- a/tests/LocalPoly.hs
+++ b/tests/LocalPoly.hs
@@ -1,5 +1,4 @@
 module LocalPoly(main) where
-import Prelude
 
 main :: IO ()
 main = do
diff --git a/tests/MVar.hs b/tests/MVar.hs
new file mode 100644
--- /dev/null
+++ b/tests/MVar.hs
@@ -0,0 +1,57 @@
+module MVar where
+import Control.Concurrent
+import Control.Concurrent.MVar
+
+delay :: Int -> IO ()
+delay i = loop i `seq` return ()
+
+loop :: Int -> Int
+loop i = if i == 0 then 0 else loop $! (i-1)
+
+fun :: MVar Int -> IO ()
+fun mv = do
+  putStrLn "fun A"
+  i <- takeMVar mv
+  print i
+  putStrLn "fun B"
+
+main :: IO ()
+main = do
+  test1
+  putStrLn "---"
+  test2
+
+test1 :: IO ()
+test1 = do
+  putStrLn "test1 A"
+  mvar <- newEmptyMVar
+  forkIO (fun mvar)
+  putStrLn "test1 B"
+  delay 100000
+  putStrLn "test1 C"
+  putMVar mvar 999
+  putStrLn "test1 D"
+  putMVar mvar 888
+  putStrLn "test1 E"
+  forkIO (delay 100000 >> fun mvar)
+  putMVar mvar 777
+  putStrLn "test1 F"
+  delay 100000
+  fun mvar
+  delay 100000
+  putStrLn "test1 G"
+
+test2 :: IO ()
+test2 = do
+  mvar1 <- newEmptyMVar
+  tryTakeMVar mvar1 >>= print
+  putStrLn "test2 A"
+  putMVar mvar1 (111::Int)
+  putStrLn "test2 B"
+  tryPutMVar mvar1 222 >>= print
+  tryTakeMVar mvar1 >>= print
+  tryPutMVar mvar1 333 >>= print
+
+  mvar2 <- newMVar (333::Int)
+  tryReadMVar mvar2 >>= print
+  tryReadMVar mvar2 >>= print
diff --git a/tests/MVar.ref b/tests/MVar.ref
new file mode 100644
--- /dev/null
+++ b/tests/MVar.ref
@@ -0,0 +1,25 @@
+test1 A
+test1 B
+fun A
+test1 C
+test1 D
+test1 E
+999
+fun B
+fun A
+888
+fun B
+test1 F
+fun A
+777
+fun B
+test1 G
+---
+Nothing
+test2 A
+test2 B
+False
+Just 111
+True
+Just 333
+Just 333
diff --git a/tests/Makefile b/tests/Makefile
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -29,7 +29,6 @@
 	$(TMHS) Word       && $(EVAL) > Word.out       && diff Word.ref Word.out
 	$(TMHS) Integer    && $(EVAL) > Integer.out    && diff Integer.ref Integer.out
 	$(TMHS) Enum       && $(EVAL) > Enum.out       && diff Enum.ref Enum.out
-#	$(TMHS) ForeignC   && $(EVAL) > ForeignC.out   && diff ForeignC.ref ForeignC.out
 	$(TMHS) MutRec     && $(EVAL) > MutRec.out     && diff MutRec.ref MutRec.out
 	$(TMHS) LocalPoly  && $(EVAL) > LocalPoly.out  && diff LocalPoly.ref LocalPoly.out
 	$(TMHS) Rank2      && $(EVAL) > Rank2.out      && diff Rank2.ref Rank2.out
@@ -94,11 +93,24 @@
 	$(TMHS) Storable   && $(EVAL) > Storable.out   && diff Storable.ref Storable.out
 	$(TMHS) StandDer   && $(EVAL) > StandDer.out   && diff StandDer.ref StandDer.out
 	MHSCPPHS=../bin/cpphs \
-        $(TMHS) Cpp        && $(EVAL) > Cpp.out        && diff Cpp.ref Cpp.out
+	$(TMHS) Cpp        && $(EVAL) > Cpp.out        && diff Cpp.ref Cpp.out
 	$(TMHS) Lit        && $(EVAL) > Lit.out        && diff Lit.ref Lit.out
 	$(TMHS) TypeOp     && $(EVAL) > TypeOp.out     && diff TypeOp.ref TypeOp.out
 	$(TMHS) Forall     && $(EVAL) > Forall.out     && diff Forall.ref Forall.out
+	$(TMHS) Block      && $(EVAL) > Block.out      && diff Block.ref Block.out
+	$(TMHS) Fork       && $(EVAL) > Fork.out       && diff Fork.ref Fork.out
+	$(TMHS) Concur     && $(EVAL) > Concur.out     && diff Concur.ref Concur.out
+	$(TMHS) MVar       && $(EVAL) > MVar.out       && diff MVar.ref MVar.out
+	$(TMHS) Delay      && $(EVAL) > Delay.out      && diff Delay.ref Delay.out
+	$(TMHS) ThrSt      && $(EVAL) > ThrSt.out      && diff ThrSt.ref ThrSt.out
+	$(TMHS) Throw      && $(EVAL) > Throw.out      && diff Throw.ref Throw.out
+	$(TMHS) RtsExn     && $(EVAL) > RtsExn.out     && diff RtsExn.ref RtsExn.out
+	$(TMHS) Mask       && $(EVAL) > Mask.out       && diff Mask.ref Mask.out
 
+# BROKEN: cannot compile binaries here
+testforeign:
+	MHSDIR=.. $(TMHS) ForeignC -of.exe && ./f.exe > ForeignC.out  && diff ForeignC.ref ForeignC.out
+
 errtest:
 	sh errtester.sh $(MHS) < errmsg.test
 
@@ -109,4 +121,4 @@
 	$(TMHS) Nfib && $(EVAL)
 
 clean:
-	rm -f *.out *.tmp *.js
+	rm -f *.out *.tmp *.js *.exe
diff --git a/tests/Mask.hs b/tests/Mask.hs
new file mode 100644
--- /dev/null
+++ b/tests/Mask.hs
@@ -0,0 +1,20 @@
+module Mask where
+import Control.Concurrent
+import Control.Exception
+
+printMaskingState :: String -> IO ()
+printMaskingState s = putStr s >> getMaskingState >>= print
+
+main :: IO ()
+main = do
+  printMaskingState "start "
+  catch (do
+            printMaskingState "catch start "
+            uninterruptibleMask_ $ do
+              printMaskingState "unintr start "
+              error "a"
+        )
+        (\ (_ :: SomeException) -> do
+            printMaskingState "handler "
+        )
+  printMaskingState "end "
diff --git a/tests/Mask.ref b/tests/Mask.ref
new file mode 100644
--- /dev/null
+++ b/tests/Mask.ref
@@ -0,0 +1,5 @@
+start Unmasked
+catch start Unmasked
+unintr start MaskedUninterruptible
+handler MaskedInterruptible
+end Unmasked
diff --git a/tests/Misc.hs b/tests/Misc.hs
--- a/tests/Misc.hs
+++ b/tests/Misc.hs
@@ -1,5 +1,4 @@
 module Misc(module Misc) where
-import Prelude
 
 first :: forall a b . (a, b) -> a
 first ab =
diff --git a/tests/Multi.hs b/tests/Multi.hs
--- a/tests/Multi.hs
+++ b/tests/Multi.hs
@@ -1,5 +1,4 @@
 module Multi(main) where
-import Prelude
 import Data.Char
 
 class C a b where
diff --git a/tests/MutRec.hs b/tests/MutRec.hs
--- a/tests/MutRec.hs
+++ b/tests/MutRec.hs
@@ -1,5 +1,4 @@
 module MutRec(main) where
-import Prelude
 
 main :: IO ()
 main = do
diff --git a/tests/Newtype.hs b/tests/Newtype.hs
--- a/tests/Newtype.hs
+++ b/tests/Newtype.hs
@@ -1,5 +1,4 @@
 module Newtype(main) where
-import Prelude
 
 newtype N = N Int
 newtype M a = M a
diff --git a/tests/ParseInd.hs b/tests/ParseInd.hs
--- a/tests/ParseInd.hs
+++ b/tests/ParseInd.hs
@@ -1,5 +1,4 @@
 module ParseInd(main) where
-import Prelude
 
 -- The parse error generateing a '}'
 
diff --git a/tests/PartRed.hs b/tests/PartRed.hs
--- a/tests/PartRed.hs
+++ b/tests/PartRed.hs
@@ -64,7 +64,7 @@
 r x y z = y z x
 
 fr :: Int -> Int
-fr = r 22 primIntAdd
+fr = r 22 primIntQuot
 
 main :: IO ()
 main = do
diff --git a/tests/PartRed.ref b/tests/PartRed.ref
--- a/tests/PartRed.ref
+++ b/tests/PartRed.ref
@@ -13,4 +13,4 @@
 Z
 (K #-11)
 R
-((C +) #22)
+((C quot) #22)
diff --git a/tests/PolyKind.hs b/tests/PolyKind.hs
--- a/tests/PolyKind.hs
+++ b/tests/PolyKind.hs
@@ -1,5 +1,4 @@
 module PolyKind(main) where
-import Prelude
 
 type XProxy :: forall (k::Kind) . k -> Type
 data XProxy a = XProxy
diff --git a/tests/Rank2.hs b/tests/Rank2.hs
--- a/tests/Rank2.hs
+++ b/tests/Rank2.hs
@@ -1,5 +1,4 @@
 module Rank2(main) where
-import Prelude
 
 f :: (forall a . a -> a) -> (Int, Bool)
 f i = (i (1::Int), i True)
diff --git a/tests/Read.hs b/tests/Read.hs
--- a/tests/Read.hs
+++ b/tests/Read.hs
@@ -1,5 +1,4 @@
 module Read(main) where
-import Prelude
 import Text.Read
 
 main :: IO ()
diff --git a/tests/Readline.hs b/tests/Readline.hs
--- a/tests/Readline.hs
+++ b/tests/Readline.hs
@@ -1,5 +1,4 @@
 module Readline(main) where
-import Prelude
 import System.Console.SimpleReadline
 
 main :: IO ()
diff --git a/tests/Record.hs b/tests/Record.hs
--- a/tests/Record.hs
+++ b/tests/Record.hs
@@ -1,5 +1,4 @@
 module Record(main) where
-import Prelude
 
 -- HasField instances are derived automatically
 
diff --git a/tests/RtsExn.hs b/tests/RtsExn.hs
new file mode 100644
--- /dev/null
+++ b/tests/RtsExn.hs
@@ -0,0 +1,7 @@
+module RtsExn where
+import Control.Exception
+
+main :: IO ()
+main = do
+  r <- try $ print (1 `quot` 0 ::Int)
+  print (r :: Either SomeException ())
diff --git a/tests/RtsExn.ref b/tests/RtsExn.ref
new file mode 100644
--- /dev/null
+++ b/tests/RtsExn.ref
@@ -0,0 +1,1 @@
+Left DivideByZero
diff --git a/tests/ST.hs b/tests/ST.hs
--- a/tests/ST.hs
+++ b/tests/ST.hs
@@ -1,5 +1,4 @@
 module ST(main) where
-import Prelude
 import Control.Monad.ST
 import Data.STRef
 import Debug.Trace
diff --git a/tests/Sieve.hs b/tests/Sieve.hs
--- a/tests/Sieve.hs
+++ b/tests/Sieve.hs
@@ -1,5 +1,4 @@
 module Sieve(main) where
-import Prelude
 
 primes :: [Integer]
 primes =
diff --git a/tests/Storable.hs b/tests/Storable.hs
--- a/tests/Storable.hs
+++ b/tests/Storable.hs
@@ -1,5 +1,4 @@
 module Storable(main) where
-import Prelude
 import Data.Word
 import Foreign.Marshal.Array
 import Foreign.Marshal.Utils
diff --git a/tests/StringTest.hs b/tests/StringTest.hs
--- a/tests/StringTest.hs
+++ b/tests/StringTest.hs
@@ -1,5 +1,4 @@
 module StringTest(module StringTest) where
-import Prelude
 default (String)
 
 main :: IO ()
diff --git a/tests/Symbol.hs b/tests/Symbol.hs
--- a/tests/Symbol.hs
+++ b/tests/Symbol.hs
@@ -1,5 +1,4 @@
 module Symbol(main) where
-import Prelude
 
 newtype T (s::Symbol) = A Int
 
diff --git a/tests/TestMap.hs b/tests/TestMap.hs
--- a/tests/TestMap.hs
+++ b/tests/TestMap.hs
@@ -1,5 +1,4 @@
 module TestMap(lookup) where
-import qualified Prelude()
 import Primitives
 
 lookup :: ()
diff --git a/tests/ThrSt.hs b/tests/ThrSt.hs
new file mode 100644
--- /dev/null
+++ b/tests/ThrSt.hs
@@ -0,0 +1,26 @@
+module ThrSt where
+import Control.Concurrent
+import Control.Concurrent.MVar
+
+thr1 :: IO ()
+thr1 = return ()
+
+thr2 :: IO ()
+thr2 = error "boo"
+
+thr3 :: IO ()
+thr3 = do m <- newEmptyMVar; takeMVar m
+
+thr4 :: IO ()
+thr4 = threadDelay 1000000000
+
+main :: IO ()
+main = do
+  t1 <- forkIO thr1
+  t2 <- forkIO thr2
+  t3 <- forkIO thr3
+  t4 <- forkIO thr4
+  t5 <- myThreadId
+  threadDelay 100000
+  ss <- mapM threadStatus [t1, t2, t3, t4, t5]
+  print ss
diff --git a/tests/ThrSt.ref b/tests/ThrSt.ref
new file mode 100644
--- /dev/null
+++ b/tests/ThrSt.ref
@@ -0,0 +1,1 @@
+[ThreadFinished,ThreadDied,ThreadBlocked BlockedOnMVar,ThreadBlocked BlockedOnOther,ThreadRunning]
diff --git a/tests/Throw.hs b/tests/Throw.hs
new file mode 100644
--- /dev/null
+++ b/tests/Throw.hs
@@ -0,0 +1,25 @@
+module Throw where
+import Control.Concurrent
+import Control.Concurrent.MVar
+import Control.Exception
+
+delay :: Int -> IO ()
+delay i = loop i `seq` return ()
+
+loop :: Int -> Int
+loop i = if i == 0 then 0 else loop (i-1)
+
+main :: IO ()
+main = do
+  th1 <- forkIO $ catch (threadDelay 1000000) (\ (e :: SomeException) -> print e)
+  delay 100000
+  killThread th1
+  delay 100000
+  th2 <- forkIO $ catch (newEmptyMVar >>= takeMVar) (\ (e :: SomeException) -> print e)
+  delay 100000
+  throwTo th2 Overflow
+  delay 100000
+  th3 <- forkIO $ catch (delay 1000000) (\ (e :: SomeException) -> print e)
+  delay 100000
+  throwTo th3 UserInterrupt
+  delay 100000
diff --git a/tests/Throw.ref b/tests/Throw.ref
new file mode 100644
--- /dev/null
+++ b/tests/Throw.ref
@@ -0,0 +1,3 @@
+thread killed
+Overflow
+user interrupt
diff --git a/tests/TypeApp.hs b/tests/TypeApp.hs
--- a/tests/TypeApp.hs
+++ b/tests/TypeApp.hs
@@ -4,9 +4,13 @@
 foo :: forall a b . (a, b)
 foo = (undefined, undefined)
 
+xread :: forall a -> Read a => String -> a
+xread t s = read s :: t
+
 main :: IO ()
 main = do
   print $ read @Int "123"
+  print $ xread Int "456"
   let (x, y) = foo @_ @Bool
   print $ typeOf y
   return @IO ()
diff --git a/tests/TypeApp.ref b/tests/TypeApp.ref
--- a/tests/TypeApp.ref
+++ b/tests/TypeApp.ref
@@ -1,2 +1,3 @@
 123
+456
 Bool
diff --git a/tests/TypeEq.hs b/tests/TypeEq.hs
--- a/tests/TypeEq.hs
+++ b/tests/TypeEq.hs
@@ -1,5 +1,4 @@
 module TypeEq(main) where
-import Prelude
 
 foo :: forall a . (a ~ Bool) => a -> a
 foo = not
diff --git a/tests/TypeLits.hs b/tests/TypeLits.hs
--- a/tests/TypeLits.hs
+++ b/tests/TypeLits.hs
@@ -1,5 +1,4 @@
 module TypeLits(main) where
-import Prelude
 import Data.TypeLits
 
 data PS (s :: Symbol) = PS
diff --git a/tests/TypeSyn.hs b/tests/TypeSyn.hs
new file mode 100644
--- /dev/null
+++ b/tests/TypeSyn.hs
@@ -0,0 +1,19 @@
+module TypeSyn where
+
+type Foo a = a -> a -> Bool
+
+foo :: Foo (forall b. b->b)
+foo f g = f 'a' == g 'a' && f () == g ()
+
+type Generic i o = forall x. i x -> o x
+type Id x = x
+
+bar :: Generic Id []
+bar x = [x]
+
+type S a = Int
+instance Functor S
+
+main :: IO ()
+main = do
+  print (foo id id)
diff --git a/tests/Typeable.hs b/tests/Typeable.hs
--- a/tests/Typeable.hs
+++ b/tests/Typeable.hs
@@ -1,5 +1,4 @@
 module Typeable(main) where
-import Prelude
 import Data.Proxy
 import Data.Typeable
 
diff --git a/tests/View.hs b/tests/View.hs
--- a/tests/View.hs
+++ b/tests/View.hs
@@ -1,5 +1,4 @@
 module View(main) where
-import Prelude
 
 f :: Int -> Int
 f ((> 10) -> True) = 1
