PK[[misc-mega-rust-1/.gitignore/target sonk.elf lib*.a **/history .cargo_home *~ *.dmp \#*\# .\#* cfg nvram target.docker PK8٣misc-mega-rust-1/Cargo.lock# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 4 [[package]] name = "base64" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "byteorder" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "const-default" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b396d1f76d455557e1218ec8066ae14bba60b4b36ecd55577ba979f5db7ecaa" [[package]] name = "critical-section" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "embedded-alloc" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f2de9133f68db0d4627ad69db767726c99ff8585272716708227008d3f1bddd" dependencies = [ "const-default", "critical-section", "linked_list_allocator", "rlsf", ] [[package]] name = "game" version = "0.1.0" dependencies = [ "heapless", "megarust", "ufmt", ] [[package]] name = "hash32" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ "byteorder", ] [[package]] name = "heapless" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" dependencies = [ "hash32", "stable_deref_trait", "ufmt-write", ] [[package]] name = "itoa" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "libc" version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "linked_list_allocator" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" [[package]] name = "megarust" version = "0.1.0" dependencies = [ "critical-section", "embedded-alloc", "heapless", "itoa", "ufmt", ] [[package]] name = "proc-macro2" version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "quote" version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] [[package]] name = "rlsf" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "222fb240c3286247ecdee6fa5341e7cdad0ffdf8e7e401d9937f2d58482a20bf" dependencies = [ "cfg-if", "const-default", "libc", "svgbobdoc", ] [[package]] name = "rom" version = "0.1.0" dependencies = [ "game", ] [[package]] name = "stable_deref_trait" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "svgbobdoc" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2c04b93fc15d79b39c63218f15e3fdffaa4c227830686e3b7c5f41244eb3e50" dependencies = [ "base64", "proc-macro2", "quote", "syn", "unicode-width", ] [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "ufmt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a64846ec02b57e9108d6469d98d1648782ad6bb150a95a9baac26900bbeab9d" dependencies = [ "ufmt-macros", "ufmt-write", ] [[package]] name = "ufmt-macros" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d337d3be617449165cb4633c8dece429afd83f84051024079f97ad32a9663716" dependencies = [ "proc-macro2", "quote", "syn", ] [[package]] name = "ufmt-write" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e87a2ed6b42ec5e28cc3b94c09982969e9227600b2e3dcbc1db927a84c06bd69" [[package]] name = "unicode-ident" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" PK"Q}misc-mega-rust-1/Cargo.toml[workspace] members = [ "libs/megarust", "game", "rom" ] resolver = "2" [profile.release] lto = "fat" panic = "abort" [profile.dev] lto = "fat" panic = "abort" PKYoomisc-mega-rust-1/MakefileGAME_SRC = $(shell find ./game/src/ -name "*.rs") LIB_SRC = $(shell find ./libs/ -name "*.rs") sonk.md: $(GAME_SRC) $(LIB_SRC) (docker images | grep mega) || docker build ./toolchain -t mega docker run --rm -t -v $(realpath ./):/src mega sh -c "cd /src/rom; ./.build.sh" podman: $(GAME_SRC) $(LIB_SRC) sudo podman run --rm -t -v $(realpath ./):/src mega sh -c "cd /src/rom; ./.build.sh" clean: (docker images | grep mega) || docker build ./toolchain -t mega docker run --rm -t -v $(realpath ./):/src mega sh -c "rm -rf /src/target.docker" rm -f sonk.md sonk.elf run: sonk.md mame genesis -cart $< .PHONY: clean PKLHHmisc-mega-rust-1/README.md# Mega Sonk in MegaRust To run the game: ``` mame genesis -cart sonk.md ``` Record your solution and send it up to the server to get the flag! Make sure your recording is at most 5 minutes long. ``` mame genesis -cart sonk.md -record solution.inp python3 submit.py /home/user/.mame/inp/solution.inp mega.2025.ctfcompetition.com 1337 ``` To rebuild the game: ``` make sonk.md ``` On the first run this builds the compilation toolchain which could take up to half an hour. Rebuild and run the game: ``` make run ``` ## Credits Compilation toolchain based on * https://github.com/ricky26/rust-mega-drive * https://github.com/rust-lang/rustc_codegen_gcc Graphics credits: * https://opengameart.org/content/dashie-supertux-advance-style * https://opengameart.org/content/plastic-shamtastic * https://opengameart.org/content/wasp-0 PKNNmisc-mega-rust-1/megadrive.xMEMORY { ROM (rx) : ORIGIN = 0, LENGTH = 0x400000 RAM (rwx) : ORIGIN = 0xFF0000, LENGTH = 0x10000 } ENTRY(_start) SECTIONS { _stack_top = 0x1000000; _stack_bottom = _stack_top - 0x500; .text : { *(.text .text.*); } > ROM .rodata : { . = ALIGN(4); *(.rodata .rodata.*); } > ROM .data : AT(ADDR(.rodata) + SIZEOF(.rodata)) { . = ALIGN(4); _data_start = .; *(.data); _data_end = .; } > RAM .bss (NOLOAD) : { . = ALIGN(4); _bss_start = .; *(.bss .bss.*); _bss_end = .; } > RAM _data_src = LOADADDR(.data); _heap_start = 0xFF0100; _heap_end = _stack_bottom; /* Flag ID stored at fixed offset for server-side verification */ GOT_FLAG = 0xFF0000; /*/DISCARD/ : */ } PKH )wwmisc-mega-rust-1/pow.py# Taken from https://github.com/google/kctf/blob/v1/docker-images/challenge/pow.py import base64 import os import secrets import socket import sys import hashlib try: import gmpy2 HAVE_GMP = True except ImportError: HAVE_GMP = False sys.stderr.write("[NOTICE] Running 10x slower, gotta go fast? pip3 install gmpy2\n") VERSION = 's' MODULUS = 2**1279-1 CHALSIZE = 2**128 def python_sloth_root(x, diff, p): exponent = (p + 1) // 4 for i in range(diff): x = pow(x, exponent, p) ^ 1 return x def python_sloth_square(y, diff, p): for i in range(diff): y = pow(y ^ 1, 2, p) return y def gmpy_sloth_root(x, diff, p): exponent = (p + 1) // 4 for i in range(diff): x = gmpy2.powmod(x, exponent, p).bit_flip(0) return int(x) def gmpy_sloth_square(y, diff, p): y = gmpy2.mpz(y) for i in range(diff): y = gmpy2.powmod(y.bit_flip(0), 2, p) return int(y) def sloth_root(x, diff, p): if HAVE_GMP: return gmpy_sloth_root(x, diff, p) else: return python_sloth_root(x, diff, p) def sloth_square(x, diff, p): if HAVE_GMP: return gmpy_sloth_square(x, diff, p) else: return python_sloth_square(x, diff, p) def encode_number(num): size = (num.bit_length() // 24) * 3 + 3 return str(base64.b64encode(num.to_bytes(size, 'big')), 'utf-8') def decode_number(enc): return int.from_bytes(base64.b64decode(bytes(enc, 'utf-8')), 'big') def decode_challenge(enc): dec = enc.split('.') if dec[0] != VERSION: raise Exception('Unknown challenge version') return list(map(decode_number, dec[1:])) def encode_challenge(arr): return '.'.join([VERSION] + list(map(encode_number, arr))) def get_challenge(diff): x = secrets.randbelow(CHALSIZE) return encode_challenge([diff, x]) def solve_challenge(chal): [diff, x] = decode_challenge(chal) y = sloth_root(x, diff, MODULUS) return encode_challenge([y]) def verify_challenge(chal, sol): [diff, x] = decode_challenge(chal) [y] = decode_challenge(sol) res = sloth_square(y, diff, MODULUS) return (x == res) or (MODULUS - x == res) PK<@@misc-mega-rust-1/rustfmt.tomlgroup_imports = "StdExternalCrate" imports_granularity = "Item" PK GPmisc-mega-rust-1/sonk.md"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""SEGA MEGADRIVE (C)2021.JAN TESTPROJECT TESTPROJECT GM MK-0000 -01J6  F N/Ns.|F%N?Ng`NsNr%Nu oJ g"o / ЈذfNu oJ g/ / ЈfpNu / ocJ g"@"/ ҈زfNuJ g"o S" SSgSSf`O o /"//o g*"h//("i/A/H NP" oJgO NuJg"h/o/A/h"i O NBO Nu o"h/P"i NY/ o "/Ҁbtdp$XNu////Hp/HN* o / ѐO B$XNuQ// /B ez""A? b06 C A 2| o "҉etdFp$&PNu$v B4 ? bR0@ B A2|`@ 2|`/ Ho oHp/IN* / o ѐO B$&PNuB@H@H@ 0?@ BA2|`HH8 $o&/* g@ /gD( /f4Rt gR j//* hNPJgxpH@"LNuvt`xt`O"/8$o,&o0(/4:*0* Eg @gV j/j,"h L|PNJ@f<$*pdj// N10"@Pe j/D4/K0/j,"h L|PN/j "" ҄ Ktɴ"g,g(Hk& A̓R L`JgH \H2@, D"Fpg +\H|gv +\Hpgb +\H|gN +\Hpg: +\H|g& +\Hpg +\H|g +\Hp g + \H| g + \Hp g + \H| g + \Hp g + \H|g +\HdzYB/// N~&*O g j// /* h NO gtL|PNug T cjg V cZgp((?KHCBC(? fJEf j/D4/K0` X& AR @`вgklgֳd 3lJEg~$*pd// N10"@P`ZɳdX`xgR j//* hNPJgt`$Rg c$Tg ctRgr((?HH@B@(? f0JEg`xJEg$*d`0( JEg$*|d// N10"@P`|NZ o/(///NO NuOH>>(oH lHx"/, hNPJfJDgp o@ /DB(xG0K$Ԁ"Hg(r ~b c \g| "gvRRf؀(eJ(fJf"/(ӯ@D/AD l//D//D/, h NO Jf lHx"/, hNPL||ONupL||ONu؁g$Hkz?|,|.//,/,K/ NO /0gX/;/: gJ(e*J(g /(DePWDgJgDegHys///0//P//PN/W /o?o I    B) | ONuNV-n-n -n-nA-H-|jA-H-|$-|p-@BBA-Hr-A/.HnNbNVA-H-|-|E&IppGp&Hx'/NP$Hx'/NP(Hxd/NPЀ @sPhHxd/NPЀ @sh Y bvրpce@p etS0p // BHyYoG//HN *OL<O NuHxd/NppPUHxd/$NpPЀ @s88p dUԂ Bshp // BHyYoG//HN *OL<O Nuv pcd8`t//Y| o /N!O NuH8 &/p ᫑r"E$C( ЉЀ 2x 騰b Ipe ЈЀ 2r 㨰gzexr!e Ј"Ҁ 2B@H@Ht!g\C"1BAHAIfLxg0"AC& rE"o bTt2҂eRfLNuR`"<Sx8 D$2 B`HypHx"/NnHy`Hx/NnNV-n-n A-H-|#LA-H-|#L-|Fp-@BBA-Hr-A/.HnNb// // // N$zNV-n-n A-H-|#LA-H-|#L-|6p-@BBA-Hr-A/.HnNb// // // N$NuO// o / d*"((t'eR(B$&O Nup$&O NuCB&/C? c$v /B / ?B cB@H@H@/?@BAr ((&ցt(et҉g` ((R!@(gL ((R!@(f`6/ @Ar`/CoAr`/"o o )("/Ҁt(e""/҈g )(R#@(fB$Nup$Nu/ Aph oPVDNu/ o0(F@P/A4riAVD$NuNV/BBBBBBBB2. H@H2ti@? |00 |0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@0=@-n-n-n-n-n-n-n-nHx Hn/.N*O $.N^Nu/"o2/ @"H@ |00H@AA )g|3003p/ЀAx200HH@tiA03 0 |009 03 |0f @"@@0 )g|3$Nu/ o"Pp/HH@B@r/t 婀r/鉀"   BAA |02IA0B@H@@@0$NuH88&o(+BJg Kp"H2(R4B Bm Ao~g"A2|2(&R4B Bm An24B Bm A`oRPf$fX'BLNu(HE8Pf`24B Bmt A`nlPfJ$'BLNu"C/Hs/ NdO 'BLNu$S/Hs/ NdO `t'BLNuH88$o&* B JgV Jp"H2(R4B Bm Aog"ҀҀҁҁA2|2((R4B Bm An24B Bm A`oRA f$fl%B LNu"҄҄ҁҁ(HGA f`24B BmZ A`nRA f,$%B LNu"҂҂ҁҁC CHp"ҀЁЀЀHr/ NdO %B LNu$S CHp"ҀЁЀЀHr/ NdO `t%B LNuQH8 o0( f0(R@1@4(2A2A6xx"HAJAfIf,B1B2(SA1A"o ?i4oPJ2AC 6 Id 2oCIe~6x"HAJAf$r "HA2A2< BCIf@BA1BLPNu8SD1D @f1|LPNu2(BCIflRA`h2<BA1B`$o 2R?P6 PC8/DCch4IE 6 ocX$o *gL|oRDC2jobX2 A"J3AB)Bi3|`B1B2(RA`1|< BB@1B8 Dod(5|`2 A"J3AB)Bi3|`4oXJ6 Id$o 5|`2oXIIc"o 3|`A od|$o 5|`nH? $o "|@ |@HCCIBB4FB8LDB?B4FB6KCB?B@@@@2B> OFGJEE:E Eg<F FgF5R4 EWDJ@ WD5B5j5C FWDHA WD5@ LNuFBJBB5R4 EWDJ@ WD5B5j5C FWDHA WD5@ LNuFFNFF<F FfT`3"NuNV// n ( n P"ff$/. Y|/N!O $.&.N^NuHxBHn-ANFAO pF".tāQB@SdHysHxHxNnv e 0td StāQB@Sd`7verF//HxHysY|/. N *O$.&.N^NuHxB$/-ANF0|O pF".tāQB@SdHysHxHxNnv e"0tdjStāQB@Sd`WvdHS`YH?0"o("/, I R@$@ɵb($ԉ,gpeGr‚f4Jg6 3(\HHD @pg 3(\HUg 3(\H* cz?Fp0ЀЀЋ/@ K Cgx$&("( ( .F싎&F슆և$F쉄ԃ"F숂҂؁Af Є"HABAЁB@H@pfg&o `v-C`b$ Rg`)v-C cEgB)? b".v  d0|-A-@Ј-@A-H-|#LE-J-|nA-H-|E-J-|jA-H-|j-|t-BBBA-Hv-C/.HnNbeWDJf/.////N n8.6:(A*<.E2h0P2D4B Bo&A An2I4B Bm A A`o2A Am@ @n2 A AmvC2<`Imj$n"* bp=I=|=|+=@BnBn ЁЁЀЀ"nB+BBBB"nR XJfL|N^Nu-|p-@HyHyHnHx+HyNNVH> n8.6:(A<.E2h0P2D4B Bm&A An2I4B Bm A A`o2A Amt@ @nj2 A Am\C2<`ImP$n"*t?eX=I=| =|#=@"n B#"nRXf8L|N^Nu-|p-@HyHyHnHx+HyN//9g #SEGA@333r9p9/HyPHyN* <$/BHyNF <"<"@OJfft#Bvdt$<B B@tdD BB ###6 B$&NuHylN~HyHx8HyNHy,Hx0HyG?E23 0009 009f؁ԁfr @$@@3LN^Nu-|p-@-|BBBHyHnHy`HnYB/N@6/ / $o *g|333333?<]B/Bg]B// G(N?<]B/Bg]|/ NO(?<P]B/Bg]|/ NO *g|3?<UHy Bg]|/ G@pNO *g|3?<UHy ?< ]|/ NO *g|3?<UHy?<@]|/ NO *g|3?<UHy?<`]|/ NO$_&_NuNVH< $n$.p-@fv6. @$H@3Jgx8.C rHAd"B@@ |00H@0B@@00H@0 B@H@@@00zh@:E?E@23 0009 009f؁ԁfr @$@@3L*/||܏,Fv,֏*C4|PBBIPGPHxPB/NFHxPB/NFAO04g @K@`;03g @K@`=Tf0 Eh (g|3?<(U/?]B//ACLN0 EhO (g|3?<(U/?]B//ACLNE@OPg4BMKHxPB/NFHxPB/NFAO` L|ONuNVH08&n$n @ $BAA |02IA0B@H@@@05| 3*5|3^5|35|385| 3< @@$H@03 $B@H@@@00* *g|3?<UHy?]B// ACLNO *g|3?<UHyBg]|/ I@pNO *g|3?<UHy0Bg]|/ NO *g|3?<UHy?< ]|/ NO *g|3?<UHy?<@]|/ NO *g|3?<UHy?<`]|/ NO *g|3?.D?BnBnb2 n0JAg AKA`=AJ@g @K@`=@4BJDB0j *g|3?<U/?]B// NjO *g|3?<U/?]B// NOG RGK@@Cf>Rn2.nf n0=@=@0* *g|3?<UHn?]B// N0. nPOL@G n0nj`~8. nG@A*HPP-H>.D?`&BA0.n @@fl>< n0njp`(0<@>@G`ICL`NVH?< n=hJnor0.n @`gJ@f*BG n1@nkA4AkJBg\ n0D@k@=@0@-H=GG=B0G=@,QECL*]*n Jno6.Cn2 ҮCK&A(KPP-A~8.nBnBn b24x03xJAg AKA`=AJ@g @K@`=@4.DB?CB0m -g|3?<U/?]B// NmO -g|3?<U/?]B// NORTpRfDRn0.nf-M n0(D@=@=@ n (g|3?<UHnBg]|/. N@p0. nhOL^@@=@0@-H=GG=B0G=@,QECL*]*n `8 @`m~J@oB@>@G n1@nj`6.2 ҮCK&A(KPP-A~8.n` BA0.n @`ff~4 n1@njl`.0<`>@G`NVH?<$nHj$N.XJRf"8j\RL5L\J*)g:, L* *E4*@JgG&J*DgB*EYB/Hj$N&PJg B*DpBBA:|5@B0kJ@oJBm p@5B@x H… H@j60B5B6> (HD2DJ@m ¸@c > j05G0JAm βId JgJ*Fg 8UH5H6//A/N3f2*0O J*Df 0AAHb ~`A0G5HB@`5@0|nDY|Hj$NX:@|Hj$NP@*>$*8 g g g f Z8*@>k 02viGA Gn 6Ab68j%|8Bj<$ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"Kgv2*\~0 H@H@@@2AA0J*Ef>2*60(8APL>GLc(AR@Ad0*02(8@PL>TGLc @ AbBCAf(B"*~ ЁЁЀЀ~( ؀g*BHj0/ N+K Pf*C *( ؀g C0*\2*62h>PG=G> GncPG=G>Gnc<=j0=P>.PG=G>.Gnc>.G =G>.RGnef"HA0< Ac0<" Ac0<+ Ac0<"2(A@1APfL0*@o J0*6 @Zc P@///NJ>0*BO o N0*0 @c @///NM|<0*6GO @g @n @@f p@5@60*0F @g @n @@f p@5@0"*^ 爐ЀbЊgB8+G7D2+ F7A Db  D@f7D Ab A@f6Gf"*~ ЁЁЀЀ~ЊgAPTI A f////N< *ЊOgERUPPf////N=OL<\N^Nu0*"R@5@"-y-yK-UHx ?BgNppP(@GpHxHlNPЀ5v-y-y-UHxHlNPЀ5v-y-y-UHxHlNPЀ5v-y-y-UHxHlNPЀ5v -y-y-UHxHlNPЀ5v -y-y-UHxHlNPЀ5v-y-y-UHxHlNPЀ5v-y-y-UHxHlNPЀ5v-y-y-UHxHl NPЀ5v-y-y-UHxHl NPЀ5v-y-y-UHxHl NPЀ5v-y-y-UHxHl NPЀ5v-y-y-UHxHl NPЀ5v-y-y-UHxHlNPЀ5v-y-y-UHxHlNPЀ5v L<\N^NuY|Hj$G&NPJg" BmUB5B@j4J*Df0*BR@ @dn8~ Hĉ"HA:D5@B0jD@`J.gJDgo6 Jf Gn>p@>$ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"K`T) G"0I$fN0g3"/NA30*VX *Zg|Z3?<UHy?]B//GCLNO *Zg|Z3?<UHyBg]|/I@pNHx`Hy?<U/NDO$ *Zg|Z3?<UHyBg]|/N3v֎ OJgI"Lr(Ѐ C ЀЈ fgҁ3=|:=|P=|V=|=|H=|P=|U=|=|G=|M=|B=|H=| c Jm@=@=|0*R@ *Zg|Z3?<(U/?]B//N-y-y-y-y-y-y-y-y(-n-n-n-n-n-n-nBn=|Hx$// N*O L<\N^Nu6|F`D@@b@p0B5H6> j05G0JAl6DAIe4rA5G0`(DG`JAVHDAA5G0`J@VHD@0B5H6`|E\AIUDGF>*4IdG5G4B*DBj@5|B`hB.`TH5H6`pd8~ Hĉ"HA:D`.B@BBA5@B0j8`"Y|Hj$NPJg BwnTB5B@j4`p@5B@` gf|>r#%A8Bj<$ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"K`R"CIr(Ѐ C ЀЈ`J@g0*6 @cfB@///NJ>0*BO nJ@g0*0 @bZ@:` A@dLr@6Gf`D D@dx@7D Ac2<6Gf`p `8<`B@`VG5G4B*DBj@5|B`SA5A<$`r eD4*%|8Bj<$ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"K`L @@mV5@0"*^ 爐ЀbЊfV` @@l p@`0<5@0"*^ 爐ЀbЊf"``J.g.2*@f g|>pF%@8Bj<$ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"K`v0<`` G;o& GYnp@>`SA5A<$`*p@>`p@>`JAo4 Jfp Anp(rA>A %p8Bj<$ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"K`Jf $ ~Hn/N*~& Hn/N)L"*^ 爐Ѐb( ؀GbAfO"K`fJ.fDA`0 A;np2rA>A %p8Bj<`. AYopFrA>A %p8Bj<` pA %p8Bj<`Hy Hx/NnHypHxHyNNVH8 $.$n B"( b~(CHg*SVpcR&ZgRPbB&Zf2*p-@fL *g|3//?]B// NCLOLN^NuHy@Hx/N$-|pp-@-|BBBHyPHnHy`HnYB/N@6NV/ / "nBHJQfGHJ)Eg0)\g)>p bJ"ҀҁЁЀ2)Jf>"< (("@v(eD"A²g$A" ((R!@(fBL NuSg"/ Hy`/NjO L NupL NuJf $@"g$*`NV"n n Jf<-|xp-@BB-|BHn/(/(NjO N^Nu-|wp-@BB-|BHn/(/(NjO N^Nu0/ 2/AH@B@2/ ЁNu/"/ / d$BBHB0H@4/ 0`0$ d"HBHBJBf ҂ecS$Nu"/ ///NppP"///NpLP"/ Nu/ "/fl"/ 2| b2 RHHD0| EP2 Љ$_Nu b&0|pEP2 Љ$_Nu`0|pEP2 Љ$_Nu/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/num.rs6uuu u 0123456789abcdefunsafe precondition(s) violated: hint::unreachable_unchecked must never be reachedru ru &~z 0xrxuH00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899)been shut down to prevent damage to your) does not match destination slice length (u A problem has been detected and MegaRust hascopy_from_slice: source slice length (% left: right` failed: right: right` failed left: assertion `left but the index is index out of bounds: the len is /root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panicking.rs/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/unicode/printable.rs/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/dec2flt/lemire.rsuX&t+temulator.sourcecalled `Result::unwrap()` on an `Err` valueUtf8ChunksAuuu matches!===u uvwx`called `Option::unwrap()` on a `None` value^"{-f/.1$ +D*$$(4 N4 7  ;E9c 0!@8K/  @ ' 6: PI73 3. &R7,*& N$ D  H' u B>*; Q YbH ^"E  : ,!p-@:*+)L DL=<U4,d V 8 ,  w_  8 (,>T  8  ';>NO{ 6=>V67VW5 )14:EFIJNOde\ 69: 7 ;>fio_ZbST./'(U :?EQ͠"%>? #%&(38:HJLPSUVXZ\^`cefksx}Юnoޓ    $jk   _"D/4 PU   NW PC- :%_ mj%Y    j Y+F , 1 ,  /1<>8+/-!! /; "t  7 \; 8F t ZY   L 1&  *L xy0WXKL./?\]_ℍ)147:;=IJ] )14:;EFIJ^de ):;EIW[\^_de EIde񃅋HINOWY^_[\mqno_}~MFGNOXZ\^~rstu&./ߚ@0NOZ['/no7=?BESgu        +- .012 v6v +w/src/.cargo_home/registry/src/index.crates.io-1949cf8c6b5b557f/linked_list_allocator-0.10.5/src/hole.rs/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/char/methods.rsalready borrowed: encode_utf16: need " but buffer has just bytes to encode U+: ../root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/escape.rs QBorrowMutErrorh} t/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/flt2dec/mod.rs but ends at slice index starts at range end index out of range for slice of length /root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/unicode/unicode_data.rs]:[/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/net/display_buffer.rsBufferSizeExceeded/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/unicode/unicode_data.rs}File:J= `p"Y data provided contains an interior nul byte` p-H 0e#[ :  +; * 7 :  9 9: ;  (7 : 9  HQ b I7 $ f @ -u"v : 010 &  88 @!` i P & ,0$C /3*(AOF 1{6) 1=$> 4 _9  CUQUje   ( . RzH 4 ;?Q .72d=m` `] ` + ,+0*,`o,-6 6`67! 7 $9a9/J0NR4@SaTajToOUaVaVeW!XZ![\a\ ]YM(UnknownMisaligned DMAlibs/megarust/src/renderer/m68k.rsoverindexedgame/src/physics.rsgame/src/map.rsgame/src/flag.rsgame/src/wasp.rsgame/src/spike.rsgame/src/anim.rsgame/src/sonk.rsdma_upload_word_slice: src misalignedlibs/megarust/src/vdp/m68k.rsVRAM overflow/src/.cargo_home/registry/src/index.crates.io-1949cf8c6b5b557f/embedded-alloc-0.6.0/src/llff.rs/root/.rustup/toolchains/nightly-2025-01-12-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/str/mod.rs is out of bounds of `) of ` (bytes is not a char boundary; it is inside byte index `) when slicing ` <= begin <= end (00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899Line:Technical Information:`  f  f  f "$(/%b,&%do4`3 %too many spikesHHP0`?@ABWXYZ[ st#$%&'(stopqr=>?@ABstWXYZ[djjjjcstd~}cstd~|}c st;<d~}c#$%&'(uvopqpqppqpr;<d~|}c=>?@AB;<d~}cWXYZ[ uvuv jjjjjjjjjjjjjjjjjjjjjjjjjjcd~|}cst;<9:lmn#$%&'(234}cd~}cSVst;<jjjjjjjjjjjjjjjjjjjjjjjjopqpqr=>?@AB234LMN|}cd~|}cSTUVopqruv;<234WXYZ[234LMNfgh}cmnd~}clmnSTUTUV;<jjjjjjjjjjjjjjjjjj234LMNjjjjjjjjcstd234LMNfgh|}cjjd~|}jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjLMNfghhf}cstd~LMNfgh}c./01lmnd~fghhf|}cd~fgh|}c./HIJK01!" jjjjjj~}cd~}c./HIbeJK019:./|}c;<d~|}c./HIbeJK01jjjjjjjjjjjjjjjjjj./HI}c;<d~}c./HIbeJK01./HIb|}cjjjj d~|}./HIbeJK01./HIb}c./#$%&'(d~HIbeJK01./HIb|}c./HI=>?@ABd~beJK01./HIb}c./HIbhf01WXYZ[d~eJK01./HIb|}c./HIbhfJK01std~eJK01djjjjjj./HIb}c./HIbeJK01std~eJK01lmnd~HIb|}c./HIbeJK01cd~eJK01jjjjd~b}c./HIbeJK}c ;<d~eJK0123401 d~|}c./HIbe|}cjjjjjjd~eJK01234LMNJK01#$%&'(d~}c./HIb}c./01d~eJK01234LMNfgheJK01=>?@ABd~|}jjjjjj./HIb|}c./HIJK01d~eJK01jjjj234LMNfgheJK01WXYZ[d~HIb}c./HIbeJK01d~eJKLMNfgheJK01std~b|}cd./HIbeJK01!"d~efgheJK01std~}cd~HIbeJK01d~eJK01std~|}cd~beJK01jjjjjj~eJK01cd~}cd~eJKeJK}cd~|}cd~ee|}cd~}cd~}c;<d~|}cd~|}c!";<d~}cd~}c;<d~|}cd~|}cjjjjjjjjd~}cd~}c23401d~|}cd~|}c234LMNJK01d~}cd~}c234LMNfgheJK01lmnd~|}cuv!"d~|}cd234LMNfgheJK01jjjjjj~}cd~}cd~LMNfgheJK|}cjjjjjjjjjjjjjj~|}copqrd~fghe}c././}clmnd~|}cSV./HI./HI|}cSVjjjjjjjjjjcd~}cSTUV./HIbhf./HIb}cSTUV23401234}cd~|}cjjjjj./HIbhf./HIb|}cSTUTUV234LMNJK01 234LMN|}c d~}c./01./HIbhfHIb}cSTUTUUUV234LMNfgheJK019:234LMNfgh}c#$%&'(d~|}c ./HIJK01opr./HIbhfb|}jjjjjjjjjjjjjj234LMNfgheJK01jjjj234LMNfgh|}c=>?@ABd~}c9:./HIbeJK01./HIbLMNfgheJKLMNfgh}cWXYZ[d~|}jjjjjjjj./HIbeJK01jjj./HIbfghefgh|}cstd~HIbeJKHIb}cstd~beb|}c d~}c#$%&'(d~|}c=>?@AB;<uvd~}cWXYZ[;<lmnd~|}cstjjjjjjjjjjcdjjjjjjjjjjjjjjjjjjjj~}cst./}cd~|}c./HI|}cd~}c;<./HIb}cd~|}jjjjjjjjjj./HIb|}jjjjjj~HIbb2*2ocalled `Result::unwrap()` on an `Err` value2ocalled `Result::unwrap()` on an `Err` value#@F#FFFF(/Can't controller state f P PUZ_ "$3f DWr "3@Bcv ` 8%$ .B/ .A$O1$CDDr4C4DQDD4O3>$BA.#!$1Ww111!wp%\uP|$BA.#."Cq w|P133#'wp|uP5|OWPA3 |uq!W1UW$ .B/ .A$O1$CDDr4C4DQDD4O3>B$9$qCq w|P111!wp%\uP|LwPOQD03 ទuqS1UW$!1!3B3A#O/1$CDDr4C4DQDD4O3>B$9$1WP Pw|Pwp%|uPGwPBQOC D03 !uw11UWqQQ1333|r\||Ww!T!D .W5P|2GD1|Cϑ|U B.D0/ / /2$BrCC3DC42p1ſDAPo12$ !B yqqQQ2s\\Ww!T!D .#Wu|uP$$1D|Cϑ|U$ NC/ / $BrCC3DC42p1ſDAPo12B 2 B1 3B3#O1"/A"$O7$DC#D4\DODO3D>3$#A#!WC$2q w|w\PUP|C 3QWP##UUq""1DD"1D#.2DqDDDDCDD4>$!A1!AQ\4W31w%p||WU1|PO BB 11QQ.UW$!1!3B3A#O/1$CDDr4C4DQDD4O3>$#B?1 u3%"YQ!wp%\uP|#$O$/YYQ 111!wp%|uP7wPOQD02wř|Q4 wPww$ .B/ .A$1$CDDr4C4DQDD4O3>#BB4!)D!Cw w133#wp%|uP7wPOQD02.1!Q|P$ .B/ .A$O1$CDDr4C4DQDD4O3>#B4!qD$1Cϐ|P111!'wp|uP5|OWPA2/B91w^W$!1!3B3A#O/1$CDDr4C4DQDD4O3>#2B"4!qD,"C\D3\3~u!wp%\uP|#B4!q'\B\3~~q111!wp%|uP7wPOQD02/B4 3UUq$ .B/ .A$1$CDDr4C4DQDD4O3>#BB4!)D\\~~133#wp%|uP7wPOQD02.31W$ .B/ .A$O1$CDDr4C4DQDD4O3>#DB1)2q~^W111!'wp|uP5|OWPA2Q1CP|P B BO1/A$O$D#D\DD3D>3$CA ~^W133w#P"\U'P||4wC5 42OCO 32Ow|őP14 2uw|P B BO1/A$O$D#D\DD3D>311!A,C1u|133#w"\P'U|P4w|C542OCO 32BC/IqǞq!2QuUP$!CBBO$$tDD\DTD3D339!)%"LD3\3_~q!!wp2|4WuPD3\CO7DCDO ?#2")4D?w|rw1#PQQ$!CBBO$$tDD\DTD3D339)Q"\D\1~~q!wp!|2uP4E|D3WCO1DCDO ?#"B"Dw|u711%^UPQ B BO1/A$O$D#D\DD3D>31!A133w#P"\U'P||4wC5 42OCO 32B24C1sQ|^W B BO1/A$O$D#D\DD3D>3#BC2!Q^W133#w"\P'U|P4w|C542OCO C2.Yy|CCuwP$ .B/ .A$O1$C4D#C\DD3O># $D1!w3%"~YQ1333wp|uP5|3WPOAD3"O.w|uQ|PB 4_qq$ .B/ .A$O1$C4D#C\DD3O>#D ! 3!YYQ133wp\uP|40DDD04DC0D03 "UUQ"C"%wW3DWCOO!yǑOB@0 |Upp\puPR  ~~~^YU""DD!"D"4P""3>3>>3DDC04DC D0 !4""D3%wW3DWCOO!B^D!W.w.20@OOpp\puPR  YQQ""DD/""412"""3> >>DDC4DCD3#D@"C"%wW3DWCOO!BD!"U0u0>wppp\puPR  p ""DD!"D"4D"B""3>>>DDC4DC0D0DD32 w""D3%wW3DWCOO!BD!UUPppp\puPR  P\u_w ""DD/""DC""3>>>@DDC@4DC@D0D03 PwwPuU"C"%wW3DWCOO!BD!0 Wpp\puPR   ~wUUP""DD!"D"U4p""43>D>>DDDC@4DC0D002#""D3%wW3DWCOO!BD! 0>>ppwpp\puPR  ~WurUR""DD/PuBDD"33>0>> DDC 4DCD230wwp"C"%wW3DWCOO!BD! Q )UPppp\puPR  UP~w""DD!wwwWD3D""3>>>DDC4DCD0""~wuU""D3%wW3DWCOOGuPpp\puPR  $ CBB*O$$jBF?6OO!D4 Q|$1uw B4N $ $ > O moBBD o 00o!CDA!q| BW |wqPP $ .B/ .B $O$jBF?6OOA44 Q||C1YQ\~wq B$O$>Bmo BD o 09o1CC!q4  yw333DDDDI4D44DD3DDDDD$DDC$DD3#D3333433D333#31030C4CCD0D0CICDBDDBDIDBDDD DDC"DC21333!33232334DDCD4I4DIDDDDI$DDD$DDC#DC3#333#3433133D03C40CCDCCIBIBDD2DDD DDC DC133133#3!34D3I4DDIDDDI$DDD$DDC$DD3#D33##343D33#3"3D3D0C0ICDCDBDIBDID2DDC DC333!23!344DIDI4D44DD"DDI$DDD#DDCDC3333334##313#33CD04CD0D00I0DDBDDD2DDD"DDB2DC3133332!!$ .B/ .A$O1$C4D#C\DA3O>"3DD' 1333wp|uP5|DWPAAD"on#23)|WPsB1#$11EP%_^qqwqQQ $ .B/ .A$O1$C4D#C\DA3O">D"4!133wp\uP|= size_of::()~pgK assertion failed: hole_size >= size_of::()_4u,unsafe precondition(s) violated: hint::unreachable_unchecked must never be reached e &{[...]0PKHHmisc-mega-rust-1/submit.pyfrom sys import argv import socket import struct import pow def solve_pow(sock): header = recv_until(sock, b'\n') if b'proof-of-work: disabled' in header: return recv_until(sock, b'python3 ') recv_until(sock, b' solve ') data = recv_until(sock, b'\n') recv_until(sock, b'Solution? ') solution = pow.solve_challenge(data.decode('ascii')[:-1]) sock.sendall(solution.encode()+b'\n') recv_until(sock, b'Correct\n') def recv_until(s, d): buf = b'' while not buf.endswith(d): buf += s.recv(1) return buf if len(argv) < 4: print("python3 submit.py solution.inp host port") exit(1) with open(argv[1], "rb") as f: input_bytes = f.read() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((argv[2], int(argv[3]))) print("Solving pow") solve_pow(s) print("Sending recording") s.send(struct.pack(">I", len(input_bytes))) s.send(input_bytes) print("Waiting for server's response") data = b"" while True: d = s.recv(1024) if not d: break data += d s.close() print(data.decode("utf-8").strip()) PK [[ misc-mega-rust-1/game/Cargo.toml[package] name = "game" version = "0.1.0" authors = ["Google"] edition = "2021" license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] path = "src/lib.rs" [dependencies] heapless = { version = "0.8.0", features = ["ufmt"] } megarust = { path = "../libs/megarust" } ufmt = "0.2.0" PKYw !misc-mega-rust-1/game/src/anim.rsuse crate::tiles; use megarust::*; struct Frames { pub tile_offs: u16, pub len: u16, pub duration: u32, } struct Animation { pub loops: bool, pub frames: Frames, } #[derive(Copy, Clone, PartialEq)] #[repr(u8)] #[allow(dead_code)] pub enum Anim { Brake, Damage, Idle, Jump, Run1, Run2, Run3, Run4, } const ANIMS: &[Animation] = &[ Animation { loops: false, frames: Frames { tile_offs: 64, len: 2, duration: 150, }, }, Animation { loops: false, frames: Frames { tile_offs: 736, len: 2, duration: 150, }, }, Animation { loops: true, frames: Frames { tile_offs: 0, len: 4, duration: 70, }, }, Animation { loops: true, frames: Frames { tile_offs: 672, len: 4, duration: 35, }, }, Animation { loops: true, frames: Frames { tile_offs: 128, len: 8, duration: 70, }, }, Animation { loops: true, frames: Frames { tile_offs: 256, len: 8, duration: 70, }, }, Animation { loops: true, frames: Frames { tile_offs: 384, len: 8, duration: 70, }, }, Animation { loops: true, frames: Frames { tile_offs: 512, len: 8, duration: 70, }, }, ]; pub struct AnimState { curr_anim: Anim, frames_left: u32, curr_frame: u16, } impl AnimState { pub const fn new() -> AnimState { let frames_left = ANIMS[0].frames.duration; AnimState { curr_anim: Anim::Idle, frames_left, curr_frame: 0, } } pub fn maybe_set_anim(&mut self, id: Anim) { if self.curr_anim != id { self.set_anim(id); } } pub fn set_anim(&mut self, id: Anim) { self.curr_anim = id; self.frames_left = ANIMS[id as usize].frames.duration; self.curr_frame = 0; } pub fn get_anim(&self) -> Anim { return self.curr_anim; } pub fn set_anim_keep_frame(&mut self, id: Anim) { self.curr_anim = id; } pub fn update(&mut self, frames: u32) { if self.frames_left <= frames { self.curr_frame += 1; if self.curr_frame >= ANIMS[self.curr_anim as usize].frames.len { if ANIMS[self.curr_anim as usize].loops { self.curr_frame = 0; } else { self.curr_frame = ANIMS[self.curr_anim as usize].frames.len - 1; } } self.frames_left = ANIMS[self.curr_anim as usize].frames.duration; } self.frames_left -= frames; } pub fn get_sprite(&self, sprite: &Sprite) -> Sprite { let tile_offs = ANIMS[self.curr_anim as usize].frames.tile_offs + self.curr_frame * 16; let mut s = sprite.clone(); let _ = s .flags_mut() .set_tile_index(tiles::SONK_TILE_OFFSET + tile_offs); return s; } } PK!misc-mega-rust-1/game/src/flag.rsuse crate::sonk::Sonk; use crate::tiles; use megarust::*; pub struct Flag { pub id: u8, pub x: u16, pub y: u16, pub sprite: Sprite, } impl Flag { pub fn new(id: u8, x: u16, y: u16) -> Self { let sprite = Sprite { size: SpriteSize::Size2x2, x: x, y: y, link: 0, flags: TileFlags::for_tile(tiles::FLAG_TILE_OFFSET, Palette::B), }; Flag { id, x, y, sprite } } pub fn update(&mut self, sonk: &Sonk, frame: u16) -> bool { self.update_anim(frame); return self.colliding(sonk); } pub fn render(&mut self, renderer: &mut TargetRenderer) { renderer.add_sprite(self.sprite.clone()).unwrap(); } fn colliding(&self, sonk: &Sonk) -> bool { if sonk.damaged { return false; } sonk.sprite.x + 8 < self.x + 14 && sonk.sprite.x + 16 > self.x + 1 && sonk.sprite.y + 8 < self.y + 2 && sonk.sprite.y + 32 > self.y } fn update_anim(&mut self, frame: u16) { let tile = tiles::FLAG_TILE_OFFSET + ((frame % 48) / 8) * 4; let _ = self.sprite.flags_mut().set_tile_index(tile); } } PKBrg_!misc-mega-rust-1/game/src/game.rsuse crate::flag::Flag; use crate::map::Map; use crate::palettes; use crate::sonk::Sonk; use crate::spike::Spike; use crate::tiles; use crate::wasp::Wasp; use heapless::Vec; use megarust::*; extern "C" { fn _start() -> !; } #[no_mangle] static mut GOT_FLAG: u8 = b'0'; struct YouWin { frame: u16, current_palette: [u16; 16], } impl YouWin { const WIN_COLORS: [u16; 6] = [0x00F, 0x0FF, 0x0F0, 0xFF0, 0xF00, 0xF0F]; const DEFAULT_PALETTE: [u16; 16] = [ 0x000, 0xFFF, 0xF00, 0x0F0, 0x00B, 0xFF0, 0xF0F, 0x0FF, 0x666, 0xBBB, 0x800, 0x080, 0x008, 0x880, 0x808, 0x088, ]; pub(crate) fn new(id: u8, vdp: &mut impl Vdp) -> Self { vdp.wait_for_vblank(); unsafe { vdp.reset_state(); } vdp.set_plane_size(ScrollSize::Cell64, ScrollSize::Cell32); vdp.set_h_scroll(0, &[0, 0]); vdp.set_v_scroll(0, &[0, 0]); DEFAULT_FONT_1X1.load(vdp); vdp.set_palette(Palette::A, &Self::DEFAULT_PALETTE); vdp.set_background(Palette::A, 0); let txt = &[ b'Y', b'o', b'u', b' ', b'g', b'o', b't', b' ', b'f', b'l', b'a', b'g', b' ', id, b'!', ]; DEFAULT_FONT_1X1.blit_text_bytes_to_plane(Plane::A, vdp, txt, 14 * 64 + 12); unsafe { GOT_FLAG = id; } Self { frame: 0, current_palette: Self::DEFAULT_PALETTE, } } pub(crate) fn update(&mut self) { self.frame += 1; for i in 1..16 { self.current_palette[i] = Self::WIN_COLORS[(i + (self.frame as usize) / 10) % Self::WIN_COLORS.len()]; } } pub(crate) fn render(&mut self, vdp: &mut impl Vdp) { vdp.set_palette(Palette::A, &self.current_palette); } } pub struct Game { pub vdp: V, renderer: R, pub controller: C, pub frame: u16, sonk: Sonk, flags: Vec, wasps: Vec, spikes: Vec, map: Map, win_scene: Option, } impl Game { pub fn new( mut vdp: TargetVdp, renderer: TargetRenderer, controller: TargetControllers, ) -> Self { vdp.enable_interrupts(false, true, false); vdp.set_scroll_base(0xA800); vdp.set_sprite_address(0xBC00); vdp.set_plane_b_address(0xC000); vdp.set_plane_a_address(0xE000); vdp.set_window_base(0xF000); vdp.enable_display(true); vdp.set_plane_size(ScrollSize::Cell64, ScrollSize::Cell32); vdp.set_scroll_mode(HScrollMode::FullScroll, VScrollMode::FullScroll); vdp.set_h_scroll(0, &[0, 0]); vdp.set_v_scroll(0, &[0, 0]); palettes::init(&mut vdp); tiles::init(&mut vdp); let map = Map::new(); map.load_bg(&mut vdp); let mut flags = Vec::new(); flags .push(Flag::new(b'A', 4929, 672)) .map_err(|_| "onoez") .unwrap(); flags .push(Flag::new(b'B', 2911, 136)) .map_err(|_| "onoez") .unwrap(); Game { vdp, renderer, controller, frame: 0, sonk: Sonk::new(), flags, wasps: Vec::new(), spikes: Vec::new(), map, win_scene: None, } } pub fn update(&mut self) { self.controller.update(); if let Some(scene) = self.win_scene.as_mut() { scene.update(); } else { self.frame = self.frame.wrapping_add(1); self.sonk .update(&self.map, &mut self.vdp, &mut self.controller, self.frame); self.wasps .retain(|w| Wasp::on_screen(w.sprite.x as i16, w.sprite.y as i16)); self.spikes .retain(|w| Spike::on_screen(w.sprite.x as i16, w.sprite.y as i16)); for flag in &mut self.flags.iter_mut() { if flag.update(&self.sonk, self.frame) { self.win_scene = Some(YouWin::new(flag.id, &mut self.vdp)); return; } } for wasp in &mut self.wasps.iter_mut() { wasp.update(&mut self.sonk); } for spike in &mut self.spikes.iter_mut() { spike.update(&mut self.sonk, self.frame); } self.update_camera(); } } pub fn draw(&mut self) { self.renderer.clear(); if let Some(scene) = self.win_scene.as_mut() { scene.render(&mut self.vdp); } else { self.sonk.render(self.frame, &mut self.renderer); for flag in &mut self.flags.iter_mut() { flag.render(&mut self.renderer); } for wasp in &mut self.wasps.iter_mut() { wasp.render(&mut self.renderer); } for spike in &mut self.spikes.iter_mut() { spike.render(&mut self.renderer); } } self.renderer.render(&mut self.vdp); // vsync self.vdp.wait_for_vblank(); } fn update_camera(&mut self) { let mut dx = 0i16; if self.sonk.speed_x > 0 && self.sonk.sprite.x > 128 + 250 - 32 { dx = self.sonk.sprite.x as i16 - (128 + 250 - 32); } else if self.sonk.speed_x < 0 && self.sonk.sprite.x < 128 + 70 { dx = self.sonk.sprite.x as i16 - (128 + 70); } dx = self.map.scroll_bg_x(&mut self.vdp, dx); let mut dy = 0i16; if self.sonk.speed_y > 0 && self.sonk.sprite.y > 128 + 154 - 32 { dy = self.sonk.sprite.y as i16 - (128 + 154 - 32); } else if self.sonk.speed_y < 0 && self.sonk.sprite.y < 128 + 70 { dy = self.sonk.sprite.y as i16 - (128 + 70); } dy = self.map.scroll_bg_y(&mut self.vdp, dy); self.sonk.sprite.x = (self.sonk.sprite.x as i16 - dx).min(320 + 128 + 64).max(64) as u16; self.sonk.sprite.y = (self.sonk.sprite.y as i16 - dy).min(224 + 128 + 64).max(64) as u16; for flag in &mut self.flags.iter_mut() { flag.x = (flag.x as i16 - dx) as u16; flag.y = (flag.y as i16 - dy) as u16; flag.sprite.x = flag.x.min(320 + 128 + 64).max(64); flag.sprite.y = flag.y.min(224 + 128 + 64).max(64); } for wasp in &mut self.wasps.iter_mut() { wasp.sprite.x = (wasp.sprite.x as i16 - dx) as u16; wasp.sprite.y = (wasp.sprite.y as i16 - dy) as u16; } self.map.add_new_wasps(dx, dy, &mut self.wasps); for spike in &mut self.spikes.iter_mut() { spike.sprite.x = (spike.sprite.x as i16 - dx) as u16; spike.sprite.y = (spike.sprite.y as i16 - dy) as u16; } self.map.add_new_spikes(dx, dy, &mut self.spikes); } } #[no_mangle] pub extern "C" fn game_main() -> ! { let (vdp, renderer, controller) = init_hardware(); let mut game = Game::new(vdp, renderer, controller); loop { game.update(); game.draw(); } } PK,, misc-mega-rust-1/game/src/lib.rs#![no_std] mod anim; mod flag; pub mod game; mod map; mod map_data; mod palettes; mod physics; mod sonk; mod spike; mod tiles; mod wasp; pub use game::Game; PK Map { Map { scroll_x: 0, scroll_y: 0, } } pub fn load_bg(&self, vdp: &mut TargetVdp) { // #[expect(clippy::cast_possible_truncation)] for y in 0..28 { let tiles_a = &mut [TileFlags::new(); 40]; let tiles_b = &mut [TileFlags::new(); 40]; for x in 0..40 { let tile_index_a = map_data::LAYER_A[x + y * map_data::W]; if tile_index_a != 0 { tiles_a[x] = TileFlags::for_tile(tiles::MAP_TILE_OFFSET + tile_index_a - 1, Palette::D); } let tile_index_b = map_data::LAYER_B[x + y * map_data::W]; if tile_index_b != 0 { tiles_b[x] = TileFlags::for_tile(tiles::MAP_TILE_OFFSET + tile_index_b - 1, Palette::D); } } vdp.set_plane_tiles(Plane::A, y as u16 * 64 as u16, tiles_a.as_slice()); vdp.set_plane_tiles(Plane::B, y as u16 * 64 as u16, tiles_b.as_slice()); } } pub fn scroll_bg_x(&mut self, vdp: &mut TargetVdp, dx: i16) -> i16 { let prev_scroll_x = self.scroll_x; let base = if dx > 0 { 7 } else { 0 }; let prev_tile_start = (base - self.scroll_x) / 8; self.scroll_x = (self.scroll_x - dx) .max(map_data::W as i16 * -8 + 320) .min(0); let new_tile_start = (base - self.scroll_x) / 8; let d_cols = (new_tile_start - prev_tile_start).abs(); let y_tile_start = -self.scroll_y / 8; for x in 0..d_cols { let map_x = if dx > 0 { (39 - x + new_tile_start) as usize } else { (x + new_tile_start) as usize }; let vdp_x = (map_x % 64) as u16; for y in 0..29 { let map_y = y + y_tile_start as usize; let vdp_y = (map_y % 32) as u16; let tiles_a = &mut [TileFlags::new()]; let tiles_b = &mut [TileFlags::new()]; let map_index = map_x + map_y * map_data::W; if map_index >= map_data::LAYER_A.len() { continue; } let tile_index_a = map_data::LAYER_A[map_index]; let tile_index_b = map_data::LAYER_B[map_index]; if tile_index_a != 0 { tiles_a[0] = TileFlags::for_tile(tiles::MAP_TILE_OFFSET + tile_index_a - 1, Palette::D); } if tile_index_b != 0 { tiles_b[0] = TileFlags::for_tile(tiles::MAP_TILE_OFFSET + tile_index_b - 1, Palette::D); } vdp.set_plane_tiles(Plane::A, (vdp_x + vdp_y * 64) as u16, tiles_a.as_slice()); vdp.set_plane_tiles(Plane::B, (vdp_x + vdp_y * 64) as u16, tiles_b.as_slice()); } } vdp.set_h_scroll(0, &[self.scroll_x, self.scroll_x]); return prev_scroll_x - self.scroll_x; } pub fn scroll_bg_y(&mut self, vdp: &mut TargetVdp, dy: i16) -> i16 { let prev_scroll_y = self.scroll_y; let base = if dy > 0 { 7 } else { 0 }; let prev_tile_start = (base - self.scroll_y) / 8; self.scroll_y = (self.scroll_y - dy) .max(map_data::H as i16 * -8 + 224) .min(0); let new_tile_start = (base - self.scroll_y) / 8; let d_rows = (new_tile_start - prev_tile_start).abs(); let x_tile_start = -self.scroll_x / 8; for y in 0..d_rows { let map_y = if dy > 0 { (27 - y + new_tile_start) as usize } else { (y + new_tile_start) as usize }; let vdp_y = (map_y % 32) as u16; for x in 0..41 { let map_x = x + x_tile_start as usize; let vdp_x = (map_x % 64) as u16; let tiles_a = &mut [TileFlags::new()]; let tiles_b = &mut [TileFlags::new()]; let map_index = map_x + map_y * map_data::W; if map_index >= map_data::LAYER_A.len() { continue; } let tile_index_a = map_data::LAYER_A[map_index]; let tile_index_b = map_data::LAYER_B[map_index]; if tile_index_a != 0 { tiles_a[0] = TileFlags::for_tile(tiles::MAP_TILE_OFFSET + tile_index_a - 1, Palette::D); } if tile_index_b != 0 { tiles_b[0] = TileFlags::for_tile(tiles::MAP_TILE_OFFSET + tile_index_b - 1, Palette::D); } vdp.set_plane_tiles(Plane::A, (vdp_x + vdp_y * 64) as u16, tiles_a.as_slice()); vdp.set_plane_tiles(Plane::B, (vdp_x + vdp_y * 64) as u16, tiles_b.as_slice()); } } vdp.set_v_scroll(0, &[-self.scroll_y, -self.scroll_y]); return prev_scroll_y - self.scroll_y; } pub fn add_new_wasps(&self, dx: i16, dy: i16, wasps: &mut Vec) { for (x, y) in map_data::WASPS { let x = *x + self.scroll_x + 128; let y = *y + self.scroll_y + 128; if Wasp::off_screen(x + dx, y + dy) && Wasp::on_screen(x, y) { wasps .push(Wasp::new(x as u16, y as u16)) .map_err(|_| "too many waspy bois :C") .unwrap(); } } } // Generics are hard, let's do code duplication pub fn add_new_spikes(&self, dx: i16, dy: i16, spikes: &mut Vec) { for (x, y) in map_data::SPIKES { let x = *x + self.scroll_x + 128; let y = *y + self.scroll_y + 128; if Spike::off_screen(x + dx, y + dy) && Spike::on_screen(x, y) { spikes .push(Spike::new(x as u16, y as u16)) .map_err(|_| "too many spikes") .unwrap(); } } } } PKTT%misc-mega-rust-1/game/src/map_data.rspub const W: usize = 800; pub const H: usize = 80; pub const WASPS: &[(i16, i16)] = &[ (488, 104), (752, 224), (1712, 352), (2984, 128), (3424, 184), (4376, 400), (5000, 504), (5656, 200), ]; pub const SPIKES: &[(i16, i16)] = &[ (1864, 416), (2272, 280), (2272, 224), (3864, 440), (1864, 336), (5424, 352), (1304, 456), (4832, 528), (4760, 528), (4796, 504), (4776, 504), (4816, 504), ]; pub const LAYER_B: &[u16] = &[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 1, 2, 3, 4, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 27, 28, 29, 30, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 56, 53, 29, 28, 56, 53, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 30, 27, 28, 29, 30, 27, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 30, 79, 80, 81, 82, 27, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 56, 1, 3, 3, 55, 53, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 183, 184, 185, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 163, 164, 165, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 158, 159, 160, 161, 162, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 196, 197, 198, 199, 200, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 158, 159, 160, 161, 162, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 27, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 149, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 55, 53, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 55, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 1, 2, 3, 2, 3, 4, 1, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 53, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 30, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 30, 79, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 30, 54, 82, 79, 80, 81, 80, 81, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 56, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 30, 27, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 149, 71, 92, 93, 94, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 3, 3, 55, 183, 184, 185, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 56, 53, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 1, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 53, 28, 28, 30, 27, 28, 187, 188, 189, 190, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 193, 194, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 93, 94, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 82, 79, 82, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 1, 3, 3, 55, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, 29, 30, 53, 28, 28, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 2, 3, 2, 3, 4, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 163, 164, 165, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 149, 71, 0, 0, 0, 0, 0, 0, 92, 93, 94, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 27, 28, 29, 28, 29, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 95, 81, 80, 81, 95, 96, 97, 0, 0, 0, 0, 157, 158, 159, 160, 161, 162, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 82, 79, 80, 81, 80, 81, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 95, 81, 80, 81, 95, 96, 97, 0, 0, 0, 0, 0, 0, 145, 146, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 81, 82, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 55, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 28, 28, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 3, 55, 3, 55, 1, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 1, 2, 3, 2, 3, 2, 3, 4, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 28, 30, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 30, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 163, 164, 165, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 80, 82, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 95, 96, 97, 0, 0, 0, 0, 0, 0, 145, 146, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 55, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 183, 184, 185, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 187, 188, 189, 190, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 193, 194, 195, 184, 185, 186, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 1, 3, 3, 3, 3, 55, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 175, 1, 2, 3, 4, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 196, 197, 198, 199, 200, 201, 92, 93, 94, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, 29, 30, 53, 28, 28, 28, 28, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, 29, 30, 27, 28, 29, 30, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 3, 3, 3, 55, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 163, 164, 165, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 173, 174, 163, 164, 165, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 53, 28, 28, 28, 30, 27, 44, 19, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 158, 159, 160, 161, 162, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 95, 96, 97, 0, 0, 0, 0, 157, 158, 159, 160, 161, 162, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 30, 27, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 28, 28, 28, 30, 53, 29, 28, 69, 70, 18, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 81, 80, 81, 80, 81, 82, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 149, 71, 0, 0, 0, 0, 0, 0, 0, 0, 92, 93, 94, 80, 81, 80, 81, 82, 54, 80, 80, 80, 82, 79, 80, 81, 80, 81, 95, 96, 97, 0, 0, 0, 92, 93, 94, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 82, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 1, 3, 3, 3, 3, 3, 3, 3, 3, 55, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 147, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 14, 41, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 68, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 148, 123, 0, 0, 0, 0, 0, 0, 0, 0, 120, 147, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 149, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 93, 94, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 149, 71, 0, 0, 0, 0, 0, 0, 145, 146, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 27, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 56, 1, 2, 3, 4, 1, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 53, 28, 28, 28, 28, 30, 27, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 3, 3, 55, 1, 2, 3, 4, 53, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 28, 28, 28, 28, 30, 53, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 56, 1, 3, 3, 3, 3, 3, 3, 55, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 1, 3, 3, 3, 3, 55, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 30, 53, 28, 28, 28, 28, 30, 27, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 30, 27, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 56, 53, 28, 28, 28, 28, 30, 53, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 56, 53, 29, 28, 29, 28, 29, 28, 29, 28, 29, 28, 29, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 82, 54, 80, 80, 80, 80, 82, 79, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 82, 79, 80, 81, 80, 81, 80, 81, 80, 81, 80, 81, 80, ]; pub const LAYER_A: &[u16] = &[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 139, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 106, 106, 106, 106, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 132, 132, 132, 132, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 136, 135, 135, 135, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 0, 0, 111, 112, 113, 112, 113, 112, 112, 113, 112, 114, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 0, 0, 137, 138, 139, 138, 139, 138, 138, 139, 138, 140, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 0, 0, 0, 0, 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 57, 58, 0, 0, 0, 0, 108, 109, 110, 0, 0, 0, 0, 0, 0, 143, 144, 0, 0, 0, 0, 143, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 86, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 24, 25, 26, 176, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 179, 128, 129, 130, 0, 0, 0, 0, 0, 111, 112, 113, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 135, 135, 136, 135, 135, 136, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 111, 112, 113, 114, 0, 0, 5, 6, 0, 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 0, 0, 0, 0, 0, 59, 60, 24, 25, 26, 176, 50, 51, 52, 202, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 205, 154, 155, 156, 179, 128, 129, 130, 0, 137, 138, 139, 138, 139, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 108, 109, 110, 0, 0, 0, 143, 144, 0, 0, 0, 0, 0, 0, 83, 84, 85, 84, 85, 86, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 137, 138, 139, 140, 0, 0, 143, 144, 0, 143, 144, 0, 0, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 50, 51, 52, 202, 76, 77, 78, 203, 135, 135, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 136, 135, 135, 136, 136, 135, 135, 136, 135, 135, 136, 135, 204, 180, 181, 182, 205, 154, 155, 156, 106, 106, 106, 106, 106, 106, 106, 106, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 204, 180, 181, 182, 132, 132, 132, 132, 132, 132, 132, 132, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 135, 136, 135, 135, 135, 135, 136, 135, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 135, 135, 136, 135, 135, 136, 135, 135, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 135, 135, 74, 75, 48, 49, 22, 23, 0, 0, 0, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 106, 106, 106, 106, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 136, 135, 135, 136, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 136, 135, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 143, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 132, 132, 132, 132, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 135, 135, 136, 135, 135, 136, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 106, 106, 179, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 136, 135, 135, 136, 136, 135, 135, 136, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 132, 132, 205, 154, 155, 156, 179, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 136, 135, 135, 136, 204, 180, 181, 182, 205, 154, 155, 156, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 104, 207, 102, 204, 180, 181, 182, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 106, 106, 106, 106, 106, 106, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 132, 132, 132, 132, 132, 132, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 106, 106, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 135, 135, 136, 135, 135, 136, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 132, 132, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 5, 6, 0, 7, 8, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 106, 106, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 135, 135, 136, 135, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 143, 144, 0, 143, 144, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 132, 132, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 143, 144, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 106, 106, 106, 106, 106, 106, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 136, 135, 135, 136, 135, 135, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 106, 106, 106, 106, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 132, 132, 132, 132, 132, 132, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 132, 132, 132, 132, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 136, 135, 135, 136, 135, 135, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 33, 34, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 136, 135, 136, 135, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 143, 144, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 106, 106, 106, 106, 106, 106, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 132, 132, 132, 132, 132, 132, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 135, 135, 136, 135, 136, 135, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 106, 106, 106, 106, 106, 106, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 132, 132, 132, 132, 132, 132, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 135, 135, 136, 135, 135, 136, 135, 135, 74, 75, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 0, 108, 109, 110, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 117, 118, 0, 7, 8, 0, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 106, 106, 106, 106, 106, 106, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 0, 143, 144, 0, 143, 144, 0, 143, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 132, 132, 132, 132, 132, 132, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 179, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 135, 136, 135, 136, 135, 135, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 205, 154, 155, 156, 179, 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, 139, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 135, 204, 180, 181, 182, 205, 154, 155, 156, 179, 128, 129, 130, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 106, 106, 106, 106, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 106, 106, 106, 106, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 204, 180, 181, 182, 205, 154, 155, 156, 179, 128, 129, 130, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 132, 132, 132, 132, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 132, 132, 132, 132, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 106, 106, 106, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 204, 180, 181, 182, 205, 154, 155, 156, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 83, 84, 85, 84, 85, 86, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 135, 135, 136, 135, 135, 135, 74, 75, 48, 49, 22, 23, 0, 0, 0, 31, 32, 0, 0, 0, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 135, 135, 136, 135, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 132, 132, 132, 48, 49, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 204, 180, 181, 182, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 83, 84, 85, 84, 85, 85, 85, 86, 0, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 0, 57, 58, 0, 24, 25, 26, 176, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 136, 135, 135, 135, 136, 74, 75, 48, 49, 22, 23, 0, 0, 111, 112, 114, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 207, 102, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 106, 106, 106, 106, 50, 51, 52, 202, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 57, 58, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 22, 23, 137, 138, 140, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 132, 132, 132, 132, 76, 77, 78, 203, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 106, 106, 106, 106, 106, 106, 106, 106, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 48, 49, 106, 106, 106, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 135, 136, 135, 136, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 136, 135, 135, 136, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 132, 132, 132, 132, 132, 132, 132, 132, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 74, 75, 132, 132, 132, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 135, 135, 136, 135, 136, 135, 135, 136, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 135, 136, 135, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 64, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 117, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 143, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 20, 21, 46, 47, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 141, 142, 0, 0, 0, 0, 20, 21, 46, 47, 72, 73, 135, 135, 136, 135, 135, 136, 135, 135, 135, 136, 124, 125, 99, 0, 0, 0, 0, 0, 0, 0, 0, 100, 126, 152, 136, 135, 135, 135, 136, 135, 135, 135, 136, 136, 135, 135, 136, 135, 136, 135, 135, 136, 135, 135, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 59, 60, 0, 0, 20, 21, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 125, 99, 0, 0, 0, 0, 0, 0, 100, 126, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 46, 47, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 124, 125, 106, 106, 106, 106, 106, 106, 126, 152, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 72, 73, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, 132, 132, 132, 132, 132, 132, 127, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 135, 135, 136, 136, 135, 135, 136, 135, 135, 135, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 135, 135, 136, 135, 135, 136, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; PKކ&&%misc-mega-rust-1/game/src/palettes.rsuse megarust::*; pub fn init(vdp: &mut impl Vdp) { // Sonk vdp.set_palette( Palette::A, &[ 4000, 273, 529, 802, 1075, 832, 834, 867, 128, 1654, 1157, 162, 1191, 1208, 3276, 4095, ], ); // Wasp, spike, flag vdp.set_palette( Palette::B, &[ 0, 529, 802, 292, 1331, 2150, 2986, 943, 1759, 3821, 0, 1092, 1111, 882, 2457, 1002, ], ); // Wasp iz dead :C vdp.set_palette( Palette::C, &[ 0, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 4095, ], ); // Map vdp.set_palette( Palette::D, &[ 0, 0, 0, 5, 80, 2640, 1365, 90, 95, 160, 2730, 175, 4085, 250, 1535, 4095, ], ); } PKp$misc-mega-rust-1/game/src/physics.rsuse crate::map::Map; use megarust::*; pub fn get_ground_y(mut ground_x: i16, map: &Map, vdp: &mut TargetVdp) -> u16 { ground_x = ground_x.max(0).min(319); let (ground_tile_index, ground_tile_y) = find_ground_tile(ground_x, map, vdp); if ground_tile_index == 0 { return 224; } let mut ground_y = (ground_tile_y * 8 + map.scroll_y % 8) as u16; ground_y += find_first_solid_pixel_y(ground_tile_index, ground_x, map, vdp); ground_y } fn find_ground_tile(ground_x: i16, map: &Map, vdp: &mut TargetVdp) -> (u16, i16) { let map_x = (ground_x - map.scroll_x) / 8; let vdp_x = (map_x % 64) as u16; let mut tile_y = 41; let mut tile_index = 0; for y in 0..40 { let vdp_y = ((y - map.scroll_y / 8) % 32) as u16; let tile = vdp.get_plane_tile(Plane::B, (vdp_x + vdp_y * 64) as u16); tile_index = tile.tile_index(); if tile.tile_index() != 0 { tile_y = y; break; } } (tile_index, tile_y) } fn find_first_solid_pixel_y(tile_index: u16, ground_x: i16, map: &Map, vdp: &mut TargetVdp) -> u16 { let tile_data = vdp.get_tile(tile_index); let pixel_x = (ground_x - map.scroll_x) % 8; for pixel_y in 0..8 { // 2 colors stored in 1 byte let mut c = tile_data.0[(pixel_x / 2) as usize + pixel_y * 4]; if pixel_x % 2 == 0 { c &= 0xf; } else { c >>= 4; } if c != 0 { return pixel_y as u16; } } return 8; } PK!misc-mega-rust-1/game/src/sonk.rsuse crate::anim::{Anim, AnimState}; use crate::map::Map; use crate::physics; use crate::tiles; use megarust::*; pub struct Sonk { pub sprite: Sprite, anim_state: AnimState, pub speed_x: i16, pub speed_y: i16, on_ground: bool, pub damaged: bool, // Direction to fall to during the damage sequence. fall_left: bool, } impl Sonk { pub fn new() -> Self { let sprite = Sprite { size: SpriteSize::Size4x4, x: 248, y: 256, link: 0, flags: TileFlags::for_tile(tiles::SONK_TILE_OFFSET, Palette::A), }; Sonk { sprite, anim_state: AnimState::new(), speed_x: 0, speed_y: 0, on_ground: true, damaged: false, fall_left: false, } } pub fn update( &mut self, map: &Map, vdp: &mut TargetVdp, controller: &mut TargetControllers, frame: u16, ) { let input = controller .controller_state(0) .expect("Can't controller state"); if !self.damaged { if input.is_pressed(Button::Left) { if self.speed_x > -120 { self.speed_x -= 2; } self.sprite.flags_mut().set_flip_h(true); } else if input.is_pressed(Button::Right) { if self.speed_x < 120 { self.speed_x += 2; } self.sprite.flags_mut().set_flip_h(false); } } if self.on_ground { self.damaged = false; if input.just_pressed(Button::Up) { self.on_ground = false; self.speed_y = -30; } else { self.speed_y = 0; } } else { self.speed_y = (self.speed_y + 1).min(100); } if self.speed_x.abs() > 0 { self.speed_x -= self.speed_x.signum(); } self.mov(frame); self.ground_collision_check(map, vdp); self.update_anim( input.is_pressed(Button::Left), input.is_pressed(Button::Right), ); } pub fn is_rolling(&self) -> bool { return self.anim_state.get_anim() == Anim::Jump; } pub fn on_hit(&mut self, fall_left: bool) { self.damaged = true; self.fall_left = fall_left; self.sprite.flags_mut().set_flip_h(!fall_left); self.on_ground = false; self.speed_x = 0; self.speed_y = -30; } pub fn render(&mut self, frame: u16, renderer: &mut TargetRenderer) { if self.damaged && (frame / 5) % 2 == 0 { // Blink effect return; } renderer .add_sprite(self.anim_state.get_sprite(&self.sprite)) .unwrap(); } fn mov(&mut self, frame: u16) { self.sprite.x = (self.sprite.x as i32 + (self.speed_x / 10) as i32) as u16; let decimal = self.speed_x % 10; if frame % 10 <= decimal.abs() as u16 { self.sprite.x = (self.sprite.x as i32 + decimal.signum() as i32) as u16; } self.sprite.y = (self.sprite.y as i32 + (self.speed_y / 10) as i32) as u16; let decimal = self.speed_y % 10; if frame % 10 <= decimal.abs() as u16 { self.sprite.y = (self.sprite.y as i32 + decimal.signum() as i32) as u16; } if self.damaged { if self.fall_left { self.sprite.x -= 2; } else { self.sprite.x += 2; } } } fn ground_collision_check(&mut self, map: &Map, vdp: &mut TargetVdp) { let mid_x = self.sprite.x as i16 + 16 - 128; let ground_y = physics::get_ground_y(mid_x, map, vdp); if self.on_ground || self.sprite.y - 128 + 32 >= ground_y { self.speed_y = ground_y as i16 + 128 - 32 - self.sprite.y as i16; self.sprite.y = ground_y + 128 - 32; self.on_ground = true; } else { self.on_ground = false; } } fn update_anim(&mut self, left_pressed: bool, right_pressed: bool) { let curr_anim = self.anim_state.get_anim(); let run_anim = curr_anim == Anim::Run1 || curr_anim == Anim::Run2 || curr_anim == Anim::Run3 || curr_anim == Anim::Run4; if run_anim { self.anim_state .update((self.speed_x.abs() / 2).min(70) as u32); } else { self.anim_state.update(10); } if self.damaged { self.anim_state.maybe_set_anim(Anim::Damage); } else if !self.on_ground { self.anim_state.maybe_set_anim(Anim::Jump); } else if self.speed_x == 0 { self.anim_state.maybe_set_anim(Anim::Idle); } else if self.speed_x > 0 && left_pressed { self.anim_state.maybe_set_anim(Anim::Brake); } else if self.speed_x < 0 && right_pressed { self.anim_state.maybe_set_anim(Anim::Brake); } else { let new_anim = if self.speed_x.abs() < 30 { Anim::Run1 } else if self.speed_x.abs() < 60 { Anim::Run2 } else if self.speed_x.abs() < 90 { Anim::Run3 } else { Anim::Run4 }; if !run_anim { self.anim_state.set_anim(new_anim); } else { self.anim_state.set_anim_keep_frame(new_anim); } } } } PK\KM"misc-mega-rust-1/game/src/spike.rsuse crate::sonk::Sonk; use crate::tiles; use megarust::*; pub struct Spike { pub sprite: Sprite, } impl Spike { pub fn new(x: u16, y: u16) -> Self { let sprite = Sprite { size: SpriteSize::Size3x3, x: x, y: y, link: 0, flags: TileFlags::for_tile(tiles::SPIKE_TILE_OFFSET, Palette::B), }; Spike { sprite } } pub fn update(&mut self, sonk: &mut Sonk, frame: u16) { self.attack(sonk); self.update_anim(frame); } pub fn render(&mut self, renderer: &mut TargetRenderer) { renderer.add_sprite(self.sprite.clone()).unwrap(); } pub fn off_screen(x: i16, y: i16) -> bool { x + 19 < 128 || x > 128 + 320 || y + 19 < 128 || y > 128 + 224 } pub fn on_screen(x: i16, y: i16) -> bool { x + 19 >= 128 && x <= 128 + 320 && y + 19 >= 128 && y <= 128 + 224 } fn attack(&mut self, sonk: &mut Sonk) { if sonk.sprite.x + 8 >= self.sprite.x + 17 || sonk.sprite.x + 16 <= self.sprite.x + 1 || sonk.sprite.y + 8 >= self.sprite.y + 17 || sonk.sprite.y + 32 <= self.sprite.y + 1 { // Not colliding return; } sonk.on_hit(sonk.sprite.x + 6 < self.sprite.x); } fn update_anim(&mut self, frame: u16) { let tile = tiles::SPIKE_TILE_OFFSET + if frame % 240 < 220 { 0 } else if frame % 240 < 225 { 9 } else if frame % 240 < 235 { 18 } else { 9 }; let _ = self.sprite.flags_mut().set_tile_index(tile); } } PKPTRR"misc-mega-rust-1/game/src/tiles.rsuse megarust::*; pub const SONK_TILE_OFFSET: u16 = 1; pub const WASP_TILE_OFFSET: u16 = 769; pub const SPIKE_TILE_OFFSET: u16 = 793; pub const FLAG_TILE_OFFSET: u16 = 820; pub const MAP_TILE_OFFSET: u16 = 844; pub const TILES: &[Tile] = &[ // Sonk Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 36, 32, 0, 19, 46, 66, 0, 19, 47, 244, 32, 19, 46, 255, 65, 18]), Tile([36, 255, 227, 18, 2, 255, 244, 18, 2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68]), Tile([0, 19, 52, 79, 0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 36, 66, 0, 2, 65, 46, 0, 35, 153, 158, 0, 33, 239, 249]), Tile([0, 1, 238, 233, 0, 0, 17, 23, 0, 0, 36, 49, 0, 1, 87, 16, 0, 159, 255, 144, 0, 158, 255, 249, 0, 23, 119, 197, 0, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0]), Tile([33, 119, 112, 0, 37, 204, 197, 0, 92, 117, 80, 0, 124, 204, 197, 0, 60, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0]), Tile([255, 255, 226, 0, 254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 51, 32, 0, 0, 255, 249, 0, 0, 238, 249, 33, 17, 238, 147, 25, 238]), Tile([92, 17, 25, 153, 117, 119, 17, 17, 17, 18, 49, 0, 0, 17, 49, 0, 0, 30, 225, 16, 0, 25, 238, 225, 0, 21, 85, 87, 0, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0]), Tile([16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 1, 46, 66, 0, 1, 47, 244, 32, 19, 46, 255, 65, 18]), Tile([36, 255, 227, 18, 2, 255, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79]), Tile([0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 36, 66, 0, 2, 65, 46, 0, 35, 16, 46, 0, 34, 153, 158, 0, 1, 239, 249]), Tile([0, 1, 238, 233, 0, 0, 17, 17, 0, 2, 67, 16, 0, 21, 113, 0, 9, 255, 249, 0, 9, 239, 255, 144, 1, 119, 124, 80, 1, 17, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 0, 0, 35, 16, 0, 0]), Tile([39, 119, 112, 0, 124, 204, 197, 0, 199, 117, 80, 0, 53, 124, 197, 0, 79, 87, 204, 80, 241, 65, 17, 0, 251, 239, 17, 0, 255, 255, 226, 0]), Tile([254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 51, 32, 0, 0, 255, 249, 0, 0, 238, 249, 1, 17, 238, 146, 25, 238, 124, 19, 25, 153]), Tile([117, 113, 33, 17, 17, 87, 16, 0, 0, 19, 16, 0, 0, 18, 49, 0, 0, 30, 225, 16, 0, 25, 238, 225, 0, 21, 85, 87, 0, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 36, 32, 0, 19, 46, 66, 0, 19, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18]), Tile([2, 255, 244, 18, 2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79]), Tile([0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 2, 66, 0, 0, 36, 30, 0, 2, 57, 153, 0, 2, 30, 255, 0, 14, 30, 238]), Tile([0, 0, 225, 17, 0, 0, 36, 113, 0, 2, 67, 16, 0, 21, 113, 0, 9, 255, 249, 0, 9, 239, 255, 144, 1, 119, 124, 80, 1, 17, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 33, 119, 112, 0]), Tile([37, 204, 197, 0, 92, 117, 80, 0, 124, 204, 197, 0, 76, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0]), Tile([254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 51, 32, 0, 0, 255, 249, 17, 16, 238, 249, 158, 225, 158, 145, 153, 145, 156, 17, 17, 16]), Tile([117, 113, 0, 0, 17, 83, 16, 0, 0, 19, 16, 0, 0, 18, 49, 0, 0, 30, 225, 16, 0, 25, 238, 225, 0, 21, 85, 87, 0, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 36, 33, 49, 2, 228, 33, 51, 2, 255, 66, 51, 2, 255, 65, 35]), Tile([2, 239, 227, 18, 2, 79, 244, 18, 0, 47, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68]), Tile([0, 19, 52, 79, 0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 2, 66, 0, 0, 36, 30, 0, 2, 57, 153, 0, 2, 30, 255]), Tile([0, 14, 30, 238, 0, 0, 225, 17, 0, 0, 36, 49, 0, 1, 87, 16, 0, 159, 255, 80, 9, 239, 255, 80, 1, 119, 124, 80, 1, 17, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 119, 112, 0]), Tile([37, 204, 197, 0, 124, 117, 80, 0, 199, 204, 197, 0, 71, 119, 204, 80, 66, 81, 17, 0, 79, 67, 32, 0, 241, 68, 48, 0, 251, 239, 17, 0]), Tile([255, 255, 226, 0, 254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 51, 32, 0, 0, 255, 249, 1, 17, 238, 249, 25, 238, 158, 147, 25, 153]), Tile([156, 17, 33, 17, 117, 119, 16, 0, 17, 18, 49, 0, 0, 17, 49, 0, 0, 30, 225, 16, 0, 25, 238, 225, 0, 21, 85, 87, 0, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 1, 113, 0, 0, 1, 81, 0, 0, 1, 81, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1, 49, 0, 0, 1, 51, 0, 0, 1, 51, 0, 0, 7, 51, 0, 0, 124, 114]), Tile([0, 0, 92, 197, 0, 5, 197, 124, 0, 5, 124, 199, 0, 0, 87, 119, 0, 0, 33, 84, 0, 0, 33, 68, 0, 9, 17, 255, 0, 1, 46, 255]), Tile([0, 0, 30, 246, 0, 0, 1, 230, 0, 0, 0, 17, 0, 0, 0, 147, 0, 1, 25, 255, 0, 30, 159, 254, 0, 25, 159, 238, 0, 1, 28, 87]), Tile([0, 1, 53, 204, 80, 0, 21, 124, 197, 17, 50, 71, 127, 146, 68, 49, 124, 249, 67, 16, 23, 207, 145, 0, 23, 124, 16, 0, 17, 85, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 2, 66, 0, 0, 46, 68, 48, 0, 47, 244, 32, 0, 47, 244, 32, 0, 47, 254, 50, 0]), Tile([36, 255, 66, 0, 114, 255, 67, 0, 194, 239, 67, 0, 51, 68, 67, 0, 255, 52, 50, 112, 31, 244, 49, 197, 191, 68, 65, 80, 255, 255, 227, 16]), Tile([111, 238, 49, 0, 190, 227, 16, 0, 17, 17, 0, 0, 50, 36, 32, 0, 254, 33, 66, 0, 238, 153, 147, 32, 233, 255, 225, 32, 121, 238, 225, 0]), Tile([201, 17, 16, 0, 113, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 1, 113, 0, 0, 1, 81, 0, 0, 1, 81, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 19, 16, 0, 0, 19, 50, 0, 0, 1, 115, 0, 0, 7, 199, 0, 0, 5, 197]), Tile([0, 0, 92, 92, 0, 0, 87, 199, 0, 0, 5, 119, 0, 0, 33, 84, 0, 0, 33, 68, 0, 9, 17, 255, 0, 1, 46, 255, 0, 0, 30, 246]), Tile([0, 0, 1, 230, 0, 0, 0, 17, 0, 0, 0, 35, 0, 1, 25, 255, 0, 30, 159, 254, 0, 25, 159, 238, 0, 1, 23, 87, 0, 1, 117, 124]), Tile([0, 1, 117, 199, 80, 19, 36, 193, 197, 19, 36, 49, 127, 146, 68, 16, 124, 249, 67, 16, 23, 207, 145, 0, 23, 124, 16, 0, 17, 85, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 0, 78, 67, 0, 0, 47, 244, 32, 0, 47, 254, 32, 0, 36, 255, 66, 0]), Tile([114, 255, 67, 0, 194, 239, 67, 0, 51, 68, 67, 0, 255, 52, 50, 112, 31, 244, 49, 197, 191, 68, 65, 80, 255, 255, 227, 16, 111, 238, 49, 0]), Tile([190, 227, 16, 0, 17, 17, 0, 0, 50, 66, 0, 0, 254, 20, 32, 0, 233, 153, 50, 0, 159, 254, 18, 0, 158, 238, 16, 0, 17, 17, 0, 0]), Tile([16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 32, 0, 0, 16, 66, 0, 1, 49, 228, 32, 1, 51, 255, 66, 1, 51, 239, 244, 17, 35, 79, 254, 49, 34, 47, 255, 65, 34]), Tile([36, 255, 227, 21, 2, 79, 244, 55, 0, 36, 68, 67, 7, 35, 68, 52, 92, 19, 68, 79, 5, 20, 68, 79, 1, 51, 68, 255, 0, 19, 62, 255]), Tile([0, 1, 51, 239, 0, 0, 17, 17, 0, 0, 36, 35, 0, 2, 65, 255, 0, 35, 153, 158, 0, 33, 239, 249, 0, 1, 238, 233, 0, 0, 17, 28]), Tile([0, 0, 0, 87, 0, 0, 2, 67, 0, 0, 36, 50, 0, 0, 21, 113, 0, 9, 255, 249, 0, 9, 239, 255, 0, 1, 119, 124, 0, 1, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 23, 119, 0, 0, 92, 204, 80, 0]), Tile([199, 85, 0, 0, 204, 204, 80, 0, 199, 124, 197, 0, 245, 17, 16, 0, 20, 67, 0, 0, 190, 241, 16, 0, 255, 254, 32, 0, 233, 225, 0, 0]), Tile([254, 16, 0, 0, 17, 0, 0, 0, 51, 0, 0, 0, 255, 144, 0, 0, 239, 145, 0, 0, 238, 158, 16, 0, 204, 25, 16, 0, 197, 81, 0, 0]), Tile([87, 80, 0, 0, 35, 16, 0, 0, 35, 16, 0, 0, 21, 16, 0, 0, 238, 17, 0, 0, 158, 238, 16, 0, 85, 85, 113, 0, 17, 17, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 16, 0]), Tile([34, 34, 49, 16, 68, 68, 34, 49, 239, 254, 68, 35, 46, 255, 254, 50, 1, 19, 255, 68, 0, 113, 19, 68, 5, 193, 68, 68, 0, 20, 68, 67]), Tile([0, 19, 68, 68, 0, 19, 52, 255, 0, 1, 62, 255, 0, 0, 30, 239, 0, 0, 1, 30, 0, 0, 36, 33, 0, 2, 65, 255, 0, 2, 49, 239]), Tile([2, 33, 153, 158, 14, 65, 239, 249, 0, 81, 238, 233, 5, 204, 17, 28, 92, 207, 242, 52, 87, 254, 228, 51, 23, 233, 147, 49, 21, 144, 1, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 23, 119, 0, 0, 37, 204, 112, 0, 124, 124, 199, 0, 87, 197, 85, 0, 49, 124, 80, 0, 79, 17, 32, 0]), Tile([241, 66, 0, 0, 251, 66, 0, 0, 255, 241, 16, 0, 249, 254, 32, 0, 239, 17, 0, 0, 17, 16, 0, 0, 158, 225, 0, 0, 153, 145, 0, 0]), Tile([145, 16, 0, 0, 23, 49, 0, 0, 18, 49, 0, 0, 81, 81, 0, 0, 46, 225, 16, 0, 25, 238, 225, 0, 21, 85, 87, 16, 17, 17, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 36, 33, 49, 2, 228, 33, 51, 2, 255, 66, 51, 2, 255, 65, 35, 2, 239, 227, 18]), Tile([2, 79, 244, 18, 0, 47, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79]), Tile([0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 36, 35, 0, 2, 66, 63, 0, 1, 49, 255, 0, 9, 153, 238, 0, 30, 255, 151]), Tile([0, 30, 238, 23, 0, 1, 17, 17, 1, 17, 17, 117, 23, 238, 51, 37, 23, 233, 34, 17, 1, 89, 17, 0, 0, 21, 81, 0, 0, 1, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 33, 119, 112, 0]), Tile([37, 204, 197, 0, 92, 117, 80, 0, 124, 204, 197, 0, 60, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0]), Tile([254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 254, 145, 16, 0, 238, 158, 225, 0, 119, 25, 145, 0]), Tile([197, 17, 16, 0, 124, 32, 5, 16, 19, 69, 156, 16, 19, 95, 247, 16, 1, 255, 113, 0, 1, 247, 113, 0, 0, 85, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 36, 32, 0, 19, 46, 66, 0, 19, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18]), Tile([2, 255, 244, 18, 2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79]), Tile([0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 2, 35, 0, 0, 36, 79, 0, 0, 36, 47, 0, 0, 19, 30, 0, 2, 153, 151]), Tile([0, 1, 239, 249, 0, 17, 238, 225, 0, 23, 17, 17, 0, 1, 89, 17, 0, 1, 89, 25, 0, 1, 81, 9, 0, 1, 16, 1, 0, 0, 0, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 33, 119, 112, 0]), Tile([37, 204, 197, 0, 124, 117, 80, 0, 199, 204, 197, 0, 55, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0]), Tile([254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 254, 144, 0, 0, 238, 145, 0, 0, 119, 30, 16, 0]), Tile([197, 153, 16, 0, 124, 81, 0, 0, 52, 32, 0, 0, 119, 80, 0, 0, 255, 153, 0, 0, 239, 255, 144, 0, 119, 119, 197, 0, 17, 17, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 1, 46, 66, 0, 1, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18]), Tile([2, 255, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79, 0, 1, 51, 239]), Tile([0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 0, 35, 0, 0, 2, 66, 0, 0, 2, 66, 0, 0, 1, 52, 0, 2, 33, 41, 0, 14, 68, 30]), Tile([0, 0, 233, 30, 0, 0, 23, 33, 0, 0, 18, 67, 0, 0, 1, 119, 0, 0, 9, 255, 0, 0, 158, 255, 0, 0, 23, 119, 0, 0, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 0, 0, 35, 119, 112, 0, 37, 204, 197, 0]), Tile([124, 117, 80, 0, 199, 204, 197, 0, 55, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0, 254, 158, 16, 0]), Tile([255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 255, 144, 0, 0, 46, 144, 0, 0, 153, 16, 0, 0, 255, 144, 0, 0]), Tile([238, 17, 0, 0, 17, 49, 0, 0, 18, 33, 0, 0, 81, 16, 0, 0, 144, 0, 0, 0, 249, 0, 0, 0, 124, 80, 0, 0, 17, 16, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 2, 0, 0, 1, 36, 32, 0, 19, 46, 66, 0, 19, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18, 2, 255, 244, 18]), Tile([2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79, 0, 1, 51, 239]), Tile([0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 0, 35, 0, 0, 2, 66, 0, 0, 1, 52, 0, 0, 1, 19, 0, 2, 33, 113, 0, 14, 68, 23]), Tile([0, 0, 226, 199, 0, 0, 36, 49, 0, 5, 67, 17, 0, 156, 193, 1, 1, 207, 144, 1, 1, 127, 249, 0, 0, 23, 124, 80, 0, 1, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 33, 0, 0, 0, 39, 119, 112, 0]), Tile([124, 204, 197, 0, 199, 117, 80, 0, 53, 124, 197, 0, 79, 87, 204, 80, 241, 65, 17, 0, 251, 239, 17, 0, 255, 255, 226, 0, 254, 158, 16, 0]), Tile([255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 47, 144, 0, 0, 66, 144, 0, 0, 57, 153, 0, 0, 30, 255, 144, 0]), Tile([30, 238, 16, 0, 49, 17, 0, 0, 119, 16, 0, 0, 238, 16, 0, 0, 94, 225, 0, 0, 21, 87, 16, 0, 1, 17, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 36, 33, 49, 2, 228, 33, 51, 2, 255, 66, 51, 2, 255, 65, 35, 2, 239, 227, 18]), Tile([2, 79, 244, 18, 0, 47, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79]), Tile([0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 19, 35, 0, 1, 50, 66, 0, 1, 34, 52, 0, 1, 17, 19, 0, 18, 33, 113]), Tile([0, 30, 68, 23, 0, 1, 233, 44, 5, 145, 34, 67, 92, 252, 68, 51, 92, 254, 51, 17, 5, 126, 145, 0, 0, 23, 117, 0, 0, 1, 21, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 33, 119, 112, 0]), Tile([37, 204, 197, 0, 92, 117, 80, 0, 124, 204, 197, 0, 60, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0]), Tile([254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 34, 153, 144, 0, 49, 239, 249, 0, 17, 238, 225, 0]), Tile([114, 17, 16, 0, 113, 16, 1, 16, 49, 49, 23, 16, 18, 23, 117, 16, 1, 119, 81, 0, 1, 117, 81, 0, 0, 17, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 36, 32, 0, 19, 46, 66, 0, 19, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18]), Tile([2, 255, 244, 18, 2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79]), Tile([0, 1, 51, 239, 0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 1, 35, 0, 0, 18, 66, 0, 0, 18, 52, 0, 0, 17, 19, 0, 2, 33, 113]), Tile([0, 5, 145, 39, 0, 92, 252, 66, 0, 92, 247, 51, 0, 5, 126, 146, 0, 5, 126, 17, 0, 1, 113, 1, 0, 1, 16, 1, 0, 0, 0, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 33, 119, 112, 0]), Tile([37, 204, 197, 0, 124, 117, 80, 0, 199, 204, 197, 0, 55, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0]), Tile([254, 158, 16, 0, 255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 47, 144, 0, 0, 66, 153, 0, 0, 30, 255, 144, 0]), Tile([30, 238, 16, 0, 193, 17, 0, 0, 52, 32, 0, 0, 51, 16, 0, 0, 17, 17, 0, 0, 158, 238, 16, 0, 85, 85, 113, 0, 17, 17, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 1, 46, 66, 0, 1, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18]), Tile([2, 255, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79, 0, 1, 51, 239]), Tile([0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 0, 35, 0, 0, 2, 66, 0, 0, 2, 66, 0, 0, 1, 52, 0, 2, 33, 41, 0, 14, 68, 30]), Tile([0, 0, 229, 30, 0, 0, 92, 241, 0, 0, 92, 254, 0, 0, 5, 126, 0, 0, 5, 126, 0, 0, 25, 23, 0, 0, 21, 17, 0, 0, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 0, 0, 35, 119, 112, 0, 37, 204, 197, 0]), Tile([124, 117, 80, 0, 199, 204, 197, 0, 55, 119, 204, 80, 79, 81, 17, 0, 241, 68, 48, 0, 251, 239, 17, 0, 255, 255, 226, 0, 254, 158, 16, 0]), Tile([255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 255, 144, 0, 0, 46, 144, 0, 0, 153, 16, 0, 0, 255, 144, 0, 0]), Tile([238, 21, 0, 0, 17, 197, 0, 0, 51, 49, 0, 0, 145, 16, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 87, 16, 0, 0, 17, 16, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 2, 0, 0, 1, 36, 32, 0, 19, 46, 66, 0, 19, 47, 244, 32, 19, 46, 255, 65, 18, 36, 255, 227, 18, 2, 255, 244, 18]), Tile([2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 68, 68, 0, 114, 52, 67, 5, 193, 52, 68, 0, 81, 68, 68, 0, 19, 52, 79, 0, 1, 51, 239]), Tile([0, 0, 19, 62, 0, 0, 1, 17, 0, 0, 0, 35, 0, 0, 2, 68, 0, 0, 2, 66, 0, 0, 1, 49, 0, 2, 41, 153, 0, 14, 30, 255]), Tile([0, 0, 30, 238, 0, 0, 17, 17, 0, 1, 50, 21, 0, 23, 113, 1, 1, 126, 16, 1, 1, 94, 225, 0, 0, 21, 87, 16, 0, 1, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 33, 0, 0, 0, 39, 119, 112, 0]), Tile([124, 204, 197, 0, 199, 117, 80, 0, 53, 124, 197, 0, 79, 87, 204, 80, 241, 65, 17, 0, 251, 239, 17, 0, 255, 255, 226, 0, 254, 158, 16, 0]), Tile([255, 225, 0, 0, 17, 16, 0, 0, 50, 0, 0, 0, 255, 144, 0, 0, 255, 144, 0, 0, 238, 144, 0, 0, 204, 81, 0, 0, 151, 197, 16, 0]), Tile([20, 49, 16, 0, 67, 17, 0, 0, 204, 80, 0, 0, 255, 144, 0, 0, 127, 249, 0, 0, 23, 124, 80, 0, 1, 17, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 32, 0, 0, 2, 66, 0, 1, 2, 228, 32, 1, 2, 255, 66, 1, 2, 239, 244, 17, 2, 79, 254, 49, 0, 47, 255, 65]), Tile([0, 36, 255, 227, 0, 2, 79, 244, 0, 0, 36, 68, 0, 7, 35, 68, 0, 92, 19, 68, 0, 5, 20, 68, 0, 1, 51, 68, 0, 0, 19, 62]), Tile([0, 0, 1, 51, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 36, 0, 0, 2, 67, 0, 0, 2, 65, 0, 0, 153, 145, 0, 9, 255, 225]), Tile([0, 9, 238, 225, 0, 0, 17, 21, 0, 0, 1, 126, 0, 0, 1, 94, 0, 0, 1, 87, 0, 0, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 119, 0, 35, 23, 204, 80, 34, 92, 85, 0, 39, 199, 204, 80]), Tile([28, 124, 124, 197, 52, 119, 17, 16, 67, 53, 32, 0, 52, 244, 50, 0, 79, 20, 67, 0, 79, 190, 241, 16, 255, 255, 254, 32, 255, 233, 225, 0]), Tile([239, 254, 16, 0, 17, 17, 0, 0, 51, 50, 0, 0, 79, 255, 144, 0, 30, 239, 144, 0, 238, 238, 144, 0, 119, 124, 17, 0, 23, 197, 145, 0]), Tile([17, 204, 80, 0, 49, 52, 32, 0, 19, 50, 0, 0, 23, 117, 0, 0, 159, 249, 144, 0, 158, 255, 249, 0, 23, 119, 124, 80, 17, 17, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 32, 0, 0, 2, 66, 0, 1, 2, 228, 32, 1, 2, 255, 66, 1, 2, 239, 244, 17, 2, 79, 254, 49, 0, 47, 255, 65]), Tile([0, 36, 255, 227, 0, 2, 79, 244, 0, 0, 36, 68, 0, 7, 35, 68, 0, 92, 19, 68, 0, 5, 20, 68, 0, 1, 51, 68, 0, 0, 19, 62]), Tile([0, 0, 1, 51, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 1, 49, 0, 0, 1, 49, 0, 0, 2, 33, 0, 0, 14, 65, 0, 0, 0, 226]), Tile([0, 0, 0, 44, 0, 0, 2, 67, 0, 0, 23, 49, 0, 5, 255, 117, 0, 1, 239, 144, 0, 1, 127, 249, 0, 0, 23, 124, 0, 0, 1, 17]), Tile([0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 0, 0, 35, 23, 119, 0, 34, 92, 204, 80, 39, 199, 85, 0]), Tile([28, 124, 204, 80, 52, 119, 124, 197, 67, 53, 17, 16, 52, 244, 50, 0, 79, 20, 67, 0, 79, 190, 241, 16, 255, 255, 254, 32, 255, 233, 225, 0]), Tile([239, 254, 16, 0, 17, 17, 0, 0, 51, 50, 0, 0, 66, 255, 144, 0, 67, 47, 144, 0, 20, 73, 153, 0, 113, 159, 254, 16, 199, 158, 238, 16]), Tile([113, 33, 17, 0, 16, 18, 50, 0, 0, 21, 81, 16, 0, 30, 225, 225, 0, 25, 238, 117, 0, 21, 85, 17, 80, 17, 17, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0]), Tile([0, 0, 2, 16, 0, 0, 36, 33, 0, 2, 228, 67, 0, 2, 255, 66, 0, 2, 255, 66, 0, 2, 255, 227, 0, 2, 79, 244, 0, 0, 36, 254]), Tile([0, 0, 36, 255, 0, 0, 116, 68, 0, 7, 195, 68, 0, 92, 195, 68, 0, 5, 84, 68, 0, 1, 51, 68, 0, 0, 19, 51, 0, 0, 1, 51]), Tile([0, 0, 0, 17, 0, 0, 1, 18, 1, 17, 19, 57, 30, 233, 33, 25, 25, 153, 18, 41, 1, 17, 14, 244, 0, 0, 0, 37, 0, 0, 34, 76]), Tile([5, 145, 68, 51, 92, 252, 51, 17, 95, 247, 17, 0, 207, 225, 0, 0, 126, 16, 0, 0, 113, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 33, 0, 0, 0, 33, 7, 119, 112, 50, 124, 204, 197]), Tile([52, 87, 117, 80, 68, 51, 92, 197, 67, 79, 55, 204, 68, 241, 67, 17, 68, 251, 241, 16, 79, 255, 254, 32, 255, 249, 225, 0, 63, 254, 16, 0]), Tile([17, 17, 0, 0, 35, 50, 34, 41, 241, 52, 68, 63, 254, 17, 17, 158, 238, 238, 144, 1, 119, 124, 16, 0, 199, 114, 0, 0, 119, 19, 16, 0]), Tile([17, 18, 49, 1, 0, 1, 35, 30, 0, 0, 21, 238, 0, 0, 1, 233, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 153, 0, 0, 0, 254, 16, 0, 0, 238, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 23, 16, 0, 0]), Tile([229, 16, 0, 0, 229, 16, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 2, 16, 0, 0, 36, 33, 0, 2, 228, 67, 0, 2, 255, 66, 0, 2, 255, 66, 0, 2, 255, 227, 0, 2, 79, 244, 0, 0, 36, 254]), Tile([0, 0, 36, 255, 0, 0, 116, 68, 0, 7, 195, 68, 0, 92, 195, 68, 0, 5, 84, 68, 0, 1, 51, 68, 0, 0, 19, 51, 0, 0, 1, 51]), Tile([0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 1, 57, 0, 17, 19, 25, 1, 238, 146, 41, 1, 153, 158, 244, 0, 17, 16, 159, 0, 0, 0, 5]), Tile([0, 5, 81, 34, 0, 92, 252, 68, 0, 92, 247, 49, 0, 5, 126, 144, 0, 5, 126, 16, 0, 1, 113, 0, 0, 1, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 33, 7, 119, 112, 33, 124, 204, 197, 50, 199, 117, 80]), Tile([52, 69, 124, 197, 68, 51, 87, 204, 67, 79, 49, 17, 68, 241, 67, 0, 68, 251, 241, 16, 79, 255, 254, 32, 255, 249, 225, 0, 63, 254, 16, 0]), Tile([17, 17, 0, 0, 35, 34, 0, 0, 241, 66, 34, 153, 254, 19, 68, 255, 238, 225, 25, 238, 119, 124, 16, 17, 199, 117, 0, 0, 199, 17, 0, 0]), Tile([55, 19, 16, 0, 49, 18, 16, 0, 16, 18, 49, 0, 0, 1, 37, 17, 0, 1, 94, 238, 0, 0, 30, 233, 0, 0, 1, 85, 0, 0, 0, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 225, 0, 0, 0, 225, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0, 23, 16, 0, 0, 229, 16, 0, 0, 81, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 32, 0, 0, 2, 66, 0, 1, 2, 228, 32, 1, 2, 255, 66, 1, 2, 239, 244, 17, 2, 79, 254, 49, 0, 47, 255, 65]), Tile([0, 36, 255, 227, 0, 2, 79, 244, 0, 0, 36, 68, 0, 7, 35, 68, 0, 92, 19, 68, 0, 5, 20, 68, 0, 1, 51, 68, 0, 0, 19, 62]), Tile([0, 0, 1, 51, 0, 0, 0, 17, 0, 0, 0, 2, 0, 0, 0, 17, 0, 0, 1, 49, 0, 0, 2, 33, 0, 0, 30, 65, 0, 1, 238, 233]), Tile([0, 1, 153, 145, 0, 0, 17, 23, 0, 0, 5, 255, 0, 0, 1, 127, 0, 0, 1, 127, 0, 0, 0, 23, 0, 0, 0, 1, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 119, 0, 35, 23, 204, 80, 34, 92, 85, 0, 39, 199, 204, 80]), Tile([28, 124, 124, 197, 52, 119, 17, 16, 67, 53, 32, 0, 52, 244, 50, 0, 79, 20, 67, 0, 79, 190, 241, 16, 255, 255, 254, 32, 255, 233, 225, 0]), Tile([239, 254, 16, 0, 17, 17, 0, 0, 51, 50, 0, 0, 66, 255, 144, 0, 50, 239, 144, 0, 52, 153, 144, 0, 25, 255, 225, 0, 25, 238, 225, 0]), Tile([20, 17, 16, 0, 67, 49, 16, 0, 115, 17, 0, 0, 145, 81, 0, 0, 249, 225, 16, 0, 124, 94, 225, 0, 17, 21, 87, 16, 17, 17, 17, 16]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 32, 0, 0, 2, 66, 0, 1, 2, 228, 32, 1, 2, 255, 66, 1, 2, 239, 244, 17, 2, 79, 254, 49, 0, 47, 255, 65]), Tile([0, 36, 255, 227, 0, 2, 79, 244, 0, 0, 36, 68, 0, 7, 35, 68, 0, 92, 19, 68, 0, 5, 20, 68, 0, 1, 51, 68, 0, 0, 19, 62]), Tile([0, 0, 1, 51, 0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 2, 66, 0, 0, 1, 67, 0, 0, 2, 25, 0, 0, 14, 159, 0, 0, 0, 158]), Tile([0, 0, 0, 17, 0, 0, 1, 50, 0, 0, 21, 33, 0, 1, 238, 81, 0, 1, 158, 16, 0, 1, 94, 225, 0, 0, 21, 87, 0, 0, 1, 17]), Tile([0, 0, 0, 0, 16, 0, 0, 0, 49, 0, 0, 0, 51, 16, 0, 0, 51, 16, 0, 0, 35, 23, 119, 0, 34, 92, 204, 80, 39, 199, 85, 0]), Tile([28, 124, 204, 80, 52, 119, 124, 197, 67, 53, 17, 16, 52, 244, 50, 0, 79, 20, 67, 0, 79, 190, 241, 16, 255, 255, 254, 32, 255, 233, 225, 0]), Tile([239, 254, 16, 0, 17, 17, 0, 0, 67, 50, 0, 0, 255, 255, 144, 0, 46, 239, 144, 0, 153, 238, 145, 0, 254, 28, 89, 16, 238, 21, 121, 16]), Tile([17, 124, 67, 0, 16, 19, 67, 0, 0, 23, 117, 144, 0, 159, 249, 245, 0, 158, 255, 199, 0, 23, 119, 17, 16, 17, 17, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0]), Tile([2, 0, 0, 0, 36, 32, 0, 0, 46, 66, 0, 0, 47, 244, 32, 0, 46, 255, 65, 0, 36, 255, 227, 16, 2, 255, 244, 17, 2, 79, 254, 49]), Tile([0, 36, 255, 67, 0, 2, 52, 68, 0, 7, 35, 67, 0, 92, 19, 68, 0, 5, 20, 68, 0, 1, 51, 79, 0, 0, 19, 239, 0, 0, 1, 62]), Tile([0, 0, 0, 17, 0, 0, 2, 35, 9, 153, 36, 68, 159, 254, 49, 17, 158, 238, 16, 33, 1, 17, 0, 225, 0, 0, 0, 30, 0, 0, 17, 119]), Tile([1, 17, 51, 37, 23, 231, 34, 17, 30, 229, 17, 0, 126, 145, 0, 0, 89, 16, 0, 0, 81, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 16, 0, 0, 1, 49, 0, 0, 1, 51, 16, 0, 1, 51, 16, 0, 18, 51, 16, 0, 23, 119, 112, 0, 124, 204, 197, 0, 199, 117, 80, 0]), Tile([53, 124, 197, 0, 51, 87, 204, 80, 79, 65, 17, 0, 241, 68, 18, 0, 251, 239, 17, 144, 255, 255, 226, 16, 254, 158, 225, 0, 255, 238, 16, 0]), Tile([17, 17, 0, 0, 51, 34, 17, 17, 79, 255, 147, 46, 238, 255, 145, 25, 238, 238, 144, 1, 119, 124, 16, 0, 23, 117, 0, 0, 81, 124, 80, 0]), Tile([17, 23, 66, 9, 0, 1, 52, 95, 0, 0, 23, 255, 0, 0, 1, 254, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 17, 0, 0, 0, 233, 16, 0, 0, 153, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 5, 16, 0, 0, 156, 16, 0, 0]), Tile([247, 16, 0, 0, 247, 16, 0, 0, 113, 0, 0, 0, 113, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([2, 0, 0, 0, 36, 32, 0, 0, 46, 66, 0, 0, 47, 244, 32, 0, 46, 255, 65, 0, 36, 255, 227, 16, 2, 255, 244, 17, 2, 79, 254, 49]), Tile([0, 36, 255, 67, 0, 2, 52, 68, 0, 7, 35, 67, 0, 92, 19, 68, 0, 5, 20, 68, 0, 1, 51, 79, 0, 0, 19, 239, 0, 0, 1, 62]), Tile([0, 0, 0, 17, 0, 0, 0, 35, 0, 0, 2, 68, 0, 153, 148, 17, 9, 255, 225, 33, 9, 238, 225, 225, 0, 17, 16, 14, 0, 0, 0, 1]), Tile([0, 1, 17, 17, 0, 23, 238, 51, 0, 23, 233, 33, 0, 1, 89, 16, 0, 1, 89, 16, 0, 1, 81, 0, 0, 1, 16, 0, 0, 0, 0, 0]), Tile([0, 16, 0, 0, 1, 49, 0, 0, 1, 51, 16, 0, 1, 51, 16, 0, 18, 119, 112, 0, 21, 204, 197, 0, 92, 117, 80, 0, 124, 204, 197, 0]), Tile([60, 119, 204, 80, 51, 81, 17, 0, 79, 68, 50, 0, 241, 68, 18, 0, 251, 239, 17, 144, 255, 255, 226, 16, 254, 158, 225, 0, 255, 238, 16, 0]), Tile([17, 17, 0, 0, 51, 34, 0, 0, 79, 255, 145, 17, 238, 255, 147, 238, 238, 238, 145, 153, 119, 124, 16, 17, 23, 197, 0, 0, 113, 117, 0, 0]), Tile([81, 116, 32, 0, 33, 19, 32, 0, 16, 19, 66, 0, 0, 1, 55, 153, 0, 1, 127, 255, 0, 0, 31, 254, 0, 0, 9, 119, 0, 0, 0, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 145, 0, 0, 0, 145, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 5, 16, 0, 0, 156, 16, 0, 0, 247, 16, 0, 0, 113, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 17, 0, 0, 1, 50, 0, 0, 1, 36, 0, 0, 0, 46, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 153, 34, 37]), Tile([159, 254, 52, 66, 30, 238, 17, 19, 1, 17, 146, 49, 1, 153, 145, 25, 0, 17, 34, 41, 0, 0, 228, 49, 0, 0, 14, 149, 0, 0, 2, 92]), Tile([0, 2, 36, 199, 0, 36, 67, 17, 1, 115, 49, 0, 159, 247, 80, 0, 30, 249, 0, 0, 23, 255, 144, 0, 1, 119, 197, 0, 0, 17, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([34, 32, 0, 0, 68, 66, 34, 7, 238, 228, 67, 85, 239, 255, 244, 87, 33, 18, 52, 69, 18, 20, 68, 67, 113, 68, 68, 52, 193, 52, 68, 79]), Tile([33, 51, 79, 255, 66, 19, 239, 255, 20, 49, 238, 255, 79, 68, 17, 238, 255, 244, 32, 17, 239, 255, 145, 0, 126, 239, 17, 0, 87, 233, 16, 0]), Tile([17, 21, 17, 0, 1, 238, 30, 17, 1, 158, 231, 81, 1, 85, 81, 16, 0, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 119, 112, 0, 0, 204, 199, 0, 0, 199, 204, 112, 0, 124, 85, 80, 0, 23, 197, 0, 0, 241, 18, 0, 0, 20, 32, 0, 0]), Tile([180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 92, 0, 0, 0, 87, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]), Tile([0, 0, 0, 36, 0, 0, 0, 46, 0, 0, 1, 50, 0, 0, 1, 158, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5]), Tile([9, 153, 34, 32, 159, 254, 52, 66, 30, 238, 17, 19, 1, 17, 145, 17, 0, 17, 34, 41, 0, 0, 228, 49, 0, 0, 14, 146, 89, 18, 34, 92]), Tile([207, 196, 68, 119, 255, 116, 49, 17, 254, 81, 16, 0, 233, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 32, 0, 0]), Tile([68, 66, 32, 0, 255, 228, 66, 7, 239, 255, 227, 85, 33, 63, 244, 87, 238, 17, 52, 69, 18, 20, 68, 67, 113, 68, 68, 52, 193, 52, 68, 79]), Tile([81, 51, 79, 255, 34, 19, 239, 255, 68, 49, 238, 255, 79, 68, 17, 238, 255, 244, 32, 17, 239, 255, 144, 0, 126, 239, 16, 0, 119, 233, 113, 0]), Tile([17, 17, 83, 16, 0, 0, 18, 81, 0, 0, 21, 238, 0, 0, 1, 233, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([7, 112, 0, 0, 124, 199, 0, 0, 199, 204, 112, 0, 204, 85, 80, 0, 119, 197, 0, 0, 17, 18, 0, 0, 242, 66, 0, 0, 20, 32, 0, 0]), Tile([180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 0, 0]), Tile([23, 16, 0, 0, 229, 16, 0, 0, 149, 16, 0, 0, 81, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]), Tile([0, 0, 0, 36, 0, 0, 0, 46, 0, 0, 0, 18, 0, 0, 1, 57, 0, 0, 1, 153, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([9, 153, 34, 37, 159, 254, 52, 66, 30, 238, 17, 19, 1, 17, 16, 1, 0, 0, 0, 9, 0, 0, 34, 41, 0, 0, 228, 49, 0, 0, 14, 149]), Tile([0, 89, 18, 44, 5, 207, 196, 68, 5, 207, 227, 67, 0, 94, 229, 17, 0, 21, 225, 0, 0, 1, 81, 0, 0, 1, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0]), Tile([68, 34, 0, 0, 254, 68, 32, 0, 239, 254, 66, 7, 47, 255, 227, 85, 225, 63, 244, 87, 17, 17, 52, 69, 0, 20, 68, 67, 113, 68, 68, 52]), Tile([193, 52, 68, 79, 33, 51, 79, 255, 66, 19, 239, 255, 20, 49, 238, 255, 79, 68, 17, 238, 255, 244, 32, 17, 239, 255, 144, 0, 126, 239, 16, 0]), Tile([119, 233, 0, 0, 113, 19, 16, 0, 49, 35, 16, 0, 17, 85, 16, 0, 1, 238, 17, 0, 1, 158, 238, 16, 1, 85, 85, 113, 1, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 119, 112, 0, 0, 204, 199, 0, 0, 199, 204, 112, 0, 124, 85, 80, 0, 23, 197, 0, 0, 241, 18, 0, 0]), Tile([20, 32, 0, 0, 180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 18, 0, 0, 1, 36, 0, 0, 1, 46, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 153, 34, 0]), Tile([159, 254, 52, 34, 30, 238, 17, 67, 1, 17, 145, 17, 0, 17, 16, 0, 0, 0, 0, 9, 0, 0, 34, 41, 0, 0, 228, 49, 0, 0, 14, 145]), Tile([0, 0, 0, 19, 0, 0, 17, 23, 0, 1, 83, 159, 0, 1, 238, 158, 0, 1, 158, 225, 0, 1, 85, 238, 0, 0, 17, 85, 0, 0, 0, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([34, 32, 0, 0, 68, 66, 32, 0, 255, 228, 66, 7, 239, 255, 227, 85, 33, 63, 244, 87, 1, 17, 52, 69, 0, 20, 68, 67, 113, 68, 68, 52]), Tile([193, 52, 68, 79, 33, 51, 79, 255, 66, 19, 239, 255, 20, 49, 238, 255, 79, 68, 17, 238, 242, 36, 32, 17, 84, 66, 144, 0, 195, 66, 16, 0]), Tile([51, 41, 0, 0, 117, 16, 0, 0, 249, 144, 0, 0, 255, 249, 0, 0, 119, 124, 80, 0, 17, 17, 16, 0, 113, 0, 0, 0, 17, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 7, 112, 0, 0, 124, 199, 0, 0, 199, 204, 112, 0, 204, 85, 80, 0, 119, 197, 0, 0, 17, 18, 0, 0, 242, 66, 0, 0]), Tile([20, 32, 0, 0, 180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 17, 0, 0, 1, 50, 0, 0, 1, 36, 0, 0, 0, 46, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 153, 34, 37]), Tile([159, 254, 52, 66, 30, 238, 17, 19, 1, 17, 146, 49, 1, 153, 145, 25, 0, 17, 34, 41, 0, 0, 228, 49, 0, 0, 14, 145, 0, 0, 1, 23]), Tile([0, 1, 19, 117, 0, 19, 50, 17, 1, 82, 33, 0, 30, 229, 16, 0, 25, 225, 0, 0, 21, 238, 16, 0, 1, 85, 113, 0, 0, 17, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([34, 32, 0, 0, 68, 66, 34, 7, 238, 228, 67, 85, 239, 255, 244, 87, 33, 18, 52, 69, 18, 20, 68, 67, 113, 68, 68, 52, 193, 52, 68, 79]), Tile([33, 51, 79, 255, 66, 19, 239, 255, 20, 49, 238, 255, 79, 68, 17, 238, 255, 242, 32, 17, 239, 84, 66, 0, 124, 115, 66, 0, 17, 19, 32, 0]), Tile([17, 119, 89, 0, 9, 255, 159, 85, 9, 239, 252, 113, 1, 119, 113, 16, 0, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 119, 112, 0, 0, 204, 199, 0, 0, 199, 204, 112, 0, 124, 85, 80, 0, 23, 197, 0, 0, 241, 18, 0, 0, 20, 32, 0, 0]), Tile([180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 23, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]), Tile([0, 0, 0, 36, 0, 0, 0, 46, 0, 0, 1, 50, 0, 0, 1, 158, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5]), Tile([9, 153, 34, 32, 159, 254, 52, 66, 30, 238, 17, 19, 1, 17, 145, 25, 0, 17, 34, 41, 0, 0, 228, 49, 0, 0, 14, 145, 17, 17, 17, 23]), Tile([126, 115, 51, 85, 238, 83, 33, 17, 233, 17, 16, 0, 145, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 32, 0, 0]), Tile([68, 66, 32, 0, 255, 228, 66, 7, 239, 255, 227, 85, 33, 63, 244, 87, 238, 17, 52, 69, 18, 20, 68, 67, 113, 68, 68, 52, 193, 52, 68, 79]), Tile([81, 51, 79, 255, 34, 19, 239, 255, 68, 49, 238, 255, 79, 68, 17, 238, 255, 244, 32, 17, 239, 34, 144, 0, 119, 204, 16, 0, 17, 124, 66, 0]), Tile([17, 17, 52, 32, 0, 0, 19, 121, 0, 0, 23, 255, 0, 0, 1, 254, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([7, 112, 0, 0, 124, 199, 0, 0, 199, 204, 112, 0, 204, 85, 80, 0, 119, 197, 0, 0, 17, 18, 0, 0, 242, 66, 0, 0, 20, 32, 0, 0]), Tile([180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 16, 0, 0]), Tile([156, 16, 0, 0, 247, 16, 0, 0, 231, 16, 0, 0, 113, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]), Tile([0, 0, 0, 36, 0, 0, 0, 46, 0, 0, 0, 18, 0, 0, 1, 57, 0, 0, 1, 153, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([9, 153, 34, 37, 159, 254, 52, 66, 30, 238, 17, 19, 1, 17, 16, 1, 0, 0, 0, 9, 0, 0, 34, 41, 0, 0, 228, 49, 0, 0, 14, 145]), Tile([0, 17, 17, 23, 1, 126, 115, 51, 1, 126, 146, 50, 0, 25, 145, 17, 0, 21, 145, 0, 0, 1, 81, 0, 0, 1, 16, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0]), Tile([68, 34, 0, 0, 254, 68, 32, 0, 239, 254, 66, 7, 47, 255, 227, 85, 225, 63, 244, 87, 17, 17, 52, 69, 0, 20, 68, 67, 113, 68, 68, 52]), Tile([193, 52, 68, 79, 33, 51, 79, 255, 66, 19, 239, 255, 20, 49, 238, 255, 79, 68, 17, 238, 255, 244, 32, 17, 239, 255, 144, 0, 119, 47, 16, 0]), Tile([23, 194, 0, 0, 81, 52, 32, 0, 33, 52, 32, 0, 17, 119, 80, 0, 9, 255, 153, 0, 9, 239, 255, 144, 1, 119, 119, 197, 1, 17, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 119, 112, 0, 0, 204, 199, 0, 0, 199, 204, 112, 0, 124, 85, 80, 0, 23, 197, 0, 0, 241, 18, 0, 0]), Tile([20, 32, 0, 0, 180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 18, 0, 0, 1, 36, 0, 0, 1, 46, 0, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 153, 34, 0]), Tile([159, 254, 52, 34, 30, 238, 17, 67, 1, 17, 145, 17, 0, 17, 16, 0, 0, 0, 0, 9, 0, 0, 34, 41, 0, 0, 228, 49, 0, 0, 14, 149]), Tile([0, 0, 0, 37, 0, 0, 34, 68, 0, 1, 116, 49, 0, 9, 255, 25, 0, 9, 239, 249, 0, 1, 119, 255, 0, 0, 17, 119, 0, 0, 0, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([34, 32, 0, 0, 68, 66, 32, 0, 255, 228, 66, 7, 239, 255, 227, 85, 33, 63, 244, 87, 1, 17, 52, 69, 0, 20, 68, 67, 113, 68, 68, 52]), Tile([193, 52, 68, 79, 33, 51, 79, 255, 66, 19, 239, 255, 20, 49, 238, 255, 79, 68, 17, 238, 255, 244, 32, 17, 127, 255, 144, 0, 117, 239, 16, 0]), Tile([193, 233, 0, 0, 113, 16, 0, 0, 17, 16, 0, 0, 238, 225, 0, 0, 85, 87, 16, 0, 145, 17, 16, 0, 197, 0, 0, 0, 17, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 7, 112, 0, 0, 124, 199, 0, 0, 199, 204, 112, 0, 204, 85, 80, 0, 119, 197, 0, 0, 17, 18, 0, 0, 242, 66, 0, 0]), Tile([20, 32, 0, 0, 180, 32, 0, 0, 255, 17, 0, 0, 159, 226, 0, 0, 241, 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 16, 0, 0, 23, 81, 0, 0, 30, 85]), Tile([0, 0, 126, 227, 0, 0, 126, 227, 0, 0, 7, 238, 0, 0, 7, 238, 0, 0, 0, 126, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 47, 255, 0, 0, 1, 239, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([153, 146, 87, 82, 255, 229, 85, 119, 238, 225, 87, 231, 17, 16, 35, 78, 0, 34, 34, 52, 0, 228, 51, 51, 0, 62, 148, 52, 48, 68, 68, 68]), Tile([48, 52, 68, 67, 48, 3, 68, 48, 51, 0, 0, 0, 3, 32, 0, 0, 144, 34, 16, 0, 153, 16, 0, 0, 85, 85, 16, 0, 0, 81, 17, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 34, 0, 0, 0, 67, 34, 0, 0, 238, 227, 37, 119, 255, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247, 20, 79, 79, 21]), Tile([19, 239, 255, 178, 33, 239, 255, 228, 121, 30, 249, 254, 199, 145, 30, 233, 236, 192, 1, 17, 239, 204, 0, 0, 79, 252, 0, 0, 66, 252, 0, 0]), Tile([64, 252, 0, 0, 48, 236, 0, 0, 32, 124, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0, 117, 80, 0, 0]), Tile([82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 126, 0, 0, 7, 126, 0, 0, 7, 238, 0, 0, 7, 238, 0, 0, 126, 224]), Tile([0, 0, 94, 146, 0, 0, 89, 146, 0, 0, 85, 144, 0, 0, 5, 144, 0, 0, 5, 17, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 33, 239, 0, 0, 0, 17, 0, 0, 0, 0, 153, 146, 34, 0]), Tile([255, 227, 68, 34, 238, 225, 17, 52, 17, 16, 0, 17, 80, 0, 2, 238, 0, 34, 34, 238, 3, 228, 51, 62, 51, 62, 148, 62, 51, 68, 68, 67]), Tile([48, 52, 68, 67, 32, 3, 68, 48, 32, 0, 0, 4, 33, 0, 0, 4, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 68, 51, 37, 119, 238, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247, 20, 79, 79, 21]), Tile([19, 239, 255, 178, 33, 239, 255, 228, 66, 94, 249, 254, 68, 33, 30, 233, 239, 87, 1, 17, 46, 119, 0, 0, 46, 231, 0, 0, 50, 231, 0, 0]), Tile([48, 236, 0, 0, 64, 252, 0, 0, 79, 252, 0, 0, 79, 252, 0, 0, 255, 192, 0, 0, 255, 192, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0, 117, 80, 0, 0]), Tile([82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 5, 89, 0, 0, 5, 153, 0, 0, 21, 144, 0, 0, 81, 81]), Tile([0, 0, 17, 17, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 47, 255, 0, 0, 1, 239, 0, 0, 0, 17, 153, 144, 0, 0]), Tile([255, 226, 34, 16, 238, 227, 238, 34, 17, 17, 225, 52, 238, 224, 49, 17, 224, 3, 50, 238, 2, 34, 34, 238, 34, 228, 51, 62, 32, 62, 148, 62]), Tile([16, 68, 68, 67, 16, 52, 68, 67, 0, 3, 68, 51, 0, 0, 0, 4, 0, 35, 68, 64, 0, 0, 0, 255, 5, 238, 255, 252, 5, 204, 204, 192]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 67, 34, 0, 0, 238, 227, 37, 119, 255, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247]), Tile([20, 79, 79, 21, 19, 239, 255, 178, 33, 239, 255, 228, 66, 30, 249, 254, 68, 33, 30, 233, 239, 144, 1, 17, 238, 144, 0, 0, 238, 21, 0, 0]), Tile([34, 85, 0, 0, 48, 117, 0, 0, 48, 231, 0, 0, 62, 119, 0, 0, 239, 112, 0, 0, 247, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0]), Tile([117, 80, 0, 0, 82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 112, 0, 0, 0, 207, 0, 0, 0, 204, 0, 0, 0, 12, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 33, 239, 0, 0, 0, 17, 0, 0, 0, 0]), Tile([153, 146, 34, 0, 255, 227, 68, 34, 238, 225, 17, 52, 17, 18, 68, 17, 0, 34, 66, 238, 1, 34, 34, 238, 0, 228, 51, 62, 0, 62, 148, 62]), Tile([0, 68, 68, 67, 0, 52, 68, 67, 48, 3, 68, 48, 68, 0, 0, 0, 4, 68, 51, 50, 255, 240, 0, 0, 207, 255, 238, 238, 12, 204, 199, 119]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 68, 51, 37, 119, 238, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247]), Tile([20, 79, 79, 21, 19, 239, 255, 178, 33, 239, 255, 228, 66, 30, 249, 254, 68, 33, 30, 233, 239, 145, 1, 17, 238, 144, 0, 0, 238, 16, 0, 0]), Tile([226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 85, 80, 0, 0, 112, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0]), Tile([117, 80, 0, 0, 82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 80, 0, 0, 92, 117, 0, 0, 95, 119]), Tile([0, 0, 207, 244, 0, 0, 207, 244, 0, 0, 12, 255, 0, 0, 12, 255, 0, 0, 0, 207, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 47, 255, 0, 0, 1, 239, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([153, 146, 34, 34, 255, 227, 68, 67, 238, 225, 17, 17, 17, 16, 18, 238, 0, 34, 34, 238, 0, 228, 51, 62, 0, 62, 148, 62, 64, 68, 68, 67]), Tile([64, 52, 68, 67, 64, 3, 68, 48, 68, 0, 0, 0, 4, 48, 0, 0, 224, 51, 32, 0, 238, 80, 0, 0, 119, 119, 80, 0, 0, 117, 85, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 34, 0, 0, 0, 67, 34, 0, 0, 238, 227, 37, 119, 255, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247, 20, 79, 79, 21]), Tile([19, 239, 255, 178, 33, 239, 255, 228, 66, 30, 249, 254, 68, 33, 30, 233, 239, 144, 1, 17, 238, 151, 0, 0, 238, 23, 0, 0, 226, 231, 0, 0]), Tile([48, 231, 0, 0, 32, 151, 0, 0, 16, 87, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0, 117, 80, 0, 0]), Tile([82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 207, 0, 0, 12, 207, 0, 0, 12, 255, 0, 0, 12, 255, 0, 0, 207, 240]), Tile([0, 0, 127, 227, 0, 0, 126, 227, 0, 0, 119, 224, 0, 0, 7, 224, 0, 0, 7, 85, 0, 0, 0, 85, 0, 0, 0, 80, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 33, 239, 0, 0, 0, 17, 0, 0, 0, 0, 153, 146, 34, 0]), Tile([255, 227, 68, 34, 85, 225, 17, 52, 199, 16, 0, 17, 112, 0, 2, 238, 0, 34, 34, 238, 4, 52, 51, 62, 68, 62, 148, 62, 68, 68, 68, 67]), Tile([64, 52, 68, 67, 48, 3, 68, 48, 48, 0, 0, 3, 50, 0, 0, 3, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 68, 51, 37, 119, 238, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247, 20, 79, 79, 21]), Tile([19, 239, 255, 178, 33, 239, 255, 228, 66, 30, 249, 254, 68, 33, 30, 233, 239, 149, 1, 17, 238, 149, 0, 0, 238, 21, 0, 0, 226, 149, 0, 0]), Tile([32, 151, 0, 0, 48, 231, 0, 0, 62, 231, 0, 0, 62, 231, 0, 0, 238, 112, 0, 0, 238, 112, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0, 117, 80, 0, 0]), Tile([82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 7, 126, 0, 0, 7, 238, 0, 0, 87, 224, 0, 0, 117, 114]), Tile([0, 0, 85, 82, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 47, 255, 0, 0, 1, 239, 0, 0, 0, 17, 153, 144, 0, 0]), Tile([255, 236, 197, 80, 236, 204, 255, 197, 204, 255, 247, 117, 255, 240, 66, 17, 240, 4, 68, 238, 3, 68, 34, 238, 51, 228, 51, 62, 48, 62, 148, 62]), Tile([32, 68, 68, 67, 32, 52, 68, 67, 0, 3, 68, 50, 0, 0, 0, 3, 0, 18, 51, 48, 0, 0, 0, 238, 1, 153, 238, 231, 1, 119, 119, 112]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 67, 34, 0, 0, 238, 227, 37, 119, 255, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247]), Tile([20, 79, 79, 21, 19, 239, 255, 178, 33, 239, 255, 228, 66, 30, 249, 254, 68, 33, 30, 233, 239, 144, 1, 17, 238, 144, 0, 0, 238, 17, 0, 0]), Tile([226, 17, 0, 0, 32, 81, 0, 0, 32, 149, 0, 0, 41, 85, 0, 0, 158, 80, 0, 0, 229, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0]), Tile([117, 80, 0, 0, 82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 85, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 126, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 34, 34, 0, 2, 68, 68, 0, 0, 33, 239, 0, 0, 0, 17, 0, 0, 0, 0]), Tile([153, 119, 204, 0, 119, 119, 204, 204, 87, 238, 239, 255, 17, 19, 68, 255, 0, 51, 68, 238, 2, 34, 34, 238, 0, 228, 51, 62, 0, 62, 148, 62]), Tile([0, 68, 68, 67, 0, 52, 68, 67, 16, 3, 68, 48, 34, 0, 0, 0, 2, 34, 17, 18, 238, 224, 0, 0, 126, 238, 153, 153, 7, 119, 117, 85]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 68, 51, 37, 119, 238, 228, 87, 204, 227, 51, 68, 87, 17, 17, 67, 247]), Tile([20, 79, 79, 21, 19, 239, 255, 178, 204, 239, 255, 228, 255, 206, 249, 254, 71, 197, 30, 233, 239, 117, 1, 17, 238, 144, 0, 0, 238, 16, 0, 0]), Tile([226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 16, 0, 0, 80, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 199, 0, 0, 0, 204, 112, 0, 0, 92, 112, 0, 0]), Tile([117, 80, 0, 0, 82, 0, 0, 0, 32, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9]), Tile([0, 0, 0, 159, 0, 0, 0, 158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 2, 0, 0, 0, 36, 32, 0, 2, 228, 67, 0, 2, 255, 66, 0, 2, 255, 66, 0, 2, 255, 227, 42, 2, 79, 244, 173, 0, 36, 254, 173]), Tile([0, 36, 242, 106, 0, 2, 66, 70, 0, 2, 63, 54, 0, 2, 241, 244, 0, 3, 79, 79, 0, 3, 255, 251, 0, 1, 238, 246, 153, 0, 30, 230]), Tile([254, 18, 33, 17, 238, 20, 68, 52, 17, 17, 17, 239, 0, 0, 9, 255, 0, 0, 1, 238, 0, 0, 81, 124, 0, 2, 199, 23, 0, 36, 49, 0]), Tile([153, 117, 16, 0, 207, 255, 144, 0, 199, 238, 144, 0, 23, 119, 16, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 32, 0, 0, 2, 66, 0, 0, 52, 78, 32, 0, 36, 255, 32, 170, 36, 255, 32, 214, 62, 255, 32, 214, 79, 244, 32, 109, 111, 66, 0]), Tile([214, 255, 66, 0, 166, 68, 32, 0, 166, 243, 32, 0, 111, 31, 32, 0, 244, 244, 48, 0, 239, 255, 48, 0, 111, 238, 16, 0, 190, 225, 0, 153]), Tile([17, 18, 33, 239, 67, 68, 65, 238, 254, 33, 17, 17, 255, 144, 0, 0, 238, 16, 0, 0, 199, 21, 0, 0, 113, 124, 32, 0, 0, 19, 66, 0]), Tile([0, 1, 87, 153, 0, 9, 255, 252, 0, 9, 238, 124, 0, 1, 119, 113, 0, 0, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0]), Tile([249, 0, 0, 0, 233, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([80, 0, 0, 0, 80, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 0, 46, 66, 0, 0, 47, 244, 32, 0, 46, 255, 66, 10, 36, 255, 227, 173, 2, 79, 254, 173]), Tile([0, 36, 242, 106, 0, 2, 66, 70, 0, 2, 63, 54, 0, 2, 241, 244, 0, 3, 79, 79, 153, 147, 255, 251, 255, 225, 238, 246, 238, 225, 30, 230]), Tile([17, 19, 65, 17, 0, 1, 52, 52, 0, 0, 18, 239, 0, 0, 9, 255, 0, 0, 1, 238, 0, 0, 81, 124, 0, 0, 124, 23, 0, 2, 67, 16]), Tile([0, 2, 49, 0, 89, 151, 81, 0, 92, 255, 249, 0, 28, 126, 233, 0, 1, 119, 113, 0, 0, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 2, 66, 0, 0, 36, 226, 170, 2, 79, 242, 214, 36, 255, 226, 214, 62, 255, 66, 109, 111, 244, 32]), Tile([214, 255, 66, 0, 166, 68, 32, 0, 166, 243, 32, 0, 111, 31, 32, 0, 244, 244, 48, 0, 239, 255, 57, 153, 111, 238, 30, 255, 190, 225, 30, 238]), Tile([17, 20, 49, 17, 67, 67, 16, 0, 254, 33, 0, 0, 255, 144, 0, 0, 238, 16, 0, 0, 199, 21, 0, 0, 113, 199, 0, 0, 1, 52, 32, 0]), Tile([0, 19, 32, 0, 0, 21, 121, 149, 0, 159, 255, 197, 0, 158, 231, 193, 0, 23, 119, 16, 0, 1, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 51, 51, 0, 51, 68, 68, 3, 68, 68, 73, 52, 68, 148, 153, 52, 52, 68, 68, 51, 68, 68, 148, 3, 68, 68, 68, 36, 68, 68, 67]), Tile([36, 68, 68, 51, 35, 68, 51, 51, 19, 51, 51, 52, 18, 51, 51, 68, 1, 51, 51, 51, 1, 35, 19, 51, 0, 18, 49, 18, 0, 1, 17, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([48, 51, 48, 0, 67, 52, 67, 0, 153, 67, 68, 48, 153, 153, 68, 48, 153, 153, 148, 67, 73, 153, 148, 67, 68, 153, 148, 66, 68, 153, 68, 66]), Tile([68, 73, 68, 66, 68, 68, 68, 32, 68, 68, 67, 34, 68, 67, 50, 49, 51, 51, 51, 33, 51, 51, 50, 16, 51, 50, 17, 0, 17, 17, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 3, 51, 51, 0, 52, 68, 68, 3, 67, 68, 153, 3, 52, 73, 153, 0, 52, 68, 73, 3, 68, 148, 68, 3, 68, 68, 73, 36, 68, 68, 68]), Tile([36, 68, 68, 67, 35, 68, 67, 51, 35, 51, 51, 51, 19, 35, 51, 52, 18, 18, 51, 51, 1, 49, 18, 51, 0, 17, 1, 18, 0, 0, 0, 1]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([51, 0, 0, 0, 68, 48, 51, 0, 148, 67, 52, 48, 153, 148, 67, 67, 153, 153, 68, 67, 153, 153, 148, 67, 73, 153, 148, 66, 73, 153, 148, 66]), Tile([68, 153, 68, 50, 68, 68, 68, 32, 68, 68, 67, 32, 68, 67, 49, 0, 51, 51, 49, 16, 51, 51, 19, 16, 35, 51, 33, 0, 17, 17, 16, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 3, 51, 0, 0, 52, 68, 0, 3, 51, 73, 0, 52, 68, 153, 3, 68, 73, 68, 3, 68, 68, 73, 36, 68, 68, 68, 36, 68, 68, 67]), Tile([36, 68, 68, 51, 35, 68, 51, 51, 35, 35, 51, 52, 1, 19, 51, 68, 0, 18, 51, 51, 0, 1, 35, 51, 0, 0, 17, 34, 0, 0, 0, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([51, 0, 0, 0, 68, 51, 0, 0, 153, 68, 48, 0, 153, 153, 67, 0, 153, 153, 147, 48, 73, 153, 147, 67, 68, 153, 148, 67, 68, 153, 148, 66]), Tile([68, 73, 148, 66, 68, 73, 68, 50, 68, 68, 67, 32, 68, 67, 51, 16, 51, 51, 33, 0, 50, 17, 16, 0, 51, 33, 0, 0, 17, 16, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 3, 0, 3, 51, 52, 0, 52, 68, 73, 3, 68, 73, 153, 52, 68, 148, 153, 52, 52, 68, 68, 34, 68, 68, 73, 36, 68, 68, 68]), Tile([35, 68, 68, 67, 2, 68, 67, 51, 2, 51, 51, 51, 1, 51, 51, 52, 1, 35, 35, 51, 0, 19, 49, 51, 0, 1, 35, 18, 0, 0, 17, 17]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([51, 51, 0, 0, 67, 68, 48, 0, 148, 52, 67, 0, 153, 148, 68, 48, 153, 153, 68, 48, 153, 153, 148, 48, 73, 153, 148, 48, 68, 153, 68, 66]), Tile([68, 68, 68, 50, 68, 68, 68, 34, 68, 68, 66, 50, 68, 67, 51, 49, 51, 51, 51, 16, 51, 50, 33, 0, 33, 17, 16, 0, 16, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 0, 46, 66, 0, 0, 47, 244, 32, 0, 46, 255, 65, 0, 36, 255, 227, 16, 2, 255, 244, 17]), Tile([2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 52, 68, 0, 7, 35, 67, 0, 92, 19, 68, 0, 5, 20, 65, 0, 1, 51, 79, 0, 0, 19, 238]), Tile([0, 0, 1, 62, 0, 0, 0, 17, 0, 0, 34, 51, 153, 146, 68, 68, 239, 243, 17, 18, 238, 225, 2, 39, 17, 16, 0, 225, 0, 0, 0, 14]), Tile([0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 16, 0, 0, 1, 49, 0, 0, 1, 51, 16, 0, 1, 51, 16, 0, 18, 51, 16, 0, 23, 119, 112, 0, 124, 204, 197, 0]), Tile([199, 117, 80, 0, 53, 124, 197, 0, 68, 87, 204, 80, 20, 65, 17, 0, 65, 68, 18, 0, 17, 255, 34, 144, 255, 255, 226, 16, 246, 111, 225, 0]), Tile([235, 110, 16, 0, 17, 17, 17, 17, 35, 50, 51, 41, 255, 255, 145, 25, 239, 255, 144, 1, 124, 87, 80, 0, 115, 66, 17, 0, 19, 49, 35, 16]), Tile([36, 49, 18, 49, 69, 80, 1, 37, 95, 193, 1, 94, 254, 113, 0, 30, 247, 113, 0, 1, 119, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 17, 0, 0, 0, 238, 16, 0, 0, 153, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0]), Tile([1, 113, 0, 0, 30, 81, 0, 0, 233, 81, 0, 0, 149, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 36, 32, 0, 0, 46, 66, 0, 0, 47, 244, 32, 0, 46, 255, 65, 0, 36, 255, 227, 16]), Tile([2, 255, 244, 17, 2, 79, 254, 49, 0, 36, 255, 67, 0, 2, 52, 68, 0, 7, 35, 67, 0, 92, 19, 68, 0, 5, 20, 65, 0, 1, 51, 79]), Tile([0, 0, 19, 238, 153, 146, 34, 62, 255, 227, 68, 34, 238, 225, 17, 52, 17, 16, 0, 17, 0, 0, 0, 2, 0, 0, 0, 33, 0, 0, 0, 225]), Tile([0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1, 49, 0, 0, 1, 51, 16, 0, 1, 51, 16, 0, 18, 119, 112, 0, 21, 204, 197, 0]), Tile([92, 117, 80, 0, 124, 204, 197, 0, 60, 119, 204, 80, 68, 81, 17, 0, 20, 68, 18, 0, 65, 68, 18, 0, 17, 255, 34, 144, 255, 255, 226, 16]), Tile([246, 111, 225, 0, 235, 110, 16, 0, 17, 17, 17, 0, 35, 50, 51, 17, 255, 255, 145, 46, 239, 255, 145, 25, 124, 87, 83, 17, 115, 66, 18, 49]), Tile([19, 85, 1, 37, 37, 252, 17, 94, 159, 231, 16, 30, 159, 119, 16, 1, 23, 113, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 233, 16, 0, 0, 153, 16, 0, 0, 17, 17, 0, 0, 1, 113, 0, 0]), Tile([30, 81, 0, 0, 233, 81, 0, 0, 149, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), // Wasp Tile([6, 102, 0, 0, 105, 153, 102, 0, 105, 153, 153, 102, 105, 153, 153, 150, 6, 153, 153, 153, 0, 105, 153, 153, 0, 6, 105, 153, 0, 0, 6, 102]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 1, 129, 0, 0, 1, 136, 0, 0, 113, 40, 0, 7, 129, 39, 0, 1, 136, 17]), Tile([0, 1, 136, 113, 0, 1, 39, 119, 0, 1, 17, 119, 0, 7, 17, 17, 0, 7, 113, 16, 0, 1, 119, 0, 0, 1, 16, 0, 0, 1, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 85, 102, 0, 0, 85, 153, 102, 0, 85, 153, 153, 102, 85, 153, 153, 153, 102, 105, 153, 153, 150]), Tile([6, 102, 153, 102, 23, 118, 102, 104, 33, 119, 113, 119, 34, 23, 113, 17, 17, 17, 113, 17, 113, 17, 17, 17, 119, 21, 17, 17, 23, 118, 21, 21]), Tile([17, 22, 16, 17, 119, 1, 16, 18, 119, 18, 16, 1, 16, 17, 0, 1, 0, 16, 1, 16, 1, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0]), Tile([85, 80, 0, 0, 85, 85, 0, 0, 85, 85, 0, 0, 85, 80, 0, 0, 85, 80, 0, 0, 85, 80, 1, 137, 85, 0, 19, 121, 101, 0, 19, 120]), Tile([19, 49, 119, 55, 136, 115, 119, 115, 119, 19, 23, 119, 17, 51, 17, 17, 17, 17, 17, 16, 17, 16, 0, 0, 81, 17, 0, 0, 81, 81, 16, 0]), Tile([81, 81, 17, 0, 16, 81, 33, 0, 16, 18, 16, 0, 0, 17, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 1, 32, 0, 0, 32, 1, 0, 1, 0, 0, 0, 2, 0, 18, 0, 17, 2, 0, 32, 146, 16, 0, 1, 145, 0, 0, 1, 129, 0, 0, 0]), Tile([113, 0, 0, 0, 49, 0, 0, 0, 65, 0, 0, 0, 36, 16, 0, 0, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 6, 0, 0, 6, 102, 0, 0, 102, 153, 0, 6, 153, 153, 0, 102, 153, 153, 6, 150, 153, 153, 105, 105, 153, 153, 105, 105, 153, 102]), Tile([6, 105, 102, 97, 0, 102, 103, 119, 0, 1, 17, 119, 0, 7, 17, 17, 0, 7, 113, 16, 0, 1, 119, 0, 0, 1, 16, 0, 0, 1, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85]), Tile([102, 102, 102, 85, 153, 153, 153, 101, 153, 153, 153, 102, 153, 153, 150, 17, 153, 153, 97, 17, 153, 150, 17, 17, 102, 101, 17, 17, 103, 118, 21, 21]), Tile([17, 22, 16, 17, 119, 1, 16, 18, 119, 18, 16, 1, 16, 17, 0, 1, 0, 16, 1, 16, 1, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 137, 0, 0, 19, 121, 0, 0, 19, 120]), Tile([85, 85, 119, 55, 136, 115, 119, 115, 119, 19, 23, 119, 17, 51, 17, 17, 17, 17, 17, 16, 17, 16, 0, 0, 81, 17, 0, 0, 81, 81, 16, 0]), Tile([81, 81, 17, 0, 16, 81, 33, 0, 16, 18, 16, 0, 0, 17, 0, 0, 0, 16, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 1, 32, 0, 0, 32, 1, 0, 1, 0, 0, 0, 2, 0, 18, 0, 17, 2, 0, 32, 146, 16, 0, 1, 145, 0, 0, 1, 129, 0, 0, 0]), Tile([113, 0, 0, 0, 49, 0, 0, 0, 65, 0, 0, 0, 36, 16, 0, 0, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), // Spike Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 170, 10, 0, 10, 186, 172, 0, 10, 170, 202, 0, 0, 172, 170, 0, 170, 170, 238]), Tile([10, 186, 221, 234, 171, 234, 238, 218, 10, 186, 170, 234, 0, 170, 202, 173, 0, 0, 172, 170, 0, 10, 170, 202, 0, 10, 186, 170, 0, 10, 170, 10]), Tile([0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 171, 160, 0, 0, 190, 186, 0, 0, 170, 170, 10, 170, 174, 172, 170, 186, 173, 170, 202, 170, 237, 218, 172, 160, 170, 174, 170, 170]), Tile([190, 186, 237, 234, 234, 234, 222, 218, 190, 186, 218, 170, 170, 174, 170, 202, 222, 234, 172, 160, 237, 218, 202, 170, 238, 218, 170, 186, 170, 170, 10, 170]), Tile([190, 186, 0, 0, 171, 160, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0]), Tile([186, 0, 0, 0, 235, 160, 0, 0, 186, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 170, 10, 0, 10, 186, 172, 0, 10, 170, 202, 0, 0, 172, 170, 0, 170, 170, 238]), Tile([10, 186, 221, 238, 171, 234, 238, 218, 10, 186, 170, 237, 0, 170, 202, 173, 0, 0, 172, 170, 0, 10, 170, 202, 0, 10, 186, 170, 0, 10, 170, 10]), Tile([0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 171, 160, 0, 0, 190, 186, 0, 0, 170, 170, 10, 170, 174, 172, 170, 186, 173, 170, 202, 170, 237, 218, 172, 160, 238, 222, 170, 170]), Tile([170, 174, 237, 234, 186, 186, 222, 218, 170, 173, 218, 170, 238, 238, 170, 202, 222, 234, 172, 160, 237, 218, 202, 170, 238, 218, 170, 186, 170, 170, 10, 170]), Tile([190, 186, 0, 0, 171, 160, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0]), Tile([186, 0, 0, 0, 235, 160, 0, 0, 186, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 170, 10, 0, 10, 186, 172, 0, 10, 170, 202, 0, 0, 172, 170, 0, 170, 170, 238]), Tile([10, 186, 221, 238, 171, 234, 238, 218, 10, 186, 170, 237, 0, 170, 202, 173, 0, 0, 172, 170, 0, 10, 170, 202, 0, 10, 186, 170, 0, 10, 170, 10]), Tile([0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 171, 160, 0, 0, 190, 186, 0, 0, 170, 170, 10, 170, 174, 172, 170, 186, 173, 170, 202, 170, 237, 218, 172, 160, 238, 222, 170, 170]), Tile([238, 222, 237, 234, 170, 170, 222, 218, 238, 237, 218, 170, 238, 238, 170, 202, 222, 234, 172, 160, 237, 218, 202, 170, 238, 218, 170, 186, 170, 170, 10, 170]), Tile([190, 186, 0, 0, 171, 160, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0]), Tile([186, 0, 0, 0, 235, 160, 0, 0, 186, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), // Flag Tile([10, 0, 0, 0, 160, 160, 0, 0, 10, 0, 0, 0, 0, 170, 160, 0, 10, 255, 250, 160, 10, 255, 255, 250, 10, 255, 255, 255, 10, 255, 255, 255]), Tile([10, 255, 255, 255, 10, 255, 255, 250, 10, 170, 170, 160, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 170, 0, 0, 175, 255, 170, 0, 255, 250, 0, 0, 255, 170, 0, 0]), Tile([250, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 160, 160, 0, 0, 10, 0, 0, 0, 0, 170, 170, 0, 10, 255, 255, 170, 10, 255, 255, 255, 10, 255, 255, 255, 10, 255, 255, 255]), Tile([10, 255, 255, 250, 10, 255, 250, 160, 10, 170, 160, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 255, 170, 0, 0, 255, 255, 170, 0, 255, 170, 0, 0]), Tile([170, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 160, 160, 0, 0, 10, 0, 0, 0, 0, 170, 170, 160, 10, 255, 255, 250, 10, 255, 255, 255, 10, 255, 255, 255, 10, 255, 255, 255]), Tile([10, 255, 255, 255, 10, 255, 250, 170, 10, 170, 160, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 170, 160, 0, 0, 255, 250, 0, 0, 255, 255, 160, 0]), Tile([170, 175, 250, 0, 0, 10, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 160, 160, 0, 0, 10, 0, 0, 0, 0, 170, 160, 0, 10, 255, 250, 170, 10, 255, 255, 255, 10, 255, 255, 255, 10, 255, 255, 255]), Tile([10, 255, 255, 255, 10, 255, 255, 250, 10, 170, 170, 160, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 255, 160, 0, 0, 255, 250, 0, 0]), Tile([255, 255, 170, 0, 170, 175, 250, 0, 0, 10, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 160, 160, 0, 0, 10, 0, 0, 0, 0, 170, 160, 0, 10, 255, 170, 160, 10, 255, 255, 250, 10, 255, 255, 255, 10, 255, 255, 255]), Tile([10, 255, 255, 255, 10, 255, 255, 255, 10, 170, 175, 255, 10, 0, 10, 170, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 255, 170, 0, 0]), Tile([255, 255, 170, 0, 255, 170, 0, 0, 250, 160, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([10, 0, 0, 0, 160, 160, 0, 0, 10, 0, 0, 0, 0, 170, 0, 0, 10, 255, 170, 0, 10, 255, 255, 160, 10, 255, 255, 250, 10, 255, 255, 255]), Tile([10, 255, 255, 255, 10, 255, 255, 255, 10, 170, 175, 255, 10, 0, 10, 170, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 0, 170, 255, 160, 0, 255, 250, 0, 0]), Tile([255, 160, 0, 0, 255, 160, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), // Map Tile([119, 119, 119, 119, 59, 187, 187, 187, 55, 187, 187, 187, 55, 126, 238, 238, 55, 119, 238, 238, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187]), Tile([51, 51, 51, 51, 119, 119, 119, 119, 119, 119, 119, 119, 187, 187, 187, 187, 187, 187, 187, 187, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([119, 119, 119, 119, 187, 187, 187, 187, 187, 187, 187, 187, 238, 238, 238, 238, 238, 238, 238, 238, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([51, 51, 51, 51, 119, 119, 119, 114, 119, 119, 119, 50, 187, 187, 179, 50, 187, 187, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50]), Tile([0, 0, 0, 119, 7, 119, 119, 187, 123, 187, 135, 139, 120, 139, 184, 55, 7, 120, 135, 119, 120, 187, 184, 139, 120, 187, 135, 187, 7, 119, 119, 119]), Tile([119, 0, 0, 0, 187, 119, 119, 112, 184, 120, 187, 183, 115, 139, 184, 135, 119, 120, 135, 112, 184, 139, 187, 135, 187, 120, 187, 135, 119, 119, 119, 112]), Tile([0, 0, 0, 85, 5, 85, 85, 204, 92, 204, 5, 12, 80, 12, 192, 55, 5, 80, 5, 119, 80, 204, 192, 12, 80, 204, 5, 204, 5, 85, 85, 85]), Tile([85, 0, 0, 0, 204, 85, 85, 80, 192, 80, 204, 197, 115, 12, 192, 5, 119, 80, 5, 80, 192, 12, 204, 5, 204, 80, 204, 5, 85, 85, 85, 80]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([68, 0, 0, 0, 73, 68, 0, 0, 4, 153, 68, 0, 4, 73, 217, 68, 0, 68, 157, 217, 0, 68, 73, 221, 0, 4, 68, 157, 0, 4, 68, 68]), Tile([0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 77, 0, 0, 0, 77, 68, 0, 4, 221, 217, 68, 4, 157, 221, 217, 68, 73, 153, 153, 153, 153]), Tile([64, 0, 0, 0, 64, 0, 0, 0, 212, 0, 0, 0, 212, 0, 0, 0, 221, 64, 0, 68, 217, 64, 68, 157, 148, 68, 157, 221, 153, 153, 153, 153]), Tile([0, 0, 0, 68, 0, 0, 68, 148, 0, 68, 153, 64, 68, 157, 148, 64, 157, 217, 68, 0, 221, 148, 68, 0, 217, 68, 64, 0, 68, 68, 64, 0]), Tile([0, 0, 0, 119, 0, 0, 119, 187, 0, 119, 187, 187, 119, 187, 187, 238, 187, 187, 238, 238, 187, 238, 238, 187, 238, 238, 187, 187, 238, 187, 187, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 119, 187, 0, 119, 187, 187, 119, 187, 187, 238]), Tile([0, 0, 0, 50, 0, 0, 51, 50, 0, 51, 119, 50, 51, 119, 115, 50, 119, 119, 179, 50, 119, 187, 51, 50, 187, 187, 51, 50, 187, 119, 51, 50]), Tile([55, 0, 0, 0, 55, 119, 0, 0, 55, 187, 119, 0, 55, 123, 187, 119, 55, 126, 187, 187, 55, 119, 238, 187, 55, 119, 238, 238, 55, 119, 187, 238]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 119, 51, 0, 0, 119, 119, 51, 0, 187, 119, 119, 51]), Tile([51, 0, 0, 0, 119, 51, 0, 0, 119, 119, 51, 0, 187, 119, 119, 51, 187, 187, 119, 119, 119, 187, 187, 119, 119, 119, 187, 187, 119, 119, 119, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 221, 153, 0, 221, 255, 221, 153, 255, 255, 221]), Tile([0, 0, 0, 153, 0, 0, 221, 153, 0, 221, 255, 221, 153, 255, 255, 221, 153, 255, 221, 153, 221, 221, 221, 153, 221, 221, 221, 153, 153, 221, 221, 153]), Tile([153, 0, 0, 0, 153, 221, 0, 0, 221, 255, 221, 0, 221, 255, 255, 153, 153, 221, 255, 153, 153, 221, 221, 221, 153, 221, 221, 221, 153, 221, 221, 153]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 153, 221, 0, 0, 221, 255, 221, 0, 221, 255, 255, 153]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 153, 153, 221, 255, 153]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 153, 153, 221, 255, 153, 153, 255, 255, 221, 221, 255, 221, 221]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 153, 153, 221, 255, 153, 153, 255, 255, 221, 221, 255, 221, 221, 221, 221, 221, 153, 153, 221, 221, 153]), Tile([35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119]), Tile([187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115]), Tile([0, 7, 119, 119, 7, 119, 138, 136, 55, 138, 136, 187, 55, 136, 143, 251, 51, 119, 136, 136, 3, 51, 55, 119, 0, 0, 51, 51, 0, 0, 55, 119]), Tile([119, 119, 112, 0, 136, 168, 119, 112, 187, 136, 168, 115, 191, 248, 136, 115, 136, 136, 119, 51, 119, 115, 51, 48, 51, 51, 0, 0, 119, 115, 0, 0]), Tile([0, 0, 0, 102, 6, 102, 102, 255, 111, 255, 166, 175, 106, 175, 250, 55, 6, 106, 166, 119, 106, 255, 250, 175, 106, 255, 166, 255, 6, 102, 102, 102]), Tile([102, 0, 0, 0, 255, 102, 102, 96, 250, 106, 255, 246, 115, 175, 250, 166, 119, 106, 166, 96, 250, 175, 255, 166, 255, 106, 255, 166, 102, 102, 102, 96]), Tile([68, 64, 0, 0, 4, 148, 68, 0, 0, 68, 153, 68, 0, 4, 68, 157, 0, 0, 68, 68, 0, 0, 4, 68, 0, 0, 0, 68, 0, 0, 0, 4]), Tile([0, 0, 68, 68, 0, 0, 68, 68, 64, 0, 4, 68, 148, 68, 4, 68, 157, 217, 68, 68, 68, 157, 221, 148, 68, 68, 157, 212, 68, 68, 68, 148]), Tile([221, 221, 221, 217, 238, 238, 237, 148, 221, 221, 217, 68, 221, 221, 148, 68, 221, 217, 157, 221, 221, 148, 158, 238, 217, 68, 73, 221, 148, 68, 73, 221]), Tile([157, 221, 221, 221, 73, 222, 238, 238, 68, 157, 221, 221, 68, 73, 221, 221, 221, 217, 157, 221, 238, 233, 73, 221, 221, 148, 68, 157, 221, 148, 68, 73]), Tile([68, 68, 0, 0, 68, 68, 0, 0, 68, 64, 0, 4, 68, 64, 68, 73, 68, 68, 157, 217, 73, 221, 217, 68, 77, 217, 68, 68, 73, 68, 68, 68]), Tile([0, 0, 4, 68, 0, 68, 73, 64, 68, 153, 68, 0, 217, 68, 64, 0, 68, 68, 0, 0, 68, 64, 0, 0, 68, 0, 0, 0, 64, 0, 0, 0]), Tile([119, 119, 187, 187, 119, 187, 187, 119, 187, 187, 119, 119, 187, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 51, 119, 0, 51, 119, 119, 51, 119, 119, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 187, 119, 0, 0, 187, 187, 119, 0, 238, 187, 187, 119]), Tile([238, 238, 187, 187, 187, 238, 238, 187, 187, 187, 238, 238, 187, 187, 187, 238, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([48, 0, 0, 0, 55, 0, 0, 0, 59, 112, 0, 0, 55, 183, 0, 0, 55, 187, 112, 0, 55, 123, 183, 0, 55, 126, 187, 112, 55, 119, 235, 183]), Tile([153, 255, 221, 153, 221, 221, 221, 153, 221, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 68, 153, 221, 221, 68, 153, 221, 153, 148, 68, 153, 153, 146]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 68, 221, 221, 153, 68, 221, 221, 153, 73, 153, 221, 153, 41, 153, 153, 68]), Tile([153, 221, 255, 153, 153, 221, 221, 221, 153, 221, 221, 221, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([153, 255, 255, 221, 221, 255, 221, 221, 221, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([221, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 68, 68, 221, 153, 68]), Tile([55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187]), Tile([55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 187, 187, 55, 119, 183, 119, 55, 123, 51, 51, 55, 115, 51, 51, 55, 51, 51, 51, 51, 51, 51, 51]), Tile([119, 119, 119, 119, 187, 187, 187, 179, 187, 187, 187, 115, 238, 238, 231, 115, 238, 238, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115]), Tile([119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50]), Tile([0, 0, 123, 187, 0, 0, 123, 190, 0, 7, 187, 238, 0, 7, 190, 238, 0, 7, 190, 238, 0, 7, 190, 238, 0, 7, 190, 238, 0, 7, 123, 238]), Tile([187, 183, 0, 0, 235, 183, 0, 0, 238, 187, 112, 0, 238, 235, 112, 0, 238, 235, 112, 0, 238, 235, 112, 0, 238, 235, 112, 0, 238, 183, 112, 0]), Tile([0, 3, 51, 51, 0, 3, 51, 119, 0, 3, 55, 123, 0, 3, 55, 123, 0, 51, 55, 187, 0, 51, 119, 187, 0, 51, 123, 187, 0, 51, 123, 187]), Tile([51, 51, 48, 0, 119, 51, 48, 0, 183, 115, 48, 0, 183, 115, 48, 0, 187, 115, 51, 0, 187, 119, 51, 0, 187, 183, 51, 0, 187, 183, 51, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 68, 153, 0, 68, 153, 68, 68, 68, 68, 68]), Tile([68, 68, 68, 77, 4, 68, 68, 221, 0, 68, 77, 238, 68, 68, 221, 221, 153, 77, 221, 153, 148, 221, 153, 68, 77, 153, 68, 68, 68, 68, 68, 68]), Tile([148, 68, 68, 157, 217, 68, 68, 157, 237, 148, 68, 73, 221, 217, 68, 73, 153, 221, 148, 68, 68, 153, 217, 68, 68, 68, 153, 148, 68, 68, 68, 153]), Tile([217, 68, 68, 73, 217, 68, 68, 157, 148, 68, 73, 222, 148, 68, 157, 221, 68, 73, 221, 153, 68, 157, 153, 68, 73, 153, 68, 68, 153, 68, 68, 68]), Tile([212, 68, 68, 68, 221, 68, 68, 64, 238, 212, 68, 0, 221, 221, 68, 68, 153, 221, 212, 153, 68, 153, 221, 73, 68, 68, 153, 212, 68, 68, 68, 68]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 153, 68, 0, 0, 68, 153, 68, 0, 68, 68, 68, 68]), Tile([0, 0, 0, 51, 0, 0, 51, 119, 0, 51, 119, 119, 51, 119, 119, 187, 119, 119, 187, 187, 119, 187, 187, 119, 187, 187, 119, 119, 187, 119, 119, 119]), Tile([187, 187, 238, 238, 187, 238, 238, 187, 238, 238, 187, 187, 238, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([187, 187, 119, 119, 119, 187, 187, 119, 119, 119, 187, 187, 119, 119, 119, 187, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([119, 0, 0, 0, 187, 119, 0, 0, 187, 187, 119, 0, 238, 187, 187, 119, 238, 238, 187, 187, 187, 238, 238, 187, 187, 187, 238, 238, 187, 187, 187, 238]), Tile([112, 0, 0, 0, 183, 0, 0, 0, 187, 112, 0, 0, 235, 183, 0, 0, 123, 187, 112, 0, 51, 123, 183, 0, 51, 51, 123, 112, 51, 51, 51, 51]), Tile([153, 221, 221, 68, 153, 221, 221, 68, 153, 221, 153, 148, 68, 153, 153, 148, 68, 153, 221, 148, 73, 221, 221, 148, 73, 221, 221, 148, 41, 221, 221, 146]), Tile([68, 153, 221, 66, 68, 221, 217, 66, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 32, 34, 34, 34, 32, 34, 34, 34, 0, 0, 2, 32, 0]), Tile([36, 221, 153, 68, 36, 157, 221, 68, 34, 157, 217, 34, 34, 41, 146, 34, 2, 34, 34, 34, 2, 34, 34, 34, 0, 34, 34, 34, 0, 2, 32, 0]), Tile([68, 221, 221, 153, 68, 221, 221, 153, 73, 153, 221, 153, 73, 153, 153, 68, 73, 221, 153, 68, 73, 221, 221, 148, 73, 221, 221, 148, 41, 221, 221, 146]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 68, 68, 221, 153, 68, 68, 153, 153, 148, 73, 157, 221, 148, 73, 221, 221, 148, 73, 221, 221, 148]), Tile([153, 221, 221, 68, 68, 221, 153, 68, 68, 153, 153, 148, 73, 157, 221, 148, 73, 221, 221, 148, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34]), Tile([68, 153, 153, 148, 73, 157, 221, 148, 73, 221, 221, 148, 73, 221, 221, 148, 41, 221, 221, 146, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34]), Tile([35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 115, 51, 35, 55, 34, 34, 35, 50, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34]), Tile([187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 119, 119, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 51, 51, 51, 51, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 119, 123, 119, 115, 51, 51, 183, 115, 51, 51, 55, 115, 51, 51, 51, 115, 51, 51, 51, 51]), Tile([0, 9, 153, 153, 0, 157, 157, 217, 9, 221, 158, 158, 153, 153, 157, 221, 0, 4, 157, 217, 0, 68, 157, 153, 4, 68, 153, 68, 68, 68, 148, 68]), Tile([73, 153, 153, 148, 221, 148, 157, 217, 233, 68, 73, 238, 148, 68, 73, 221, 148, 73, 153, 157, 221, 221, 148, 157, 157, 217, 68, 73, 73, 148, 68, 73]), Tile([73, 153, 153, 148, 157, 217, 73, 221, 238, 148, 68, 158, 221, 148, 68, 73, 217, 153, 148, 73, 217, 73, 221, 221, 148, 68, 157, 217, 148, 68, 73, 148]), Tile([153, 153, 144, 0, 157, 217, 217, 0, 233, 233, 221, 144, 221, 217, 153, 153, 157, 217, 64, 0, 153, 217, 68, 0, 68, 153, 68, 64, 68, 73, 68, 68]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 4, 153, 148, 0, 4, 153, 148, 0, 73, 153, 68, 0, 73, 148, 68, 4, 153, 68, 68, 4, 148, 68, 0, 73, 68, 0, 0, 68, 0, 0, 0]), Tile([73, 153, 68, 68, 77, 217, 68, 67, 77, 148, 68, 51, 77, 148, 67, 51, 73, 68, 51, 55, 73, 64, 51, 119, 68, 0, 55, 123, 64, 0, 55, 123]), Tile([68, 68, 153, 148, 52, 68, 157, 212, 51, 68, 73, 212, 51, 52, 73, 212, 115, 51, 68, 148, 119, 51, 4, 148, 183, 115, 0, 68, 183, 115, 0, 4]), Tile([73, 153, 64, 0, 73, 153, 64, 0, 68, 153, 148, 0, 68, 73, 148, 0, 68, 68, 153, 64, 0, 68, 73, 64, 0, 0, 68, 148, 0, 0, 0, 68]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 51, 119, 0, 51, 51, 34, 51, 34, 34, 34]), Tile([0, 0, 0, 119, 0, 0, 119, 187, 0, 119, 187, 187, 119, 187, 187, 238, 187, 187, 119, 51, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([119, 119, 187, 187, 119, 187, 187, 119, 187, 187, 119, 119, 51, 51, 51, 51, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([238, 238, 187, 187, 187, 238, 238, 187, 187, 187, 238, 238, 119, 119, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([51, 0, 0, 0, 119, 51, 0, 0, 119, 119, 51, 0, 187, 119, 119, 51, 34, 51, 119, 119, 34, 34, 34, 51, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 187, 119, 0, 0, 51, 119, 119, 0, 51, 51, 51, 119]), Tile([34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 32, 2, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([144, 0, 0, 0, 153, 0, 0, 0, 217, 208, 0, 0, 221, 253, 0, 0, 157, 255, 208, 0, 153, 223, 253, 0, 153, 221, 255, 144, 153, 221, 223, 153]), Tile([0, 0, 0, 9, 0, 0, 0, 153, 0, 0, 13, 157, 0, 0, 223, 221, 0, 13, 255, 217, 0, 223, 253, 153, 9, 255, 221, 153, 153, 253, 221, 153]), Tile([34, 157, 217, 34, 34, 41, 146, 34, 2, 34, 34, 34, 2, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([41, 221, 221, 146, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34, 2, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0]), Tile([34, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([2, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 153, 0, 0, 153, 157, 0, 9, 217, 255, 0, 157, 221, 253, 9, 221, 157, 217, 9, 217, 157, 217, 73, 148, 157, 217, 73, 148, 157, 217]), Tile([153, 221, 221, 153, 153, 255, 255, 153, 221, 255, 255, 221, 221, 221, 221, 221, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([153, 0, 0, 0, 217, 153, 0, 0, 255, 157, 144, 0, 223, 221, 217, 0, 157, 217, 221, 144, 157, 217, 157, 144, 157, 217, 73, 148, 157, 217, 73, 148]), Tile([0, 13, 208, 0, 0, 223, 253, 0, 9, 253, 223, 144, 73, 221, 221, 148, 73, 221, 221, 148, 73, 221, 221, 148, 73, 221, 221, 148, 68, 157, 217, 68]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 208, 0, 0, 223, 253, 0, 9, 253, 223, 144, 73, 221, 221, 148, 73, 221, 221, 148, 68, 157, 217, 68]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 208, 0, 0, 223, 253, 0, 9, 253, 223, 144, 68, 157, 217, 68]), Tile([0, 0, 0, 34, 0, 0, 2, 68, 0, 0, 36, 73, 0, 0, 36, 153, 0, 34, 36, 73, 2, 68, 68, 68, 36, 73, 148, 68, 36, 153, 153, 68]), Tile([34, 0, 0, 34, 68, 32, 2, 68, 212, 66, 36, 77, 217, 68, 68, 157, 153, 68, 68, 153, 148, 68, 68, 73, 68, 77, 212, 68, 68, 157, 217, 68]), Tile([34, 0, 0, 34, 68, 32, 2, 68, 212, 66, 36, 77, 217, 68, 68, 157, 153, 68, 68, 153, 148, 68, 68, 73, 68, 77, 212, 68, 68, 157, 217, 68]), Tile([34, 0, 0, 0, 68, 32, 0, 0, 148, 66, 0, 0, 153, 66, 0, 0, 148, 66, 34, 0, 68, 68, 68, 32, 68, 73, 148, 66, 68, 153, 153, 66]), Tile([0, 0, 3, 51, 0, 0, 3, 55, 0, 0, 3, 59, 0, 0, 3, 123, 0, 0, 51, 123, 0, 0, 51, 123, 0, 0, 55, 123, 0, 0, 55, 123]), Tile([51, 48, 0, 0, 115, 48, 0, 0, 179, 48, 0, 0, 183, 48, 0, 0, 183, 51, 0, 0, 183, 51, 0, 0, 183, 115, 0, 0, 183, 115, 0, 0]), Tile([0, 0, 0, 119, 7, 119, 119, 238, 126, 238, 183, 190, 123, 190, 235, 55, 7, 123, 183, 119, 123, 238, 235, 190, 123, 238, 183, 238, 7, 119, 119, 119]), Tile([119, 0, 0, 0, 238, 119, 119, 112, 235, 123, 238, 231, 115, 190, 235, 183, 119, 123, 183, 112, 235, 190, 238, 183, 238, 123, 238, 183, 119, 119, 119, 112]), Tile([0, 0, 0, 2, 0, 0, 0, 50, 0, 0, 3, 114, 0, 0, 55, 50, 0, 3, 119, 50, 0, 55, 115, 50, 3, 119, 179, 50, 55, 123, 51, 50]), Tile([0, 0, 0, 3, 0, 0, 0, 55, 0, 0, 3, 119, 0, 0, 55, 123, 0, 3, 119, 187, 0, 55, 123, 187, 3, 119, 187, 183, 55, 123, 187, 119]), Tile([187, 238, 119, 115, 190, 238, 119, 115, 238, 235, 119, 115, 238, 187, 119, 115, 235, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115, 187, 187, 119, 115]), Tile([35, 51, 187, 119, 35, 51, 187, 183, 35, 51, 123, 187, 35, 51, 119, 187, 35, 51, 119, 123, 35, 51, 119, 119, 35, 51, 119, 119, 35, 51, 119, 119]), Tile([112, 0, 0, 0, 183, 0, 0, 0, 187, 112, 0, 0, 235, 183, 0, 0, 238, 187, 112, 0, 238, 235, 183, 0, 190, 238, 187, 112, 187, 238, 235, 183]), Tile([41, 153, 221, 153, 41, 217, 157, 153, 41, 221, 153, 73, 34, 157, 217, 68, 34, 157, 217, 68, 2, 41, 146, 36, 2, 34, 34, 34, 0, 34, 34, 34]), Tile([153, 221, 221, 217, 153, 221, 221, 221, 153, 221, 221, 157, 153, 221, 221, 153, 73, 221, 221, 153, 68, 221, 221, 153, 68, 221, 221, 153, 73, 157, 221, 153]), Tile([157, 221, 221, 153, 221, 221, 221, 153, 217, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 148, 153, 221, 221, 68, 153, 221, 221, 68, 153, 221, 217, 148]), Tile([153, 221, 153, 146, 153, 217, 157, 146, 148, 153, 221, 146, 68, 157, 217, 34, 68, 157, 217, 34, 66, 41, 146, 32, 34, 34, 34, 32, 34, 34, 34, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 153, 221, 0, 0, 153, 255, 221, 153, 221, 255, 255, 153, 221, 221, 255, 221, 153, 221, 221, 221, 153, 221, 221, 153]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 221, 0, 0, 153, 255, 221, 153, 221, 255, 255, 153, 221, 221, 255, 221]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 221, 0, 0, 153, 255, 221, 153]), Tile([73, 148, 157, 217, 68, 148, 157, 217, 68, 153, 73, 221, 4, 73, 73, 221, 4, 68, 73, 153, 4, 68, 73, 153, 68, 153, 77, 217, 68, 153, 77, 217]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 68, 221, 221, 68, 68, 153, 153, 68, 73, 153, 153, 148, 73, 221, 221, 148]), Tile([157, 217, 73, 148, 157, 217, 73, 68, 221, 148, 153, 68, 221, 148, 148, 64, 153, 148, 68, 64, 153, 148, 68, 64, 157, 212, 153, 68, 157, 212, 153, 68]), Tile([34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([73, 221, 221, 148, 41, 221, 221, 146, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34, 2, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0]), Tile([36, 73, 148, 68, 36, 68, 68, 68, 2, 68, 68, 77, 0, 36, 68, 157, 0, 36, 68, 153, 2, 68, 68, 73, 36, 73, 148, 68, 36, 153, 153, 68]), Tile([68, 153, 153, 68, 68, 73, 148, 77, 212, 68, 73, 221, 217, 68, 73, 221, 153, 68, 73, 157, 148, 157, 217, 153, 73, 221, 221, 153, 73, 221, 221, 148]), Tile([68, 153, 153, 68, 212, 73, 148, 68, 221, 148, 68, 77, 221, 148, 68, 157, 217, 148, 68, 153, 153, 157, 217, 73, 153, 221, 221, 148, 73, 221, 221, 148]), Tile([68, 73, 148, 66, 68, 68, 68, 66, 212, 68, 68, 32, 217, 68, 66, 0, 153, 68, 66, 0, 148, 68, 68, 32, 68, 73, 148, 66, 68, 153, 153, 66]), Tile([0, 0, 51, 51, 0, 0, 51, 55, 0, 0, 51, 123, 0, 0, 51, 123, 0, 3, 51, 123, 0, 3, 55, 187, 0, 3, 55, 187, 0, 3, 55, 187]), Tile([51, 51, 0, 0, 115, 51, 0, 0, 183, 51, 0, 0, 183, 51, 0, 0, 183, 51, 48, 0, 187, 115, 48, 0, 187, 115, 48, 0, 187, 115, 48, 0]), Tile([0, 68, 68, 34, 4, 153, 157, 66, 73, 157, 217, 212, 73, 221, 221, 148, 73, 68, 73, 217, 68, 73, 148, 153, 4, 153, 66, 73, 0, 68, 41, 153]), Tile([34, 68, 68, 0, 36, 217, 153, 64, 77, 157, 217, 148, 73, 221, 221, 148, 157, 148, 68, 148, 153, 73, 148, 68, 148, 36, 153, 64, 153, 146, 68, 0]), Tile([0, 0, 0, 3, 0, 0, 0, 55, 0, 0, 3, 119, 0, 0, 55, 123, 0, 3, 119, 115, 0, 55, 115, 34, 3, 115, 34, 34, 34, 34, 34, 34]), Tile([187, 238, 235, 187, 190, 238, 187, 187, 238, 235, 187, 187, 231, 119, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([187, 238, 235, 187, 190, 238, 187, 187, 238, 235, 187, 187, 238, 187, 187, 187, 235, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([119, 123, 187, 119, 119, 119, 187, 183, 119, 119, 123, 187, 119, 119, 119, 187, 119, 119, 119, 123, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([119, 123, 187, 119, 119, 119, 187, 183, 119, 119, 123, 187, 51, 51, 51, 59, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([0, 34, 34, 34, 0, 2, 32, 34, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([73, 153, 221, 153, 73, 217, 157, 153, 73, 221, 153, 73, 41, 221, 217, 68, 41, 221, 221, 148, 34, 157, 221, 146, 34, 157, 217, 34, 2, 41, 146, 34]), Tile([153, 221, 153, 148, 153, 217, 157, 148, 148, 153, 221, 148, 68, 157, 221, 146, 73, 221, 221, 146, 41, 221, 217, 34, 34, 157, 217, 34, 34, 41, 146, 32]), Tile([34, 34, 34, 0, 34, 2, 32, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 68, 221, 221, 153, 68, 153, 221, 68]), Tile([153, 221, 221, 221, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([221, 255, 255, 153, 221, 221, 255, 221, 153, 221, 221, 221, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 34, 34]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 119, 187, 187, 119, 119, 51, 51, 51, 51, 51, 51]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 119, 119, 119, 119, 119, 119, 51, 51, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([0, 0, 119, 119, 119, 119, 187, 187, 187, 187, 187, 190, 187, 190, 238, 238, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([119, 119, 119, 123, 119, 123, 187, 187, 187, 187, 187, 183, 51, 51, 51, 51, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([238, 238, 238, 235, 238, 235, 187, 187, 187, 187, 187, 187, 119, 119, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([0, 0, 51, 51, 51, 51, 119, 119, 119, 119, 119, 123, 119, 123, 187, 187, 187, 187, 187, 183, 187, 183, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([187, 187, 187, 190, 187, 190, 238, 238, 238, 238, 238, 235, 238, 235, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([187, 187, 187, 183, 187, 183, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 119, 119]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 119, 187, 187, 187, 187, 187, 190, 187, 190, 238, 238]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 119, 119, 119, 119, 119, 123, 119, 123, 187, 187, 187, 187, 187, 183, 187, 183, 119, 119]), Tile([0, 0, 119, 119, 119, 119, 187, 187, 187, 187, 187, 190, 187, 190, 238, 238, 238, 238, 238, 235, 238, 235, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([119, 119, 119, 123, 119, 123, 187, 187, 187, 187, 187, 183, 187, 183, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([238, 238, 238, 235, 238, 235, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 119, 187, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 119, 119, 119, 119, 119, 123, 119, 123, 187, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, 119, 187, 187, 187, 187, 187, 190, 187, 190, 238, 238, 238, 238, 238, 235, 238, 235, 187, 187]), Tile([0, 0, 51, 50, 51, 51, 119, 114, 119, 119, 119, 50, 119, 123, 179, 50, 187, 187, 51, 50, 187, 183, 51, 50, 119, 119, 51, 50, 119, 119, 51, 50]), Tile([0, 0, 221, 153, 153, 221, 255, 153, 153, 255, 255, 221, 221, 255, 221, 221, 221, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([2, 34, 34, 34, 0, 34, 34, 34, 0, 34, 34, 2, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([34, 34, 34, 32, 34, 34, 34, 0, 32, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([153, 221, 0, 0, 153, 255, 221, 153, 221, 255, 255, 153, 221, 221, 255, 221, 153, 221, 221, 221, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153]), Tile([73, 153, 153, 68, 73, 221, 217, 148, 73, 221, 221, 148, 73, 221, 221, 148, 41, 221, 221, 146, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34]), Tile([68, 221, 221, 153, 68, 153, 221, 68, 73, 153, 153, 68, 73, 221, 217, 148, 73, 221, 221, 148, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 68, 221, 221, 153, 68, 153, 221, 68, 73, 153, 153, 68, 73, 221, 217, 148, 73, 221, 221, 148, 73, 221, 221, 148]), Tile([55, 119, 0, 0, 59, 187, 119, 119, 55, 187, 187, 187, 55, 126, 235, 187, 55, 119, 238, 238, 55, 119, 190, 238, 55, 119, 187, 187, 55, 119, 187, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 119, 119, 51, 51, 183, 119, 119, 119, 187, 187, 183, 119, 123, 187, 187, 187, 119, 119, 123, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, 187, 187, 119, 119, 235, 187, 187, 187, 238, 238, 235, 187]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 119, 119, 51, 51]), Tile([123, 187, 187, 187, 119, 119, 123, 187, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([235, 187, 187, 187, 238, 238, 235, 187, 190, 238, 238, 238, 187, 187, 190, 238, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([51, 51, 0, 0, 119, 119, 51, 51, 183, 119, 119, 119, 187, 187, 183, 119, 123, 187, 187, 187, 119, 119, 123, 187, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, 187, 187, 119, 119, 235, 187, 187, 187, 238, 238, 235, 187, 190, 238, 238, 238, 187, 187, 190, 238]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 119, 119, 51, 51, 183, 119, 119, 119, 187, 187, 183, 119]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, 187, 187, 119, 119]), Tile([190, 238, 238, 238, 187, 187, 190, 238, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([183, 119, 119, 119, 187, 187, 183, 119, 123, 187, 187, 187, 119, 119, 123, 187, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119]), Tile([119, 119, 0, 0, 187, 187, 119, 119, 235, 187, 187, 187, 238, 238, 235, 187, 190, 238, 238, 238, 187, 187, 190, 238, 187, 187, 187, 187, 187, 187, 187, 187]), Tile([123, 187, 187, 187, 119, 119, 123, 187, 119, 119, 119, 119, 51, 51, 51, 51, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([235, 187, 187, 187, 238, 238, 235, 187, 190, 238, 238, 238, 119, 119, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([51, 51, 0, 0, 119, 119, 51, 51, 183, 119, 119, 119, 187, 187, 183, 119, 34, 34, 51, 51, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, 187, 187, 119, 119, 187, 187, 187, 187, 51, 51, 119, 119, 51, 51, 51, 51, 51, 51, 51, 51]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0, 0, 119, 119, 51, 51, 34, 34, 51, 51, 34, 34, 34, 34]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, 0, 0, 51, 51, 119, 119]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 68, 68, 221, 153, 68, 68, 153, 153, 148, 73, 157, 221, 148]), Tile([73, 221, 221, 148, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34, 34, 34, 34, 32, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0]), Tile([73, 221, 221, 148, 34, 157, 217, 34, 34, 41, 146, 34, 34, 34, 34, 34, 2, 34, 34, 34, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0]), Tile([153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 153, 221, 221, 153, 68, 221, 221, 153, 68, 153, 221, 68, 73, 153, 153, 68, 73, 221, 217, 148]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([2, 34, 34, 34, 0, 34, 34, 0, 0, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), Tile([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), ]; pub fn init(vdp: &mut impl Vdp) { vdp.set_tiles(1, TILES); } PK7 7 !misc-mega-rust-1/game/src/wasp.rsuse crate::sonk::Sonk; use crate::tiles; use megarust::*; pub struct Wasp { pub sprite: Sprite, frame: u16, death_timer: u16, } impl Wasp { pub fn new(x: u16, y: u16) -> Self { let sprite = Sprite { size: SpriteSize::Size4x3, x: x, y: y, link: 0, flags: *TileFlags::for_tile(tiles::WASP_TILE_OFFSET, Palette::B).set_flip_h(true), }; Wasp { sprite, frame: 0, death_timer: 0, } } pub fn update(&mut self, sonk: &mut Sonk) { if self.death_timer > 0 { self.death_timer -= 1; if self.death_timer == 0 { self.sprite.x = 128 + 330; // Hacky way to unload } return; } self.frame += 1; self.mov(); self.attack(sonk); self.update_anim(); } pub fn render(&mut self, renderer: &mut TargetRenderer) { renderer.add_sprite(self.sprite.clone()).unwrap(); } pub fn off_screen(x: i16, y: i16) -> bool { x + 32 <= 128 || x >= 128 + 320 || y + 24 < 128 || y > 128 + 224 } pub fn on_screen(x: i16, y: i16) -> bool { x + 32 >= 128 && x <= 128 + 320 && y + 24 >= 128 && y <= 128 + 224 } fn mov(&mut self) { if self.frame % 120 == 0 { let flip_h = !self.sprite.flags().flip_h(); self.sprite.flags_mut().set_flip_h(flip_h); } if self.sprite.flags_mut().flip_h() { self.sprite.x -= 1; } else { self.sprite.x += 1; } } fn attack(&mut self, sonk: &mut Sonk) { if sonk.sprite.x + 8 >= self.sprite.x + 32 || sonk.sprite.x + 16 <= self.sprite.x || sonk.sprite.y + 8 >= self.sprite.y + 24 || sonk.sprite.y + 32 <= self.sprite.y { // Not colliding return; } if sonk.is_rolling() { self.on_hit(); if sonk.sprite.y + 20 < self.sprite.y { sonk.speed_y = -30; } else if sonk.sprite.y > self.sprite.y + 4 { sonk.speed_y = 30; } else if sonk.sprite.x + 4 < self.sprite.x { sonk.speed_x = -30; } else if sonk.sprite.x > self.sprite.x + 12 { sonk.speed_x = 30; } } else { sonk.on_hit(sonk.sprite.x < self.sprite.x); } } pub fn on_hit(&mut self) { self.death_timer = 60; self.sprite.flags_mut().set_palette(Palette::C); } fn update_anim(&mut self) { if self.frame % 5 == 0 { let mut tile = tiles::WASP_TILE_OFFSET; if self.frame % 10 == 0 { tile += 12; } let _ = self.sprite.flags_mut().set_tile_index(tile); } } } PKk?T)misc-mega-rust-1/libs/megarust/Cargo.lock# This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "megarust" version = "0.1.0" PK%P"44)misc-mega-rust-1/libs/megarust/Cargo.toml[package] name = "megarust" version = "0.1.0" edition = "2021" [target.'cfg(target_arch = "m68k")'.dependencies] embedded-alloc = "0.6" critical-section = { version = "1.0", features = ["restore-state-bool"] } [dependencies] heapless = { version = "0.8.0", features = ["ufmt"] } itoa = "1" ufmt = "0.2.0" PK vdp::Tile([ 0x01, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 63: ? vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 64: @ vdp::Tile([ 0x01, 0x11, 0x11, 0x00, 0x11, 0x00, 0x01, 0x10, 0x11, 0x01, 0x11, 0x10, 0x11, 0x01, 0x11, 0x10, 0x11, 0x01, 0x11, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 65: A vdp::Tile([ 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x11, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 66: B vdp::Tile([ 0x11, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 67: C vdp::Tile([ 0x00, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 68: D vdp::Tile([ 0x11, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 69: E vdp::Tile([ 0x11, 0x11, 0x11, 0x10, 0x01, 0x10, 0x00, 0x10, 0x01, 0x10, 0x10, 0x00, 0x01, 0x11, 0x10, 0x00, 0x01, 0x10, 0x10, 0x00, 0x01, 0x10, 0x00, 0x10, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 70: F vdp::Tile([ 0x11, 0x11, 0x11, 0x10, 0x01, 0x10, 0x00, 0x10, 0x01, 0x10, 0x10, 0x00, 0x01, 0x11, 0x10, 0x00, 0x01, 0x10, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 71: G vdp::Tile([ 0x00, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x10, 0x01, 0x10, 0x01, 0x10, 0x00, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 72: H vdp::Tile([ 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x11, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 73: I vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 74: J vdp::Tile([ 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 75: K vdp::Tile([ 0x11, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x10, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 76: L vdp::Tile([ 0x11, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 77: M vdp::Tile([ 0x11, 0x00, 0x01, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x10, 0x11, 0x01, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 78: N vdp::Tile([ 0x11, 0x00, 0x01, 0x10, 0x11, 0x10, 0x01, 0x10, 0x11, 0x11, 0x01, 0x10, 0x11, 0x01, 0x11, 0x10, 0x11, 0x00, 0x11, 0x10, 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 79: O vdp::Tile([ 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 80: P vdp::Tile([ 0x11, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x11, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 81: Q vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 82: R vdp::Tile([ 0x11, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x11, 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x10, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 83: S vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x10, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 84: T vdp::Tile([ 0x11, 0x11, 0x11, 0x00, 0x10, 0x11, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 85: U vdp::Tile([ 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 86: V vdp::Tile([ 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 87: W vdp::Tile([ 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x11, 0x01, 0x01, 0x10, 0x11, 0x11, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 88: X vdp::Tile([ 0x11, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 89: Y vdp::Tile([ 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 90: Z vdp::Tile([ 0x11, 0x11, 0x11, 0x10, 0x11, 0x00, 0x01, 0x10, 0x10, 0x00, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x00, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 91: [ vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 92: \ vdp::Tile([ 0x11, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 93: ] vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 94: ^ vdp::Tile([ 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 95: _ vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, ]), // idx 96: ` vdp::Tile([ 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 97: a vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x01, 0x11, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 98: b vdp::Tile([ 0x11, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x11, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 99: c vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 100: d vdp::Tile([ 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x01, 0x11, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 101: e vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x11, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 102: f vdp::Tile([ 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 103: g vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x01, 0x10, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x10, 0x00, ]), // idx 104: h vdp::Tile([ 0x11, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x11, 0x00, 0x01, 0x11, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x10, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 105: i vdp::Tile([ 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 106: j vdp::Tile([ 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, ]), // idx 107: k vdp::Tile([ 0x11, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x11, 0x10, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 108: l vdp::Tile([ 0x01, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 109: m vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x10, 0x11, 0x01, 0x01, 0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 110: n vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 111: o vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 112: p vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x11, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, ]), // idx 113: q vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x01, 0x10, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x10, ]), // idx 114: r vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x11, 0x00, 0x01, 0x11, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 115: s vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 116: t vdp::Tile([ 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x11, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 117: u vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 118: v vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 119: w vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x01, 0x10, 0x11, 0x01, 0x01, 0x10, 0x11, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x10, 0x01, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 120: x vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x01, 0x10, 0x01, 0x10, 0x11, 0x00, 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x11, 0x00, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, ]), // idx 121: y vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x11, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x10, 0x00, ]), // idx 122: z vdp::Tile([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x00, 0x10, 0x01, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x10, 0x01, 0x00, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 123: { vdp::Tile([ 0x00, 0x01, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 124: | vdp::Tile([ 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 125: } vdp::Tile([ 0x11, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 126: ~ vdp::Tile([ 0x01, 0x11, 0x01, 0x10, 0x11, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), // idx 127: ? vdp::Tile([ 0x01, 0x11, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]), ]; PK *misc-mega-rust-1/libs/megarust/src/font.rs// use megadrive_sys::vdp::{Tile, SpriteSize, VDP, Sprite, TileFlags}; use crate::sprite::Sprite; use crate::sprite::SpriteSize; use crate::sprite::TileFlags; use crate::vdp::Tile; use crate::vdp::Vdp; use crate::Error; use crate::Palette; use crate::Renderer; /// Font struct, having tile data and a size definition pub struct Font { pub tile_data: &'static [Tile], pub sprite_size: SpriteSize, pub start_index: u16, } impl Font { /// Loads the font to the start index, using an already initialized visual display pub fn load(&self, vdp: &mut T) { vdp.set_tiles(self.start_index, self.tile_data); } /// Displays text using renderer at position `(x, y)` /// Note: remember to call `renderer.render()` afterwards /// /// # Errors /// Returns an error if the buffer size for [`Renderer::add_sprite`] is exceeded pub fn blit_text( &self, renderer: &mut T, text: &str, x: u16, y: u16, ) -> Result<(), Error> { // Calculate sprite offsets. The sprite is in the upper two bits of the sprite size, which // is "zero-indexed", starting at 0b00XX let sprite_width = ((self.sprite_size as u16 & 0b1100) >> 2) + 1; // Convert size 1X, 2X etc. to pixels let sprite_width_as_pixels = sprite_width * 8; for (idx, byte) in text.as_bytes().iter().enumerate() { let char_idx = if *byte < b' ' || *byte > 127 { b' ' } else { *byte } - 0x20; let char_as_tile_idx = u16::from(char_idx) + self.start_index; let mut sprite = Sprite::with_flags( TileFlags::for_tile(char_as_tile_idx, Palette::A), self.sprite_size, ); // If the string is too long for `u16` we got very different problems... #[expect(clippy::cast_possible_truncation)] { sprite.x = x + sprite_width_as_pixels * idx as u16; } sprite.y = y; sprite.flags.set_priority(true); renderer.add_sprite(sprite)?; } Ok(()) } // Display text by setting it to the specified plane. pub fn blit_text_to_plane( &self, plane: crate::vdp::Plane, vdp: &mut T, text: &str, offset: u16, ) { self.blit_text_bytes_to_plane(plane, vdp, text.as_bytes(), offset); } // Same as blit_text_to_plane but takes a byte array as input. pub fn blit_text_bytes_to_plane( &self, plane: crate::vdp::Plane, vdp: &mut T, text_bytes: &[u8], offset: u16, ) { // We only render 40 tiles (= a full line that visible on the screen). // This might fsck things up if we're in the width=32 mode, so be careful :) let mut len = text_bytes.len(); if len > 40 { len = 40; } let mut tiles = [TileFlags::for_tile(self.start_index, Palette::A); 40]; for (idx, byte) in text_bytes.iter().enumerate() { let char_idx = if *byte < b' ' || *byte > 127 { b' ' } else { *byte } - 0x20; let char_as_tile_idx = u16::from(char_idx) + self.start_index; if idx >= len { break; } tiles[idx] = TileFlags::for_tile(char_as_tile_idx, Palette::A); } vdp.set_plane_tiles(plane, offset, &tiles); } } PK7cP P )misc-mega-rust-1/libs/megarust/src/lib.rs#![cfg_attr(target_arch = "m68k", no_std)] use ufmt::derive::uDebug; mod controller; mod renderer; mod rng; mod sprite; mod vdp; // XXX: Move away from here, it is MD specific pub mod ports; pub use controller::Button; pub use controller::ControllerState; pub use controller::Controllers; #[cfg(target_arch = "m68k")] pub use ports::Serial; pub use renderer::Renderer; pub use rng::PseudoRng; pub use sprite::Sprite; pub use sprite::SpriteSize; pub use sprite::TileFlags; pub use vdp::HScrollMode; pub use vdp::Palette; pub use vdp::Plane; pub use vdp::ScrollSize; pub use vdp::Tile; pub use vdp::VScrollMode; pub use vdp::Vdp; pub use vdp::WindowDivide; #[cfg(target_arch = "m68k")] pub type TargetVdp = vdp::m68k::Vdp; #[cfg(target_arch = "m68k")] pub type TargetControllers = controller::m68k::Controllers; #[cfg(target_arch = "m68k")] pub type TargetControllerState = controller::m68k::ControllerState; #[cfg(target_arch = "m68k")] pub type TargetRenderer = renderer::m68k::Renderer; /// Default error trait pub enum Error { /// No more buffer BufferSizeExceeded, /// Who knows `¯\_(ツ)_/¯` Unknown, } impl core::fmt::Debug for Error { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { match self { Self::BufferSizeExceeded => write!(f, "BufferSizeExceeded"), Self::Unknown => write!(f, "Unknown"), } } } #[derive(uDebug)] pub enum LogLevel { Trace, Debug, Info, Warning, Error, } #[macro_export] macro_rules! log { ($lvl:expr, $($arg:tt)+) => ({ use ufmt::uwrite; let lvl = $lvl; uwrite!(Serial, "[{:?}] ", lvl).unwrap(); uwrite!(Serial, $($arg)+).unwrap(); uwrite!(Serial, "\n").unwrap(); }); } #[macro_export] macro_rules! debug { ($($arg:tt)+) => ({ log!(megarust::LogLevel::Debug, $($arg)+); }); } #[macro_export] macro_rules! warn { ($($arg:tt)+) => ({ log!(megarust::LogLevel::Warning, $($arg)+); }); } #[macro_export] macro_rules! info { ($($arg:tt)+) => ({ log!(megarust::LogLevel::Info, $($arg)+); }); } #[macro_export] macro_rules! error { ($($arg:tt)+) => ({ log!(megarust::LogLevel::Error, $($arg)+); }); } // Font mod font; pub use font::Font; mod default_ascii; pub static DEFAULT_FONT_1X1: Font = Font { tile_data: default_ascii::TILE_DATA, sprite_size: SpriteSize::Size1x1, start_index: 1, }; #[cfg(target_arch = "m68k")] mod m68k; #[cfg(target_arch = "m68k")] pub mod z80; #[cfg(target_arch = "m68k")] pub use m68k::*; #[cfg(target_arch = "m68k")] #[must_use] pub fn init_hardware() -> ( vdp::m68k::Vdp, renderer::m68k::Renderer, controller::m68k::Controllers, ) { ( unsafe { vdp::m68k::Vdp::new() }, renderer::m68k::Renderer::default(), controller::m68k::Controllers::new(), ) } PK͵dF*misc-mega-rust-1/libs/megarust/src/m68k.rsuse core::ptr::read_volatile; use core::ptr::write_volatile; use critical_section::RawRestoreState; use embedded_alloc::LlffHeap as Heap; use crate::z80; #[global_allocator] static HEAP: Heap = Heap::empty(); // The heap allocator needs a critical section implementation. struct MyCriticalSection; critical_section::set_impl!(MyCriticalSection); unsafe impl critical_section::Impl for MyCriticalSection { unsafe extern "Rust" fn acquire() -> RawRestoreState { true } unsafe extern "Rust" fn release(_token: RawRestoreState) {} } extern "C" { static _data_src: u8; static mut _data_start: u8; static _data_end: u8; static mut _bss_start: u8; static _bss_end: u8; static mut _heap_start: u8; static _heap_end: u8; } #[no_mangle] extern "C" fn _init_runtime() { // Implement SEGA copy protection. init_tmss(); // Shutdown the Z80 and set it up for RAM access. // This is required to access peripherals on the Z80 bus. // More consideration will be needed here when the Z80 is considered for // use proper. z80::halt(true); z80::request_bus(true); z80::halt(false); // Copy .data, zero .bss, init heap unsafe { let data_count = _data_end as *const u8 as usize - _data_start as *const u8 as usize; core::ptr::copy_nonoverlapping(&raw const _data_src, &raw mut _data_start, data_count); let bss_size = (&raw const _bss_end) as usize - (&raw const _bss_start) as usize; core::ptr::write_bytes(&raw mut _bss_start, 0, bss_size); let heap_size = (&raw const _heap_end) as usize - (&raw const _heap_start) as usize; HEAP.init(&raw mut _heap_start as usize, heap_size); } } /// An enum for the various region variants of the Mega Drive. #[derive(Clone, Copy, Debug)] pub enum Region { Invalid, Japan, Europe, USA, } /// A struct containing version information extracted from the console. /// /// This can be used to determine region, resolution, frame rate and hardware /// revision. #[derive(Clone, Copy, Debug)] pub struct Version(u8); impl Version { /// Retrieve the hardware revision. pub fn hardware_revision(self) -> u8 { self.0 & 0xf } /// Check if a FDD is attached. pub fn has_fdd(self) -> bool { (self.0 & 0x20) != 0 } /// Returns true if this is a PAL system. pub fn is_pal(self) -> bool { (self.0 & 0x40) != 0 } /// Returns true if this is a NTSC system. pub fn is_ntsc(self) -> bool { !self.is_pal() } /// Returns true if this is an 'overseas' model, i.e. not for use in Japan. pub fn is_overseas(self) -> bool { (self.0 & 0x80) != 0 } /// Return the region variation of this console. pub fn region(self) -> Region { match (self.is_pal(), self.is_overseas()) { (false, false) => Region::Japan, (false, true) => Region::USA, (true, false) => Region::Europe, (true, true) => Region::Invalid, } } } const VERSION_REG: *mut u8 = (0x00a1_0001) as _; /// Read the console version information. pub fn version() -> Version { let v = unsafe { read_volatile(VERSION_REG) }; Version(v) } // TMSS - copy protection for the Mega Drive. const TMSS_CODE: &[u8; 4] = b"SEGA"; const TMSS_REG: *mut u32 = 0x00a1_4000 as _; fn init_tmss() { if version().hardware_revision() > 0 { unsafe { let tmss_code: *const u32 = (&raw const TMSS_CODE[0]).cast(); write_volatile(TMSS_REG.cast(), *tmss_code); } } } #[panic_handler] fn panic(info: &core::panic::PanicInfo) -> ! { use core::fmt::Write; use heapless::String; use crate::vdp; use crate::Palette; use crate::Plane; use crate::Renderer; use crate::Vdp; use crate::DEFAULT_FONT_1X1; // Since we don't know where the panic occurred, we can't assume the vdp and renderer are // initialized yet let (mut vdp, mut renderer, _) = crate::init_hardware(); vdp.enable_interrupts(false, true, false); vdp.enable_display(true); vdp.set_background(Palette::A, 2); vdp.set_plane_size(vdp::ScrollSize::Cell64, vdp::ScrollSize::Cell64); // Initialize the default font tiles DEFAULT_FONT_1X1.load(&mut vdp); let mut panic_text: String<40> = String::new(); let _ = write!(panic_text, "{}", &info.message()); let mut buffer = itoa::Buffer::new(); let (file, line) = if let Some(loc) = info.location() { (loc.file(), buffer.format(loc.line())) } else { ("unknown file", "unknown line") }; let lines = [ "A problem has been detected and MegaRust has", "been shut down to prevent damage to your", "emulator.", "", "Technical Information:", &panic_text, "", "File:", file, "Line:", line, "", ]; for (idx, line) in lines.iter().enumerate() { DEFAULT_FONT_1X1.blit_text_to_plane( Plane::A, &mut vdp, line, /*offset=*/ (idx as u16) * 64, ); } loop { renderer.clear(); renderer.render(&mut vdp); // vsync vdp.wait_for_vblank(); } } PK,/O||+misc-mega-rust-1/libs/megarust/src/ports.rs#![allow(dead_code)] use core::ptr::read_volatile; use core::ptr::write_volatile; const IO_BASE: u32 = 0xa1_0000; const IO_DATA: *mut u8 = (IO_BASE + 3) as _; const IO_CTRL: *mut u8 = (IO_BASE + 9) as _; const IO_TX: *mut u8 = (IO_BASE + 0xf) as _; const IO_RX: *mut u8 = (IO_BASE + 0x11) as _; const IO_SCTRL: *mut u8 = (IO_BASE + 0x13) as _; fn read_reg_2(base: *mut u8, idx: u8) -> u8 { unsafe { read_volatile(base.offset(idx as isize)) } } fn write_reg_2(base: *mut u8, idx: u8, v: u8) { unsafe { write_volatile(base.offset(idx as isize), v); } } fn read_reg_6(base: *mut u8, idx: u8) -> u8 { unsafe { read_volatile(base.offset((idx * 6) as isize)) } } fn write_reg_6(base: *mut u8, idx: u8, v: u8) { unsafe { write_volatile(base.offset((idx * 6) as isize), v); } } /// A configurable baud rate for serial port operation. #[repr(u8)] #[derive(Clone, Copy, Debug)] pub(crate) enum Baud { B4800 = 0b00, B2400 = 0b01, B1200 = 0b10, B300 = 0b11, } /// The current status of the serial port. #[derive(Clone, Copy, Debug)] pub(crate) struct SerialStatus(u8); impl SerialStatus { /// Returns true if the serial port is ready to receive. pub fn is_rx_ready(self) -> bool { (self.0 & 2) != 0 } /// Returns true if a receive error has occurred. pub fn has_rx_error(self) -> bool { (self.0 & 4) != 0 } /// Returns true if the TX buffer is full. /// /// No more bytes can be queued in this state. pub fn is_tx_full(self) -> bool { (self.0 & 1) != 0 } /// Returns true if this port is configured to raise an interrupt /// when there is data to read. pub fn rx_interrupt_enabled(self) -> bool { (self.0 & 8) != 0 } /// Returns true if this port has serial output mode enabled. pub fn serial_tx(self) -> bool { (self.0 & 0x10) != 0 } /// Returns true if this port is configured for receiving via serial mode. pub fn serial_rx(self) -> bool { (self.0 & 0x20) != 0 } /// Returns the current configured baud rate of this serial port. pub fn baud(self) -> Baud { match self.0 >> 6 { 0b00 => Baud::B4800, 0b01 => Baud::B2400, 0b10 => Baud::B1200, _ => Baud::B300, } } } /// A representation of one of the 3 IO ports on the Mega Drive. pub(crate) struct IOPort(u8); impl IOPort { /// Set the directions of the pins on this IO port. /// /// A one indicates the pin is used as output. pub fn set_pin_directions_raw(&self, directions: u8, enable_int: bool) { let intr = if enable_int { 0x80 } else { 0 }; write_reg_2(IO_CTRL, self.0, intr | (directions & 0x7f)); } /// Set the values of output pins. /// /// Any other specified pin values are ignored. pub fn set_pins(&self, values: u8) { write_reg_2(IO_DATA, self.0, values); } /// Get the value of all of the pins. /// /// Output pins show the value they were last set to. pub fn get_pins(&self) -> u8 { read_reg_2(IO_DATA, self.0) } /// Configure serial operation of this IO port. /// /// `sin` uses the serial converter for input. /// `sout` uses the serial converter for output. /// `rint` enables the serial interrupt for this port. pub fn configure_serial(&self, sin: bool, sout: bool, rint: bool, baud: Baud) { let mut v = (baud as u8) << 6; if sin { v |= 0x20; } if sout { v |= 0x10; } if rint { v |= 0x80; } // The 3 lowest bits are status bits. write_reg_6(IO_SCTRL, self.0, v); } /// Read the serial status from the IO port. pub fn serial_status_raw(&self) -> u8 { read_reg_6(IO_SCTRL, self.0) } /// Read a single byte from the serial port. pub fn serial_read(&self) -> u8 { read_reg_6(IO_RX, self.0) } /// Write a single byte to the serial port. pub fn serial_write(&self, v: u8) { write_reg_6(IO_TX, self.0, v); } } /// The first player's controller port. pub(crate) fn controller_1() -> IOPort { IOPort(0) } /// The second player's controller port. pub(crate) fn controller_2() -> IOPort { IOPort(1) } /// The optional extension port on the back of the console. pub(crate) fn ext() -> IOPort { IOPort(2) } pub struct Serial; impl ufmt::uWrite for Serial { type Error = core::convert::Infallible; #[inline(always)] fn write_str(&mut self, text: &str) -> Result<(), Self::Error> { for b in text.bytes() { ext().serial_write(b); } Ok(()) } } PKg)misc-mega-rust-1/libs/megarust/src/rng.rs#[cfg(target_arch = "m68k")] pub struct PseudoRng { current_rand: u16, } #[cfg(target_arch = "m68k")] impl PseudoRng { // Thank you Stephane Dallongeville! #[must_use] pub fn from_seed(seed: u16) -> PseudoRng { PseudoRng { current_rand: seed ^ 0xD94B, // XOR with some val to avoid 0 } } /// Returns the next random [`u16`] value #[cfg(target_arch = "m68k")] pub fn random(&mut self) -> u16 { use core::ptr::read_volatile; const GFX_HVCOUNTER_PORT: *const u16 = 0x00C0_0008 as _; // SAFETY // The read_volatile call is guaranteed ONLY on the Sega Mega Drive. The horizontal/vertical // video sync counter is a "port" that is mapped directly into the system address space. It // is to my knowledge always initialized, so GFX_HVCOUNTER_PORT can never be a null // reference. unsafe { // https://github.com/Stephane-D/SGDK/blob/908926201af8b48227be4dbc8fbb0d5a18ac971b/src/tools.c#L36 let hv_counter = read_volatile(GFX_HVCOUNTER_PORT); self.current_rand ^= (self.current_rand >> 1) ^ hv_counter; self.current_rand ^= self.current_rand << 1; self.current_rand } } } PKnf  ,misc-mega-rust-1/libs/megarust/src/sprite.rsuse crate::Palette; const TILE_FLAG_PRIORITY: u16 = 0x8000; const TILE_FLAG_FLIP_H: u16 = 0x800; const TILE_FLAG_FLIP_V: u16 = 0x1000; /// A struct representing the display flags of a single tile. /// /// This is shared between sprite definitions and tiles rendered on one of the 3 /// render planes. #[derive(Clone, Copy, Debug, Default)] pub struct TileFlags(pub(crate) u16); impl TileFlags { /// Create a new flag with all values cleared. #[must_use] pub const fn new() -> TileFlags { TileFlags(0) } /// Create a new flag set for a given tile index. #[must_use] pub const fn for_tile(tile_idx: u16, palette: Palette) -> TileFlags { TileFlags(tile_idx | ((palette as u16) << 13)) } /// Get the tile index these flags refer to. #[must_use] pub const fn tile_index(self) -> u16 { self.0 & 0x7ff } /// Set the tile index for these flags. #[must_use] pub fn set_tile_index(&mut self, tile_index: u16) -> &mut TileFlags { self.0 = (self.0 & 0xf800) | (tile_index & 0x7ff); self } /// Get the palette index these flags use. #[must_use] pub const fn palette(self) -> u8 { ((self.0 >> 13) & 3) as u8 } /// Set the palette used by these flags. pub fn set_palette(&mut self, palette: Palette) -> &mut TileFlags { self.0 = (self.0 & 0x9fff) | ((palette as u16) << 13); self } /// Returns true if this tile will be rendered with priority. #[must_use] pub const fn priority(self) -> bool { (self.0 & TILE_FLAG_PRIORITY) != 0 } /// Configure whether these flags render tiles with priority. pub fn set_priority(&mut self, p: bool) -> &mut TileFlags { if p { self.0 |= TILE_FLAG_PRIORITY; } else { self.0 &= !TILE_FLAG_PRIORITY; } self } /// Returns true if this tile is flipped horizontally. #[must_use] pub const fn flip_h(self) -> bool { (self.0 & TILE_FLAG_FLIP_H) != 0 } /// Set whether these flags will render horizontally flipped tiles. pub fn set_flip_h(&mut self, p: bool) -> &mut TileFlags { if p { self.0 |= TILE_FLAG_FLIP_H; } else { self.0 &= !TILE_FLAG_FLIP_H; } self } /// Returns true if this tile is flipped vertically. #[must_use] pub const fn flip_v(self) -> bool { (self.0 & TILE_FLAG_FLIP_V) != 0 } /// Set whether these flags will render vertically flipped tiles. pub fn set_flip_v(&mut self, p: bool) -> &mut TileFlags { if p { self.0 |= TILE_FLAG_FLIP_V; } else { self.0 &= !TILE_FLAG_FLIP_V; } self } } /// An enumeration of valid sprite sizes in tiles. #[repr(u8)] #[derive(Copy, Clone, Debug)] pub enum SpriteSize { Size1x1 = 0b0000, Size2x1 = 0b0100, Size3x1 = 0b1000, Size4x1 = 0b1100, Size1x2 = 0b0001, Size2x2 = 0b0101, Size3x2 = 0b1001, Size4x2 = 0b1101, Size1x3 = 0b0010, Size2x3 = 0b0110, Size3x3 = 0b1010, Size4x3 = 0b1110, Size1x4 = 0b0011, Size2x4 = 0b0111, Size3x4 = 0b1011, Size4x4 = 0b1111, } impl SpriteSize { /// Get the `SpriteSize` given the width and height of the sprite in tiles. /// /// # Panics /// Will panic for invalid sprite size #[must_use] pub const fn for_size(w: u8, h: u8) -> SpriteSize { assert!((w <= 4) && (h <= 4), "invalid sprite size"); unsafe { core::mem::transmute(((w - 1) << 2) | (h - 1)) } } /// Get the width in tiles given the `SpriteSize`. #[must_use] pub const fn w(s: SpriteSize) -> u8 { unsafe { (core::mem::transmute::(s) >> 2) + 1 } } /// Get the width in tiles given the `SpriteSize`. #[must_use] pub const fn h(s: SpriteSize) -> u8 { unsafe { (core::mem::transmute::(s) & 0b11) + 1 } } } /// A representation of the hardware sprites supported by the Mega Drive VDP. #[repr(C)] #[derive(Clone, Debug)] pub struct Sprite { pub y: u16, pub size: SpriteSize, pub link: u8, pub flags: TileFlags, pub x: u16, } impl Sprite { /// Create a new sprite with the given rendering flags. #[must_use] pub const fn with_flags(flags: TileFlags, size: SpriteSize) -> Self { Sprite { y: 0, size, link: 0, flags, x: 0, } } /// Fetch the rendering flags for this sprite. #[must_use] pub const fn flags(&self) -> TileFlags { self.flags } /// Get a mutable reference to this sprite's rendering flags. #[must_use] pub fn flags_mut(&mut self) -> &mut TileFlags { &mut self.flags } /// Set the rendering flags for this sprite. pub fn set_flags(&mut self, flags: TileFlags) { self.flags = flags; } #[must_use] pub const fn w(&self) -> u16 { SpriteSize::w(self.size) as u16 } #[must_use] pub const fn h(&self) -> u16 { SpriteSize::h(self.size) as u16 } } impl Default for Sprite { fn default() -> Self { Sprite { y: 0, size: SpriteSize::Size1x1, link: 0, flags: TileFlags::default(), x: 0, } } } PKji|)misc-mega-rust-1/libs/megarust/src/z80.rsuse core::ptr::write_volatile; const Z80_RAM_BASE: u32 = 0x00a0_0000; const Z80_RAM_SIZE: u32 = 0x2000; const Z80_CTRL_BASE: u32 = 0x00a1_1100; const Z80_BUS_REQ: *mut u16 = Z80_CTRL_BASE as _; const Z80_RESET: *mut u16 = (Z80_CTRL_BASE + 0x100) as _; /// Request the bus from the Z80. /// /// This is required to access Z80 RAM without causing the 68k to hang. pub fn request_bus(r: bool) { unsafe { if r { write_volatile(Z80_BUS_REQ, 0x100); } else { write_volatile(Z80_BUS_REQ, 0); } } } /// Halt the Z80. /// /// This needs to be toggled on and then off to trigger a reset. The Z80 /// memory cannot be accessed from the 68k whilst the Z80 is resetting. pub fn halt(r: bool) { unsafe { if r { write_volatile(Z80_RESET, 0); } else { write_volatile(Z80_RESET, 0x100); } } } /// Reset the Z80. /// /// This is required after uploading a program. pub fn reset() { request_bus(true); halt(false); request_bus(false); } /// Access the Z80's RAM. /// /// The bus must be requested for accesses into this slice to be safe, /// though it is safe to call this function beforehand. /// /// # Safety /// Grants direct access to the ram, as slice. /// If the RAM changes, Rusts' mutability guarantees may not hold #[must_use] pub unsafe fn ram() -> &'static mut [u8] { core::slice::from_raw_parts_mut(Z80_RAM_BASE as _, Z80_RAM_SIZE as usize) } PKb5misc-mega-rust-1/libs/megarust/src/controller/m68k.rs#![allow(dead_code)] // HACK: This isn't really a NOP but it'll take at least as long as a NOP. fn nop() { unsafe { core::ptr::read_volatile(0 as _) } } #[derive(Clone, Debug, Default)] pub struct ControllerState { buttons: u16, last_buttons: u16, is_6button: bool, present: bool, } impl ControllerState { fn down_raw(&self) -> u16 { self.buttons } fn pressed_raw(&self) -> u16 { self.buttons & !self.last_buttons } } impl super::ControllerState for ControllerState { fn is_6button(&self) -> bool { self.is_6button } fn is_pressed(&self, btn: super::Button) -> bool { (self.down_raw() & (1 << (btn as u8))) != 0 } fn just_pressed(&self, btn: super::Button) -> bool { (self.pressed_raw() & (1 << (btn as u8))) != 0 } } #[derive(Default)] pub struct Controllers { controllers: [ControllerState; 2], } impl Controllers { /// Create a controller manager and initialise it. /// /// Whilst this is not unsafe, as it would not cause any memory risk, /// creating two of these managers will create interference. pub(crate) fn new() -> Controllers { // Configure the controllers for input except for the 'clock' pin. let c1 = crate::ports::controller_1(); c1.set_pin_directions_raw(0x40, false); c1.set_pins(0x40); let c2 = crate::ports::controller_2(); c2.set_pin_directions_raw(0x40, false); c2.set_pins(0x40); Controllers { controllers: Default::default(), } } fn read_pins_half(v: u8) -> (u8, u8) { let c1 = crate::ports::controller_1(); let c2 = crate::ports::controller_2(); c1.set_pins(v); c2.set_pins(v); nop(); nop(); nop(); let c1pins = c1.get_pins(); let c2pins = c2.get_pins(); (c1pins, c2pins) } fn read_pins() -> (u16, u16) { let (c1lo, c2lo) = Controllers::read_pins_half(0x40); let (c1hi, c2hi) = Controllers::read_pins_half(0x00); let c1pins = (u16::from(c1hi) << 8) | u16::from(c1lo); let c2pins = (u16::from(c2hi) << 8) | u16::from(c2lo); (c1pins, c2pins) } fn update_state(state: &mut ControllerState, connected: bool, is_6button: bool, buttons: u16) { state.last_buttons = state.buttons; state.buttons = buttons; state.is_6button = is_6button; state.present = connected; } } impl super::Controllers for Controllers { /// Fetch the controller state for a single controller. fn controller_state(&self, index: usize) -> Option<&dyn crate::ControllerState> { if self.controllers[index].present { Some(&self.controllers[index]) } else { None } } fn update(&mut self) { // We have to read the controllers 3 times in order to read extended // buttons. let (c1_pins, c2_pins) = Controllers::read_pins(); let mut c1_buttons = (!c1_pins & 0x3f) | ((!c1_pins >> 6) & 0xc0); let mut c2_buttons = (!c2_pins & 0x3f) | ((!c2_pins >> 6) & 0xc0); let c1_connected = (c1_pins & 0xc00) == 0; let c2_connected = (c2_pins & 0xc00) == 0; Controllers::read_pins(); let (c1_ext1, c2_ext1) = Controllers::read_pins(); let c1_is6 = (c1_ext1 & 0xf00) == 0xf00; let c2_is6 = (c2_ext1 & 0xf00) == 0xf00; if c1_is6 { c1_buttons |= ((!c1_ext1) & 0xf) << 8; } if c2_is6 { c2_buttons |= ((!c2_ext1) & 0xf) << 8; } Controllers::update_state(&mut self.controllers[0], c1_connected, c1_is6, c1_buttons); Controllers::update_state(&mut self.controllers[1], c2_connected, c2_is6, c2_buttons); } } PKq4misc-mega-rust-1/libs/megarust/src/controller/mod.rs#[cfg(target_arch = "m68k")] pub(crate) mod m68k; #[repr(u8)] #[derive(Copy, Clone, Debug)] pub enum Button { Up = 0, Down = 1, Left = 2, Right = 3, B = 4, C = 5, A = 6, Start = 7, Z = 8, Y = 9, X = 10, Mode = 11, } pub trait ControllerState { /// Returns true if this is a 6 button controller. fn is_6button(&self) -> bool; /// Returns true if a given button is pressed. fn is_pressed(&self, btn: Button) -> bool; /// Returns true if a given button was pressed this frame. fn just_pressed(&self, btn: Button) -> bool; } pub trait Controllers { /// Fetch the controller state for a single controller. fn controller_state(&self, controller_idx: usize) -> Option<&dyn ControllerState>; /// Update the state of the controllers. /// /// This should only be called once per `VBlank`. Calling it too frequently /// can result in incorrect results. fn update(&mut self); } PKr3misc-mega-rust-1/libs/megarust/src/renderer/m68k.rsuse crate::Error; pub struct Renderer { num_sprites: usize, sprites: [super::Sprite; super::MAX_SPRITES], } impl Default for Renderer { fn default() -> Self { Self { num_sprites: 0, sprites: unsafe { core::mem::MaybeUninit::zeroed().assume_init() }, } } } impl super::Renderer for Renderer { type Vdp = crate::vdp::m68k::Vdp; fn clear(&mut self) { self.num_sprites = 0; } fn add_sprite(&mut self, sprite: super::Sprite) -> Result<(), Error> { if self.num_sprites < super::MAX_SPRITES { self.sprites[self.num_sprites] = sprite; self.num_sprites += 1; Ok(()) } else { Err(Error::BufferSizeExceeded) } } fn render(&mut self, vdp: &mut Self::Vdp) { let num_sprites = self.num_sprites; let sprites = &mut self.sprites[..num_sprites]; for (idx, s) in sprites.iter_mut().enumerate() { let next = if idx < num_sprites - 1 { (idx + 1) as u8 } else { 0 }; s.link = next; } vdp.set_sprites(0, sprites); } } PKT2misc-mega-rust-1/libs/megarust/src/renderer/mod.rsuse crate::sprite::Sprite; use crate::Error; pub const MAX_SPRITES: usize = 256; #[cfg(target_arch = "m68k")] pub(crate) mod m68k; pub trait Renderer { type Vdp; /// Clear the sprite buffer. fn clear(&mut self); /// Add sprite to the sprite buffer. /// /// # Errors /// Returns error if sprite buffer size is exceeded. fn add_sprite(&mut self, s: Sprite) -> Result<(), Error>; /// Draw all registered sprites fn render(&mut self, vdp: &mut Self::Vdp); } PKUR@U@U.misc-mega-rust-1/libs/megarust/src/vdp/m68k.rs#![allow(dead_code)] use core::ops::Deref; use core::ptr::read_volatile; use core::ptr::write_volatile; use super::HScrollMode; use super::ScrollSize; use super::VScrollMode; use super::WindowDivide; use crate::sprite::Sprite; use crate::sprite::TileFlags; use crate::Palette; use crate::Tile; const REG_VDP_BASE: usize = 0x00c0_0000; const REG_VDP_DATA16: *mut u16 = REG_VDP_BASE as _; const REG_VDP_CONTROL16: *mut u16 = (REG_VDP_BASE + 4) as _; const WIDTH: usize = 320; const HEIGHT: usize = 256; mod registers { pub(crate) const MODE_1: u8 = 0x80; pub(crate) const MODE_2: u8 = 0x81; pub(crate) const MODE_3: u8 = 0x8b; pub(crate) const MODE_4: u8 = 0x8c; pub(crate) const PLANE_A: u8 = 0x82; pub(crate) const PLANE_B: u8 = 0x84; pub(crate) const SPRITE: u8 = 0x85; pub(crate) const WINDOW: u8 = 0x83; pub(crate) const HSCROLL: u8 = 0x8d; pub(crate) const SIZE: u8 = 0x90; pub(crate) const WINX: u8 = 0x91; pub(crate) const WINY: u8 = 0x92; pub(crate) const INCR: u8 = 0x8f; pub(crate) const BG_COLOUR: u8 = 0x87; pub(crate) const HBLANK_RATE: u8 = 0x8a; pub(crate) const DMA_LEN_L: u8 = 0x93; pub(crate) const DMA_LEN_H: u8 = 0x94; pub(crate) const DMA_SRC_L: u8 = 0x95; pub(crate) const DMA_SRC_M: u8 = 0x96; pub(crate) const DMA_SRC_H: u8 = 0x97; // pub(crate) const VRAM_SIZE: u32 = 0x10000; pub(crate) const CRAM_SIZE: u16 = 128; pub(crate) const VSRAM_SIZE: u16 = 80; } fn flag_32(v: u32, b: bool) -> u32 { if b { v } else { 0 } } fn dma_len(s: &[T]) -> u16 { (size_of_val(s) >> 1) as u16 } /// A struct representing the various segments of VRAM available on the Vdp. #[derive(Clone, Copy)] pub enum AddrKind { VRam, VRamRead, CRam, CRamRead, VsRam, VsRamRead, } /// The interlacing rendering mode. #[repr(u8)] #[derive(Clone, Copy, Debug)] pub enum InterlaceMode { None = 0b00, Interlace = 0b01, DoubleRes = 0b11, } impl Vdp { /// Initialise and return the Vdp. pub unsafe fn new() -> Vdp { // Using the 8KB tilemap VRAM setup: // https://github.com/Stephane-D/SGDK/blob/master/src/vdp.c#L484 let mut vdp = Vdp { mode: 0x8100_0404, sprites_base: 0xAC00, plane_a_base: 0xE000, plane_b_base: 0xC000, scroll_h_base: 0xA800, window_base: 0xB000, increment: 0, }; vdp.init(); vdp } fn init(&mut self) { self.read_state_raw(); // Initialise mode. self.modify_mode(!0, self.mode); self.set_plane_a_address(self.plane_a_base); self.set_plane_b_address(self.plane_b_base); self.set_sprite_address(self.sprites_base); self.set_window_base(self.window_base); self.set_scroll_base(self.scroll_h_base); unsafe { self.reset_state(); } } pub unsafe fn reset_state(&mut self) { self.set_increment(2); self.set_plane_size(ScrollSize::Cell32, ScrollSize::Cell32); self.set_window(WindowDivide::Before(0), WindowDivide::Before(0)); self.set_background(Palette::A, 0); self.set_h_interrupt_interval(0xff); // Wipe RAM. This should not be strictly necessary since we should // write it as we use it and does have a slight performance penalty. self.dma_set(AddrKind::VRam, 0, 0, 0xffff); //registers::VRAM_SIZE as u16); self.dma_set(AddrKind::CRam, 0, 0, registers::CRAM_SIZE); self.dma_set(AddrKind::VsRam, 0, 0, registers::VSRAM_SIZE); // Default the palette self.set_palette(Palette::A, &super::DEFAULT_PALETTE); self.set_palette(Palette::B, &super::DEFAULT_PALETTE_1); self.set_palette(Palette::C, &super::DEFAULT_PALETTE_2); self.set_palette(Palette::D, &super::DEFAULT_PALETTE_3); } /// Read the Vdp status register. fn read_state_raw(&self) -> u16 { unsafe { read_volatile(REG_VDP_CONTROL16) } } /// Set a single Vdp register. /// /// This can cause the Vdp to become out of sync with our state caching. /// Where possible it is best to use the specific methods in `Vdp`. fn set_register(&mut self, reg: u8, value: u8) { let v = (u16::from(reg) << 8) | u16::from(value); unsafe { write_volatile(REG_VDP_CONTROL16, v) }; } /// Set the address increment on write. /// /// This can be used to configure how many bytes are written per /// data write. fn set_increment(&mut self, incr: u8) { if incr != self.increment { self.increment = incr; self.set_register(registers::INCR, incr); } } /// Write data to VRAM at the current write address. fn write_data(&mut self, data: u16) { unsafe { write_volatile(REG_VDP_DATA16, data) }; } /// Read data from VRAM at the current read address. fn read_data(&mut self) -> u16 { unsafe { read_volatile(REG_VDP_DATA16) } } fn set_addr_raw(&mut self, kind: AddrKind, ptr: u16, dma: bool) { let ctrl = match kind { AddrKind::VRam => 0b00001, AddrKind::VRamRead => 0b00000, AddrKind::CRam => 0b00011, AddrKind::CRamRead => 0b1000, AddrKind::VsRam => 0b00101, AddrKind::VsRamRead => 0b0100, }; let dma_flag = if dma { 0x80 } else { 0 }; let hi = ((ptr >> 14) & 3) | ((ctrl >> 2) << 4) | dma_flag; let lo = (ptr & 0x3fff) | (ctrl << 14); unsafe { if dma { static mut SCRATCH: [u16; 2] = [0, 0]; write_volatile(&mut SCRATCH[0], lo); write_volatile(&mut SCRATCH[1], hi); write_volatile(REG_VDP_CONTROL16, read_volatile(&SCRATCH[0])); write_volatile(REG_VDP_CONTROL16, read_volatile(&SCRATCH[1])); } else { write_volatile(REG_VDP_CONTROL16, lo); write_volatile(REG_VDP_CONTROL16, hi); } } } /// Set the VRAM read or write address. /// /// This will be incremented after every write via [`self.read/write_data`]. fn set_address(&mut self, kind: AddrKind, ptr: u16) { self.set_addr_raw(kind, ptr, false); } fn wait_for_dma(&mut self) { unsafe { while read_volatile(REG_VDP_CONTROL16) & 2 != 0 {} } } /// Upload memory from ROM or RAM to VRAM. fn dma_upload(&mut self, kind: AddrKind, dst_addr: u16, src_addr: *const (), length: u16) { assert_eq!(src_addr as u32 % 2, 0, "Misaligned DMA"); let mut length = u32::from(length); let mut src_addr = ((src_addr as u32) >> 1) & 0x007f_ffff; let mut dst_addr = u32::from(dst_addr); self.enable_dma(true); while length > 0 { let this_block = (0x20000 - (0x1ffff & src_addr)).min(length); self.set_register(registers::DMA_LEN_L, this_block as u8); self.set_register(registers::DMA_LEN_H, (this_block >> 8) as u8); self.set_register(registers::DMA_SRC_L, src_addr as u8); self.set_register(registers::DMA_SRC_M, (src_addr >> 8) as u8); self.set_register(registers::DMA_SRC_H, (src_addr >> 16) as u8); self.set_addr_raw(kind, dst_addr as u16, true); self.wait_for_dma(); dst_addr += this_block; src_addr += this_block; length -= this_block; } self.enable_dma(false); } fn dma_upload_word_slice(&mut self, kind: AddrKind, dst_addr: u16, src: &[T]) { assert_eq!( src.as_ptr() as u32 % 2, 0, "dma_upload_word_slice: src misaligned" ); self.set_increment(2); self.dma_upload(kind, dst_addr, src.as_ptr().cast(), dma_len(src)); } /// Fill VRAM memory with the given byte. /// /// Technically the Vdp supports doing this in both byte and word forms, but the word /// form seems to not work as expected. fn dma_set(&mut self, kind: AddrKind, dst_addr: u16, fill: u8, length: u16) { self.enable_dma(true); self.set_increment(1); self.set_register(registers::DMA_LEN_L, length as u8); self.set_register(registers::DMA_LEN_H, (length >> 8) as u8); self.set_register(registers::DMA_SRC_H, 0x80); self.set_addr_raw(kind, dst_addr, true); self.write_data(u16::from(fill)); self.wait_for_dma(); self.enable_dma(false); self.set_increment(2); } /// Copy from VRAM to VRAM. fn dma_copy(&mut self, kind: AddrKind, dst_addr: u16, src_addr: u16, length: u16) { self.enable_dma(true); self.set_register(registers::DMA_LEN_L, length as u8); self.set_register(registers::DMA_LEN_H, (length >> 8) as u8); self.set_register(registers::DMA_SRC_L, src_addr as u8); self.set_register(registers::DMA_SRC_M, (src_addr >> 8) as u8); self.set_register(registers::DMA_SRC_H, 0xc0); self.set_addr_raw(kind, dst_addr, true); self.wait_for_dma(); self.enable_dma(false); } /// Modify the `MODE` registers. /// /// This takes a mask of bits to replace and their new values. /// The integer is formatted with `MODE_4` being the highest 8 bits, down to /// `MODE_1` being the lowest. fn modify_mode(&mut self, mask: u32, set: u32) { self.mode = (self.mode & !mask) | (set & mask); if mask & 0xff != 0 { self.set_register(registers::MODE_1, self.mode as u8); } if mask & 0xff00 != 0 { self.set_register(registers::MODE_2, (self.mode >> 8) as u8); } if mask & 0x00ff_0000 != 0 { self.set_register(registers::MODE_3, (self.mode >> 16) as u8); } if mask & 0xff00_0000 != 0 { self.set_register(registers::MODE_4, (self.mode >> 24) as u8); } } /// Fetch the framerate of the Vdp. pub fn framerate(&self) -> u8 { #[cfg(target_arch = "m68k")] if crate::version().is_pal() { 50 } else { 60 } } /// Fetch the current operating resolution. pub fn resolution(&self) -> (u16, u16) { let w = if (self.mode & 0x0100_0000) != 0 { 320 } else { 256 }; let h = if (self.mode & 0x800) != 0 { 240 } else { 224 }; (w, h) } /// Stop the HV counter. fn stop_hv_counter(&mut self, stopped: bool) { self.modify_mode(2, flag_32(2, stopped)); } /// Enable the increased resolution 40x30-cell mode. /// /// Vertical 30-cell mode is only available on PAL systems. fn set_resolution(&mut self, h: bool, v: bool) { self.modify_mode(0x8100_0800, flag_32(0x800, v) | flag_32(0x8100_0000, h)); } /// Enable DMA transfer. fn enable_dma(&mut self, enabled: bool) { self.modify_mode(0x1000, flag_32(0x1000, enabled)); } /// Configure scrolling mode. fn set_scroll_mode(&mut self, h: HScrollMode, v: VScrollMode) { self.modify_mode(0x30000, ((h as u32) << 16) | ((v as u32) << 18)); } /// Enable shadow / highlight mode. pub fn enable_shadow_mode(&mut self, enable: bool) { self.modify_mode(0x0800_0000, flag_32(0x0800_0000, enable)); } /// Configure interlaced output. fn set_interlace(&mut self, mode: InterlaceMode) { self.modify_mode(0x0600_0000, (mode as u32) << 25); } /// Configure how frequently the H-blank interrupt fires. fn set_h_interrupt_interval(&mut self, interval: u8) { self.set_register(registers::HBLANK_RATE, interval); } /// Set the size of the tile planes (plane A, plane B and the window plane). fn set_plane_size(&mut self, x: ScrollSize, y: ScrollSize) { match (x, y) { (ScrollSize::Cell32 | ScrollSize::Cell64 | ScrollSize::Cell128, ScrollSize::Cell32) | (ScrollSize::Cell32 | ScrollSize::Cell64, ScrollSize::Cell64) | (ScrollSize::Cell32, ScrollSize::Cell128) => { let v = (x as u8) | ((y as u8) << 4); self.set_register(registers::SIZE, v); } _ => panic!("Invalid plane size selected"), } } /// Configure the address for the plane A tile map. /// /// This should ideally be set before the display is enabled if it is to be changed. fn set_plane_a_address(&mut self, address: u16) { assert_eq!(address & 0x1FFF, 0, "Invalid plane base address"); self.plane_a_base = address; self.set_register(registers::PLANE_A, ((self.plane_a_base >> 10) & 0x38) as u8); } /// Configure the address for the plane B tile map. /// /// This should ideally be set before the display is enabled if it is to be changed. fn set_plane_b_address(&mut self, address: u16) { assert_eq!(address & 0x1FFF, 0, "Invalid plane base address"); self.plane_b_base = address; self.set_register(registers::PLANE_B, (self.plane_b_base >> 13) as u8); } /// Set the base address for the sprite table. fn set_sprite_address(&mut self, address: u16) { assert_eq!(address & 0x3FF, 0, "Invalid sprite address"); self.sprites_base = address; self.set_register(registers::SPRITE, (self.sprites_base >> 9) as u8); } /// Set the base address for the window plane. fn set_window_base(&mut self, address: u16) { assert_eq!(address & 0xFFF, 0, "Invalid window base address"); self.window_base = address; self.set_register(registers::WINDOW, ((self.window_base >> 10) & 0x3E) as u8); } /// Set the base address for the scrolling matrix. fn set_scroll_base(&mut self, address: u16) { assert_eq!(address & 0x3FF, 0, "Invalid scroll base address"); self.scroll_h_base = address; self.set_register(registers::HSCROLL, (self.scroll_h_base >> 10) as u8); } /// Configure where the window is drawn instead of plane A. fn set_window(&mut self, x: WindowDivide, y: WindowDivide) { self.set_register(registers::WINX, x.reg_value()); self.set_register(registers::WINY, y.reg_value()); } /// Set the palette entry for the background colour. fn set_background(&mut self, palette: Palette, colour: u8) { self.set_register(registers::BG_COLOUR, ((palette as u8) << 4) | colour); } /// Set one of the 4 configurable palettes. fn set_palette(&mut self, palette: Palette, colors: &[u16; 16]) { self.dma_upload_word_slice(AddrKind::CRam, (palette as u16) << 5, colors); } /* /// Set the contents of some tiles in VRAM. pub fn set_tiles_iter(&mut self, start_index: u16, tiles: impl Iterator) where T: Deref, { self.set_address(AddrKind::VRam, start_index << 5); for tile in tiles { unsafe { let ptr: *const u16 = core::mem::transmute(tile.deref()); for i in 0..16isize { write_volatile(REG_VDP_DATA16, *ptr.offset(i)); } } } } */ /// Set tiles using DMA. /// /// This can be faster than `set_tiles()` but is slightly more restricted: /// it has to take a slice. fn set_tiles(&mut self, start_index: u16, tiles: &[Tile]) { let sz = (start_index as usize + tiles.len()) * 32; assert!(sz < 0xA000, "VRAM overflow"); self.dma_upload_word_slice(AddrKind::VRam, start_index << 5, tiles); } /// Get the colors of the tile at the specified index. fn get_tile(&mut self, mut index: u16) -> Tile { index %= 0x500; let mut tile = [0u8; 32]; self.set_address(AddrKind::VRamRead, index << 5); for i in 0..16 { let val = self.read_data(); tile[i * 2] = (val >> 8) as u8; tile[i * 2 + 1] = (val & 0xFF) as u8; } Tile(tile) } /// Set the contents of some sprites in the sprite table. pub fn set_sprites_iter(&mut self, first_index: u16, sprites: impl Iterator) where T: Deref, { self.set_address(AddrKind::VRam, (first_index << 3) + self.sprites_base); for sprite in sprites { unsafe { let src: *const u16 = core::ptr::from_ref::(&*sprite).cast(); for i in 0..4isize { write_volatile(REG_VDP_DATA16, *src.offset(i)); } } } } /// Load sprites into VRAM using DMA. /// /// This can be faster than `set_sprites()` but is slightly more restricted: /// it has to take a slice. pub(crate) fn set_sprites(&mut self, first_index: u16, sprites: &[Sprite]) { self.dma_upload_word_slice( AddrKind::VRam, (first_index << 3) + self.sprites_base, sprites, ); } /// Set the horizontal scroll for planes A and B. pub fn set_h_scroll(&mut self, first_index: u16, values: &[i16]) { self.dma_upload_word_slice( AddrKind::VRam, (first_index << 1) + self.scroll_h_base, values, ); } /// Set the vertical scroll for planes A and B. pub fn set_v_scroll(&mut self, first_index: u16, values: &[i16]) { self.dma_upload_word_slice(AddrKind::VsRam, first_index << 1, values); } } pub struct Vdp { mode: u32, sprites_base: u16, plane_a_base: u16, plane_b_base: u16, scroll_h_base: u16, window_base: u16, increment: u8, } impl super::Vdp for Vdp { fn set_tiles(&mut self, start_idx: u16, tiles: &[Tile]) { self.set_tiles(start_idx, tiles); } fn get_tile(&mut self, index: u16) -> Tile { self.get_tile(index) } /// Sets plane tile indices. fn set_plane_tiles(&mut self, plane: super::Plane, first_index: u16, values: &[TileFlags]) { let base = match plane { super::Plane::A => self.plane_a_base, super::Plane::B => self.plane_b_base, super::Plane::Window => self.window_base, }; let sz = (first_index as usize + values.len()) * 2; assert!(sz <= 0x2000, "too many tiles"); self.dma_upload_word_slice(AddrKind::VRam, (first_index << 1) + base, values); } /// Get plane tile at the specified index. fn get_plane_tile(&mut self, plane: super::Plane, index: u16) -> TileFlags { let base = match plane { super::Plane::A => self.plane_a_base, super::Plane::B => self.plane_b_base, super::Plane::Window => self.window_base, }; assert!(index < 0x2000, "overindexed"); self.set_address(AddrKind::VRamRead, (index << 1) + base); TileFlags(self.read_data()) } fn resolution(&self) -> (u16, u16) { ( u16::try_from(WIDTH).unwrap(), u16::try_from(HEIGHT).unwrap(), ) } fn set_plane_size(&mut self, x: ScrollSize, y: ScrollSize) { self.set_plane_size(x, y); } fn set_plane_a_address(&mut self, address: u16) { self.set_plane_a_address(address); } fn set_plane_b_address(&mut self, address: u16) { self.set_plane_b_address(address); } fn set_sprite_address(&mut self, address: u16) { self.set_sprite_address(address); } fn set_window_base(&mut self, address: u16) { self.set_window_base(address); } fn set_scroll_base(&mut self, address: u16) { self.set_scroll_base(address); } /// Enable the horizontal blanking interrupt. /// /// The IRQ level on the CPU still needs to be set accordingly to allow the /// interrupt to happen. /// /// `h` triggers an interrupt for every horizontal line drawn. /// `v` triggers an interrupt at the start of the vblank period. /// `x` triggers an interrupt on the external interrupt. fn enable_interrupts(&mut self, h: bool, v: bool, x: bool) { self.modify_mode( 0x82010, flag_32(0x10, h) | flag_32(0x2000, v) | flag_32(0x80000, x), ); } /// Enable the display. /// /// Without this set, the entire screen shows the background colour. fn enable_display(&mut self, enable: bool) { self.modify_mode(0x4000, flag_32(0x4000, enable)); } fn wait_for_vblank(&mut self) { wait_for_vblank(); } fn set_palette(&mut self, palette: Palette, colors: &[u16; 16]) { self.set_palette(palette, colors); } fn set_background(&mut self, palette: Palette, color: u8) { self.set_background(palette, color); } fn set_window(&mut self, x: WindowDivide, y: WindowDivide) { self.set_window(x, y); } fn set_scroll_mode(&mut self, h: HScrollMode, v: VScrollMode) { self.set_scroll_mode(h, v); } fn set_h_scroll(&mut self, first_index: u16, values: &[i16]) { self.set_h_scroll(first_index, values); } fn set_v_scroll(&mut self, first_index: u16, values: &[i16]) { self.set_v_scroll(first_index, values); } unsafe fn reset_state(&mut self) { self.reset_state(); } } extern "C" { fn wait_for_interrupt(); } static mut NEW_FRAME: u16 = 0; fn wait_for_vblank() { unsafe { while read_volatile(&raw const NEW_FRAME) == 0 { wait_for_interrupt(); } write_volatile(&raw mut NEW_FRAME, 0); } } #[no_mangle] extern "C" fn vblank() { unsafe { write_volatile(&raw mut NEW_FRAME, 1) }; } PK\-misc-mega-rust-1/libs/megarust/src/vdp/mod.rs#[cfg(target_arch = "m68k")] pub(crate) mod m68k; #[repr(align(16))] #[derive(Default, Copy, Clone)] pub struct Tile(pub [u8; 32]); impl From<[u8; 32]> for Tile { fn from(data: [u8; 32]) -> Self { Self(data) } } #[derive(Copy, Clone)] pub enum Plane { A, B, Window, } /// This enumeration is for configuring how vertical scrolling works. #[repr(u8)] #[derive(Clone, Copy, Debug)] pub enum VScrollMode { FullScroll = 0, DoubleCellScroll = 1, } /// This enumeration is for configuring how horizontal scrolling works. #[repr(u8)] #[derive(Clone, Copy, Debug)] pub enum HScrollMode { FullScroll = 0b00, CellScroll = 0b10, LineScroll = 0b11, } /// The size of the planes in tiles. #[repr(u8)] #[derive(Copy, Clone, Debug)] pub enum ScrollSize { Cell32 = 0b00, Cell64 = 0b01, Cell128 = 0b11, } impl ScrollSize { /// Returns the amount of cells per line/column. pub fn cells(self) -> u16 { match self { ScrollSize::Cell32 => 32, ScrollSize::Cell64 => 64, ScrollSize::Cell128 => 128, } } } /// Represents the offset from screen corner where the window layer should be drawn. /// /// For example x: After(10), would make the window render to the right of tile 10 onwards. #[derive(Copy, Clone, Debug)] pub enum WindowDivide { Before(u8), After(u8), } #[cfg(target_arch = "m68k")] impl WindowDivide { fn reg_value(self) -> u8 { match self { WindowDivide::Before(v) => v & 0x1f, WindowDivide::After(v) => 0x80 | (v & 0x1f), } } } #[repr(u8)] #[derive(Copy, Clone)] pub enum Palette { A = 0, B = 1, C = 2, D = 3, } impl TryFrom for Palette { type Error = &'static str; fn try_from(value: u16) -> Result { match value { 0 => Ok(Palette::A), 1 => Ok(Palette::B), 2 => Ok(Palette::C), 3 => Ok(Palette::D), _ => Err("Invalid palette idx"), } } } const DEFAULT_PALETTE: [u16; 16] = [ 0x000, 0xFFF, 0xF00, 0x0F0, 0x00B, 0xFF0, 0xF0F, 0x0FF, 0x666, 0xBBB, 0x800, 0x080, 0x008, 0x880, 0x808, 0x088, ]; const DEFAULT_PALETTE_1: [u16; 16] = [ 0x000, 0xFFF, 0xF00, 0x0F0, 0x00B, 0xFF0, 0xF0F, 0x0FF, 0x666, 0xBBB, 0x800, 0x080, 0x008, 0x880, 0x808, 0x088, ]; const DEFAULT_PALETTE_2: [u16; 16] = [ 0x000, 0xF00, 0x0F0, 0x00B, 0xFF0, 0xF0F, 0x0FF, 0x666, 0xBBB, 0x800, 0x080, 0x008, 0x880, 0x808, 0x088, 0xFFF, ]; const DEFAULT_PALETTE_3: [u16; 16] = [ 0x000, 0x0F0, 0x00B, 0xFF0, 0xF0F, 0x0FF, 0x666, 0xBBB, 0x800, 0x080, 0x008, 0x880, 0x808, 0x088, 0xFFF, 0xF00, ]; pub trait Vdp { /// Set tiles using DMA. fn set_tiles(&mut self, start_idx: u16, tiles: &[Tile]); /// Get the colors of the tile at the specified index. fn get_tile(&mut self, index: u16) -> Tile; /// Sets plane tile indices. fn set_plane_tiles(&mut self, plane: Plane, first_index: u16, values: &[crate::TileFlags]); /// Get plane tile at the specified index. fn get_plane_tile(&mut self, plane: Plane, index: u16) -> crate::TileFlags; /// Returns the resolution of the display. fn resolution(&self) -> (u16, u16); /// Set the size of the tile planes (plane A, plane B and the window plane). fn set_plane_size(&mut self, x: ScrollSize, y: ScrollSize); /// Configure the address for the plane A tile map. /// /// This should ideally be set before the display is enabled if it is to be changed. fn set_plane_a_address(&mut self, address: u16); /// Configure the address for the plane B tile map. /// /// This should ideally be set before the display is enabled if it is to be changed. fn set_plane_b_address(&mut self, address: u16); /// Set the base address for the sprite table. fn set_sprite_address(&mut self, address: u16); /// Set the base address for the window plane. fn set_window_base(&mut self, address: u16); /// Set the base address for the scrolling matrix. fn set_scroll_base(&mut self, address: u16); /// Enable the horizontal blanking interrupt. /// /// The IRQ level on the CPU still needs to be set accordingly to allow the /// interrupt to happen. /// /// `h` triggers an interrupt for every horizontal line drawn. /// `v` triggers an interrupt at the start of the vblank period. /// `x` triggers an interrupt on the external interrupt. fn enable_interrupts(&mut self, h: bool, v: bool, x: bool); /// Enable the display. fn enable_display(&mut self, enable: bool); /// Wait for vblank (next frame). fn wait_for_vblank(&mut self); /// Set one of the 4 configurable palettes. fn set_palette(&mut self, index: Palette, palette: &[u16; 16]); /// Set the palette entry for the background colour. fn set_background(&mut self, palette: Palette, color: u8); /// Configure the offset at which the window is drawn. fn set_window(&mut self, x: WindowDivide, y: WindowDivide); /// Configure scrolling mode. fn set_scroll_mode(&mut self, h: HScrollMode, v: VScrollMode); /// Set the horizontal scroll for planes A and B. fn set_h_scroll(&mut self, first_index: u16, values: &[i16]); /// Set the vertical scroll for planes A and B. fn set_v_scroll(&mut self, first_index: u16, values: &[i16]); /// "Temporary" hack to reset the status. /// /// # Safety /// This will wipe the state of the memory. unsafe fn reset_state(&mut self); } PK-e88misc-mega-rust-1/rom/.build.sh#!/bin/bash set -ex -o pipefail cd /build/rustc_codegen_gcc # Avoid having to redownload dependencies every time export CARGO_HOME="/src/.cargo_home" export CARGO_TARGET_DIR="/src/target.docker" ./y.sh cargo build --release --target $(pwd)/target_specs/m68k-unknown-linux-gnu.json --manifest-path /src/rom/Cargo.toml --lib \ -Zbuild-std="core,alloc" -Zbuild-std-features="compiler_builtins/no-f16-f128" cd /src/rom m68k-elf-gcc -mcpu=68000 \ -T /src/megadrive.x \ -O2 -nostartfiles -nostdlib -static -nolibc \ -Wl,-gc-sections -flto -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -fno-exceptions \ entry.S hack.c /src/target.docker/m68k-unknown-linux-gnu/release/librom.a \ -o /tmp/out.elf -lgcc cp /tmp/out.elf /src/sonk.elf m68k-elf-objcopy -O binary /tmp/out.elf /src/sonk.md PK+ misc-mega-rust-1/rom/Cargo.toml[package] name = "rom" version = "0.1.0" edition = "2021" [lib] crate-type=["staticlib"] [dependencies] game = { path = "../game" } PK[~.misc-mega-rust-1/rom/entry.S.text .org 0 .set START, _start .set INT, _int .set HBLANK, _int .set VBLANK, _vblank .long 0x0 .long START .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long HBLANK .long INT .long VBLANK .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .long INT .ascii "SEGA MEGADRIVE " .ascii "(C)2021.JAN " .ascii "TESTPROJECT " .ascii " " .ascii " " .ascii "TESTPROJECT " .ascii " " .ascii " " .ascii "GM MK-0000 -01" .short 0x0000 .ascii "J6 " .long 0x00000000, 0x0007ffff .long 0x00ff0000, 0x00ffffff .ascii " " .ascii " " .ascii " " .ascii " " .ascii " " .ascii " " .ascii "F " .global vblank _vblank: jsr vblank rte .global _start .global game_main _start: move.l #_stack_top, %sp move.w #0x2500, %sr jsr _init_runtime jsr game_main .global abort abort: bra abort _int: rte .global wait_for_interrupt wait_for_interrupt: stop #0x2500 rts PKT; // From libgcc (https://github.com/gcc-mirror/gcc/blob/master/libgcc) // For some reason they are not used linked in from -lgcc, so we need to // declare them manually. void* memcpy(void *dst, const void *src, long unsigned int n) { char *dst_ = dst; const char *src_ = src; while (n--) *dst_++ = *src_++; } void *memset(char *s, int c, long unsigned int n) { while (n--) *s++ = c; } void * memmove (void *dest, const void *src, size_t len) { char *d = dest; const char *s = src; if (d < s) while (len--) *d++ = *s++; else { const char *lasts = s + (len-1); char *lastd = d + (len-1); while (len--) *lastd-- = *lasts--; } return dest; } int memcmp(char *a, char *b, long unsigned n) { while (n--) { if (*a < *b) return -1; if (*a > *b) return 1; ++a; ++b; } return (*a == *b) ? 0 : 1; } PK#/;33misc-mega-rust-1/rom/src/lib.rs#![no_std] #![allow(unused_imports)] pub use game; PKs $$Cmisc-mega-rust-1/toolchain/0001-Make-project-compile-with-GCC.patchFrom 456a9dbf5e31297a638475afb1b3b8fef5f12969 Mon Sep 17 00:00:00 2001 From: User Date: Wed, 15 Jan 2025 11:46:50 +0000 Subject: [PATCH] Make project compile with GCC --- Cargo.toml | 3 +- examples/megapong/entry.S | 154 ++++++++++++++--------------- examples/megapong/hack.c | 27 +++++ libs/megadrive-graphics/src/lib.rs | 2 +- libs/megadrive-util/src/panic.rs | 5 +- share/ldscripts/megadrive.x | 11 ++- 6 files changed, 116 insertions(+), 86 deletions(-) create mode 100644 examples/megapong/hack.c diff --git a/Cargo.toml b/Cargo.toml index 03b1a1c..b0624fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,8 +11,9 @@ members = [ ] [profile.release] -lto = true +lto = "fat" panic = "abort" [profile.dev] +lto = "fat" panic = "abort" diff --git a/examples/megapong/entry.S b/examples/megapong/entry.S index e5343ed..0dde62b 100644 --- a/examples/megapong/entry.S +++ b/examples/megapong/entry.S @@ -6,91 +6,91 @@ .set HBLANK, _int .set VBLANK, _vblank -.long 0x0 ; Initial Stack Address -.long START ; Start of program Code -.long INT ; Bus error -.long INT ; Address error -.long INT ; Illegal instruction -.long INT ; Division by zero -.long INT ; CHK exception -.long INT ; TRAPV exception -.long INT ; Privilage violation -.long INT ; TRACE exception -.long INT ; Line-A emulator -.long INT ; Line-F emulator -.long INT ; Reserved (NOT USED) -.long INT ; Co-processor protocol violation -.long INT ; Format error -.long INT ; Uninitialized Interrupt -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Spurious Interrupt -.long INT ; IRQ Level 1 -.long INT ; IRQ Level 2 (EXT Interrupt) -.long INT ; IRQ Level 3 -.long HBLANK ; IRQ Level 4 (VDP Horizontal Interrupt) -.long INT ; IRQ Level 5 -.long VBLANK ; IRQ Level 6 (VDP Vertical Interrupt) -.long INT ; IRQ Level 7 -.long INT ; TRAP #00 Exception -.long INT ; TRAP #01 Exception -.long INT ; TRAP #02 Exception -.long INT ; TRAP #03 Exception -.long INT ; TRAP #04 Exception -.long INT ; TRAP #05 Exception -.long INT ; TRAP #06 Exception -.long INT ; TRAP #07 Exception -.long INT ; TRAP #08 Exception -.long INT ; TRAP #09 Exception -.long INT ; TRAP #10 Exception -.long INT ; TRAP #11 Exception -.long INT ; TRAP #12 Exception -.long INT ; TRAP #13 Exception -.long INT ; TRAP #14 Exception -.long INT ; TRAP #15 Exception -.long INT ; (FP) Branch or Set on Unordered Condition -.long INT ; (FP) Inexact Result -.long INT ; (FP) Divide by Zero -.long INT ; (FP) Underflow -.long INT ; (FP) Operand Error -.long INT ; (FP) Overflow -.long INT ; (FP) Signaling NAN -.long INT ; (FP) Unimplemented Data Type -.long INT ; MMU Configuration Error -.long INT ; MMU Illegal Operation Error -.long INT ; MMU Access Violation Error -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) -.long INT ; Reserved (NOT USED) +.long 0x0 +.long START +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long HBLANK +.long INT +.long VBLANK +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT +.long INT -.ascii "SEGA MEGADRIVE " ; SEGA must be the first four chars for TMSS +.ascii "SEGA MEGADRIVE " .ascii "(C)2021.JAN " -.ascii "TESTPROJECT " ; export name +.ascii "TESTPROJECT " .ascii " " .ascii " " -.ascii "TESTPROJECT " ; domestic (Japanese) name +.ascii "TESTPROJECT " .ascii " " .ascii " " .ascii "GM MK-0000 -01" -.short 0x0000 ; checksum - not needed +.short 0x0000 .ascii "J6 " -.long 0x00000000, 0x0007ffff ; ROM start, end -.long 0x00ff0000, 0x00ffffff ; RAM start, end -.ascii " " ; no SRAM +.long 0x00000000, 0x0007ffff +.long 0x00ff0000, 0x00ffffff +.ascii " " .ascii " " .ascii " " -.ascii " " ; memo +.ascii " " .ascii " " .ascii " " -.ascii "F " ; enable any hardware configuration +.ascii "F " .global vblank _vblank: @@ -100,14 +100,14 @@ _vblank: .global _start .global main _start: - move.l #_stack_top, sp - move.w #0x2500, sr + move.l #_stack_top, %sp + move.w #0x2500, %sr jsr _init_runtime - bra #main + bra main .global abort abort: - bra #abort + bra abort _int: rte diff --git a/examples/megapong/hack.c b/examples/megapong/hack.c new file mode 100644 index 0000000..f853c8b --- /dev/null +++ b/examples/megapong/hack.c @@ -0,0 +1,27 @@ +#if 1 +void* memcpy(void *dst, const void *src, long unsigned int n) { + char *dst_ = dst; + const char *src_ = src; + while (--n) *dst_++ = *src_++; +} +#endif + +#if 0 +void *memset(char *s, int c, long unsigned int n) { + while (--n) *s++ = c; +} +#endif + + +#if 0 +int memcmp(char *a, char *b, long unsigned n) { + while (--n) { + if (*a < *b) return -1; + if (*a > *b) return 1; + ++a; + ++b; + } + + return (*a == *b) ? 0 : 1; +} +#endif diff --git c/examples/megapong/src/lib.rs i/examples/megapong/src/lib.rs index be53fc8c873c..74321ac26310 100644 --- c/examples/megapong/src/lib.rs +++ i/examples/megapong/src/lib.rs @@ -378,7 +378,6 @@ fn vblank() { } #[panic_handler] -#[no_mangle] fn panic(_info: &PanicInfo) -> ! { loop {} } diff --git a/libs/megadrive-graphics/src/lib.rs b/libs/megadrive-graphics/src/lib.rs index d7aa284..5e7f929 100644 --- a/libs/megadrive-graphics/src/lib.rs +++ b/libs/megadrive-graphics/src/lib.rs @@ -5,7 +5,7 @@ use core::mem::MaybeUninit; use megadrive_sys::vdp::{Sprite, VDP}; pub mod default_ascii { - include!(concat!(env!("OUT_DIR"), "/default_ascii.rs")); + // include!(concat!(env!("OUT_DIR"), "/default_ascii.rs")); } mod font; diff --git a/libs/megadrive-util/src/panic.rs b/libs/megadrive-util/src/panic.rs index 8564bbd..edb1663 100644 --- a/libs/megadrive-util/src/panic.rs +++ b/libs/megadrive-util/src/panic.rs @@ -3,7 +3,6 @@ use core::ptr::read_volatile; use megadrive_sys::vdp::VDP; use megadrive_graphics::Renderer; -use megadrive_graphics::default_ascii::DEFAULT_FONT_1X1; static mut NEW_FRAME: u16 = 0; @@ -19,7 +18,7 @@ fn panic(_info: &PanicInfo) -> ! { vdp.enable_display(true); // Initialize the default font tiles - DEFAULT_FONT_1X1.load(&mut vdp); + // DEFAULT_FONT_1X1.load(&mut vdp); let resolution = vdp.resolution(); let half_screen_width = (resolution.0 >> 1) as i16; @@ -36,7 +35,7 @@ fn panic(_info: &PanicInfo) -> ! { // let mut panic_text: &str = &_info.payload().downcast_ref::<&str>().unwrap(); let panic_text= "Panic!"; - DEFAULT_FONT_1X1.blit_text(&mut renderer, panic_text, x_off as u16, y_off as u16); + // DEFAULT_FONT_1X1.blit_text(&mut renderer, panic_text, x_off as u16, y_off as u16); renderer.render(&mut vdp); // vsync wait_for_vblank(); diff --git a/share/ldscripts/megadrive.x b/share/ldscripts/megadrive.x index 95e1cf3..dd61c42 100644 --- a/share/ldscripts/megadrive.x +++ b/share/ldscripts/megadrive.x @@ -4,6 +4,8 @@ MEMORY RAM (rwx) : ORIGIN = 0xFF0000, LENGTH = 0x10000 } +ENTRY(_start) + SECTIONS { _stack_top = 0x1000000; @@ -16,25 +18,26 @@ SECTIONS .rodata : { + . = ALIGN(4); *(.rodata .rodata.*); _data_src = .; } > ROM .data : { - ALIGN(4); + . = ALIGN(4); _data_start = .; *(.data); - ALIGN(4); + . = ALIGN(4); _data_end = .; } > RAM AT > ROM .bss (NOLOAD) : { - ALIGN(4); + . = ALIGN(4); _bss_start = .; *(.bss); - ALIGN(4); + . = ALIGN(4); _bss_end = .; } > RAM AT > ROM -- 2.34.1 PK2E Gmisc-mega-rust-1/toolchain/0001-codegen-add-support-for-megadrive.patchFrom 0c4bd1d8bb2863f16f13faad58eb3cbbcf7044cc Mon Sep 17 00:00:00 2001 From: User Date: Wed, 15 Jan 2025 11:49:31 +0000 Subject: [PATCH] codegen: add support for megadrive --- build_system/build_sysroot/Cargo.toml | 8 +++----- src/base.rs | 17 +++++++++++++++++ src/gcc_util.rs | 3 +-- src/lib.rs | 1 + target_specs/m68k-unknown-linux-gnu.json | 6 +++--- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/build_system/build_sysroot/Cargo.toml b/build_system/build_sysroot/Cargo.toml index 2415207..8f928c5 100644 --- a/build_system/build_sysroot/Cargo.toml +++ b/build_system/build_sysroot/Cargo.toml @@ -6,11 +6,8 @@ resolver = "2" [dependencies] core = { path = "./sysroot_src/library/core" } -compiler_builtins = "0.1" +compiler_builtins = { version = "0.1" } alloc = { path = "./sysroot_src/library/alloc" } -std = { path = "./sysroot_src/library/std", features = ["panic_unwind", "backtrace"] } -test = { path = "./sysroot_src/library/test" } -proc_macro = { path = "./sysroot_src/library/proc_macro" } [patch.crates-io] rustc-std-workspace-core = { path = "./sysroot_src/library/rustc-std-workspace-core" } @@ -35,4 +32,5 @@ codegen-units = 10000 [profile.release] debug = "limited" -#lto = "fat" # TODO(antoyo): re-enable when the failing LTO tests regarding proc-macros are fixed. +panic = "abort" +lto = "fat" diff --git a/src/base.rs b/src/base.rs index c9701fb..fc181da 100644 --- a/src/base.rs +++ b/src/base.rs @@ -165,8 +165,8 @@ pub fn compile_codegen_unit( .function_sections .unwrap_or(tcx.sess.target.function_sections) { - context.add_command_line_option("-ffunction-sections"); - context.add_command_line_option("-fdata-sections"); + context.add_driver_option("-ffunction-sections"); + context.add_driver_option("-fdata-sections"); } if env::var("CG_GCCJIT_DUMP_RTL").as_deref() == Ok("1") { diff --git a/target_specs/m68k-unknown-linux-gnu.json b/target_specs/m68k-unknown-linux-gnu.json index 95ea061..16fb3c2 100644 --- a/target_specs/m68k-unknown-linux-gnu.json +++ b/target_specs/m68k-unknown-linux-gnu.json @@ -1,13 +1,13 @@ { "arch": "m68k", - "cpu": "M68020", + "cpu": "M68000", "crt-static-respected": true, "data-layout": "E-m:e-p:32:16:32-i8:8:8-i16:16:16-i32:16:32-n8:16:32-a:0:16-S16", "dynamic-linking": true, "env": "gnu", "has-rpath": true, - "has-thread-local": true, - "llvm-target": "m68k-unknown-linux-gnu", + "has-thread-local": false, + "llvm-target": "m68k-elf", "max-atomic-width": 32, "os": "linux", "position-independent-executables": true, -- 2.34.1 PKz**%misc-mega-rust-1/toolchain/DockerfileFROM ubuntu:22.04 AS builder RUN apt-get -y update && apt-get install -y --no-install-recommends \ git curl ca-certificates build-essential sudo python3 file \ flex libmpfr-dev libgmp-dev libmpc3 libmpc-dev texinfo unzip && \ rm -rf /var/lib/apt/lists/* RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y --default-toolchain none ENV PATH="/root/.cargo/bin:${PATH}" # Not sure why/if this is needed ENV LIBRARY_PATH=/usr/lib # Make sure we compile to the right target ENV OVERWRITE_TARGET_TRIPLE=m68k-elf RUN mkdir /build WORKDIR /build # Install binutils RUN curl -L https://sourceware.org/pub/binutils/releases/binutils-2.43.tar.xz | tar xJ RUN mkdir binutils-build && cd binutils-build && \ ../binutils-2.43/configure --prefix=/usr/local --target=m68k-elf --disable-multilib && \ make -j $(nproc) && \ make install && \ cd /build && rm -rf /build/binutils-2.43 /build/binutils-build # Install GCC RUN git clone https://github.com/antoyo/gcc --depth=2 RUN mkdir gcc-build && cd gcc-build && \ ../gcc/configure \ --enable-host-shared \ --enable-languages=jit \ --enable-checking=release \ --disable-bootstrap \ --disable-multilib \ --prefix=/usr/local \ --with-cpu=m68000 \ --with-arch=m68k \ --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath \ --disable-libquadmath-support --disable-libsanitizer --disable-libmpx --disable-libstdcxx-verbose \ --without-zstd --disable-threads --disable-tls --disable-cet \ --without-headers \ --target=m68k-elf && \ make -j $(nproc) && \ make -j $(nproc) all-target-libgcc && \ make install && \ make install-target-libgcc && \ rm -rf /build/gcc-build /build/gcc # Clone source repo RUN git clone https://github.com/rust-lang/rustc_codegen_gcc.git # Set gcc path in the rustc_codegen project RUN echo 'gcc-path = "/usr/local/lib"' > rustc_codegen_gcc/config.toml # Setup rustup RUN cd rustc_codegen_gcc && rustup show # Git config is needed for ./y.sh prepare RUN git config --global user.email "user@example.com" RUN git config --global user.name "User" # Apply hacky patch COPY 0001-codegen-add-support-for-megadrive.patch /tmp/0001-codegen-add-support-for-megadrive.patch RUN cd rustc_codegen_gcc && patch -p1 < /tmp/0001-codegen-add-support-for-megadrive.patch && rm /tmp/0001-codegen-add-support-for-megadrive.patch ENV CHANNEL=release # Build project # See https://github.com/rust-lang/rustc_codegen_gcc/blob/master/doc/tips.md#how-to-build-a-cross-compiling-libgccjit RUN cd rustc_codegen_gcc && ./y.sh prepare --cross ENV CG_RUSTFLAGS="-Cpanic=abort -Crelocation-model=static -Copt-level=3 -Cllvm-args=-flto" # Build both, dev + release build RUN cd rustc_codegen_gcc && ./y.sh build --sysroot --features compiler_builtins/no-f16-f128 --target-triple m68k-unknown-linux-gnu --target /build/rustc_codegen_gcc/target_specs/m68k-unknown-linux-gnu.json RUN cd rustc_codegen_gcc && ./y.sh build --sysroot --features compiler_builtins/no-f16-f128 --target-triple m68k-unknown-linux-gnu --target /build/rustc_codegen_gcc/target_specs/m68k-unknown-linux-gnu.json --release ## Build "megapong" PoC (as a test whether the build succeeds. RUN git clone https://github.com/ricky26/rust-mega-drive.git COPY 0001-Make-project-compile-with-GCC.patch /tmp/rust-mega-drive.patch RUN cd rust-mega-drive && patch -p1 < /tmp/rust-mega-drive.patch && rm /tmp/rust-mega-drive.patch ## Compile rust code RUN cd rustc_codegen_gcc && ./y.sh cargo build --target /build/rustc_codegen_gcc/target_specs/m68k-unknown-linux-gnu.json --manifest-path /build/rust-mega-drive/examples/megapong/Cargo.toml --release RUN cd rustc_codegen_gcc && ./y.sh cargo build --target /build/rustc_codegen_gcc/target_specs/m68k-unknown-linux-gnu.json --manifest-path /build/rust-mega-drive/examples/megapong/Cargo.toml # # Compile entrypoint + stdlib stub (should not be strictly necessary to reproduce) RUN cd rust-mega-drive/examples/megapong && m68k-elf-gcc -fno-exceptions -mcpu=68000 -T /build/rust-mega-drive/share/ldscripts/megadrive.x entry.S hack.c /build/rust-mega-drive/target/m68k-unknown-linux-gnu/release/libmegapong.a -o out.elf -O2 -nostartfiles -nostdlib -static -nolibc -s -flto -Wl,-gc-sections -ffunction-sections -fdata-sections -ffreestanding -fno-builtin RUN cd rust-mega-drive/examples/megapong && m68k-elf-objcopy -O binary out.elf out.md # # ===== Actual toolchain container (split to save some space) ===== # FROM ubuntu:22.04 AS mega RUN mkdir -p /build /root/.cargo # The rustc_codegen_gcc project always wants to build some system crates, so we need # to have some packages installed. RUN apt-get -y update && apt-get install -y --no-install-recommends \ python3 python3-png \ curl ca-certificates build-essential && \ rm -rf /var/lib/apt/lists/* RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y --default-toolchain none COPY --from=builder /usr/local /usr/local COPY --from=builder /build/rustc_codegen_gcc /build/rustc_codegen_gcc ENV PATH="/root/.cargo/bin:${PATH}" # Not sure why/if this is needed ENV LIBRARY_PATH=/usr/lib # Make sure we compile to the right target ENV OVERWRITE_TARGET_TRIPLE=m68k-elf RUN cd /build/rustc_codegen_gcc && rustup show ENV CG_RUSTFLAGS="-Cpanic=abort -Crelocation-model=static -Cllvm-args=-flto" PK[[misc-mega-rust-1/.gitignorePK8٣misc-mega-rust-1/Cargo.lockPK"Q}^misc-mega-rust-1/Cargo.tomlPKYooDmisc-mega-rust-1/MakefilePKLHHmisc-mega-rust-1/README.mdPKNNjmisc-mega-rust-1/megadrive.xPKH )wwmisc-mega-rust-1/pow.pyPK<@@(misc-mega-rust-1/rustfmt.tomlPK GP)misc-mega-rust-1/sonk.mdPKHHP)misc-mega-rust-1/submit.pyPK [[ -misc-mega-rust-1/game/Cargo.tomlPKYw !i/misc-mega-rust-1/game/src/anim.rsPK!<misc-mega-rust-1/game/src/flag.rsPKBrg_!Amisc-mega-rust-1/game/src/game.rsPK,, ]misc-mega-rust-1/game/src/lib.rsPK