diff --git "a/.github/Icon\r" "b/.github/Icon\r" new file mode 100644 index 000000000..f179c2996 Binary files /dev/null and "b/.github/Icon\r" differ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..7bdca2eb2 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,29 @@ +# This is a basic workflow to help you get started with Actions + +name: Aviso de novidades no material! + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push: + branches: [ master ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + - uses: toko-bifrost/ms-teams-deploy-card@master # or "./" if in a local set-up + if: always() + with: + github-token: ${{ github.token }} + webhook-uri: ${{ secrets.TEAMS_WEBHOOK }} + show-on-start: true + show-on-exit: false diff --git a/.gitignore b/.gitignore index e43b0f988..2580efe98 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,17 @@ .DS_Store +.vscode +a.out +docs/ +projetos-alunos/ +code/ +*.pptx +env-supercomp/ +*-resposta* +fontes-* +callgrind.* +gmon.out +Icon? +material/aulas/01-introducao/legenda* +Icon + +env/** \ No newline at end of file diff --git "a/Icon\r" "b/Icon\r" new file mode 100644 index 000000000..f179c2996 Binary files /dev/null and "b/Icon\r" differ diff --git a/Plano de aula - SuperComp.xlsx b/Plano de aula - SuperComp.xlsx new file mode 100644 index 000000000..7374d0e04 Binary files /dev/null and b/Plano de aula - SuperComp.xlsx differ diff --git a/README.md b/README.md deleted file mode 100644 index d8dc4425e..000000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Este repositório contém os arquivos da Disciplina *SuperComputação* do INSPER oferecida em 2018/2. - -Para consultar os arquivos de oferecimentos antigos visite o branch correspondente (ex. 2018/01). diff --git a/aulas.pmd b/aulas.pmd new file mode 100644 index 000000000..65bb567e2 --- /dev/null +++ b/aulas.pmd @@ -0,0 +1,23 @@ +```{python, echo=False} +import tabulate +import pandas as pd +``` +# Burocracias + +## Horários das aulas + +* Horários: + * QUA - 13:30 + * SEX - 07:30 + * Atendimento SEX - 09:30 + +??? note "Plano de aulas" +```{python, results='md', echo=False} +t1 = pd.read_excel('Plano de aula - SuperComp.xlsx') +t1 = t1.dropna(subset=['Data']) +t1['Data'] = t1['Data'].apply(lambda x: x.strftime('%d/%m/%Y')) +print('\n'.join([' %s'%l for l in tabulate.tabulate(t1[['Data', 'Questão/Problema', +'Conteúdo/Atividade']], headers=['Data', 'Questão/Problema', +'Conteúdo/Atividade'], tablefmt='pipe', showindex=False).split('\n') ])) +``` + diff --git "a/custom_theme/Icon\r" "b/custom_theme/Icon\r" new file mode 100644 index 000000000..f179c2996 Binary files /dev/null and "b/custom_theme/Icon\r" differ diff --git a/custom_theme/partials/header.html b/custom_theme/partials/header.html new file mode 100644 index 000000000..8f9be69b5 --- /dev/null +++ b/custom_theme/partials/header.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + +
+ + + +
+
{{ config.extra.materia }}
+
{{ config.extra.professor }}
+
{{ config.extra.semestre }}
+
+
+ +
+ + + +
+ + + + diff --git a/distributed_memory/17-introducao/hello.cpp b/distributed_memory/17-introducao/hello.cpp deleted file mode 100644 index 4c98a3a23..000000000 --- a/distributed_memory/17-introducao/hello.cpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * fonte: https://www.boost.org/doc/libs/1_67_0/doc/html/mpi/tutorial.html - */ - -#include -#include -#include -namespace mpi = boost::mpi; - -int main(int argc, char* argv[]) -{ - mpi::environment env(argc, argv); - mpi::communicator world; - std::cout << "I am process " << world.rank() << " of " << world.size() - << "." << std::endl; - return 0; -} diff --git a/distributed_memory/17-introducao/mpi-errado1.cpp b/distributed_memory/17-introducao/mpi-errado1.cpp deleted file mode 100644 index cd71942e5..000000000 --- a/distributed_memory/17-introducao/mpi-errado1.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include -#include -namespace mpi = boost::mpi; - -int main(int argc, char* argv[]) { - mpi::environment env(argc, argv); - mpi::communicator world; - - if (world.rank() == 0) { - int data; - world.send(1, 1, 100); - world.recv(1, 0, data); - std::cout << "Received" << data << " from 1 \n"; - } else { - int data; - world.send(0, 1, 200); - world.recv(0, 0, data); - std::cout << "Received" << data << " from 0 \n"; - } - return 0; -} diff --git a/distributed_memory/17-introducao/roteiro.pdf b/distributed_memory/17-introducao/roteiro.pdf deleted file mode 100644 index ef1f3c398..000000000 Binary files a/distributed_memory/17-introducao/roteiro.pdf and /dev/null differ diff --git a/distributed_memory/17-introducao/slides.pdf b/distributed_memory/17-introducao/slides.pdf deleted file mode 100644 index a29fdbb1d..000000000 Binary files a/distributed_memory/17-introducao/slides.pdf and /dev/null differ diff --git a/distributed_memory/18-imagens/cameraman.pgm b/distributed_memory/18-imagens/cameraman.pgm deleted file mode 100644 index 12fef6244..000000000 --- a/distributed_memory/18-imagens/cameraman.pgm +++ /dev/null @@ -1,5 +0,0 @@ -P5 -# Created by IrfanView -256 256 -255 -ܽȣ3/-;421?TrsXLK20(1202,3733/I>3CKTE0*,'-'(%--,,(($*42HHH7/.+-'($',),(-'(*&#uC/F>2.:,<;/5)+&,)'+),0**&''c:/NH/P;@/-1>8&-81.)/.,0*)(%)\6E@4;)51-01*-8/5?=+3-.76=**($صJT9+0''((())-71+(3F;,566;40'(*־e=3''';(%%$%7-J9*#'+66<,66=0*(%'!ϫs1..%(&$#&&&((/JF0+&(2H;-.5)7>-(&)&=o\ED%,'!$"%%"#$''-1D8.)0F,(@4+%I4*%*((*YR>.(&$%'&%#$$%'(::PGg,ĪlYxn|C#+$$%##"$$%:Ǥ.&(&'*%)-AUNxB"&"$"$## ;nE,/.%aٻ>~O_]eonpq}p~vwzoq`L7U!/!##$$$#RvM5@-ʨqY01a)4^#)#""!%&(8ݺvK.5߿`J2W{V[]ivmd^^^WW\ZaY\OZYXG,-I,$%""#&!3HuJ22F͜y6^a:ga_^b^]dVV\\H\]WPjG+'sB`e_hqofoҟ˶Ɩ4'&)$/Z$"%&#.HNMFTصú_dlnhڣeV漥ͪyo`kiltqms~sSE:?E>&$($/U%"$#9BD(!!%*C1k[\[TLAjkocT}d]|bʤk_Pγo~nôe557:7:=EKKFIKLGIILHKBDG?;F:9H.#!"%Bo\`\Klcj]EYgfdOy{e\mk`deMۯe:><;?FL>CGDFAMHEC@@A>B><8;E"! /:;GKBFBKHGAFC=CJAC=?A<4%"!":iʳMC>Ba}ܪ_=X}JhnwsmquqxqaXgzqzoveޯ_໢l&]A@>B=E>:4<;?@>F>?BG>@EJGA9=>B=<@=.%$&%U|LDA><=]ii}qmgrtqiDkVppeigd^ط21,"i??==FAGA;94;>?D@>G>F;?CC@AAB@@<<;@,$!#"0÷PIBC<;:VʹwCfj{wnltrqjkfumdnrkowQ?DCEAEGFD;;9:G@DBCF?<<4<:BA8@F@<<@CCI?A@=D9:??AABC;:7:;:E<@>@##$""#!&ƕVFFA=9;978SdfoxgkhrnOztweiP`Z䇉Rln}bzv(%'F9<989BF@>=<;:8?948>9;<<9:<8@D>@>=?CAB5%%$!##0mWJ<7356=:849Te[cshptutkhMqwouotk|mf`/y|J\a_agV`]\A*()B?<:77<=F@@?;::::;988<9<97<:9;A=>B?BDB=+%$%"""7\mԾ[9$$#$$$$"\io||kthjf\ilyphTƻ@;=>==?:A>EAC==?=:98<5=97<8:9;:>?A?DB>=7DE&$ (]Frq/8'&!%'%%$(EnqkutjX͟QaootqY,=76=67598754;9@AA>@>@A?9IB2?!CcLCЪ?GN&$&#$#%$%!T4qkqmnkSToŷآgiqq`/'XcKG@=B>C;=@=C<;@EDCAB@<=987758:<866:9B@>=<?:<9;967323=78667A9E??<=>@8A<=H80,mSN>cjB>9+%$%(0+,-&&'%&B;'޿yuyqJ?:>;4-.01128<:<302/59976693227487923:;>C=D<;:?<=>E3$#@PUAMϊA26AIE$$%&'&%%$3I7/<742,:5E<*+5,*),+$)IevfA;B?@==2,+-,,15@>;3-,/166432433778656677?AB=6I\lO@9@0"!#OM:F3+>>CFA@731/-'-1?H?;5,,23584444847773269B;8F*EK[lx7=&!! (S9%$#%&5'&) `u3_j3$&#&"2I;AD@>6574,),2@B==1,.465424697651134>=:><82,)3ZB=$"!!$J90CGSMA7KUHVi&$$,)VWXj筚gB琝}r\`i@#F??@>=C>:<>@=AC=594,)*7E@=2.03953345989847369<8C?=??>@EID=BA5--2;=>:3/056025425857452::><>@8:/*?N91"" 36ZNPOURMNUWC1%~pFBTYZTRu0TenTPbuG@=?<;=E@>F??E;BFHJADD<10;A>5301553424653732316;8'(+2:re8620'K)'''&'B`H>D><=?=@?>BBBBC>CFKKCC@;75@><101454158522001794<;9;?;631=>P1#""!"F}TSNOV\S>A@; qf>AA@&ݑgWG=.2?Ri4EI=?@DBB<;F?DABHECDEHHBIHD=D=B>@3//53278<5565111697<;==?87-J+d*"""" ??KQQZ_UA/"=C4fs%?:ED&%&)"٨GVB@@AAABD?;76)P3@2,)&" -ITUVN?9($#02_ق;)>=AA*&%#d^dnnH=@DF>@?DA<;;A6,.*/,9>95?868768:<;9=95.NVXG@1(**!!BKUTD/""$#%Yu<=;;??@%$$#\OZjnt\`IC:B<>BCHHMDFEEKBB>E>BF==;58:@638?3---147/,7;20:2596<>6>=9'2*%-;-322%:CTB1#"(!%#P.+:<8B@?'%%%%&('):YMBA?BBCKIIHJIIEIBED>B??@>>69534287=.*+124:671))670898<:=9:+#"!""&&1/+8=D7&$$!?A&X'&(-?;?==;;>9;973220467'$,/578977631(0=2=@;=;<0#"!#!!$(*1>>2$"#U""c4I&()&#;:9=A%&#%"#\'%''('"E`()2/56393353201'/A<;@<>2,*%"" ''-9:+"$$%U"3=I%/044$2=?>G'$%$%DL'))'*'%A;=AB?=;8516=A@B?3+%%$#)-44527:87684:,-11254340382152?/,A==?7>54)$(*-88*""35$7M/K(4=;=@(#43:J-"$'$Kw''*-S==D@;B<<@7405.+-76U912.&-.(&-11058>>9>221077;;5<47A70628?:77,:?:<943//3:;)"/7906#3B)9?::<:6.+(-&'((&%'6LJDRF&#)'+1.1:91)+105655642:55512>684681/9>3850.5=(&1523+:#:(8C@7<;60)%&$'&#$&#$ܖ<2]IUAI>d;8867<83,+&&$$'%*17:GC42?(""!"#&'+-%!,//3676770854464A967:45532-5:0/59+'55834''A(8=AA::76:4'$%$%#$$#$c՘Ÿ_ADLPN?3]7:425;762344DA@J9$$(%,'"!!#$#" $30416748541133418589:73/1393(&4;./0D--*$2&7=<<:867:7A<'$$$(#$##/(*(**(*-./.0/9L2CRL8>EK2;8130.8CB?@ABC>D?DGE?@HBAJABA)&"! 1# ,/4528:5954541361A859314110?246:6<4.3,-)9&5>:E=38765-&:&$(#$#"4(&$'&"$..-)&+.(F1EMH/G'11./,,1DACAA=CDCB@==755;<3406;BF#"" '-125626553134120858:4431///22-5?6=9560.&9)3<;DE8669889#7$$$####"'"#&%"'#,50/+,*8+59JJ8,4/-,,,,*7=?@@?@<@<72/11()/)/8<@FN'""#,.114795665432-2674434033.+444084058<4/(:/;:8($#!###"#!_<#+,(15018+.'61&5A=A:!9,,+)*&&+/665=:B73,.*+((,/:==$#%#%#!$6!(*-<;6.B5:)&=.%135)%)I*))(&&')+-.64;@A<52.15;BE@?BAHD?-282-124654230013276985/n[.5//+-41.533.)$49!0A;6(1656:6<5,@V@0()J.''!/&'?)*+)&%&&'(-+1;JHEBGFADACEDEDIHJFACHKJ4:26956441313286:9,-%%=C4#"*"""q#(28N@/*?C7-/"0C.##1+'/I&,+&'&%&)))*04GGJGADCBGDHKGDD>><;>=<9MO;65022.12331469*&%#9;(30,/-$'*-18/99*&*%+5343696773039#"$"#%,$*0?hO6)AO4)*)$6J#'),))>*((''$$%$)%'-,6>CAFHGFCF>>A>==C<78@;2FGEIC2,0;/-123258,)'"6:L1&-'#*55.;,6781/,*.444675:7;@;5+!!%!$#<%)/9FeG1,KV*'.+'$E6&)5(&!'')&'#%%$#&%')/27:><;=;58778;A85=?>9IGGGLIE8.101/34791$$$#-/J97"Ao*7B*///43+-5694452;><753008=?D>>641&!#$"%/DWHl=)()"1M(*6*%Dͼǩv+'&%&&$%#%$")$%%'&(-.*14698CEAD?BIFFEDHHDJGH@8654773-&$1"B34?l;7#))00/-2:A@66/67?C?B=;74&("$$#%3AUB.(К(,((!8J+;():¤x&(('%%$$#$&$$$&&'(*,-.1598@?BD>E?A?5>HDFF@ABE>15.5,+.1)#nS13AJA606012,*8UE/:9537=BD@<;73..)#%""!SnPC"2ԛ$*++%#9>=BJGAC:68>AFJ=A?@HMF-*+)&3,+q3.K6BGA3)YVVLMSOU<2&*369C>C<=:9432&###$!!T{U~MHڜ'((**(#'==<;C>*)*)&[Q&'&*,,,,//0.-1,30011/23540+XC9`9;CCD;CBABHMKN>_w}}|g~Z6DGD8.#127563624("&.86:6555=:;87$#$$$##"&'-.0889EIt-7^A645G/)'%c\'&&)+.1--2213332110.2.,*+/J783CA?8>=>CHEBOHDET|~|so~DALD4+!*540634:1%$./4643219;<<96)!#!#%##$#&4f5,*10@E0#.݊241G6'&[x%%'&)+,,-/2661../0,-,*,&###D51AE5CEACHHCFJHJBLmuxy|R@3+!%/-13/35:2100./-0377=>A769#!$#"%!%$"#f{?0/)#"!#!]U&)N)&('*+,*,+01.*,+++*-//&%""!5JJJCCFD@FHEDHCACJvyuqv{k@$$///-.2226541/.0.4::B@?@85&""&##"""##"u4-+&&&&!#0=?%&"!b*+&&)'(+(*++0,+*-,-/113-&#$'#DCA@==77:ADJFDFKswuw~yxihR*//242202358B?>@@==7.#"$%$$#"""#)Y22,%***"*%19/682.XR8=&$''&%)'++)+*,-//0124:6,$"#0830../9A=BEIKQw}q}|tV]/15225277;7>FDCFD@78'!"#$$##!!"!7I26,&-++%&!.gGIet/I%'&%%&'&'&)))--,,-020211((,*))-38:>@A>ACfpwyxjDF2178476:EpI(2?DCֻ<&&(&%%#%)(&('('(''&)(*,*%''(*-2:<7;;=?>El~stv}p_c039457497:=>DCAAE=>544%""#$%#"##"!C>=pVp*)B]@%$$&%c+ؽ,&')(&&)'%#%#$&$$%�$$$%%%+/0:337::8@A=]riwoegquryp`\J(*==?7597?=`\lj^]cogA$#6>C>>:=<:8=8878C:Gd[fbO_nksrzm^b@0:=?>;<<>AAFCEAA>:7538"#+%$$"##"$"'G9Xګ@%('m*$#g0\&&&'%$"%%)-3:7:69389;:9=;7:>@@@>9=9<>>;==999AB28BQbPO_jhrlqcvl_YhaP??@?DDEBBCA=>;845')*%$!#""$%%$GV:CY׊D%}'$#/+&'&*%&%#$%$$%*.<58<>=9>8:<;;>>;:;>=>12.CNEHmiRhopa`uULWRWN^Q??@AEC@EA>>;9437'.$%"#$%$.$"!eD:@ZمB#+'!B?'&('(%$&$%#!#%"&)1.22<88:9:A@<:<7@?A2));245RMIWenRUZ1821<>QTB@AADDDE?@;87742'#"%#"#$")%"$D93W{8k($(c7'((&'$$%"#$$#%""#$'),024475>:;::7+PJ%$%'&#&'*&$,>A.XŘr)&&S4t%*&%'&'%"%$#"##$!"$$%'+*.-25;?=@=E8%##&&&.)69G[J=oASIxqoL!+@??ICF?A?9<78:&B$$$"#(*(%#9g=i1ZƠnI'$,SGD'(%&'%$$&$$#)$"#"!##"$)'')/08;:?=#!""#!%%-4NE64`J9>.>O[\qqC>@?AEI<@<8=>92/W%$###+&!"NP9S/]ħl''!d1.''#%($&$%%##$##"!"#!"""%&%%*0+088%#$$""""!%4$0.K7_Q&1-GEAW[fV?>FC>A997:9,g((#$1(""oC9V0_űs7'#2F\''&('&%$%&$%%$$##!!!"#%$"$%##$()-#"$')&!'%#!,(86;9776&.$&/*"&B9./`ö'$"qx4(%%*%$%#&&#'%%'(0#"##"3$%$"##$'$!#.=@C8#T'#!#(3:gRrfp1""&0Y~ZX>??=:?9>/6M3*(".ӌA@#-^ĵ0 B|v((%*'()*+*(.$&#%$$##"$$#$.#$$$$$#+>A>E<&$'&$""##%#$7_epl0')AS[[>O<=<;;;:8((,)>e>?(7_DZܼt(%$m6=53/0222135852)&&&%&##$$##*%&#%$"0>=BA?=?0QFF6-)8&#%&-KoslP?)?8Gf>::6,+&#UR-\į*%"H<135<<6311446;=<5-($'$%%%%%$%'%'$3@HACBA=90IEDBHJA1+'#&&2MhKB3+34;@<@?<9;:.Uh0($tD+^é[(%&cC5<=61309=9535::8:?:4*&$%$.%%$&%%/C>ABBB?>A1MFFEFAGDE7)%"&&0G>@<:9:'7)(&9D]ĭ,$"`4]>BA?B=400-9?<84;;;9<@<<1j*'%89:BCHA::;<3154:@?<7EF=;61,.6:>>>BH@F@F99IEHIIFQFBBEDABBCAECCECD?=B=7;6(*8!WR)bŭɺ.&%0Ff*27=36:9>:?<=8323;A;=>593.+18=;CCCF@@B6>ECEIJEGIJEBEFD@EHBEEC>DA@?DA<2HN,$!L1dïԻ؆'%#}v3G,6<:>97><>ELHB??<?DA?>EIB<6558>:3126;@@CBHF;/HDHJJEHDDK=B=>91)'%.5qdù͜n'$(f8J(,8::;9<;87;:AHGGC@AGB@>=CAC=8/12@959AFCCHB?/MFHKGCEFFE?=D>=;0_)%#?e/d(%$J<,'/:=@DB==;91./IA@>@IBAB+ICEDG@GIECA9CHDCEBEDHCK?AB=;9,U*$"\K,dòĜC&$'TCM'(,,,0976:?BB<@@ACDDIDQDAFDFA??<=:@417;?FDGC=*HEBEGECADA?=BBHFE?BDCBAA??9969/*%">.aôɒӻ)$"V2*&-,(&'#'#%0<;?>CIC@?CDIEDEFHDA;@B@;FE6:>@?A?>/IGEC@E@DF>@?@>GEA;;,%)$(7JbñЗA'#*OXּ¿\)(..3.)&&'%###'+5=ABGE?EB@B>DA?==C@>I57<?::=.&%$.5{hĵϦ&$!v/,)'235:=5454/)%&#"$'5C=MHEBC?>?:96<GgB9=;JJFDB@FBB?=@=CECB@A@BA>>G;?5Y+##>f+hùҾХ/%#4Dnh,('268;:7454:99/&%&#%$*7BIHDBAD:7:97A?5:C3^[A=4AMFFH@ECC<:;=@DEA?BAD?A@>>9;'K.%$eQ(eĺӣ&#!{s3ֽ,%%,099;C94774:88D5,&&$#$%7DJHFD>:9=7C97@==:CEJEB?99@38BDE60,-BELIGCH?AD@?@BEEDA=A?=CB;9>8)''$$8Mc¹Կƚn%$#a9ٿɷH*(&34889=988:9444<=CABA<6.+'#%,ADCC>@=2<>@A<56,!4EPIBBABF;;>BCDC@?=B9?=>8>0N(##02{`ȡʺ'&"S5٭Ķʼ.(''/089=9:;>7744559<>@A>=::=7+&$(1>CG52;@?JJE87$;:O?9?9=>;;9?<=9;:O=fZ)%$Bm,dŽܼG&"(VLಬ˷N((&'/35778887=897357;;@;=><=:>:5+&%%+636;>@CC?=?*M/8VdQA4D:@:B>CD;EN<7?3GA8!0*%%_O)f¾۶'#!]0Ჯɿ8)''+.1658898;5::664489:::;;:98=8?:/($64:=?ACD>=@(;\cNC9#DFIGPHINMFPC4252A@=2&)#%B/f4(!.E`ƽĹȵ`3'&',.2367879;:6;43488:::9<;>89<><8;<4;5<>?BB>@@>';2(+>+11,0;CCFBEDE1++/,RMA?*+&)8Lg¹~*$!z2ǹ˹ɾJ0')(0/433=89<77994458769878:<6:<=6:=?7=48>?E@@=A:&%#$%-?BD*"$)7:75*7)&*2+KHCLt(&$51~g)%!5=yŭ祩մG1()(214348::=<88987456:;:8:76:A;78;9;:78>@AA?>@C'(F89)EC@>>>9=A@EG8+&+48.@JE9>,%#It,߉hþ[)$$}h5ɱ噘VH+)((1098799=;A=9=><;4889::;8??D@A=@&-RGEADEE;AB9??A@BA=9=>7%BB?C),& pY+kkü)&#<9z߹ͩүٷű♗EE.(()54778:=>>@@?>><9:A==<&/QBCDDD?<@A<>@CC@>?=A?@=:=;=;<9>=?A=>>?<:95;@?FHCB>@9"2P@BBA@C>>>;A>?CA?A9A;8#H=@%)%(;Wn޻*%!M5^Y`_~h[_ɍq䛗NDJ*()/457699:?=>?CA?>>9?;;@>AB@>AB:>=;>;:=AFE@>;96!1NCD@?E=>><>?<=<><2"JHU<('$27Ymm:&#(MHYQa]}VX{|sw~IFH*((33844769<>>?CC==A>@>;?>C@?C><>?>89:=9=EBC===4!3JB?>@?;:?=\B>9<<3IRUT[cjeeZVUYUV\x')'%Ki6X[]|^nuTn꼺vu˩*# `|1bZge͉e`䶄Lj^UNQ]abiefx˵mBII))&<9644689>><=?A@A?<=>?=@?A?=?:=B<989:;?=D=;<<15N@D@A<;<@<=AA>==@@;<>1 Dd[UWmyg[VTTRYX_s"*)!sS1dc`vbqtVj꿿qsþ߽5(#-B|bQgt˙qbۑcSUTRUaggiiigigrԾҿHCKI))-:984586=>A<;<=<=6D8;;AA>A=>:<7$8DGEDA@??>>=>@C@CEAC?<2$9bWVWre]p{hWWVa^#)*!I1_raqoXn½ܵԚ,# wi:`ZzƖnٕжd[[WTRU\efgikimlphi˺͹ȷǺƾѼ¬FFFK)(3:=679:9D:A@A?AB=AB??AC>?=?=A>=;=<:;/!;JG<>@=BA?==A=@C<>@:=>1)V}z~J$(+)@Vgvbacꔡ׹µڵ/#"7>aWՉÞ{КoftlWXUX\ehmlkmnpqplcX|ß«ȳɿȶҹ]EBHE((9:9979:9>?;@BAAB=FA?@?B>>??=?>;<=8;<:E@BA>;:9,"=IHAAA>H@>A>??C??KA<5E24ƳŻ4)'*53|Ղz̿Ӱ|دj*$"eBA?=?<>?><;<A:4C4H'*)'Ny.ӛ‘٩֯-+%@@bWڂлjc\^[^[_bcijjmqtuxzyukqm^[[ϯryHCKG:&DA+1479:<=;>@DAAC@><>@;==;@;<=<9=?::=?@CB@<9=:#%GG?C=A=@AD;?>A?>BFA<6E3'+-#V(ףl{[IיˡD'#!ZB\z}ķoun`[_]cifjikmnowwvolk_\`dotoּ˺ͷƻWFCBJ6+/;A5019=;=@A?@?8;:#)>D@?DACA@A??:@??CEC@?99ӵѰj%+(%F.ësIizضϾǤ֡+%!O;mր}}lfmgn{tsrponxsvwlfiddgk`S}˭qBFCDH/)-+2BB8/59>@@A=DGCC=A;<=;==8:@?>=@<>B?>@D?C?<;7 -FB>>:8?5B>')'*;9>E>@;=CF@A=A>=@CA?D><;7!1HA?=C=>?@@;;====@>A7<0+)(&:2ϦiZ̴t}~}ϼao+#"Vl2ځi}rѫ}tjzc]\_imnkmmkknlpwjjejhorhhc^Yҹ`?ADI?+*1>;=4.1<==<>E?@?>ADEB>C?A@@BAAA??:2!6B=?@AG=@>@@=@=;;=;@;;/'+*$Xc'ΕzGLĄxvvzovݯ{gƹ/#),|D_wkѹš|x}j`fk{ŕqumyrpkjlbfvyhqtnnͬB==CH5+*3678:=9.-7<@41.344?=:>?@AA=?DD@E:?@@ABDF@FAB<-!8K>@D@?<>D==C?A==>>?:9B&),#M,Ҕ|dMÃzuuwvϨ{sȳλu+#!hf8Ľǵ|ȯƼz@?GBC*/,4;736;:=;6)+9BB700/4::A??@BABF9B=>F@CAA@@B@>9("8JC>>A?>?=>@?A>=;>>@@1fM%+.&BBǏ@nQÇxsnorǰ,%!=;ͿϻɣζعK>@?E1*(*8:786;;=>AA>5,2;@>>3/059:;?@@J:B=B@=ADC@@>;A;#$@DBBA?:A@C@@?>@;?:;>?4h/&+--9`Ѵdfbrrpm~wµO*"#Z;@@B?B4++)8:7688;<:D?:?@B51-9CA=54116@@DBB?BD?DDEC?A@<;"'?FADAA?=@=?BB<>?=>BF3,.896::767>:?AAA?>A:306FF>ADDCBCBAA=A<6#'@IBGB>@A;>ACA>>6=2$**#\p+ሄՑc鹿̫y¾D+$$RIX<=B@CE8)19<:;7:69?9??=A?BA?B<@75+089?:HK<@>><A@==A77?\$+,"T%4אeϥv/$"Lv5=<>CADG7+0:8:<::;;9>?>?@@B=:D?==><61+.19:;@AABD@AC??@@1!/BHAB@@CAFB=@>=?@@@=>7\4%)*%F/oאgը~5)#+HS6==AD?B>???;9:8734>@>?@BBCA?==>>*!-=GABB@=@B?9@=@>;A<>?3q('+)-=I2{iԦ-$&as3D<;=>CEE>-487:9:998::>A@EA>=9;;8>BA@=C=HEDA>:>=("0ABBCFB?BA@B=>;=<@?6;>ADCAC,9=;<:98:>9<<<;?ABABCCA?>@999;;;;=AA@>IDA@?=>=& .E@ACE?C@AB>=<;<B1i&*-![e*2@֩Ԡ~.%!qh3j;:8@DGADB,9@<:8878897;?>E@>C=E<;=<77;=A@C@ADECA?<;C?ABB=>BA@==?AA>>5;#,/ P(ZB٩ګ9% @=|N:;8@C>EFE089:;;46998::<:;=??><>99898>?D@>@>?B@@<;?;;#!/K@A>@C?FB@A@><===:<;=@A?=>9=;8:=;B>AAA?HGFBB<@=97,8LIABCBDD@AAB;?>=B(&++.AOqXC֢̐ο6&">7ƿĿŽſƼ>;;7<:?C@C;:<:<:997;:;599?;@@B>8>>=<9=:>:A:# .MAACDAD=>A?C><<49;@8>@@A87<<8=657:876;:@8=??<::;9;:;=>A@??C@ED@B@A??@C><<;3bM$(0#ct0kXAզĽɄɧ7$!Hy3ĿH:<4?A8?;;;66978:7787899:8?7A>;=::99::?E@C?A>CA>>3$&6OFBEECB?D>B???@;=0t2%,.$\'AqEڧþɃþ=*#&{MSľߌ<>7<5?97948598:9;8::9698:=<6:;;?;99:9:<@ABFBAF<>?>>-$#1ICBCFEDDCBDA@BA<4R)%+.)J8_TDԱɃՅ4*"Vv7܁@6:2B;4>86134856<;99798767:75:;<7;=9=;@@;=@<>G?EBB@>?>;<-#!4JHDCCDFDAC@H@A?A3w%%,(2=W>pC֨~2(#-HXI;659;669:16267:;:98646;87<8<::==<=9?>>B=@A??CCGDCE?=9>;($ 7LFADBBBBCCAFCB@?2ɽS$)0(G:l_\Dԫ|𼸺m2%"fi3þٹ>5===<:?=??A:<<$! 9OCD@CDFDDA@E>@E<4Ǿ7%*/$ko5aHcDզ¾w¹B''4>wοý»ղ@6=:56;669:6;;8999854519:>8;=>:;??=>A@@B?DA?GGLF?>>?>?$""9JEFEHCEBGDGCB@F@H)%.0"[2CcEӨ̾ǿþ{ýY2%%h_;ľż»ºճ?:56:46954:=4=<;56969756=?<=?8@9>=:;" 9OA?DDIDCJBDE>DD8g'(.0(O/XeLӧŽ|ְ='!;?{ĹùüƾſľÿžD:569:6;75499;7:8::8=<<;;@9<;:>====ACAEAEAEEBA>?;<<4%!"8HGDEHGEFEB>DB?D4r''/+4B8mʾDӨĽǹ·q쮮A.&%wU@ýþľG975::97:975=9@7539:=<;>=GD?FBAAH=@>==93"59ICCDCEECD@??E><9B==BBCFCBA>?;:<==/"!$7JAKCGCGEIBJAA@8J0&-1&ey8]~HӧoF&%*tNRɸſúļÿƼңB;=7:@<87<;;7277<835;>?>=9@>;??BADEF@AAB@AC9:<>*##3LCBGDHHFJGEBBB2{(%/3&`2mL~ԪjۍD'#Rl4̼üſÿm??<98;>:7::996699:;56>B>A@?=@AA=AFEEC>C@@:<7>*#!$5IECHEGEHD@BED=3'%/-,P-~Jr̬o@*&,~FXɾο¿ȺĽɼĹݶW=B<7;==::9>;:5579CADBCBDBDBEBA@B?9<;99(" &4LFDB>EDHDBAFG:4S%)0(7C7Iҫgy9%+[a4ÿļƾĿ޾N;F@89;@?;7<9>;78;BECC>AHBGGGIIKC>B>BA8<;@(#!+4FFDEAAFJGCAGF:P3--0%Q=Q؇ȻiG&&0w:uĻͼкY1;?A>:<>JFBDEMIKLHLECAE@:9@=##!(4KCIF>@IIBCCF@6ÿү,&+2%tv/yki4%$gZBBC=@AGMDJCHKCJAA@<>8?G##,3ǸüÍ&$/1"Z&ɾľiսg&#;z9ɺF73HT.+6AFG?:;>?B@9=BFFHC=HDGMJDHBDEAA::<<""/>IEIDEEILHFC?=Gd%(.0,M)ȿhQ2&$lV?ĿC:6B~+((.9CED?:>=@:(#1CLFFA@FCGGFA@5j3#(0+6@M̽jηΪN%%Fn7ɹźĿĿ˾Ŷ<<:>w^()*)*.9DJHB@=@BFKC?@GHHJFFBIB;::;A7#$1FGCDDDDGGFDE>0ߤO0/B?U4Ŷh^*')t˿Ĺùȼ<<9CJFCDELKL?A@AB@::.#$!3IDEFDECFEEBB>4ތI^rȾѿ½Ͻe9TʽŽ˽ǺŻܻ;<8=^/+,.-,)**(/?IHMHCCDKMNKEFCJE>M-(/6$t0jȽźʾʿǾƼ*'(8>ȿ±Կͽ¾ξȾ½мȴöѼ\TYO>;J~e21/141+.**(%#&%&%%$$%'3BLPGD>C((%#)JCFIBCACDHD7K&(/0,]&ɿŴüʿɺͿʽJ'''mZ@̽Խ˽Ƹ˿iVVVI??bV34120,.*.,&$&$'%%%%$&'(&2TOJHGGEDGG5Ͻ/%*5+:G8ξǿ»Ƚžǿů7&%*oPO¹û˲˻̾Źͺú[T\[K@>JzT54/--+,.,*%%&/&%&&&(,$%%#$%$%%"!=NICJQQWPON<ޯ,&.9,M;fоĿ˾ƾƹ̿Ƚ̻ȺƴȎ'&$Nh>ĿؾĹľȾʸUWYeRG@Gc`7/00.0/-,,%'%&'%%&(*%%&%%$%%%.%%*%$$&+.11Xƽ˾ùe'2,6)m2ƿ¼ĻŻɹ;ƬѼȿľ-&$,KXƱ¾ʨľƿĻĽŨ±±MY]_ZXJI[vbJ1130../-''%&'$'&'(%'&&(%&'''%'%$*)&()'(ʳɱB%&04)`+ĥĿ̾ϷɽĽ˸l''#Vd8Ͼγþɽƽƿʻ˿˻LXW^PRJQ]v^jM41020.0*''''%&'%((&'((&(''(&''&&+))-+,¹̾1&'110R1իʽ˾˶Ͷƴ)&%3@{źǾöþŻǿþιȹHXUWUGHIZj|~fkxpE433//-('*)&'&%'&('()((((*)((()+,..,Cު,%(6+FGIʸîӿϿɿ\&%%li>ϼӲį͸Ƕѹŵ˹̼͞HX_YXNFKYfy}xtt}m>//2/,&,)(%'')'&((*))****()+.01/-1_ͮƷs'$07+T:eįǸٻ°ȻåȽ̷̴%'&5r?ǻƽľνG[^TZMHO[gv||e`^cT711.+-)'&&&2''),+').*,,-..../,-Sd¾­G''.4&~/{ÿ¶ȥҵ¯һĻҽȷϼE&$$hW?Ļ÷ʾɹĸƾ­Ϳ̾GW_ZYOBJWdykke^`E3/.))(&'(((&('*,+-0-///343/*GdfȬ4&&12(g+оǻǻֺ±ƽȺߡ($$>r6ݼ¼νϲҲKWZ\^LFIXcyzrlg^@0,('('())+*'*/--0//24343/Qjcqǽ,&'4,4V+ɴǺȸåɸĴкžɹƶȺ2&()HVɻοҹÿ˺йź̻Ȼŷξ˨JV]`eRJJXbvyyss=.('&''+*)++)/..//137334egok~¿ȿ.&,7*CIFϿſԳ˴ŷÿ»׹;˽ǻ&%#Nj4Ի˹ӨƿƬ³þʵľǪ½÷ӷĿI[dbkYNGV_tzC+)'('**+*.-*+.0124641Pwns}vȵĮ»Q+(.9)k:a¿ż͵Լϰ½׿ٿӳ-%%1z@nư¹ļ˹ûϸϺHXcig^NGRbrH+(((+)+,'+.-++.009Bd}|~{~ж8&(14).ԭùʥ¥ٿжŷо٧аƽӸϿż֦òƹѽb%%$YT4ĵ±Ȼ͹Ϻν|LVf_aZQIM_pH**'+*)--*+,.D.)3uvɾϹŽϿ,$'2.-^)ƶƵȾ߸Ͽ˹êϽοֺƶǾϾϵد(($H6ǺĻ˺éͽҵʾ¹Ȯ̮ʮ{J]kg_WTHLZhvA+(**-+,-/-*).,BZpuֿýٍM;5.:I;dzȥüƾˣ¿ÿ«Ľ¿еT%&#dSAٿܿɴŵʵξ˻ʾpJ]fjf[PGLWa|wyr?,)(7/+-//.-'/W\`njúх\*F>YѿȭݻѸĺɿӵѧվҶٷǸ&]EܸȽȴ̶ϼȾںùѽ˽ԾgM`oig`QHKRe{{y{~}d>(7dm0+0/0/-)D\d_jxzɾҿڶ:(c2ӯż׻Ǵοο̿̽ѿƫŻ8&!M๷ŻŰȷȳӱžɯֻ̲׾μҺӹWR]qsvdUHKRcsytn{{p=?]gq..0/2/3G=JahpxοʷԿċh;-p+ŵÿؾɭtiǭƹŵƸϵ¼Ƭdzľïֽ࿻SR_ssyr\IEP\py||voͿAQ]ix51510Iq\J@Qko{иƿʹ4د¼ɿɵµ̿ڿŰž̼ȸɽ̹ɿϿ҉ԯҴ̱иɵƾȻ¾ƹƿȯ̾NObrwbJBJ\m|syp~AR\i310*PgWKEZzx}˽ttұȸȾȽIJϾϼŶηм֧˻Įʼsƿ·ϼӺĵҷȲĸǻNRbrsjNFHTdzzqjAS`o|90.Bw~iRHHjym_ɹֿĹþïѼֻͲͿϸϻӨĸмѳùɿͭӰҾݾ˾KPbqo~u\DARav~tp`̾JPao:09Payv_RMPrͺԽݹ^|ڼԻٿ̸ηӻ˿u䶿ͬȻȲ̛ȼľȻͶµ˾Ǻ·ԳƶKScqnweNBI]q{}~tk`KQasa@nTObzp[RSZz}լOſӴĸ֬īܷȻӻָǿƾέ|٬´ѿ~ǬŮĵ˵ǠμǻҺҽJXgjknUCGTo}zuv]WRcu~xgPKaww`XUYs՘]Ͼ¿ҶĿŵ˾ʨǻŶʹÇv͹ķɺԦ˼ŷק϶˿ǷֺҮӿGXnij|wfIBRn~lWaQkyossOLdzpbSYh~{pͽҾԿνº¶ڣӹĦνѷ·ĬԬμeͻ¢ӦֺĹ̲ίҴ˾ӼѽóKXhgfoO@Mh|ywuckaQjqf}eTWlxweY\`uƻ˵г޻`{ԮٮӶŰɹȿʷսŴįǶ̿zɷ·¸ѹƹżιԻJWqlby{c?FZyvysfƹjPlj\pl_T[kypa^`l|ܹU԰׺ʴҫϾΰ̼ʾȳʧ׻ͤŻùӝìʹáʳѿïlͲêƪýϰʲ¥ľ߻N\phbvnE?NsytxubµxPqcPflg_X[eoh^Z`p{ҶS͵ҸԿ˾ʽ캶жݻս˾з͹ɻͼѝĮuųɮǽ·ȻǷƞҢúѹ;N^kj]v}V>EazuulcȼwRqge`\Y_ZYZemg_[an´ſÅbٻڽտ˵ϭǼ͹޿ʲñȻٵٴxǻķ̮ϻʲλڽųлʼL^okWhyeC?S~yuqkxǼyRvciYUPXTRURYd\YX]ʽŨӳkqͼͷܻݻ˼ұŲɻ̦Ǽǹƻȥfؿ¡ǮѿȮ˸̎зҼǷ׼ǼȮQexmS^sxSCKqvonfͲއN|~[[VMNNQORJPUWWWPڰҹҾVzԷڭ̱;ʾоӺмɳŷˈzϻȼ˴ſϾºƽ˺ͬн·݆Ngw`Ui_FG^omhZӟNrqhbXRRNKLNLNPMUTRi̸ΣO˷ڿŴ˹ÿŻݸѯIJѾμȽˡԹj騡кֽ̳պڸѣúͷwTevqQZ~rRKSof^g٬LpdaVSPMILKLORS\ȽͺƍVȽ˼ķٱȼ˼ȗݽέںȽ̽׶¸̸ӼºЯйͷħȶҹ¾߲ïcOhsvpVVoeQRxojdũͻ=vnc\QOIFDKRQbĽշԺwkêͰĸ͸λظ̶ľŶӺҾͽů̻ư̩ѻƮ̽tλþظǷ찧ӽؾĨYRdtsp\Lgw`Qz|{m/{pgZOFILNXָ¦˽`|կЩζոȬỽͼзǸͻĻؿܻDZǎӱظxضӼϺѵ̰ɪ״¬żƴйϻȵȸSYluqj\MZxygWr˻3eqWLKV5ͱPƬǡڸͧ̿׳ɹ˹ƻȵҫʿӯηƩҨֹҰӱÿװԥʩxг̛к¹̺µķкҾΩϽOXkt{w^JPop[3OaKR.Ҹе̴ӾPѾѾȸΩλжеűزͽ׾ʬθֻùʿ̳Ėq·ɾɻijյںϛɨçŹN[ks{xjMKg~{Yi89WI2}ȹķɴųú~]ƪؽµɼշýܺ̾ľ´ƿٽκɶ¶˶ʶշ̹̰Ȼϳ׻¿ŻȼبͻLXmtw{pUG`yye|k<2^|>/vµƭ±®ϲrpɴջĤܱʿѰμӺŹ̺ǸǼĻ׷ư۹Ѿù԰uźʿȴߎμϴ͹нܳշ¿аN_uvyuqVETrx`rӷD8:|}h2(͸Ӿ̳ɽZ~ǽ׻ľʰ˿ɺŰþͺӻƲػµؿɼȹ·վƼ״ڿ⽿؀˽ֲĽɸǾɾͮôɺ˺˽׬T`u}yqWJSk}g~ү̿H85`iWJ@713356.ƮͼȕT۲᧼ʼκˮ½ʻǻѴŜṮ̌Ыݶѷ̹ʻ֦ʪҪ{Ʋ̾ðױӬóظ̹ǽص͌Qavx]LM`|wɢżG76>qle]\L7/78<>6ۻɹ¿hȲ͵ǵͽƻʵ׬Ψ®ľղǿۺѳԖ֨|ŤĬѾʿ۫͹˪ֺڻƸƦǽʴTizudLNXp{̳Ѱ˫Q963]~AC>BɷӿǺȿǴys̾μ̿˾һ̧͵˿ʾ㡳ˮѧӥƾÿη˽ѱųʼηޛϢþͼθÿ̷۸ɭ­ѫ˽ȼùnZnx}fSIWi}x̬ͮS683EkCB>YùƷǤhǴɼ̿ҷʼּȾʲطʯҸݼùŰǿرٻ}κھ٬ȷγԭҾƽ¼̬̻غѯ]^nroTJPbr|zxֶU886 -#include -#include -#include - -#include "image.h" - -#define MAX(y,x) (y>x?y:x) // Calcula valor maximo -#define MIN(y,x) (yin[di*(colEnd-colStart)+dj]) min = in[di*(colEnd-colStart)+dj]; - if(maxrow, imagemIn->col, imagemIn->max_gray); - - // Processa os dados da imagem para a deteccao de borda - edgeFilter(imagemIn->matrix, imagemOut->matrix, 0, imagemIn->row, 0, imagemIn->col); - - writeImage(argv[2],imagemOut,0); - - return 0; -} \ No newline at end of file diff --git a/distributed_memory/18-imagens/image.cpp b/distributed_memory/18-imagens/image.cpp deleted file mode 100644 index d1a5ada42..000000000 --- a/distributed_memory/18-imagens/image.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// https://ugurkoltuk.wordpress.com/2010/03/04/an-extreme-simple-pgm-io-api/ -#include -#include -#include -#include -#include "image.h" - -// Rotina para ignorar comentarios em arquivos PGM -void SkipComments(FILE *fp) -{ - int ch; - char line[256]; - while ((ch = fgetc(fp)) != EOF && isspace(ch)) { } - if (ch == '#') { - fgets(line, sizeof(line), fp); - SkipComments(fp); - } else fseek(fp, -1, SEEK_CUR); -} - -// Ajusta informacoes e aloca dados para estrtura de armazenamento de imagens PGM -void createImage(PGMData *data, int row, int col, int max_gray) -{ - data->row = row; - data->col = col; - data->max_gray = max_gray; - data->matrix = (int *)malloc(sizeof(int) * data->row * data->col); -} - -// Executa a leitura de um arquivo PGM -void readImage(const char *file_name, PGMData *data) -{ - FILE *pgmFile; - char version[3]; - int i, j; - int tmp; - unsigned char binary = 0; - pgmFile = fopen(file_name, "rb"); - if (pgmFile == NULL) { - perror("Falha ao abrir arquivo para leitura"); - exit(EXIT_FAILURE); - } - fgets(version, sizeof(version), pgmFile); - if (!strcmp(version, "P5")) binary = 1; - else if (!strcmp(version, "P2")) binary = 0; - else { - fprintf(stderr, "Erro ao identificar arquivo PGM!\n"); - exit(EXIT_FAILURE); - } - SkipComments(pgmFile); - fscanf(pgmFile, "%d", &data->col); - fscanf(pgmFile, "%d", &data->row); - fscanf(pgmFile, "%d", &data->max_gray); - fgetc(pgmFile); - - data->matrix = (int *)malloc(sizeof(int) * data->row * data->col); - for (i = 0; i < data->row; ++i) - for (j = 0; j < data->col; ++j) { - if(binary) { - data->matrix[i*data->col+j] = fgetc(pgmFile); - } else { - fscanf(pgmFile, "%d", &tmp); - data->matrix[i*data->col+j] = tmp; - } - } - - fclose(pgmFile); -} - -// Grava um arquivo PGM -void writeImage(const char *filename, const PGMData *data, unsigned char binary) -{ - FILE *pgmFile; - int i, j; - - pgmFile = fopen(filename, "w"); - if (pgmFile == NULL) { - perror("Falha ao abrir arquivo para escrita"); - exit(EXIT_FAILURE); - } - - fprintf(pgmFile, (binary?"P5\n":"P2\n")); - fprintf(pgmFile, "%d %d\n", data->col, data->row); - fprintf(pgmFile, "%d\n", data->max_gray); - - for (i = 0; i < data->row; ++i) { - for (j = 0; j < data->col; ++j) { - if(binary) { - fputc(data->matrix[i*data->col+j], pgmFile); - } else { - fprintf(pgmFile, " %d ", data->matrix[i*data->col+j]); - } - } - if(!binary) { - fprintf(pgmFile, "\n"); - } - } - - fclose(pgmFile); - free(data->matrix); -} diff --git a/distributed_memory/18-imagens/image.h b/distributed_memory/18-imagens/image.h deleted file mode 100644 index c6492b89b..000000000 --- a/distributed_memory/18-imagens/image.h +++ /dev/null @@ -1,22 +0,0 @@ -// referencia https://ugurkoltuk.wordpress.com/2010/03/04/an-extreme-simple-pgm-io-api/ -#include - -// Estrutura de dados para as imagens PGM -typedef struct _PGMData { - int row; - int col; - int max_gray; - int *matrix; -} PGMData; - -// Rotina para ignorar comentarios em arquivos PGM -void SkipComments(FILE *fp); - -// Ajusta informacoes e aloca dados para estrtura de armazenamento de imagens PGM -void createImage(PGMData *data, int row, int col, int max_gray); - -// Executa a leitura de um arquivo PGM -void readImage(const char *file_name, PGMData *data); - -// Grava um arquivo PGM -void writeImage(const char *filename, const PGMData *data, unsigned char binary); diff --git a/distributed_memory/18-imagens/mona_lisa.pgm b/distributed_memory/18-imagens/mona_lisa.pgm deleted file mode 100644 index 6ef3391b3..000000000 --- a/distributed_memory/18-imagens/mona_lisa.pgm +++ /dev/null @@ -1,364 +0,0 @@ -P2 -# mona_lisa.ascii.pgm -250 360 -255 - 104 103 105 99 92 92 94 100 100 94 85 84 89 103 103 95 100 100 92 90 91 100 90 90 89 84 89 89 93 93 88 92 92 83 82 81 80 80 73 73 76 77 77 77 82 83 97 97 92 83 83 86 97 97 95 83 81 81 79 81 85 84 86 90 95 89 85 83 82 82 87 91 93 88 83 83 86 90 101 93 91 91 92 96 106 106 102 96 95 92 83 83 83 86 85 87 88 87 89 90 86 86 89 89 92 100 95 92 92 92 99 101 102 103 103 103 86 84 87 90 90 89 83 83 88 92 92 92 93 90 90 84 85 94 100 94 91 85 84 83 83 87 83 83 83 92 92 87 85 89 89 87 84 84 87 87 81 80 80 81 81 78 78 79 80 81 87 88 88 86 86 90 86 86 89 89 79 73 73 89 89 79 72 72 74 76 77 74 73 73 74 77 77 77 77 79 80 80 81 80 77 76 76 77 80 80 80 81 78 78 74 74 74 74 76 82 82 80 80 82 88 88 87 86 79 79 79 76 73 72 73 71 71 70 71 72 73 73 71 72 76 81 81 75 75 72 70 71 71 72 - 109 103 105 100 96 92 93 94 88 86 88 84 85 96 99 95 96 102 97 92 96 100 90 88 86 83 87 90 94 91 85 83 85 85 88 85 83 86 80 79 79 85 85 82 85 83 85 90 87 83 84 89 93 89 85 82 81 80 79 84 84 86 91 93 97 91 88 88 85 88 88 88 93 90 86 88 87 89 101 93 92 93 94 99 102 98 96 96 95 88 86 94 104 97 86 84 87 88 93 97 86 89 94 95 98 106 101 95 95 95 102 103 101 101 102 103 85 85 86 90 88 88 87 90 90 90 85 85 90 89 88 87 86 97 100 95 86 85 87 87 87 86 85 88 87 87 87 84 83 83 88 83 79 81 85 85 81 80 81 81 81 79 79 80 82 83 84 88 88 87 93 94 91 86 88 83 78 74 73 76 81 81 77 74 77 79 79 75 74 75 75 77 77 77 77 79 77 84 86 82 77 76 77 78 81 84 81 81 79 76 76 77 75 74 78 84 81 82 83 85 87 84 82 80 75 74 73 72 71 71 72 70 71 71 69 70 70 71 71 72 74 76 75 72 71 69 68 69 70 71 - 109 105 99 98 98 102 105 93 88 86 86 89 93 100 102 98 98 102 102 96 100 100 93 90 88 83 87 90 94 94 88 80 80 85 92 87 83 88 89 85 84 87 88 86 88 85 83 85 85 84 84 85 87 84 82 82 88 87 83 88 87 90 98 99 98 90 91 91 90 91 94 90 88 94 93 91 92 92 102 101 99 100 93 93 97 95 95 95 100 97 95 99 109 105 89 90 87 89 94 97 94 94 101 102 106 106 96 92 102 106 105 104 103 103 103 99 89 88 87 90 90 91 93 90 89 89 86 89 92 92 89 96 93 97 101 100 92 90 90 91 94 94 94 87 83 83 84 85 84 84 88 81 79 78 79 80 79 78 80 81 81 80 81 84 84 85 87 87 87 90 91 94 87 86 87 81 78 76 76 76 80 81 79 77 76 77 77 74 74 76 76 77 79 77 77 78 77 83 87 81 77 77 77 80 82 84 81 80 79 76 76 78 77 76 82 84 81 84 94 92 83 81 81 75 74 74 71 70 70 69 66 65 68 70 69 69 70 69 70 71 74 73 73 71 69 67 66 70 70 72 - 106 110 104 99 103 112 112 97 91 92 90 97 97 105 105 101 100 102 102 93 96 100 92 91 93 88 89 90 88 88 87 80 80 84 93 91 84 85 92 95 91 89 94 94 100 91 86 87 85 87 84 85 87 88 85 84 91 97 89 87 86 88 95 97 94 90 94 92 90 95 98 97 92 98 96 96 106 102 103 106 106 105 96 93 96 100 100 92 99 109 102 98 109 103 92 94 89 89 94 97 93 93 99 99 105 97 91 93 105 113 113 104 107 107 108 102 95 93 94 89 89 92 100 89 89 100 103 107 105 104 104 112 112 103 98 96 97 97 92 95 96 95 94 88 85 86 86 87 87 87 88 82 79 78 78 78 78 78 80 80 82 84 85 91 90 90 89 87 87 87 87 87 86 85 85 81 78 77 81 80 80 80 80 77 75 74 74 74 77 79 77 77 80 81 81 82 83 86 89 85 81 80 80 84 87 85 80 81 81 79 76 76 78 76 81 84 81 84 94 87 80 78 77 74 78 76 73 74 69 68 67 65 69 70 70 70 71 69 69 70 75 75 75 73 69 69 66 70 69 69 - 113 113 112 103 105 109 107 91 90 90 94 97 95 102 105 98 98 101 102 94 100 100 90 90 96 95 100 97 89 87 88 84 88 87 93 92 84 84 87 94 95 91 93 100 100 97 90 89 84 83 87 87 91 94 94 87 90 97 91 90 87 86 86 90 93 95 102 102 96 99 99 95 96 99 96 98 106 103 105 106 105 102 97 92 92 100 96 92 98 109 106 99 104 103 98 100 93 90 93 93 93 95 93 99 103 91 91 100 103 108 117 114 115 108 108 99 94 98 100 89 90 103 112 98 101 111 120 126 122 122 126 129 129 111 97 96 99 102 101 99 99 99 102 99 94 97 93 91 90 90 90 84 80 79 80 79 78 79 82 82 84 84 83 90 91 90 87 84 84 83 87 85 84 88 87 80 77 78 83 84 81 84 80 80 78 76 77 77 77 80 80 79 81 89 91 90 93 93 94 87 83 83 84 88 94 97 86 84 84 84 79 81 88 82 81 84 83 82 81 80 79 78 76 74 78 77 75 75 70 68 70 70 72 71 70 71 71 70 70 71 75 75 75 74 70 70 70 71 69 67 - 121 121 119 107 103 99 95 90 90 91 93 94 92 93 98 100 98 102 108 106 106 100 92 95 100 102 102 100 91 87 87 91 91 86 90 90 84 84 85 91 95 89 89 100 99 97 88 84 83 83 84 88 96 99 92 88 89 93 89 91 90 87 91 100 99 103 108 112 105 93 96 98 103 100 96 96 102 98 98 99 99 102 100 93 92 94 92 93 98 102 103 106 108 105 101 100 97 96 99 101 100 99 98 101 102 102 98 99 103 104 111 120 120 109 108 101 99 109 106 95 98 110 117 112 117 123 129 138 141 138 137 139 132 113 101 101 106 111 110 111 116 114 110 99 97 102 99 92 91 97 100 87 81 81 85 82 79 81 84 84 86 83 82 87 91 93 87 84 83 85 89 85 87 92 87 80 77 77 80 80 82 84 80 82 82 81 82 81 79 81 88 83 83 90 97 98 96 97 90 86 89 84 86 94 97 97 88 84 84 84 82 88 88 84 81 88 88 81 79 78 78 78 77 76 77 78 73 70 70 68 69 71 75 72 72 73 74 70 71 71 69 71 74 74 73 74 73 71 70 67 - 114 117 112 105 105 95 92 93 94 94 89 89 94 98 96 98 96 101 109 107 105 96 92 97 101 99 100 97 94 86 84 85 87 83 82 88 87 85 87 90 90 89 89 97 95 90 88 87 87 86 91 95 105 105 99 100 94 89 89 88 86 86 98 102 99 106 112 110 102 94 99 105 109 98 92 93 100 101 98 98 99 102 103 100 95 92 95 101 102 103 104 107 108 102 95 96 97 99 101 102 99 102 103 106 107 113 108 108 115 113 112 117 120 108 107 105 104 115 118 113 113 117 123 122 125 132 137 140 142 142 139 134 129 119 114 118 123 120 112 123 139 130 123 110 107 110 109 95 92 96 100 88 83 84 87 85 84 84 83 83 86 83 82 86 90 93 90 84 81 84 91 91 91 94 90 82 77 80 82 81 83 90 91 87 87 87 89 87 82 83 88 89 87 90 95 97 101 101 93 90 88 88 93 98 98 94 89 88 87 83 83 87 84 79 80 85 84 82 83 79 78 79 79 78 78 78 75 71 69 68 70 72 74 75 73 73 74 70 69 71 69 72 74 73 73 76 74 73 72 68 - 101 107 103 103 105 96 92 96 97 97 89 89 95 98 94 93 91 102 109 101 96 96 96 100 96 97 99 95 94 88 84 84 82 79 76 84 89 86 89 93 91 94 89 91 94 92 94 97 88 86 97 101 106 104 102 102 96 94 91 90 85 85 96 102 98 103 109 99 96 100 102 105 109 99 92 96 105 106 106 105 102 101 103 102 98 94 102 109 108 110 111 110 106 98 93 93 99 103 104 104 104 105 107 108 113 120 120 120 117 118 118 117 113 100 105 106 103 104 117 121 123 127 127 126 122 132 138 141 135 134 132 126 126 125 125 127 129 129 123 132 139 129 125 116 111 110 106 98 96 98 97 89 83 84 87 87 85 84 85 87 84 82 83 91 90 92 93 83 81 83 87 87 91 97 94 86 84 84 84 84 90 103 103 89 86 88 93 92 85 83 86 90 90 87 90 92 100 101 94 88 85 90 100 95 92 91 88 87 85 83 85 82 80 79 81 82 79 80 84 81 80 78 77 77 77 78 74 71 70 70 73 73 75 75 73 73 75 70 68 70 73 75 74 70 71 79 79 73 73 71 - 94 108 110 104 103 101 97 99 100 101 100 85 86 90 85 87 92 101 100 93 92 100 100 93 90 97 96 92 94 91 89 84 78 76 76 86 89 83 84 90 93 94 90 93 97 100 100 98 91 86 95 102 107 107 107 105 101 99 98 94 90 88 96 103 93 96 104 95 95 96 97 107 109 103 99 102 106 108 109 110 108 105 104 107 105 103 108 112 111 114 114 108 104 101 96 96 99 105 108 110 108 111 113 111 116 121 121 118 118 118 126 120 106 100 105 106 103 108 117 120 121 117 113 110 115 128 134 134 126 118 121 119 115 124 127 122 122 122 128 132 127 122 127 116 111 108 104 104 105 102 105 95 85 83 85 87 90 88 91 90 86 83 86 97 97 96 95 84 82 84 83 83 90 95 97 90 83 82 82 82 85 94 98 91 86 87 93 91 88 87 87 90 90 88 87 86 91 95 90 86 85 92 101 93 92 93 91 86 85 86 85 80 81 81 82 82 77 76 82 82 81 78 73 74 76 76 72 71 71 72 74 73 74 74 75 75 74 68 68 68 73 75 73 71 74 77 78 77 73 72 - 94 112 123 106 99 98 95 96 96 101 98 86 84 87 83 84 90 100 96 89 89 100 96 92 90 94 96 89 88 88 91 80 76 77 80 86 84 82 83 88 91 91 90 97 98 96 95 95 94 89 94 109 108 111 110 107 105 102 96 91 94 91 94 103 92 90 97 96 101 97 102 109 108 104 104 105 104 104 104 111 114 113 111 114 115 111 111 113 111 114 112 107 101 102 103 102 102 104 111 113 114 118 118 112 115 130 127 124 125 126 124 119 116 107 101 104 109 110 109 112 115 116 112 110 110 128 133 128 118 112 112 113 113 119 123 118 116 119 125 126 122 125 128 120 114 111 111 116 110 107 106 101 94 90 89 88 91 92 98 97 93 91 91 105 105 101 91 80 80 84 81 80 83 90 93 86 80 81 82 84 87 88 88 90 87 86 90 88 88 92 90 86 85 88 91 86 85 86 88 85 90 103 105 101 105 104 93 91 97 93 85 82 80 80 85 85 77 73 78 86 86 78 73 73 78 79 75 74 75 73 73 74 75 73 73 75 74 70 70 69 70 72 74 74 77 78 78 77 73 69 - 100 116 123 107 99 100 95 101 96 96 92 88 84 84 83 85 89 100 100 89 95 103 96 94 90 92 97 97 85 80 85 80 77 81 86 86 80 82 90 97 94 94 90 93 92 92 97 99 99 99 104 113 113 111 108 107 108 106 96 88 87 88 88 95 92 90 93 97 101 96 99 103 105 105 108 110 107 104 107 113 120 117 116 123 124 117 117 116 109 107 109 104 101 105 108 108 105 108 114 117 116 116 117 113 122 136 136 135 135 124 119 122 124 116 107 101 110 109 110 119 122 125 132 113 119 141 144 139 128 119 124 127 127 123 115 115 118 120 126 126 125 128 126 121 113 114 120 118 113 107 106 95 98 105 103 92 88 97 105 98 96 100 99 109 109 102 89 79 79 82 81 80 80 87 91 84 81 80 82 100 100 83 83 85 85 86 86 86 89 92 90 87 84 89 91 87 84 85 87 82 83 104 105 103 105 105 91 90 97 91 90 85 81 77 80 84 78 73 77 84 82 78 77 77 81 81 79 81 79 75 73 73 75 74 72 73 74 75 75 70 69 72 75 76 78 79 78 75 72 69 - 104 115 113 105 99 100 97 104 104 96 93 92 87 85 87 88 91 95 96 92 96 103 91 91 89 91 97 97 87 80 80 81 78 79 84 86 80 83 97 94 92 94 90 94 96 96 99 95 96 102 112 117 114 114 109 113 115 110 101 92 88 91 93 89 94 94 97 94 89 92 96 101 103 104 109 110 111 111 112 114 120 116 115 127 127 122 116 117 113 107 104 101 101 104 110 110 110 114 121 126 122 117 114 117 128 131 131 134 134 125 125 125 125 119 111 107 113 121 129 132 133 134 138 132 132 152 148 142 139 130 128 128 128 127 119 118 118 118 122 123 123 125 125 118 115 121 123 117 114 114 110 98 101 110 112 104 95 104 112 100 97 100 99 102 107 97 90 83 81 82 83 84 83 85 88 84 81 80 83 100 98 79 79 83 85 89 89 85 83 83 87 88 83 84 84 83 81 83 84 82 82 93 101 100 99 97 95 96 97 88 87 89 82 77 79 82 79 76 78 80 79 79 78 76 77 78 79 81 78 77 75 76 78 77 73 72 73 74 74 72 73 75 77 79 80 82 78 75 73 73 - 103 107 108 107 103 101 93 92 96 94 90 90 90 88 90 95 97 92 94 96 99 99 90 90 87 87 86 88 87 80 80 81 79 77 77 80 80 82 87 85 94 95 92 94 101 103 97 91 95 99 113 117 116 118 116 114 116 112 105 98 89 91 93 89 94 90 89 93 89 91 93 96 103 103 104 105 105 104 104 110 111 111 112 120 124 121 119 117 118 113 101 104 109 108 107 108 110 116 126 130 128 119 115 119 126 127 128 133 135 133 132 131 133 126 118 114 117 125 133 135 134 134 138 137 148 158 146 140 141 131 127 127 127 121 124 128 125 119 119 122 125 122 121 117 120 123 122 119 119 120 116 111 111 115 120 115 108 113 121 115 101 97 95 96 96 92 90 85 84 84 86 90 87 87 81 80 81 81 81 84 84 81 82 84 83 85 85 83 79 79 80 81 80 79 81 80 80 81 86 86 82 85 90 86 83 88 95 99 98 88 87 89 85 79 81 85 80 79 81 80 79 79 79 76 77 77 77 78 77 78 81 80 79 79 76 74 73 74 73 70 74 79 79 79 78 81 82 79 77 76 - 103 107 104 107 106 102 97 91 90 90 89 89 91 90 91 93 97 93 97 97 99 97 92 94 88 86 87 91 85 81 80 80 80 79 80 80 81 80 83 83 90 95 93 92 93 103 96 91 99 99 108 114 111 116 118 116 113 112 99 95 86 86 92 96 96 95 89 92 94 93 96 99 102 101 102 99 108 107 104 105 110 114 114 114 113 114 117 121 123 120 109 113 115 111 110 108 108 112 121 131 131 125 122 122 127 131 134 138 139 137 141 137 136 131 121 115 118 126 134 141 141 138 138 139 152 158 143 148 148 142 143 139 131 129 133 138 138 129 124 123 126 122 119 119 119 122 119 126 132 122 117 118 113 117 120 114 111 116 123 118 108 98 95 95 89 88 89 85 84 84 89 100 95 87 77 75 78 79 78 77 78 78 80 82 80 84 88 84 81 81 79 79 81 79 80 78 79 80 82 82 79 81 83 83 83 87 94 97 97 87 86 89 83 81 88 88 80 80 81 79 77 78 78 76 78 78 77 77 77 81 84 80 82 80 77 76 74 72 70 70 73 77 77 76 76 78 79 79 76 73 - 109 107 104 105 108 104 105 105 98 95 94 91 87 86 93 95 96 97 100 96 93 94 93 94 91 87 88 91 85 81 81 80 80 81 84 84 81 83 89 90 89 89 93 94 93 103 97 95 101 101 103 107 107 108 115 113 106 104 98 95 89 86 100 106 106 103 97 97 101 102 103 106 101 101 102 100 115 115 107 104 110 120 121 116 112 112 114 123 119 112 116 123 120 114 114 111 109 113 118 126 131 128 127 132 138 138 131 133 137 143 148 139 130 130 122 118 129 131 130 135 141 135 133 130 130 130 126 136 146 145 143 141 126 130 133 133 138 136 131 126 124 127 132 131 127 119 119 136 136 122 115 121 120 114 107 100 101 109 123 120 108 96 91 94 88 87 85 85 86 87 91 100 100 87 80 75 78 77 77 77 76 77 77 80 81 88 88 86 80 79 80 82 81 81 80 79 77 77 77 76 76 81 84 84 83 87 88 88 91 87 86 87 84 80 84 84 79 76 81 78 76 76 74 75 78 80 79 78 80 84 82 82 82 79 77 74 75 74 72 71 72 74 77 76 77 78 75 73 74 69 - 106 110 109 106 108 105 107 109 108 106 105 95 86 86 97 100 101 103 98 92 93 93 93 94 94 90 88 90 87 83 81 81 84 87 82 83 84 89 92 95 94 93 91 96 103 97 97 106 106 104 108 106 102 99 107 107 103 102 98 95 93 95 102 106 108 103 98 101 102 95 105 106 103 101 103 108 115 115 108 109 126 129 125 124 118 113 117 123 119 116 123 130 125 121 121 117 111 113 117 126 132 127 127 139 144 141 133 136 145 147 148 140 138 132 128 130 136 136 127 124 118 110 112 107 93 89 93 100 109 110 107 105 109 116 116 110 117 123 126 123 127 136 145 146 143 124 119 128 129 123 115 121 121 113 100 98 101 108 115 111 97 86 86 89 89 85 85 90 90 93 92 97 96 91 83 75 77 77 81 81 75 74 76 80 81 85 85 83 81 82 82 84 83 86 86 84 79 77 77 79 77 83 85 85 85 89 87 88 94 91 88 85 84 81 80 84 79 76 81 81 77 78 74 76 82 85 81 81 83 85 83 84 81 77 76 75 79 78 73 72 72 75 76 77 79 79 76 73 72 69 - 106 120 127 123 117 108 107 111 111 110 106 100 92 91 99 102 102 105 104 92 91 93 93 94 94 90 89 91 93 86 85 85 86 89 86 88 87 83 87 91 95 90 88 93 101 96 92 100 105 108 106 97 93 96 102 102 96 98 103 103 100 100 103 102 103 108 106 103 100 93 93 95 99 103 109 111 113 112 107 116 132 132 122 115 116 120 120 116 118 118 127 130 120 115 120 120 114 111 114 126 132 127 128 140 148 146 139 148 148 146 146 148 143 135 126 118 118 110 92 79 71 66 67 64 57 53 54 55 56 56 58 62 68 72 73 73 81 92 100 104 112 126 138 146 138 126 125 128 124 124 125 122 121 115 100 98 111 114 111 105 97 95 95 96 98 98 91 90 90 95 92 93 96 95 89 77 79 78 78 79 77 76 75 81 84 85 85 83 84 85 83 82 84 84 87 87 85 81 88 92 84 85 95 88 85 88 91 94 94 91 89 85 84 81 80 83 80 79 80 80 80 78 76 77 83 85 84 87 90 87 89 89 84 77 76 77 82 81 76 74 74 78 81 78 79 79 78 78 74 71 - 123 124 127 123 113 108 110 108 108 107 108 102 95 93 96 99 98 102 99 89 86 91 89 88 88 89 93 97 96 94 89 88 89 94 93 90 83 83 84 84 87 84 83 86 85 86 91 93 99 101 98 93 96 103 95 92 92 98 101 99 98 101 99 99 99 109 109 106 102 95 94 91 91 103 106 107 108 104 101 108 117 116 114 112 111 114 114 114 114 110 116 116 112 109 117 118 112 109 113 121 125 119 133 144 150 149 145 147 147 140 138 138 126 106 83 67 57 48 37 31 23 23 25 27 22 22 22 23 21 21 21 21 21 21 22 31 39 50 56 64 74 84 95 105 111 127 128 128 124 131 135 127 122 117 109 115 121 111 101 101 109 106 106 105 102 102 97 93 96 106 101 102 96 93 91 81 81 76 76 79 79 77 75 81 81 84 84 83 84 85 83 80 80 80 82 84 82 84 92 91 83 88 95 87 80 83 94 93 86 79 80 85 87 85 77 76 80 85 82 81 83 79 77 76 80 80 84 92 95 90 90 88 84 81 80 80 84 82 75 75 77 82 82 76 77 78 78 78 75 72 - 120 117 117 120 107 106 111 111 111 107 108 104 101 98 101 105 101 98 100 91 86 90 87 89 90 93 97 109 109 97 91 93 93 95 94 87 87 87 84 84 84 83 84 87 84 85 93 96 103 103 99 98 102 105 102 98 99 106 102 98 98 105 106 106 102 103 101 108 105 95 100 97 96 102 99 103 109 104 101 101 108 111 113 114 113 109 109 113 113 110 113 114 111 109 123 123 111 109 113 115 118 127 138 148 150 147 148 148 142 129 105 82 67 45 33 21 20 21 21 22 23 23 24 26 26 23 23 23 23 23 22 21 18 18 18 18 21 18 20 22 33 44 58 67 80 112 123 126 129 142 142 130 128 125 116 124 124 114 108 110 112 112 110 108 101 101 102 97 101 106 106 108 107 83 75 77 81 80 77 80 78 76 75 80 80 80 83 89 91 89 83 81 82 84 81 79 79 83 92 90 83 90 94 90 80 86 94 91 82 79 82 87 85 82 76 76 81 82 85 85 81 78 78 80 83 87 87 90 95 98 86 85 87 87 84 81 84 81 75 74 78 81 79 76 74 76 78 79 77 76 - 116 113 108 107 104 105 111 111 111 107 109 104 103 107 111 113 107 101 103 94 86 90 90 94 97 95 98 109 109 98 92 93 93 96 93 88 88 87 84 87 85 83 87 85 85 87 91 93 100 101 109 109 103 99 109 109 106 106 103 99 101 105 107 108 101 98 95 106 106 99 100 99 98 107 101 99 109 108 108 104 111 116 117 117 117 116 117 114 117 115 110 117 114 114 120 112 113 113 111 116 126 138 141 144 145 145 138 132 104 75 61 39 23 20 21 21 20 21 22 24 23 22 23 24 24 22 22 23 22 23 21 20 17 16 17 20 18 17 16 17 18 18 21 28 44 65 81 113 129 138 141 132 131 131 125 122 119 121 114 111 111 111 112 110 104 105 104 97 97 103 102 105 104 85 75 76 81 82 81 82 80 79 80 88 84 82 86 94 90 89 87 85 84 81 78 77 81 84 92 84 82 90 94 90 88 91 94 93 87 83 87 90 85 83 82 81 79 81 84 82 77 77 80 84 89 93 91 89 94 98 93 88 87 85 88 83 84 81 76 76 78 78 77 77 74 75 81 84 80 79 - 112 105 101 97 106 110 108 108 110 107 110 106 104 113 118 120 114 104 102 96 89 91 95 92 97 100 98 105 104 99 96 96 95 96 94 88 86 85 84 87 85 87 88 85 90 91 91 92 102 99 108 109 100 96 102 106 105 99 99 101 99 101 103 108 107 99 93 106 106 99 103 97 97 107 102 100 112 111 112 113 116 118 114 116 117 120 120 117 117 113 110 116 117 115 113 111 111 111 111 119 133 139 141 143 132 116 90 69 45 29 25 23 21 20 21 21 20 21 23 24 22 22 22 22 21 20 20 21 20 21 21 21 17 17 19 20 20 18 16 15 15 15 16 18 20 18 27 59 82 115 123 121 128 131 128 126 127 128 119 110 104 104 107 106 102 95 92 95 95 95 93 93 100 90 87 82 81 84 84 82 82 83 85 94 94 90 90 94 96 97 91 91 88 82 76 76 82 83 82 81 80 92 90 87 94 96 100 100 94 94 91 91 94 94 91 88 80 80 81 82 81 80 81 83 90 93 98 98 92 95 99 98 86 83 88 88 85 83 79 76 78 78 77 77 75 77 84 87 82 80 - 106 98 93 94 106 111 110 107 105 107 115 113 109 117 123 121 117 107 102 100 96 98 98 88 92 102 104 109 103 95 95 102 95 96 93 90 87 87 84 87 86 91 88 85 91 93 94 93 106 106 97 96 92 92 94 99 107 105 101 102 98 96 98 100 100 96 93 99 105 99 104 104 105 106 98 107 116 110 110 113 114 123 118 106 109 114 116 115 115 114 112 116 111 104 107 113 113 112 114 116 133 133 129 116 89 70 48 25 20 21 23 23 23 21 22 21 20 21 22 22 21 21 21 21 21 20 19 19 17 16 17 17 17 18 20 21 21 20 20 19 16 15 14 15 16 16 18 21 31 59 82 104 116 127 130 127 136 142 138 121 107 101 99 98 97 90 91 98 103 102 93 93 89 90 89 85 80 80 80 82 85 88 86 88 95 95 89 86 101 101 95 94 97 97 87 83 87 85 84 80 82 89 85 85 94 97 98 98 96 94 94 91 94 94 89 89 87 83 84 85 85 82 81 82 87 91 94 93 90 96 105 103 89 83 87 86 87 91 84 81 81 78 77 75 77 84 91 91 85 78 - 104 102 97 99 109 111 108 111 101 101 119 120 114 123 120 109 110 104 102 102 96 99 94 88 95 103 106 109 109 95 99 109 105 102 93 89 86 86 86 91 91 88 85 91 97 96 97 92 96 103 97 96 92 92 101 107 113 110 101 102 97 98 97 91 91 91 96 102 105 108 108 112 113 104 98 109 116 111 112 116 116 126 121 106 106 114 119 124 123 119 122 123 112 100 100 113 118 116 120 124 127 123 113 81 58 32 21 20 20 22 25 27 27 26 27 23 20 21 21 21 20 18 21 21 20 19 19 19 16 14 15 16 17 19 19 18 20 21 21 20 18 17 16 16 16 15 14 16 20 20 35 67 85 109 126 132 141 142 141 128 116 111 108 98 92 93 100 105 112 110 103 97 89 90 90 85 87 83 82 85 92 91 85 86 93 94 86 86 90 100 100 96 96 97 94 94 93 90 88 84 86 93 89 96 99 99 109 104 95 89 89 89 89 89 93 100 93 86 83 84 84 87 82 83 90 94 92 93 91 107 107 100 94 88 87 87 93 95 88 83 84 81 77 76 81 85 91 90 83 78 - 107 110 107 107 110 109 106 115 108 104 120 114 114 120 117 113 108 103 98 100 96 97 91 93 97 97 103 105 109 101 103 109 107 103 95 89 90 88 90 91 91 86 85 91 104 102 96 93 92 96 96 99 95 92 102 112 114 108 104 101 102 106 105 96 97 97 105 106 104 104 112 117 116 99 98 106 111 112 117 124 125 126 116 110 113 120 126 128 128 125 132 132 124 114 112 120 125 128 129 114 109 101 76 54 29 21 21 21 20 21 23 24 25 27 30 26 21 21 21 21 20 18 18 20 20 18 19 19 16 16 20 19 16 17 20 19 18 20 20 20 19 20 20 17 16 14 14 15 20 18 20 20 41 73 106 126 136 139 134 128 127 117 108 99 101 101 104 105 110 112 110 104 99 94 88 87 92 91 86 91 94 90 85 91 90 90 94 91 89 97 103 98 92 92 92 92 95 94 90 89 90 99 104 115 111 111 118 112 108 99 86 90 93 97 103 103 94 88 89 90 89 90 84 83 100 101 95 96 98 105 105 96 89 88 86 88 95 95 87 84 89 85 81 80 81 83 87 87 82 78 - 112 120 113 106 107 104 100 115 114 111 114 114 114 118 117 117 108 101 96 96 93 95 89 89 91 92 99 99 99 102 108 110 107 105 96 93 95 89 89 91 91 89 85 91 106 105 97 98 96 96 96 99 99 94 99 111 117 113 105 104 104 109 109 102 105 102 105 106 102 95 105 115 109 101 98 101 108 114 121 125 122 122 120 120 117 123 125 125 128 127 132 132 131 128 128 129 125 130 126 99 81 69 42 25 22 21 22 22 21 21 22 23 25 28 30 24 21 21 21 21 21 20 18 18 20 20 18 16 17 17 20 16 15 16 20 20 18 18 18 19 18 20 20 18 16 15 14 15 16 17 17 19 23 33 67 104 136 141 136 133 131 118 107 106 111 115 110 108 113 110 112 112 105 97 90 87 90 95 96 96 96 89 86 94 96 96 100 96 96 102 106 103 97 95 97 96 101 103 97 96 96 108 116 117 113 118 117 114 113 105 86 86 89 95 102 102 93 90 100 107 100 97 91 89 98 102 102 103 103 102 100 95 85 83 85 88 95 93 82 80 89 90 85 84 83 82 84 85 81 79 - 120 118 113 109 104 99 99 107 114 115 116 116 114 118 117 113 107 102 98 93 95 95 88 86 93 93 95 98 98 103 111 111 107 102 99 96 97 93 95 97 98 94 92 101 115 111 101 96 96 93 92 97 102 105 103 111 120 120 104 108 108 105 101 98 105 102 98 102 98 95 98 99 102 97 94 105 114 119 125 122 119 122 125 124 119 122 125 125 128 125 131 134 133 129 131 132 132 126 103 74 55 29 20 22 22 22 22 23 22 22 26 25 28 31 30 23 21 21 21 21 21 20 17 16 16 19 16 16 19 19 16 15 14 15 18 20 17 17 17 17 17 17 17 17 16 15 15 15 16 16 19 19 19 20 21 63 106 135 142 142 134 126 119 116 123 129 117 112 117 113 111 108 103 105 98 88 90 97 106 103 96 95 92 103 102 102 105 101 101 105 107 108 108 107 106 104 108 106 97 102 102 106 117 117 119 122 116 111 108 102 92 89 86 89 102 105 96 92 99 107 102 96 94 94 96 96 99 96 99 100 95 94 86 83 83 90 93 91 84 80 92 94 90 90 87 87 84 85 81 79 - 124 118 113 103 99 105 103 104 104 111 115 116 114 114 113 111 104 104 112 102 98 96 88 86 94 99 102 103 101 101 112 115 106 99 99 97 93 93 99 99 95 95 99 107 121 118 107 98 95 91 91 96 101 105 100 107 117 114 109 112 112 106 95 95 99 99 93 99 102 98 99 96 96 95 94 112 123 128 130 125 119 126 128 122 119 122 125 121 122 125 127 131 130 128 127 131 130 102 74 51 27 20 21 21 22 22 23 22 21 22 24 28 32 31 29 23 21 21 20 18 20 19 17 16 15 15 16 17 18 17 15 14 14 15 17 18 18 17 17 19 17 16 17 17 16 16 19 19 16 16 16 17 18 19 19 25 50 88 136 142 137 133 135 134 139 138 124 116 119 114 104 100 100 112 110 102 97 99 106 102 101 98 89 100 103 101 105 102 106 112 110 110 115 115 111 106 112 104 98 101 107 110 116 119 129 132 124 112 107 107 105 97 86 89 105 109 102 93 99 108 102 95 94 92 97 100 93 88 89 97 96 97 91 86 83 90 91 93 93 88 93 95 94 95 91 89 86 84 80 78 - 122 124 118 104 101 106 105 101 103 109 110 111 114 109 111 112 111 112 112 107 108 107 96 92 95 102 109 112 112 106 110 115 111 108 106 102 99 95 96 99 96 103 107 111 121 114 109 108 110 105 105 109 104 104 100 111 120 114 111 107 101 102 97 95 98 100 93 96 102 99 99 99 101 98 103 115 123 131 130 116 116 127 125 124 121 121 128 125 119 128 134 135 134 133 129 126 105 73 53 31 23 22 25 22 21 21 22 21 20 21 23 29 39 33 28 24 21 21 18 19 19 19 19 19 16 16 19 20 19 17 16 15 15 16 17 18 19 19 20 19 19 16 16 16 16 16 16 17 16 16 16 16 17 19 16 17 21 37 81 126 140 140 137 140 143 142 141 132 125 117 111 107 104 108 112 104 99 101 102 102 105 98 89 95 98 102 105 102 104 111 115 115 115 115 115 112 109 104 99 105 113 116 126 128 131 132 128 120 114 108 105 99 88 92 105 109 103 94 103 110 101 95 94 92 96 100 94 86 86 93 93 96 100 91 85 91 93 96 93 95 106 97 93 96 100 94 91 87 80 76 - 119 121 114 108 108 108 108 101 98 102 103 108 112 107 107 108 112 113 113 112 108 108 103 99 95 95 115 118 115 110 111 116 115 112 109 103 103 99 95 102 101 105 109 117 124 120 116 114 114 113 108 108 110 108 108 117 123 120 105 97 98 98 98 102 102 99 93 105 105 95 96 98 103 101 104 117 123 129 130 116 120 126 118 118 125 126 130 123 119 130 141 142 139 131 129 112 74 45 29 29 25 22 24 25 22 21 21 21 20 20 22 31 45 33 27 23 23 21 20 19 19 20 21 21 19 16 17 20 19 19 18 16 17 20 20 19 19 19 20 19 19 17 16 16 16 16 16 17 19 16 16 16 17 17 17 16 17 21 35 81 140 146 144 142 141 143 144 136 132 126 119 120 112 109 111 104 107 108 101 102 105 105 102 101 99 105 99 98 101 104 109 112 107 104 106 104 100 105 101 106 117 125 135 131 124 131 129 125 113 107 105 100 88 92 104 99 99 101 110 112 98 93 96 98 95 93 94 87 88 95 90 89 101 97 93 97 97 97 96 98 107 102 97 93 100 96 97 97 83 76 - 121 110 109 109 114 114 111 103 98 98 105 111 114 107 107 104 110 110 113 113 108 108 107 102 98 97 113 118 114 113 113 114 115 110 98 91 92 97 99 108 108 112 113 118 124 124 120 112 111 114 117 113 114 117 114 116 123 114 100 97 101 103 104 106 103 98 95 102 105 95 97 102 106 107 109 120 121 119 124 122 121 121 118 118 125 130 126 122 124 136 141 142 129 124 116 77 47 21 21 29 28 23 22 23 24 23 20 20 21 20 22 32 45 31 24 22 21 20 20 20 20 20 20 20 17 16 17 20 18 19 19 17 17 20 19 18 19 18 18 19 17 16 15 16 16 17 17 17 19 17 16 16 17 17 17 17 17 18 18 45 104 146 146 144 141 142 144 142 141 140 127 128 129 120 110 104 114 114 104 103 104 104 108 108 99 102 99 98 101 98 98 96 97 95 95 96 103 107 108 112 119 129 135 126 119 126 128 127 114 107 102 100 89 89 99 99 105 109 113 113 105 93 93 98 99 97 92 87 86 95 93 89 97 102 102 101 102 103 95 96 107 105 102 99 101 96 93 92 82 78 - 120 110 116 118 123 129 117 107 99 105 108 110 117 109 104 109 118 112 110 113 111 108 107 108 107 108 117 116 114 114 113 113 115 106 89 89 89 95 106 115 115 114 117 119 117 119 120 114 112 118 129 129 124 120 120 120 123 117 104 103 109 109 110 110 106 99 96 99 105 99 96 103 110 113 116 121 116 114 117 117 118 119 120 122 122 129 125 131 135 141 141 137 125 118 82 48 22 20 22 23 26 22 21 21 22 23 20 21 21 20 25 32 37 24 22 21 20 18 18 19 20 18 19 17 17 16 16 16 17 17 19 16 16 16 16 17 16 17 19 19 17 16 16 16 16 19 19 16 16 16 16 17 18 19 17 17 17 19 18 25 52 112 143 145 143 143 147 145 144 144 140 133 129 127 118 111 118 120 110 107 105 107 107 106 104 108 109 108 103 102 97 89 89 94 90 92 112 111 114 121 126 128 124 119 122 125 128 124 108 99 93 95 93 89 101 105 101 107 111 111 101 99 105 102 106 106 96 88 85 88 100 102 101 102 102 102 106 106 98 94 106 113 112 104 100 91 89 89 79 78 - 120 119 120 119 124 130 115 112 111 106 114 120 124 120 110 117 130 117 112 114 117 114 108 112 115 116 117 115 118 120 118 111 109 101 91 94 94 95 104 113 116 115 120 120 115 115 117 114 117 126 135 131 122 119 118 121 123 123 109 104 107 107 111 111 107 97 96 99 102 96 93 101 116 121 117 120 115 115 116 113 113 116 119 126 124 128 127 138 141 139 136 137 136 110 60 22 20 21 22 22 21 21 21 20 21 21 20 21 20 21 30 37 36 22 21 21 20 18 18 18 17 17 17 17 17 17 17 17 17 18 17 16 15 15 15 16 16 16 17 16 16 16 17 16 17 17 17 17 16 16 16 17 19 19 17 17 17 18 19 17 24 56 113 144 143 146 156 148 147 145 142 136 129 126 111 109 120 120 113 112 107 105 103 103 110 113 107 107 105 106 99 90 89 90 86 86 103 114 117 127 128 128 122 118 119 123 123 110 95 95 93 96 100 94 112 123 114 107 107 104 99 99 106 103 106 105 97 91 85 89 100 106 101 99 97 103 105 106 99 94 108 115 115 104 97 96 91 87 79 78 - 121 125 126 127 132 138 125 122 123 121 129 126 121 121 125 128 130 121 118 120 119 117 109 111 114 115 119 121 121 118 114 107 100 89 86 91 94 95 104 117 121 121 121 121 118 117 120 116 117 127 135 130 122 119 118 122 128 122 115 113 109 113 116 113 108 101 103 98 102 98 94 108 126 124 116 119 119 122 126 122 119 122 125 133 131 128 130 141 140 136 137 139 124 74 35 21 20 20 20 20 21 21 20 20 20 20 20 20 21 29 43 53 47 33 23 24 21 21 20 20 18 20 18 19 18 20 20 19 18 18 19 17 15 14 14 15 15 16 16 15 15 16 17 19 19 17 17 19 17 16 16 16 16 16 16 17 17 17 16 16 18 20 62 126 142 146 157 157 156 145 141 141 140 123 100 98 111 117 111 107 103 104 108 104 114 114 109 110 106 107 105 98 96 95 94 89 104 114 114 115 119 127 122 115 117 126 120 103 95 96 97 100 94 97 115 123 123 108 105 102 103 109 109 104 103 102 103 92 85 89 106 105 97 96 98 102 99 98 100 94 107 111 108 106 99 105 97 88 83 79 - 121 126 133 134 137 139 133 131 134 130 135 134 132 132 136 134 131 125 118 118 122 127 119 110 112 123 124 120 117 111 104 101 93 86 86 89 92 97 104 114 120 121 121 122 123 123 124 116 115 115 118 122 122 122 125 125 128 132 126 121 120 123 118 118 113 108 106 111 109 101 101 118 126 122 116 122 129 131 129 128 129 132 131 139 141 136 137 145 143 137 144 142 87 42 21 21 21 18 18 19 21 21 20 20 21 24 29 37 46 53 63 70 70 66 63 63 55 46 42 40 39 36 33 26 23 22 21 21 21 21 20 19 17 16 15 15 15 15 15 15 15 16 17 20 20 18 17 19 17 16 15 15 15 15 16 17 19 16 16 16 19 20 21 71 133 146 156 157 149 142 140 141 136 119 100 98 111 117 110 100 99 104 110 109 117 123 117 117 113 111 111 112 104 102 106 109 124 114 109 114 122 126 118 114 115 126 123 104 98 100 102 106 104 107 110 115 111 107 105 101 104 112 110 104 103 102 103 97 85 88 103 100 99 97 97 105 102 98 97 104 112 108 101 104 107 104 102 94 87 89 - 126 127 134 142 140 133 137 142 145 134 133 135 139 139 138 127 132 130 119 121 124 129 130 118 116 124 123 113 112 115 108 103 96 95 97 97 103 108 108 114 117 122 125 124 119 121 130 123 121 119 121 127 127 124 127 127 130 136 132 122 122 125 122 124 120 114 111 117 112 104 109 123 126 118 121 126 135 135 130 131 134 141 140 146 150 146 147 152 145 143 145 121 64 25 20 20 20 19 19 20 20 21 27 36 42 53 63 69 75 80 83 89 102 106 98 92 80 73 69 64 65 63 56 49 44 39 32 29 23 21 21 21 18 18 18 17 16 16 16 16 15 16 17 18 20 19 18 18 17 16 15 14 14 14 15 19 19 17 17 19 18 18 21 35 92 146 157 152 143 140 140 136 133 130 117 113 121 119 111 106 104 112 111 114 117 124 119 116 115 116 120 121 106 106 118 126 126 112 109 119 126 126 122 119 116 120 120 100 98 101 101 108 111 111 109 108 100 98 98 96 99 109 112 112 106 104 106 97 92 104 96 91 100 101 104 107 104 106 104 113 121 114 101 103 112 111 107 96 88 94 - 125 124 132 142 140 136 151 154 154 143 133 140 139 138 133 115 125 128 129 133 132 136 136 124 125 125 125 123 117 120 111 109 102 101 102 105 108 107 107 116 123 125 125 123 118 121 130 130 128 131 133 141 138 133 134 134 135 136 132 122 122 125 125 122 123 116 116 117 113 110 114 124 125 119 124 130 134 134 132 134 137 143 148 151 151 147 150 154 147 145 133 75 33 21 21 20 20 20 22 29 37 49 63 71 75 82 100 107 120 135 127 126 142 145 125 109 105 104 92 80 79 75 70 67 65 63 52 47 40 33 32 29 23 23 21 20 18 18 18 17 16 16 19 18 19 19 20 20 18 16 16 15 14 14 15 17 19 17 19 19 18 19 18 18 49 127 157 148 139 136 136 134 134 133 129 125 126 125 121 114 113 113 114 120 116 125 128 122 122 127 122 119 115 122 123 125 121 113 117 122 130 132 128 124 121 121 117 104 104 102 101 107 111 115 113 111 107 99 97 93 92 99 112 120 114 111 106 92 102 105 97 91 102 101 113 111 109 115 106 116 124 119 113 112 120 126 115 99 92 94 - 123 122 132 137 139 146 154 153 154 149 142 149 146 133 126 115 119 123 128 133 136 137 136 131 132 127 122 122 122 121 116 111 103 107 110 106 108 109 111 117 122 125 119 119 118 119 123 126 128 130 135 141 141 141 141 135 135 133 127 123 122 122 118 119 123 119 117 116 110 110 117 121 122 128 134 133 133 134 134 133 140 147 150 151 151 149 145 154 152 138 97 49 23 21 20 20 21 35 48 61 69 77 93 112 124 135 142 149 154 157 157 149 151 156 149 130 121 121 103 92 88 81 81 79 75 71 68 67 58 44 42 38 32 29 28 27 23 21 20 18 18 18 20 19 19 19 20 20 18 18 19 16 15 15 15 19 17 17 18 19 19 19 19 20 33 71 147 154 145 141 137 133 133 134 125 121 129 129 128 124 118 111 112 122 128 131 131 131 133 131 119 122 133 141 133 121 125 119 125 123 126 132 129 121 116 124 123 113 112 104 105 108 115 117 112 118 111 109 104 89 89 94 110 117 120 115 103 99 105 98 99 105 102 104 115 115 114 115 104 109 132 135 129 119 122 126 117 105 97 95 - 124 122 128 132 134 147 154 148 149 151 150 148 141 131 128 119 119 124 125 126 131 135 130 130 134 138 135 124 121 119 117 113 111 115 115 111 111 117 120 119 119 125 119 121 122 119 122 128 126 124 132 137 134 137 137 131 130 127 124 126 122 121 117 117 121 125 124 120 112 110 114 117 122 135 142 142 140 139 141 141 145 151 149 143 143 146 145 148 141 116 70 34 23 21 20 27 42 56 67 78 98 112 130 152 152 152 151 151 156 159 173 156 142 142 158 146 129 124 110 104 89 82 82 80 76 73 72 71 61 47 46 42 35 32 31 31 28 24 24 21 20 20 18 19 19 19 20 20 19 18 19 18 17 16 16 19 17 17 17 19 18 18 19 19 18 29 106 148 153 146 141 134 138 139 124 116 127 126 124 124 117 111 112 130 133 130 128 131 135 135 128 127 138 141 138 125 136 128 131 127 124 124 126 122 116 124 123 110 112 103 103 106 116 113 114 121 110 103 98 92 95 101 106 110 118 115 108 110 101 101 108 107 102 104 110 114 109 107 101 101 132 135 128 121 128 126 112 107 101 97 - 115 125 128 129 124 141 152 147 148 155 150 142 136 133 132 122 118 117 117 117 123 128 128 134 135 136 138 131 116 116 117 114 116 118 114 112 115 126 128 122 122 128 125 124 133 132 127 129 127 124 129 130 132 134 132 134 136 136 132 132 128 122 117 119 123 125 126 124 116 112 114 119 124 131 141 142 140 137 137 137 143 151 143 136 139 144 144 138 120 81 45 25 21 21 27 45 60 65 71 82 92 107 123 142 142 145 154 158 163 190 199 200 198 193 198 194 166 155 146 138 123 103 94 86 80 82 76 72 65 56 51 45 36 35 32 30 29 25 26 27 24 21 18 18 20 20 20 20 20 20 20 19 19 16 16 15 16 16 17 17 17 18 19 19 20 18 61 135 150 148 144 140 140 143 140 118 113 120 125 123 112 109 114 126 133 129 126 128 131 135 139 138 137 138 129 133 139 134 138 134 124 126 128 128 121 125 116 113 108 106 112 112 111 103 110 121 114 104 98 98 103 106 99 94 104 116 115 107 105 113 107 99 99 104 113 110 108 105 103 101 118 125 122 121 130 130 121 110 102 94 - 115 128 133 131 124 134 140 143 157 157 143 133 133 138 131 121 119 117 109 109 115 128 130 141 141 134 137 137 130 125 121 122 119 118 119 124 121 122 131 131 131 131 131 130 139 139 134 135 130 127 130 130 132 131 130 132 134 134 131 135 129 125 117 115 122 125 125 127 125 122 123 125 128 129 136 137 143 146 142 139 143 147 140 136 142 144 142 133 107 61 29 24 22 27 38 55 62 65 67 73 98 140 158 183 193 193 202 216 215 216 222 230 231 226 223 213 204 198 190 163 154 145 135 126 118 116 106 88 79 70 64 57 49 44 35 32 30 27 28 28 27 23 21 21 21 21 21 21 21 21 20 18 17 15 14 14 15 17 17 17 17 17 18 19 20 20 25 84 143 147 146 145 143 144 144 138 113 115 124 122 114 106 114 126 129 129 119 119 121 125 135 139 134 133 130 136 137 140 137 135 134 129 128 126 124 129 128 124 111 106 112 113 110 103 107 117 117 117 112 101 106 106 101 91 92 105 106 100 112 113 103 98 105 109 110 105 101 98 107 108 109 117 116 121 122 125 121 114 99 94 - 124 128 129 134 133 133 133 137 148 148 137 133 134 138 128 118 120 114 109 112 122 133 134 138 141 134 137 143 145 137 125 127 129 130 131 133 125 124 127 134 138 134 129 129 136 142 145 135 134 136 134 134 128 127 127 125 125 131 135 135 124 122 116 115 121 129 133 135 134 131 129 127 128 135 140 140 144 148 146 144 147 148 143 140 143 144 141 123 83 41 23 24 26 31 40 48 60 71 82 112 149 196 214 221 221 218 222 228 227 227 227 230 233 233 232 230 223 220 215 202 191 172 161 155 148 142 129 110 92 79 69 62 58 53 46 38 33 30 28 28 25 24 22 23 22 21 21 21 21 21 21 18 17 15 14 14 16 17 18 19 19 17 17 18 20 20 20 58 115 144 147 147 145 144 143 139 119 119 123 123 120 106 106 121 127 125 122 119 118 118 124 132 133 136 134 134 139 140 140 137 137 131 127 126 124 129 128 127 114 106 111 111 108 104 109 111 110 117 114 106 101 99 97 92 91 94 98 104 110 111 101 98 101 110 104 95 92 92 103 108 117 124 119 116 119 119 119 120 108 94 - 140 140 139 145 141 138 134 137 134 127 132 135 138 132 122 116 117 113 114 121 122 129 130 128 127 133 146 155 155 147 140 140 140 142 141 135 131 131 131 138 138 138 134 136 136 145 145 133 134 140 144 144 134 130 127 130 127 132 135 129 119 119 119 121 123 127 136 137 134 136 136 134 137 145 148 146 147 150 145 145 151 151 147 147 146 145 138 99 64 27 23 26 28 32 47 66 78 107 142 181 204 221 226 224 224 223 229 231 232 233 235 235 239 240 240 237 233 228 225 220 210 195 186 172 163 157 143 133 116 92 80 71 63 57 53 45 39 32 30 29 29 28 25 24 23 23 21 21 20 20 21 20 19 15 14 14 16 20 18 19 19 17 17 17 19 19 20 25 74 138 144 147 144 142 142 137 124 121 121 120 114 113 111 117 119 119 127 127 121 118 122 125 135 139 137 133 137 138 137 140 140 140 134 129 124 125 126 127 117 107 108 114 110 113 120 114 110 120 118 113 105 99 101 102 99 99 105 107 108 107 99 95 97 106 109 109 105 99 103 110 116 120 124 118 125 129 129 118 110 100 - 141 147 155 155 143 136 134 137 130 124 124 132 138 131 119 119 115 116 121 122 122 126 128 122 123 136 151 154 152 154 154 148 144 142 142 133 131 133 131 133 135 138 144 146 140 139 136 130 133 140 150 148 140 136 138 140 134 135 130 124 121 123 122 131 130 131 138 138 134 135 138 138 141 148 147 144 146 150 147 147 151 150 150 153 145 136 115 73 43 25 23 26 31 39 61 79 104 145 182 203 219 229 231 229 229 232 236 243 247 248 247 244 247 251 251 244 236 234 233 227 217 207 202 197 193 180 159 155 135 113 98 80 65 58 53 47 40 34 32 30 30 29 26 25 26 24 22 20 20 20 20 19 17 15 14 15 17 20 18 19 18 18 17 17 18 19 18 23 48 123 142 145 145 143 143 141 127 117 116 113 117 118 115 115 112 114 123 123 109 110 120 121 133 141 141 131 132 137 140 140 140 140 133 132 125 125 122 123 120 113 109 114 114 123 132 123 113 118 120 120 108 100 105 107 109 105 109 108 110 111 109 98 95 100 110 120 114 111 108 108 111 112 122 127 123 129 124 114 107 110 - 142 149 154 152 140 133 144 145 135 124 124 128 135 131 121 122 125 124 128 128 124 128 131 130 134 146 154 150 149 150 150 139 137 138 143 142 137 141 139 134 133 133 142 147 149 142 137 131 130 137 148 155 149 143 148 150 148 144 133 128 129 129 130 136 134 135 139 137 130 127 132 135 137 140 141 141 143 145 147 147 148 151 153 149 141 123 90 58 29 22 21 28 38 51 70 97 131 162 204 222 228 233 236 234 235 238 242 248 251 252 253 252 253 253 250 246 241 241 240 234 227 220 215 212 202 193 182 158 141 125 109 92 73 62 54 48 40 38 34 31 29 29 29 27 29 28 23 20 19 19 18 17 16 15 14 15 17 19 18 19 19 18 17 18 18 18 17 18 24 78 135 143 145 146 147 146 127 110 110 114 118 111 108 108 112 113 111 110 101 110 124 131 134 137 138 127 121 130 141 141 139 140 133 130 131 131 121 118 120 118 118 114 117 123 132 129 121 119 118 118 116 111 108 108 109 110 111 110 110 110 111 110 103 112 114 118 123 126 116 109 110 119 124 128 122 116 109 108 103 98 - 144 154 146 133 131 136 149 153 144 136 136 134 130 131 128 128 135 138 139 135 130 131 131 131 144 149 156 155 153 149 143 140 143 147 157 153 150 147 141 137 137 140 140 144 150 147 140 134 133 137 144 155 155 146 146 151 151 148 144 138 137 134 137 142 141 139 140 135 131 127 129 132 137 134 130 133 141 146 147 148 150 147 147 151 146 112 71 33 21 20 21 31 45 61 80 118 142 178 213 225 231 234 236 236 237 240 243 249 251 254 255 255 255 253 251 248 246 244 242 238 230 225 219 213 203 195 184 157 142 126 110 93 77 66 58 49 39 40 39 34 32 31 30 29 29 29 24 21 20 19 19 17 15 15 15 15 16 17 18 19 19 18 18 18 19 17 17 16 21 55 123 144 146 146 148 147 137 115 120 117 113 105 101 99 110 107 98 98 111 120 122 127 135 134 132 124 121 124 136 140 139 140 136 130 130 133 131 121 112 116 120 119 120 119 122 128 122 125 125 125 127 124 110 100 104 114 111 109 108 109 116 120 114 118 126 127 125 126 120 119 125 133 135 126 121 110 106 105 95 95 - 144 157 149 136 132 137 149 158 155 141 145 142 130 131 125 121 134 140 139 139 134 131 131 134 143 151 164 161 155 149 143 148 150 152 157 154 150 143 136 136 144 145 140 140 144 144 144 137 133 134 137 147 151 147 143 145 147 145 144 144 139 137 142 147 148 144 139 135 131 124 121 129 136 131 119 121 135 145 153 151 150 145 142 148 135 88 58 21 19 18 21 33 50 69 91 121 149 189 207 222 228 232 234 236 238 240 243 247 250 252 254 254 254 252 250 248 246 245 240 237 232 227 220 213 203 194 182 156 141 125 107 86 73 65 61 54 45 43 41 38 38 36 33 30 30 30 27 22 21 20 20 18 16 15 15 16 16 17 17 18 19 18 18 18 19 18 17 15 18 33 106 146 145 144 146 147 142 127 121 113 106 102 93 91 105 109 103 106 120 125 124 128 128 124 127 125 126 131 138 137 140 142 141 138 133 134 138 125 112 114 120 121 121 118 119 125 122 131 135 131 123 120 108 100 111 123 118 113 112 114 116 120 120 115 116 127 119 116 119 125 136 136 133 125 120 107 109 111 108 103 - 144 158 158 147 143 140 145 159 161 143 146 145 137 131 124 121 137 140 141 147 144 136 141 147 148 155 172 172 156 149 146 145 148 151 153 150 145 142 142 150 149 140 140 139 139 140 144 142 135 134 133 133 142 146 144 143 147 151 149 146 141 140 145 149 152 151 145 137 133 124 121 124 128 124 118 118 127 139 152 150 146 144 139 135 93 63 35 20 18 18 22 35 54 73 96 121 147 183 201 215 224 229 232 234 236 239 241 246 248 249 249 250 250 249 249 247 246 242 240 235 231 226 220 212 202 193 169 153 140 123 105 83 69 64 61 56 48 44 41 40 39 38 34 30 29 29 29 26 23 21 21 18 16 15 15 16 17 19 18 18 19 18 18 17 19 17 17 15 16 18 68 141 146 145 144 147 144 122 110 99 96 91 86 86 94 112 120 124 130 132 132 131 122 123 126 141 142 142 142 136 136 143 144 141 136 138 135 116 114 117 120 117 119 118 121 124 122 131 139 138 121 115 116 103 118 129 126 118 119 129 129 122 120 115 115 125 125 123 116 118 135 134 122 119 119 126 115 120 117 103 - 144 161 166 155 149 146 151 164 167 149 143 142 140 137 137 140 152 150 152 162 159 156 164 164 159 162 167 164 156 154 149 145 152 158 160 155 149 147 151 154 146 141 139 139 140 142 144 142 134 134 134 136 143 147 146 145 148 152 151 143 136 136 144 150 155 155 155 147 140 136 132 127 126 125 121 118 119 134 152 150 140 127 124 118 70 31 21 20 18 18 25 41 61 77 96 118 144 166 197 211 219 227 229 231 234 237 241 242 244 245 243 244 245 245 245 243 242 241 239 234 229 224 217 208 198 188 161 149 134 120 105 87 71 65 60 55 50 46 41 43 38 35 32 29 28 27 27 28 24 23 21 18 16 15 15 17 19 20 19 19 19 18 19 17 17 17 17 15 15 19 36 123 146 144 144 148 146 122 107 95 91 86 86 88 89 115 127 130 127 131 138 138 133 141 144 144 144 145 144 142 140 140 144 142 138 127 120 110 117 120 120 116 115 123 126 122 113 126 139 134 122 123 123 121 126 127 129 128 127 135 131 125 123 121 131 136 136 135 119 125 135 135 122 118 123 126 120 120 120 110 - 144 159 166 157 152 148 159 186 184 155 140 133 136 142 149 158 161 161 151 160 167 186 195 191 185 177 163 163 159 157 152 151 160 164 167 160 151 148 150 154 152 150 152 155 157 154 153 147 137 136 140 143 149 153 154 153 152 152 150 147 143 140 143 147 152 154 154 146 140 140 139 134 130 131 131 128 132 137 137 141 141 129 117 89 51 21 20 18 18 21 31 49 67 80 98 121 143 163 194 205 216 224 228 229 229 233 236 238 239 238 237 238 238 239 239 239 237 237 234 230 227 220 213 203 191 165 154 140 125 111 101 84 74 67 59 55 54 51 49 45 36 34 31 29 29 27 28 28 26 23 21 20 16 15 15 16 19 20 18 18 18 18 19 17 17 16 17 19 15 16 20 89 145 144 143 148 141 110 103 92 93 90 88 86 86 112 125 128 122 127 138 126 130 144 144 141 141 143 146 152 141 118 143 141 133 121 110 110 117 126 121 114 114 123 126 126 113 122 135 135 125 126 126 132 135 135 133 134 133 137 138 135 127 122 136 141 139 138 130 128 131 133 125 118 123 119 110 109 115 121 - 144 157 157 156 153 149 162 197 197 163 143 133 137 148 157 160 159 157 149 161 182 189 195 194 193 191 178 178 165 159 158 160 166 180 180 168 160 156 155 153 156 159 162 162 164 167 164 157 147 144 147 150 158 164 162 160 155 153 155 156 155 150 147 147 149 149 147 142 139 139 139 137 135 138 144 144 146 137 124 136 141 139 103 64 36 28 20 18 20 22 34 53 72 84 106 125 143 160 190 202 213 221 225 226 225 226 228 229 230 230 230 231 231 232 233 232 231 231 230 228 222 216 206 195 181 155 140 128 114 101 91 81 74 70 65 61 57 55 52 46 40 36 33 30 30 29 27 28 28 24 21 18 17 15 14 15 17 18 18 19 19 18 18 18 19 17 17 16 18 15 21 67 140 141 140 135 101 85 91 93 93 93 89 91 91 112 136 127 109 108 112 106 119 136 134 124 116 140 154 154 137 94 138 141 133 125 115 112 126 122 118 115 114 116 122 125 115 116 129 135 131 131 129 130 133 138 140 141 140 133 140 139 131 133 141 145 143 140 135 135 132 130 133 133 131 124 110 108 108 110 - 145 157 151 154 156 154 163 200 200 173 150 137 140 151 158 156 156 157 149 154 181 197 192 194 194 192 189 190 182 165 165 182 189 190 189 186 172 164 162 160 158 160 162 163 165 182 172 159 151 150 156 159 164 164 164 160 157 157 160 161 155 149 147 147 150 150 146 140 137 137 137 137 139 143 150 151 148 137 124 127 141 132 75 41 37 31 20 19 20 23 32 50 70 88 112 129 144 159 188 199 210 218 223 221 219 216 217 219 222 223 224 224 225 226 226 227 226 226 224 222 216 209 199 190 160 145 131 119 104 93 87 80 73 73 70 64 59 58 54 46 40 37 35 33 32 30 27 27 28 27 24 20 18 17 17 16 17 19 20 19 19 20 18 19 17 16 16 16 15 15 19 40 109 138 138 110 76 77 89 92 93 91 91 91 90 104 136 127 94 83 85 94 110 120 125 122 116 134 147 153 124 94 136 143 135 131 129 118 123 121 127 124 118 119 125 129 121 119 129 126 128 130 128 128 129 140 144 144 141 140 140 137 136 136 143 145 143 140 138 138 137 130 135 139 138 128 114 112 105 100 - 145 153 148 152 156 162 181 194 192 162 156 148 138 146 161 160 156 155 155 154 190 200 200 195 186 186 190 192 187 177 173 184 189 190 188 184 173 165 163 162 160 160 161 161 166 182 178 163 156 156 161 164 165 163 162 159 160 162 162 157 149 146 146 150 154 153 147 144 144 142 139 140 142 145 150 154 148 143 139 116 123 87 52 41 38 28 20 18 20 23 32 50 73 93 115 132 146 159 185 196 205 213 218 214 209 207 207 210 211 213 214 215 217 218 220 221 221 221 220 216 210 201 192 172 153 139 127 116 104 93 88 81 77 74 71 67 61 60 56 51 45 41 40 37 34 31 29 27 28 28 27 21 20 20 20 18 18 18 20 19 20 19 18 17 16 15 15 15 15 15 18 21 78 129 109 80 71 73 79 83 88 91 90 86 82 94 132 118 80 77 77 90 102 106 121 124 124 134 142 141 94 113 146 147 142 140 140 135 126 118 126 127 124 121 123 129 125 123 129 119 115 119 126 128 128 139 143 143 141 141 142 141 141 135 141 142 139 140 135 133 140 138 137 137 141 136 113 111 108 100 - 143 148 148 148 150 163 166 189 182 155 156 155 139 145 162 158 149 157 158 161 194 196 197 193 187 185 192 193 187 177 166 177 184 185 178 172 166 165 166 177 177 178 181 178 181 185 182 166 162 159 162 174 188 172 163 160 161 161 155 151 150 150 150 155 156 149 147 149 148 144 143 143 143 147 153 156 156 156 155 138 103 61 44 43 31 21 18 19 20 24 33 54 75 98 117 134 146 157 183 194 199 201 205 206 203 201 201 202 202 202 204 206 208 211 214 217 218 218 217 212 204 195 187 162 148 137 125 114 105 95 91 84 79 74 73 74 70 64 61 59 55 48 42 42 38 34 31 28 28 28 26 21 20 21 20 20 18 18 19 20 20 18 18 17 16 15 14 15 15 16 17 18 65 95 76 68 66 64 65 77 85 88 91 83 80 89 109 100 80 77 77 82 92 95 112 117 119 138 141 129 82 116 146 147 145 132 133 140 129 112 113 121 122 121 118 122 123 126 128 121 115 112 122 126 127 140 142 141 141 141 144 143 140 133 143 143 132 127 130 141 142 140 135 133 141 133 115 116 110 100 - 142 151 151 149 145 149 156 160 162 156 154 151 140 146 162 162 147 146 147 158 189 191 166 156 182 190 188 193 189 177 163 165 181 181 181 178 166 185 191 191 191 190 195 196 193 191 186 166 165 166 177 186 188 168 160 160 162 161 155 153 153 153 155 157 157 152 149 148 147 146 144 147 150 153 156 162 173 186 178 130 69 46 47 35 25 20 18 20 21 25 35 55 74 93 116 132 146 156 175 190 195 196 198 202 202 200 199 198 198 195 196 198 201 206 211 215 218 218 215 210 202 195 181 159 147 136 125 113 108 103 99 90 83 78 75 76 75 70 66 62 60 57 48 47 46 40 34 29 27 26 26 22 21 20 19 20 20 19 19 20 20 20 20 19 16 15 14 15 16 17 16 20 46 69 68 67 67 64 66 78 85 87 91 79 75 80 85 91 80 75 72 73 79 83 98 107 113 131 129 103 76 113 140 144 135 91 109 129 128 119 112 122 126 118 118 121 124 130 135 133 122 112 122 127 137 143 144 142 141 142 144 143 133 139 145 145 136 127 136 143 143 141 129 128 131 126 119 118 118 100 - 142 148 148 146 145 152 153 148 153 154 147 145 139 141 151 152 139 127 130 152 189 191 178 149 152 172 166 178 184 172 163 183 190 192 192 191 192 192 190 191 185 178 193 199 196 194 189 166 166 183 188 188 181 162 160 165 164 162 181 167 162 160 157 156 154 147 143 139 139 142 148 153 156 158 161 184 190 192 163 98 52 45 38 25 22 21 20 20 21 30 42 56 73 89 116 131 146 156 166 188 194 196 197 199 201 199 198 195 195 192 191 193 196 201 209 216 219 219 217 213 206 195 187 162 150 137 124 118 114 111 105 98 90 86 80 79 76 74 70 65 62 62 57 53 51 44 38 30 28 28 26 23 21 20 20 19 18 20 19 20 20 20 20 20 17 15 14 15 15 16 16 19 25 55 64 65 62 65 66 74 85 82 79 74 72 73 77 83 76 68 68 72 73 82 103 110 121 130 116 79 73 110 134 143 123 79 88 120 132 128 122 125 132 127 127 135 133 136 138 137 130 130 138 133 140 144 144 143 142 144 144 144 140 141 145 145 143 141 140 140 142 143 137 127 122 125 117 114 113 101 - 132 133 139 146 152 157 158 153 145 142 140 141 130 121 127 132 134 131 124 136 160 186 186 152 149 164 159 159 182 181 189 197 199 198 197 204 192 159 153 157 165 189 199 201 203 201 195 193 191 189 191 190 185 173 162 164 167 166 191 189 181 178 160 152 142 136 136 139 142 147 156 161 164 166 178 189 192 192 145 73 49 42 29 21 21 20 19 20 21 36 55 66 76 98 120 136 147 157 166 188 194 198 199 202 203 203 200 196 193 190 189 191 192 199 208 216 220 222 221 217 211 202 193 172 155 140 126 126 128 119 114 110 107 102 92 86 81 77 74 70 65 65 62 57 49 41 34 30 28 26 25 23 22 21 20 18 18 17 18 18 18 18 18 18 17 15 14 15 16 16 16 18 21 47 62 60 60 63 61 69 81 77 69 72 74 74 72 72 70 66 66 69 68 79 100 118 130 121 95 71 75 107 126 138 112 76 78 108 139 140 140 132 133 138 140 141 141 142 140 141 137 140 142 140 141 142 144 144 141 142 144 142 139 142 144 146 146 144 142 141 141 142 142 134 122 129 118 103 101 106 - 118 115 121 129 134 146 158 151 141 131 127 132 124 110 110 118 127 127 118 124 153 167 163 149 143 159 162 166 191 189 194 201 204 197 194 204 165 136 130 124 143 190 208 208 210 210 204 205 200 200 199 197 189 188 164 164 167 166 184 192 189 182 163 153 143 139 143 148 151 154 162 177 185 190 190 189 196 191 107 56 47 39 24 20 20 20 18 19 20 38 61 74 88 108 125 137 149 159 171 188 193 198 203 206 208 207 204 199 194 192 191 189 191 198 210 218 224 226 224 222 219 212 203 191 162 153 139 136 137 133 132 128 122 118 110 99 93 83 79 74 69 67 64 58 48 41 34 27 27 28 26 23 22 22 20 19 18 17 17 16 17 17 18 18 19 15 14 15 15 16 16 17 20 41 64 63 63 60 53 68 79 75 67 72 73 72 70 66 66 67 66 65 68 77 92 113 129 110 82 71 85 99 113 130 99 75 76 97 138 141 140 133 136 141 143 144 144 144 143 144 141 142 143 140 141 142 142 142 133 134 139 134 134 141 143 145 146 144 143 144 143 141 140 134 128 129 116 101 98 104 - 117 110 104 97 112 130 136 128 129 124 116 111 111 112 108 104 115 113 109 124 155 181 162 151 143 153 163 189 196 200 201 203 208 184 163 186 150 134 129 116 121 157 195 207 210 203 195 207 208 206 206 201 191 166 162 158 162 163 163 190 192 177 163 160 155 150 156 164 178 178 189 192 193 196 194 195 206 165 73 43 44 34 23 20 21 21 19 19 21 41 63 77 97 111 126 141 154 161 177 189 194 198 203 205 208 208 205 200 198 196 196 195 196 204 214 220 225 227 227 225 223 216 213 201 184 186 161 154 153 151 151 141 134 128 124 116 108 99 87 80 75 71 66 61 56 47 37 30 25 28 27 24 21 21 20 20 19 17 17 17 17 17 17 17 19 16 14 15 15 17 16 16 19 35 61 64 62 48 44 63 72 71 65 65 65 63 67 64 64 63 64 66 71 77 87 97 100 88 72 75 94 91 100 118 89 75 79 100 136 142 141 140 141 140 144 146 145 146 148 147 142 144 144 140 143 145 140 135 133 139 130 134 139 140 143 145 145 145 146 146 146 143 139 128 128 120 111 102 93 91 - 127 121 107 94 98 97 91 102 109 112 104 94 94 105 95 96 107 102 98 113 145 172 181 181 157 149 159 190 199 199 200 208 199 143 136 141 130 128 133 116 115 142 160 187 201 199 195 204 208 205 209 206 195 166 162 158 165 184 165 187 188 166 161 164 164 161 163 192 204 199 204 204 197 197 194 195 206 148 61 43 42 29 21 21 21 20 19 18 21 47 69 84 100 114 132 146 156 165 185 191 196 200 202 203 204 204 202 202 203 206 202 203 205 209 216 220 224 226 227 224 223 217 209 203 190 187 178 163 160 160 158 151 141 135 131 126 120 107 96 88 78 74 67 64 60 53 39 31 25 25 28 26 21 18 20 19 18 19 18 19 18 17 17 17 19 16 15 15 16 16 16 15 18 28 56 60 57 44 45 51 60 65 61 61 60 55 57 58 60 58 59 67 71 77 82 83 84 77 71 79 94 92 103 109 79 73 76 100 142 146 142 141 143 140 141 142 146 153 152 148 144 145 147 144 145 145 143 141 136 139 137 129 134 141 144 146 146 144 144 144 146 146 141 127 118 104 111 106 95 86 - 127 114 107 96 91 83 79 80 80 90 105 99 104 102 89 89 95 92 92 108 131 143 163 181 158 146 152 189 199 189 192 201 164 126 113 125 119 122 129 112 115 128 132 151 192 198 195 195 204 205 208 208 197 185 169 165 187 193 191 192 192 190 172 183 187 187 189 200 212 206 209 208 205 207 209 199 192 125 59 46 36 23 21 21 20 18 18 18 22 48 68 81 102 120 136 151 161 178 190 196 200 203 203 202 202 202 203 204 206 209 210 209 210 211 215 219 220 223 223 223 221 221 211 202 195 192 186 167 161 159 157 149 141 134 132 129 123 111 97 90 81 75 68 63 57 47 41 34 29 28 28 27 21 18 19 19 18 19 20 19 18 18 17 16 15 15 14 14 16 17 17 16 18 23 49 53 50 50 51 44 47 62 63 63 62 54 54 58 56 56 56 67 70 72 74 75 75 70 72 83 85 85 106 109 78 73 75 99 141 147 145 141 143 140 141 141 143 153 152 148 147 147 142 138 143 144 142 141 140 139 139 127 127 141 145 153 148 143 141 142 144 145 140 119 108 101 115 110 93 83 - 110 118 108 90 87 79 78 72 67 78 104 115 115 113 105 104 93 92 89 102 118 115 132 150 150 146 146 172 197 181 168 164 142 115 109 117 117 117 115 109 120 123 118 131 162 197 205 199 196 197 197 192 186 186 178 186 195 202 204 200 201 204 199 197 197 198 204 213 211 206 211 215 222 232 222 208 184 100 55 44 32 21 20 20 18 18 17 18 21 45 65 76 95 118 135 150 161 172 190 196 197 198 199 199 199 201 203 206 208 209 211 211 212 214 214 216 217 219 222 221 214 199 190 183 186 190 178 158 153 149 147 142 137 132 126 123 118 107 97 87 77 73 67 63 56 42 40 39 33 31 27 24 21 20 19 18 18 18 20 18 19 18 19 16 15 14 14 15 16 19 18 19 18 21 45 47 43 47 48 43 44 58 62 63 62 58 58 61 62 60 61 66 66 64 65 67 65 63 74 86 80 78 104 101 79 74 71 86 132 147 147 140 141 140 140 141 143 147 149 147 145 144 141 138 143 143 139 139 141 140 138 127 130 142 146 153 146 141 141 141 141 138 125 109 98 99 115 92 82 80 - 110 118 105 86 84 78 75 68 66 75 93 106 109 108 103 105 103 101 89 86 101 108 119 135 137 137 129 142 158 153 149 137 130 131 115 109 110 112 103 100 118 116 106 107 136 188 209 205 183 186 190 187 191 197 196 195 202 213 209 209 206 209 212 208 205 203 208 214 214 213 215 221 229 235 223 203 162 82 46 41 31 21 20 20 18 19 17 18 21 44 63 74 90 113 131 144 154 164 182 186 186 186 187 188 194 197 204 208 210 212 211 211 215 215 212 212 214 210 198 166 158 143 137 136 145 157 151 143 140 137 135 133 131 128 119 113 109 101 94 80 72 70 66 62 55 42 35 36 35 32 28 26 22 20 18 18 18 19 19 18 18 18 20 19 16 14 14 15 17 19 19 19 19 20 42 47 42 44 43 42 40 52 58 62 62 61 63 65 66 62 65 68 65 59 59 61 61 63 74 86 76 75 98 80 71 71 68 78 117 145 145 142 140 141 142 143 143 145 147 145 143 144 142 140 143 141 141 141 139 140 138 127 130 140 145 145 137 133 135 132 128 115 108 99 96 96 90 80 78 79 - 118 118 103 80 77 79 71 68 66 72 81 94 103 93 85 89 103 103 90 76 79 96 107 121 131 132 124 121 129 131 135 118 135 148 132 109 108 112 97 88 101 98 91 97 124 164 209 178 129 136 161 189 206 213 213 209 213 212 207 209 208 208 211 212 208 203 206 211 217 219 215 220 233 235 218 205 148 69 41 42 35 22 20 20 20 20 17 18 21 40 59 73 86 111 128 140 148 154 154 153 152 153 156 163 181 190 196 205 212 207 207 211 218 216 210 197 178 157 134 100 97 86 86 95 107 114 121 129 138 128 122 129 130 123 112 107 95 84 79 71 66 64 60 54 52 45 38 35 33 32 31 29 23 20 18 19 19 18 18 19 18 17 19 20 19 16 15 16 19 20 20 19 18 20 41 52 45 41 37 37 40 48 50 60 64 65 67 66 67 66 66 68 64 60 58 57 60 65 73 78 71 76 97 72 61 66 68 79 95 104 119 140 140 142 143 144 143 144 145 144 143 142 139 139 141 141 141 142 139 141 142 140 142 142 144 140 124 119 121 121 114 104 96 89 90 92 85 76 76 73 - 118 109 90 77 77 75 71 70 69 70 75 82 90 87 85 89 101 102 93 76 76 82 90 105 129 132 129 126 120 116 129 118 132 148 132 114 110 109 95 83 88 87 86 99 129 145 142 104 79 88 121 155 205 211 207 209 218 215 206 207 203 203 207 210 209 201 204 215 223 223 219 225 235 235 220 210 129 56 35 36 33 22 20 20 21 21 18 19 21 37 58 73 92 113 128 137 139 137 133 129 126 127 135 148 161 182 191 198 207 199 201 205 214 218 205 159 124 108 80 67 64 65 70 73 75 79 88 96 112 110 105 106 110 104 90 82 80 73 66 62 60 56 51 51 51 46 42 35 31 31 32 31 23 18 18 19 17 17 17 19 17 16 17 18 19 18 16 16 17 18 18 19 19 20 38 52 44 37 36 34 38 44 45 55 60 64 68 70 71 69 65 65 64 62 58 54 59 65 70 74 69 79 98 72 59 63 71 78 80 73 73 110 140 142 142 143 145 147 144 142 142 141 141 139 141 142 143 142 139 142 142 140 143 143 140 130 124 119 120 117 111 101 86 80 80 87 87 81 82 71 - 90 83 77 77 79 72 69 69 66 68 72 78 86 87 84 93 101 101 101 87 79 80 80 91 106 106 111 111 106 111 116 111 114 116 115 106 93 94 87 76 78 80 80 90 94 83 76 65 67 72 79 119 151 164 195 211 218 214 201 196 196 202 212 212 208 196 196 212 223 220 213 221 232 228 211 195 104 45 32 31 30 21 21 21 21 21 20 20 21 36 61 78 105 124 135 133 124 115 106 90 80 83 94 117 141 161 186 194 200 194 198 199 199 193 162 119 80 70 59 53 51 50 54 58 61 66 68 69 74 77 77 76 76 73 70 67 66 64 56 54 53 46 45 46 44 43 40 33 30 30 31 29 24 20 17 19 17 16 17 17 17 16 16 17 19 19 19 17 17 17 19 18 18 20 39 52 40 33 33 34 41 49 48 55 58 61 68 71 69 66 61 64 63 62 59 54 58 64 66 70 67 81 98 70 56 61 75 79 75 68 68 89 130 143 143 145 144 146 147 143 140 140 141 142 145 144 144 141 141 144 140 140 142 141 139 135 131 117 106 109 118 106 87 80 82 85 83 86 85 68 - 72 75 78 79 78 73 69 69 66 66 71 75 77 81 84 85 95 94 86 83 87 91 85 86 86 86 109 108 98 93 95 92 89 86 92 93 79 79 75 72 74 78 82 88 71 59 60 59 65 66 69 86 92 103 136 189 215 205 195 192 194 200 205 202 202 198 200 207 204 198 203 204 206 204 196 158 78 40 33 30 26 21 21 21 20 20 20 18 18 33 63 80 109 126 126 115 96 80 72 65 56 59 68 79 107 142 165 191 193 190 191 193 176 143 119 80 59 44 35 37 38 36 35 39 44 49 50 49 48 54 58 59 58 57 58 54 48 54 47 43 41 35 37 40 41 40 38 33 30 30 32 29 24 20 18 16 16 17 17 17 17 17 17 18 19 19 19 19 18 18 19 17 17 20 36 43 34 32 32 35 43 49 45 49 51 52 56 57 62 62 61 61 60 61 59 54 60 66 65 63 67 86 83 67 52 59 72 73 74 69 71 82 125 148 148 147 144 143 145 143 139 137 136 139 144 145 144 144 142 143 144 142 142 142 141 140 135 117 103 109 118 103 85 80 80 81 80 83 76 61 - 69 74 79 74 73 71 68 68 70 72 73 72 73 81 87 86 95 88 82 82 88 91 85 86 90 100 110 110 92 82 82 79 80 81 84 88 81 72 70 71 74 78 85 82 65 58 60 59 68 71 69 75 75 76 89 134 193 196 187 190 189 191 194 195 202 202 199 194 186 190 196 188 187 185 160 135 68 36 33 30 25 23 22 21 20 21 20 18 18 31 59 75 84 87 83 77 68 57 47 44 41 42 49 59 72 107 146 178 188 172 181 188 151 119 86 66 46 33 27 30 30 29 27 27 33 36 37 37 34 34 34 40 43 41 42 37 37 39 35 33 31 31 32 34 38 35 34 34 32 33 33 29 23 20 18 17 16 17 19 19 18 19 20 19 18 18 18 19 18 19 18 17 17 20 26 36 34 32 32 36 41 45 39 37 42 46 42 41 52 62 63 58 52 57 56 54 61 65 63 56 67 86 75 61 46 54 68 70 74 73 72 76 114 148 148 146 143 143 143 144 141 136 138 133 133 142 143 143 141 142 146 147 147 144 141 140 129 114 103 118 113 95 82 80 87 83 80 79 69 58 - 68 71 73 69 69 69 68 69 72 75 75 72 82 88 87 88 88 89 84 88 85 82 83 90 97 103 102 95 85 79 76 77 78 78 78 77 74 66 67 67 71 75 75 68 58 57 61 64 71 72 70 70 68 69 76 79 130 186 186 181 181 182 163 191 196 194 191 181 163 178 184 162 164 158 143 120 68 37 31 27 25 24 23 22 21 21 21 20 21 30 45 53 60 62 58 49 42 42 42 46 42 37 37 40 47 69 114 159 165 162 162 162 136 99 70 47 34 28 23 24 25 25 33 45 60 71 75 72 63 45 35 29 29 30 29 25 27 26 22 25 26 28 31 31 33 33 32 32 33 33 30 28 24 21 20 19 16 16 19 18 19 20 20 19 19 19 18 19 19 19 18 17 16 18 22 36 38 32 31 38 38 38 37 38 42 42 38 39 43 54 63 54 52 56 53 53 61 63 59 55 64 71 61 50 45 54 64 68 74 74 72 73 103 142 144 143 143 145 146 146 141 136 138 133 134 140 140 141 140 141 142 145 146 142 139 132 115 111 114 118 103 82 82 101 115 90 82 79 66 56 - 70 68 69 70 69 69 69 68 70 74 74 79 94 95 90 91 85 86 84 81 81 85 88 101 101 96 90 78 80 77 74 76 74 73 73 69 64 62 60 59 59 63 62 56 54 54 60 64 71 72 68 66 66 69 71 64 83 156 172 162 165 166 163 189 190 183 182 167 159 161 184 167 157 148 141 129 71 36 31 25 26 24 23 22 20 20 20 18 20 25 33 37 37 36 37 41 59 75 83 83 76 68 58 37 36 49 80 145 158 155 157 154 121 80 61 35 27 26 21 22 24 37 60 75 88 100 100 98 78 63 48 33 25 22 21 21 22 22 20 21 23 25 30 32 32 33 33 32 31 31 30 29 27 21 20 20 16 15 16 17 19 19 20 19 20 20 20 18 19 17 19 17 16 18 21 39 39 34 31 33 35 36 36 38 42 40 37 38 36 42 55 57 55 56 54 53 58 61 55 57 60 49 41 41 44 57 65 69 74 73 69 72 103 141 144 145 144 145 145 141 130 130 136 131 138 139 136 140 137 137 133 140 139 134 126 117 109 111 113 115 102 82 83 107 115 98 82 76 64 56 - 68 67 69 73 73 71 70 69 68 71 75 84 107 105 93 92 86 77 72 72 79 89 98 100 94 93 87 76 77 76 74 75 73 69 68 64 56 54 53 53 50 54 56 54 56 58 58 62 69 71 69 66 66 70 68 56 73 146 165 162 162 181 193 195 185 159 157 154 147 147 154 157 150 143 141 127 68 36 33 27 25 23 24 23 20 20 19 18 20 22 29 31 32 32 36 53 69 79 78 75 65 61 61 53 40 36 64 124 151 150 152 145 105 72 51 34 24 21 21 23 35 58 65 64 60 54 53 48 40 40 39 34 32 25 21 21 21 20 20 20 22 27 33 37 36 36 38 34 32 31 31 29 26 21 20 18 16 15 15 16 18 18 19 18 19 20 20 18 17 16 16 17 17 18 21 35 39 36 34 34 36 39 38 39 40 38 37 37 36 40 48 51 52 53 54 52 56 62 61 58 53 40 36 40 45 55 63 69 73 71 68 69 95 140 143 146 146 144 143 130 113 121 136 133 130 130 130 134 139 132 131 130 121 116 112 109 110 109 107 103 98 85 85 97 112 89 77 75 66 64 - 64 67 71 74 76 73 69 68 68 71 76 85 107 107 86 83 81 74 71 71 80 87 95 92 83 83 82 76 73 71 70 71 73 70 65 59 55 54 52 53 50 50 51 51 57 58 57 60 68 74 73 68 65 68 64 55 71 152 181 162 165 191 200 200 189 156 146 139 132 124 132 147 144 137 133 112 67 33 31 29 26 23 22 23 20 20 20 18 18 21 26 29 30 30 38 44 40 35 31 21 20 20 24 37 44 41 45 95 143 151 151 138 92 62 43 34 25 21 23 31 41 48 42 36 34 21 14 14 14 20 21 21 22 21 21 18 20 20 20 21 33 43 45 46 43 41 40 34 30 29 29 27 23 20 20 19 16 15 15 16 19 19 17 17 19 19 19 19 17 16 16 17 17 18 21 30 39 39 38 36 35 39 39 39 36 37 42 40 39 46 53 51 47 44 47 49 51 59 63 61 53 41 34 35 38 42 50 61 67 67 69 69 85 140 145 149 153 149 143 129 113 119 138 133 122 129 125 125 135 127 122 116 107 103 109 107 104 101 95 95 93 89 91 96 95 82 76 75 71 68 - 64 69 74 76 76 72 71 70 68 72 78 87 98 97 82 79 78 76 71 76 82 82 83 80 76 76 78 74 70 68 67 69 71 71 65 56 55 53 53 54 50 49 49 50 55 58 57 59 67 75 76 70 64 67 65 55 69 156 193 178 166 188 194 196 189 155 149 148 130 124 142 146 141 137 130 109 74 36 29 25 23 23 22 21 20 19 19 18 18 21 23 27 30 30 31 32 36 45 36 18 14 14 20 21 34 47 43 76 135 151 152 135 83 49 35 32 25 24 29 34 37 47 63 71 68 34 14 17 16 16 16 16 18 18 20 18 20 21 21 33 54 63 60 54 48 46 41 35 32 30 27 28 26 21 21 20 17 15 16 19 19 16 16 17 19 18 19 19 19 19 17 17 17 17 20 26 38 39 38 34 32 35 34 35 36 36 39 42 41 46 53 52 46 42 42 43 48 57 63 63 56 42 32 32 34 35 40 47 59 64 67 68 76 127 147 153 154 152 144 136 119 126 138 124 116 129 125 124 130 123 116 106 99 94 99 102 103 100 92 92 93 93 95 95 91 81 74 73 71 69 - 66 68 73 76 76 76 78 78 72 72 79 87 87 82 77 79 82 82 80 84 88 81 76 76 73 74 76 73 70 65 63 68 71 71 65 59 56 54 57 60 53 49 54 53 56 58 56 53 61 72 79 75 64 65 66 58 67 148 193 186 161 171 190 188 154 138 143 148 139 130 145 145 138 130 122 115 88 54 32 21 21 22 22 21 21 21 19 18 18 28 44 49 39 31 34 49 69 75 59 21 18 20 21 21 25 48 61 71 129 151 152 135 83 47 31 29 25 33 44 50 65 95 127 126 101 57 20 21 21 20 21 23 31 29 31 37 49 60 61 67 71 76 70 61 53 45 40 37 34 31 29 28 26 22 21 19 18 17 18 17 16 15 15 16 17 18 19 18 19 19 18 17 16 17 18 25 35 36 33 33 32 32 33 34 38 37 35 38 36 37 41 46 44 42 41 36 43 50 57 60 59 46 32 32 33 35 41 44 43 58 64 65 69 106 147 155 147 145 142 130 127 133 131 115 112 117 119 123 121 116 113 108 106 104 92 97 103 100 92 95 90 83 86 93 92 80 71 69 69 66 - 66 68 70 72 73 77 79 78 73 77 82 83 82 79 76 81 85 83 83 87 88 81 78 77 73 74 75 71 67 63 63 66 70 69 67 64 60 56 58 60 54 50 53 56 57 57 52 49 55 70 79 72 63 62 64 68 83 155 193 162 152 156 164 162 115 85 91 123 141 131 124 131 139 124 119 117 98 63 33 22 21 21 21 22 22 21 20 18 18 41 69 78 65 56 64 75 97 109 83 61 48 47 45 46 55 65 72 76 132 152 150 132 83 51 34 30 27 38 56 69 90 145 145 141 129 94 61 49 49 48 50 52 54 49 52 67 78 89 92 93 91 87 77 66 58 51 43 37 32 31 29 26 23 21 18 18 19 20 20 20 16 16 16 17 17 18 19 19 18 19 18 17 16 16 20 27 38 37 34 35 35 34 35 35 38 37 37 34 32 32 34 39 38 37 38 36 38 41 45 47 51 48 37 37 36 35 44 45 42 50 63 69 73 94 144 155 146 143 141 130 128 129 126 120 116 112 117 119 112 114 113 104 103 101 89 98 99 91 96 104 90 82 82 85 85 77 69 68 67 65 - 69 71 71 69 71 76 79 75 72 78 86 83 83 82 76 84 85 83 88 89 87 87 79 77 77 74 73 69 65 64 66 65 68 71 74 71 62 50 47 53 50 51 56 56 52 50 50 49 59 72 75 69 62 61 68 112 156 192 164 145 143 152 151 129 79 63 67 80 112 112 108 107 132 133 125 118 100 63 27 21 21 21 23 23 20 18 20 18 20 45 73 92 78 68 76 98 118 136 136 123 85 73 67 67 71 71 74 80 136 155 148 132 82 55 38 31 29 40 56 73 87 118 141 130 130 123 88 73 72 69 64 58 55 54 62 75 88 102 110 115 111 100 82 69 60 54 47 38 32 32 32 24 22 20 18 17 19 19 18 19 17 17 17 17 19 19 18 18 18 19 19 17 16 16 19 30 41 39 35 35 35 39 38 35 36 37 38 38 33 32 35 38 38 37 39 37 38 38 40 41 41 45 43 42 40 37 46 48 41 43 59 71 77 89 132 144 142 141 140 131 121 119 123 120 116 116 123 123 111 114 113 107 102 88 88 100 96 91 96 104 94 87 85 87 84 76 73 70 67 65 - 71 71 71 69 70 78 79 72 71 77 86 83 88 89 79 82 84 80 83 90 89 89 80 79 79 76 76 74 71 70 70 69 73 75 75 71 58 42 37 46 52 57 57 54 51 51 51 51 61 71 72 66 59 55 73 146 178 158 146 139 141 141 124 95 68 63 66 64 72 82 92 86 116 138 131 123 92 51 25 21 22 23 23 21 19 18 17 18 20 53 75 92 86 76 79 84 93 105 107 92 71 57 49 58 65 68 73 86 145 159 149 130 80 48 37 34 34 40 55 70 75 79 92 91 92 87 77 70 67 65 58 49 44 49 64 76 92 113 123 130 127 115 86 72 63 56 48 37 30 30 30 23 22 20 17 16 19 19 19 18 18 19 19 17 19 18 18 18 18 19 19 18 16 16 18 26 41 38 34 35 37 40 40 35 36 37 39 39 36 36 36 40 41 41 40 37 39 39 38 41 43 43 40 43 48 46 52 50 43 42 55 72 76 86 130 142 139 136 140 138 122 112 113 111 112 118 120 110 104 113 112 105 100 85 85 94 100 100 96 96 94 91 91 86 77 72 71 73 72 65 - 71 71 71 70 69 77 83 75 71 79 88 90 89 84 77 80 81 81 80 93 97 87 81 81 78 73 78 78 76 73 73 73 74 75 74 66 48 40 37 45 52 57 57 51 52 53 53 53 60 68 70 66 56 52 73 132 124 125 135 132 125 111 85 73 65 64 64 55 55 69 76 78 105 135 138 129 73 36 27 21 21 22 22 21 18 18 17 18 21 64 83 102 108 100 89 75 71 67 61 55 43 41 41 59 72 86 88 100 151 166 150 127 78 48 37 41 41 43 59 72 79 79 78 71 68 65 60 59 55 52 46 44 54 72 83 98 114 130 141 141 136 123 92 74 64 50 41 33 27 24 26 24 23 20 18 17 18 18 20 20 18 17 17 17 19 18 18 18 18 19 18 18 16 16 20 22 33 34 33 32 33 36 33 32 33 35 36 35 35 35 35 36 38 39 38 37 40 42 41 38 42 40 35 37 47 49 52 50 47 45 54 72 73 78 130 141 136 136 141 138 123 109 108 108 110 120 112 97 104 112 108 102 96 89 86 89 92 93 92 92 93 91 89 80 73 70 70 74 72 65 - 73 73 73 74 72 76 83 79 77 85 94 95 85 80 77 83 84 80 85 100 100 84 78 77 74 74 73 73 75 74 73 73 74 78 75 64 43 39 41 48 53 59 59 54 51 51 53 52 58 64 69 68 54 47 72 100 79 98 132 126 107 90 75 64 63 67 68 59 55 62 64 68 92 129 135 95 52 34 30 22 22 23 23 21 20 20 19 19 22 68 103 128 145 145 134 106 85 73 67 61 56 61 69 85 118 133 125 119 157 181 153 127 77 52 42 45 47 55 69 80 98 109 94 78 72 71 69 65 63 67 71 78 100 130 132 133 138 141 141 141 129 115 90 73 63 49 37 31 27 24 26 24 22 20 19 17 18 19 20 20 18 17 16 16 17 17 17 17 18 19 19 19 17 16 18 21 33 32 31 30 29 29 29 32 33 34 38 37 36 38 36 40 44 40 37 37 40 44 42 39 41 39 35 35 41 45 47 48 49 52 56 68 70 71 109 135 134 140 142 136 116 106 110 110 108 112 104 95 102 105 102 99 96 93 90 92 96 97 94 94 90 88 87 79 74 72 70 74 71 65 - 73 73 78 85 78 77 79 78 79 88 95 88 83 81 79 83 84 79 85 94 91 81 74 71 71 72 64 65 73 74 71 68 72 78 78 62 41 41 44 52 55 59 59 52 48 48 51 51 51 57 64 63 46 40 68 83 61 69 110 112 83 75 67 58 61 71 71 61 58 57 55 61 84 112 103 66 40 33 29 23 22 22 22 23 21 21 19 18 23 69 115 147 194 198 188 164 162 149 129 113 104 111 118 138 158 157 151 143 161 188 154 120 76 55 47 48 55 69 90 124 139 146 138 131 134 148 152 143 143 147 155 162 181 188 163 154 147 141 137 128 114 98 83 73 62 49 35 29 29 26 24 21 21 21 20 18 18 19 20 20 18 18 17 16 16 16 16 16 17 19 19 19 17 15 17 21 31 31 30 31 30 30 32 35 35 35 39 39 39 44 42 45 53 53 53 52 48 43 42 43 43 42 37 35 37 39 41 40 42 52 57 63 66 65 80 113 136 140 142 128 107 106 113 113 106 103 100 92 93 98 98 96 96 97 96 96 101 101 95 91 87 85 84 80 77 74 72 72 71 67 - 74 76 86 86 78 76 79 77 75 82 89 84 81 79 76 78 81 78 79 81 81 78 73 70 70 67 64 69 74 74 68 64 63 72 71 58 47 47 47 51 55 57 54 46 45 44 44 49 51 49 56 55 43 40 63 72 54 55 82 88 69 68 65 56 56 68 71 66 58 52 46 56 81 101 75 45 34 30 26 21 20 21 22 21 20 18 18 18 25 70 123 157 197 201 201 205 205 200 189 159 149 150 158 163 167 158 154 158 170 189 153 113 76 60 53 50 60 79 115 148 159 169 184 183 191 207 219 219 219 215 213 207 202 196 184 157 147 137 128 116 102 86 76 68 57 45 34 28 28 28 27 21 20 20 18 18 18 18 19 20 20 20 19 16 15 15 15 16 16 17 20 20 17 15 16 20 28 33 31 30 31 32 35 35 34 35 37 37 40 45 49 51 53 57 58 58 52 43 41 43 42 42 38 37 34 35 39 39 39 45 49 58 64 65 72 102 138 140 140 127 115 117 120 120 109 92 92 91 92 104 104 92 96 107 105 99 97 94 90 86 85 85 85 82 79 77 76 77 76 72 - 76 78 79 68 61 68 72 74 74 78 84 82 80 78 74 74 78 77 74 74 74 72 69 71 70 65 64 72 74 71 63 56 54 60 59 48 47 47 47 50 52 56 54 46 40 38 38 42 45 44 48 52 44 41 51 56 48 52 67 72 66 66 64 60 56 64 69 66 57 50 43 53 75 80 57 39 32 29 27 21 20 21 21 21 20 18 19 20 29 71 126 148 168 190 197 200 198 196 197 195 187 183 191 196 194 172 162 177 185 190 155 109 76 64 60 59 65 90 127 149 166 201 211 205 210 221 228 230 229 228 225 217 207 196 183 157 143 131 117 106 91 79 70 61 49 43 34 30 29 29 28 21 20 19 19 18 20 19 19 19 19 19 17 15 14 14 15 15 16 17 19 18 17 15 16 18 27 36 33 33 34 34 33 34 34 35 39 41 45 48 51 53 53 50 50 45 42 44 42 40 37 41 37 38 36 34 35 41 42 40 41 50 60 68 73 92 129 134 138 131 131 129 117 111 107 98 92 92 96 97 93 92 101 108 103 96 92 89 86 85 87 87 87 83 80 80 81 82 81 74 - 76 76 66 46 40 56 66 70 73 76 77 78 76 74 72 72 76 77 73 72 71 69 68 68 68 66 65 68 70 66 61 56 52 52 50 47 49 48 45 47 50 57 56 48 41 38 36 37 38 41 44 48 44 40 43 48 48 52 58 59 59 62 62 60 59 62 67 64 56 45 37 49 69 67 41 35 31 30 30 23 21 21 18 20 20 18 20 21 29 68 109 131 152 166 189 192 195 198 200 204 203 199 201 207 198 189 192 192 193 193 155 106 75 65 62 65 73 99 128 151 185 208 214 214 218 223 228 228 226 221 216 210 203 193 166 152 137 122 108 95 83 75 69 60 49 42 36 30 25 25 26 22 21 20 19 18 20 18 18 19 18 17 16 16 15 14 15 16 17 19 19 18 17 15 15 18 30 41 42 45 43 37 33 34 36 36 36 40 43 42 45 46 43 41 39 35 34 39 45 44 36 36 35 34 34 33 34 36 36 36 35 36 50 65 72 83 116 133 138 136 133 127 113 101 103 109 99 91 97 96 93 96 103 106 99 102 102 92 86 86 88 90 90 86 84 87 85 84 82 73 - 74 71 60 46 40 46 61 69 73 74 76 76 74 72 72 73 77 78 74 73 72 69 67 67 66 63 61 64 65 65 64 62 56 47 45 48 51 50 45 45 51 56 54 48 46 41 35 35 37 42 45 49 47 40 43 49 52 54 52 50 52 55 57 57 57 62 64 62 54 42 37 46 65 59 35 30 29 29 30 25 22 21 18 20 20 20 20 21 27 63 93 121 144 160 181 191 195 200 205 210 211 214 208 206 195 187 191 196 200 201 159 109 78 68 63 63 75 98 126 153 185 206 210 206 207 214 219 222 222 216 209 204 197 187 159 144 126 111 96 84 77 71 66 59 50 44 36 30 27 26 26 22 21 21 19 19 20 19 18 20 20 17 17 19 16 15 15 16 17 19 19 18 17 16 16 18 29 41 46 54 50 40 36 36 36 35 35 36 36 40 46 43 40 39 40 37 34 35 43 45 35 35 36 34 33 33 35 35 35 37 36 39 49 61 67 72 86 115 132 132 124 115 108 105 101 109 106 91 94 96 99 100 105 102 101 112 115 102 89 89 91 91 93 91 93 92 89 84 81 73 - 74 71 61 53 51 54 63 73 77 77 76 75 75 74 74 78 83 81 78 75 72 70 67 65 59 53 57 60 64 65 65 64 58 46 45 49 52 52 47 46 51 55 54 49 45 44 38 39 39 42 45 50 48 43 44 49 50 49 43 42 40 41 47 52 57 60 62 59 50 42 40 48 64 53 31 29 29 30 31 27 23 21 21 21 21 21 20 20 25 54 80 111 138 156 177 191 197 202 209 212 216 218 212 205 195 186 189 195 206 207 164 115 79 70 65 65 77 98 126 153 180 197 202 197 199 207 210 215 219 216 210 200 193 176 153 137 117 98 86 78 73 66 62 58 52 43 34 31 29 29 29 24 22 21 18 18 18 18 20 20 20 17 17 19 15 15 15 16 17 18 19 18 18 17 16 18 31 45 53 59 57 49 46 44 40 40 36 37 40 42 44 46 47 44 45 42 40 37 40 46 48 49 45 34 36 38 39 36 35 42 43 47 54 55 60 63 71 79 86 95 98 98 101 97 95 100 93 91 91 92 98 98 101 102 102 112 115 106 95 94 94 92 90 90 92 92 87 83 79 75 - 79 72 57 50 52 62 72 82 82 78 76 75 77 78 79 86 86 84 79 75 72 70 66 62 55 50 52 57 62 65 65 64 59 50 46 50 52 52 53 53 57 59 56 50 43 44 44 44 41 41 45 49 47 42 44 46 46 42 39 38 34 35 42 50 56 60 60 57 48 42 40 50 63 44 29 28 30 31 29 23 22 21 21 21 21 21 20 20 22 45 73 104 132 154 176 192 198 203 206 212 218 216 206 201 194 187 184 197 213 216 172 119 80 71 66 68 81 102 116 144 165 190 193 194 197 205 212 215 218 214 206 198 190 163 147 129 108 89 80 73 65 61 58 56 49 38 32 27 25 28 29 27 24 21 18 18 18 20 20 20 18 17 17 16 16 15 16 16 17 17 19 18 19 19 16 20 43 68 75 76 75 71 69 67 67 68 69 68 66 63 61 65 66 61 60 60 57 54 49 56 61 64 57 41 45 47 43 36 41 46 45 47 55 52 52 56 61 63 68 73 79 80 90 85 85 84 80 83 88 90 87 83 87 94 95 102 106 104 98 97 88 82 80 80 84 87 82 82 82 73 - 79 67 45 41 42 53 72 81 79 76 74 74 75 75 74 77 82 81 78 74 71 69 63 55 48 48 48 56 61 64 64 63 61 56 50 50 48 48 51 59 59 59 53 46 42 44 45 45 40 40 44 48 47 42 45 44 45 42 39 36 35 34 40 48 57 60 60 57 49 45 44 53 58 38 24 23 27 26 23 21 21 21 21 21 21 21 20 18 21 36 67 99 133 154 178 193 198 201 203 207 210 207 197 194 188 181 187 197 216 220 170 121 88 75 71 69 77 99 118 144 172 186 189 193 199 205 210 214 213 209 200 193 181 157 140 122 108 88 76 69 60 59 54 50 43 37 33 30 28 25 28 26 25 21 18 19 20 20 20 19 17 16 17 16 16 16 16 17 17 17 17 18 19 18 17 20 54 82 82 82 79 79 79 76 80 89 101 103 88 84 85 101 101 89 83 83 81 79 76 75 75 74 74 71 70 68 64 63 67 68 66 68 73 70 67 65 67 71 73 76 76 78 88 86 82 79 76 76 79 84 82 76 76 80 82 86 89 88 85 86 82 77 75 75 77 80 80 80 83 73 - 61 51 39 36 36 36 60 72 73 72 70 70 71 70 66 65 68 70 71 72 71 68 61 51 48 50 50 58 63 64 62 59 59 58 56 49 48 52 55 59 59 55 48 43 42 42 43 42 41 40 42 44 45 46 47 42 42 42 39 34 32 32 38 46 52 57 57 50 46 44 45 48 43 29 22 23 23 22 21 21 21 21 20 21 21 21 21 18 20 32 61 90 130 154 171 190 197 198 200 200 200 197 190 188 160 159 166 198 220 211 156 116 97 80 73 70 75 88 118 144 166 184 186 190 194 198 200 200 201 198 192 185 164 152 137 120 105 86 74 68 62 60 57 49 41 39 38 33 31 28 25 23 22 21 19 19 20 20 20 18 17 17 18 19 16 16 16 17 17 17 17 19 19 19 16 19 32 59 65 72 76 71 65 61 59 74 92 103 100 94 94 104 105 103 92 86 82 82 84 86 85 88 91 94 92 88 87 84 85 89 92 90 98 100 94 94 88 87 87 89 93 103 115 107 95 86 89 89 85 88 86 88 87 82 84 88 92 92 84 84 86 87 84 80 82 90 91 85 85 78 - 43 42 37 35 34 34 50 68 70 70 69 69 69 68 64 60 61 61 66 67 69 66 60 53 50 51 53 60 67 65 59 59 60 61 61 56 53 55 57 55 51 47 44 43 42 43 42 41 41 43 43 43 44 47 47 42 42 43 40 34 31 31 36 46 50 52 53 47 44 46 43 42 38 23 22 22 21 21 21 21 21 20 20 21 21 21 21 20 21 31 56 82 124 151 167 189 193 195 197 196 195 191 171 155 143 145 165 198 217 199 146 113 99 82 74 70 73 79 100 136 158 164 173 181 187 190 191 192 193 191 183 163 157 148 131 111 98 81 72 66 61 59 55 44 35 34 36 33 31 29 28 24 22 21 19 18 19 20 18 18 19 19 18 19 17 17 16 17 17 17 17 17 17 17 16 18 20 34 42 53 59 52 48 47 47 64 75 86 92 94 86 92 97 90 85 78 77 79 81 85 86 88 89 92 100 109 109 107 100 100 100 99 104 105 109 109 109 102 99 107 120 127 127 116 112 107 116 115 106 106 107 107 100 86 83 79 80 89 86 83 94 106 103 95 100 115 115 100 91 80 - 40 41 38 34 33 33 43 63 69 71 70 70 67 65 61 59 58 56 61 65 66 65 61 55 50 52 54 56 67 67 62 60 62 63 63 62 53 51 55 55 51 46 44 46 42 43 43 44 44 46 45 42 44 47 47 45 46 44 40 38 34 32 36 49 52 51 51 44 44 46 40 38 36 21 21 21 21 20 21 21 20 21 20 20 21 21 20 19 20 24 46 75 117 146 161 178 189 192 194 194 192 178 155 136 119 130 160 197 209 193 146 116 95 76 72 68 64 68 83 128 151 158 162 163 172 183 187 187 187 182 163 156 149 139 120 101 86 76 67 61 57 52 47 40 34 32 31 31 30 28 28 26 23 21 20 17 18 19 18 18 19 18 17 19 17 17 18 16 16 19 17 17 16 16 16 17 20 30 36 37 35 37 40 42 43 46 52 63 70 73 72 74 79 75 71 67 66 69 71 73 75 75 74 74 77 89 100 100 100 100 97 96 95 92 96 105 109 112 115 123 130 139 139 130 120 117 120 119 115 107 97 87 79 75 74 69 69 75 78 74 83 104 106 103 108 109 108 96 84 69 - 40 41 39 34 33 33 39 58 68 71 70 69 67 66 61 60 61 56 56 61 66 64 60 56 49 53 55 59 68 70 67 63 62 64 63 59 51 51 56 56 53 50 46 46 43 42 44 44 45 48 48 44 42 45 46 47 46 42 40 45 41 34 41 48 49 44 42 42 43 43 37 35 30 21 21 21 21 20 20 20 18 20 20 20 21 20 19 19 20 22 37 70 107 135 151 160 175 188 191 193 190 163 145 127 115 132 162 200 208 192 150 117 90 75 69 68 65 64 79 129 155 164 166 163 165 178 182 179 169 162 155 144 136 128 112 88 76 68 61 56 50 46 42 40 36 33 29 29 29 28 29 26 24 22 20 17 17 19 18 18 19 17 16 16 17 18 17 17 17 19 17 16 16 16 16 17 20 26 32 30 29 32 34 34 36 39 39 43 46 51 54 59 62 57 54 49 47 45 44 46 51 54 53 54 58 65 66 66 72 79 85 89 84 83 83 90 104 106 115 124 127 133 138 132 116 108 109 104 86 73 67 64 61 61 64 66 64 62 61 61 68 79 93 106 123 121 106 93 82 68 - 38 41 36 34 34 33 39 59 68 70 70 69 67 67 64 61 60 57 55 61 64 63 59 56 49 54 57 60 68 70 70 67 66 63 63 60 50 50 54 55 53 50 47 44 43 42 43 43 44 47 49 47 42 42 44 44 45 45 40 48 48 41 43 47 49 44 42 42 43 40 35 34 27 21 21 21 21 20 20 20 18 20 21 20 20 19 19 18 20 22 34 64 89 120 137 152 161 179 189 190 184 157 140 119 115 142 178 212 214 194 153 119 88 77 74 72 71 67 72 127 165 189 189 163 161 163 164 165 163 155 147 134 122 120 106 79 69 62 58 53 48 44 40 37 33 32 30 29 30 29 28 25 24 22 18 17 19 19 18 18 17 16 15 16 19 20 19 18 18 19 18 17 17 16 16 17 20 25 32 27 27 30 31 32 35 38 38 38 39 43 45 48 48 44 42 39 36 36 33 34 35 40 40 37 39 46 46 42 45 61 69 76 75 74 73 77 84 89 101 106 107 105 104 110 105 89 80 72 67 63 61 52 49 60 61 61 57 49 47 48 59 65 72 98 129 129 95 79 72 60 - 38 38 35 35 35 33 37 56 69 74 72 69 68 66 62 60 58 55 57 63 64 60 54 51 49 51 56 58 63 65 68 71 71 65 63 61 56 50 55 59 55 50 47 48 45 46 42 44 50 50 48 46 48 50 46 45 43 45 45 49 49 46 46 46 50 48 46 44 42 41 40 36 29 21 21 21 21 21 21 20 18 21 21 21 20 19 18 17 18 21 33 58 76 96 122 142 155 164 172 172 161 147 132 109 106 139 190 217 217 201 157 123 91 76 72 72 69 65 63 111 181 194 185 158 158 156 159 164 159 153 140 124 111 99 85 74 66 60 57 51 46 47 38 34 32 31 31 31 32 29 28 26 27 23 18 17 16 17 17 17 17 19 16 15 16 19 20 20 20 20 19 19 19 17 17 17 19 21 29 30 29 30 30 30 33 34 37 41 39 37 40 44 43 38 39 37 36 37 34 32 32 38 40 36 36 39 39 35 36 43 46 56 63 66 69 71 71 73 82 84 82 80 79 82 82 73 67 65 64 64 58 49 55 60 58 52 46 45 46 45 56 60 55 71 89 87 69 60 57 47 - 38 38 36 35 34 33 37 51 64 73 73 69 67 65 62 59 56 53 55 60 62 60 53 51 51 52 56 55 57 58 63 68 69 65 61 62 59 52 56 59 56 56 54 53 48 44 44 49 55 55 50 48 54 55 48 44 43 45 48 49 47 45 44 45 49 48 46 46 45 44 43 39 29 21 21 21 21 21 21 21 21 23 22 21 20 18 18 15 17 20 31 50 66 79 107 133 144 153 156 157 151 141 125 92 83 122 186 212 214 194 146 97 72 65 63 62 58 57 53 88 158 194 187 165 159 156 154 150 150 144 129 117 106 87 76 68 62 56 52 46 41 42 37 34 31 31 33 32 31 29 28 27 28 24 18 17 17 17 17 17 17 19 17 16 15 16 17 19 18 20 20 19 17 17 17 17 18 20 28 34 30 29 32 34 33 34 37 41 42 37 36 37 39 35 35 38 41 41 37 36 35 34 34 36 40 39 35 37 40 43 40 41 48 54 62 67 66 68 73 71 69 70 67 63 66 63 65 66 64 64 58 53 59 59 51 49 45 46 47 41 53 57 50 53 63 61 45 37 44 41 - 38 38 36 34 34 34 38 43 50 66 75 72 66 65 65 63 60 53 56 58 60 61 57 52 52 56 54 57 59 55 55 61 64 63 62 63 63 55 57 61 61 60 57 50 46 47 48 53 56 55 52 51 55 52 47 43 45 46 46 45 43 40 41 44 48 47 47 49 46 44 41 37 31 22 21 21 21 20 20 20 20 23 23 21 20 18 17 15 15 18 24 44 62 75 99 123 132 140 143 142 139 139 128 88 67 82 138 166 178 145 97 68 54 46 43 40 41 43 42 75 145 190 186 173 160 154 147 142 141 132 117 104 89 81 74 65 61 56 49 44 40 39 37 35 33 33 33 32 30 30 32 30 27 22 20 18 17 17 16 16 17 17 17 16 15 15 15 17 18 19 18 18 17 16 17 17 18 20 28 34 29 29 32 35 35 36 39 41 42 38 37 36 33 32 32 35 39 40 36 38 40 35 33 35 40 38 36 41 41 41 41 43 46 50 56 63 64 65 67 66 68 69 64 59 60 61 62 64 61 56 56 58 61 58 46 48 55 55 47 40 47 54 53 47 49 51 41 37 47 46 - 37 38 38 35 36 36 39 39 40 57 75 75 68 65 67 66 63 57 57 59 60 61 58 56 53 55 56 57 59 57 54 55 58 59 57 62 63 59 58 62 63 62 57 53 48 50 52 54 56 56 56 53 51 49 46 45 46 46 45 43 40 40 43 46 50 49 50 48 43 42 40 38 35 24 21 21 23 21 18 18 18 21 21 19 18 19 17 15 14 17 21 38 59 72 90 108 118 131 132 130 136 143 147 130 76 60 75 103 101 75 55 44 35 31 25 25 31 32 34 65 120 162 186 184 162 150 140 139 132 123 110 90 79 72 68 65 58 51 49 45 40 38 35 36 34 33 32 32 31 32 33 31 23 22 21 20 19 17 16 16 17 18 19 16 15 14 15 16 19 20 18 17 17 16 16 16 18 20 26 33 30 29 30 34 38 38 38 37 37 35 36 37 34 31 31 33 34 39 39 38 40 39 34 33 34 33 34 41 40 37 37 40 42 46 53 59 61 60 62 60 62 63 61 58 60 61 61 64 62 49 57 62 62 61 46 48 55 56 53 40 45 54 52 47 47 48 44 40 48 48 - 35 35 36 35 34 34 39 35 35 49 69 75 72 70 69 67 63 59 56 56 58 57 57 59 57 55 55 56 59 57 54 54 55 53 53 59 63 60 61 63 63 62 61 57 49 50 56 57 56 56 54 53 50 45 44 45 47 45 44 43 42 43 46 50 52 49 47 45 43 41 39 36 35 24 21 22 23 21 20 18 18 18 19 17 17 18 19 19 15 16 21 36 56 67 79 93 109 117 121 130 149 157 172 193 152 85 60 60 59 44 34 33 25 23 25 27 25 29 35 64 104 145 178 172 155 137 135 138 120 112 100 80 72 69 65 63 57 51 47 43 41 38 33 34 34 33 31 31 33 33 32 29 25 22 21 20 20 17 15 16 19 19 17 17 16 15 15 16 19 20 20 18 18 16 16 16 17 18 22 28 30 29 29 32 33 34 35 34 34 34 36 35 36 32 31 33 34 35 35 38 40 40 33 29 31 33 37 41 42 41 38 37 40 44 51 54 57 54 56 55 55 56 57 55 60 60 60 62 59 49 58 62 56 52 45 52 51 52 55 45 44 49 49 46 45 46 46 47 55 49 - 34 33 33 31 32 34 35 34 34 46 61 71 73 70 69 66 64 61 59 58 56 54 55 59 59 57 56 57 58 57 56 57 54 54 54 54 57 58 60 60 62 63 62 56 51 49 54 54 52 51 51 50 44 44 46 48 53 55 49 48 46 47 50 52 52 50 48 47 44 40 38 37 37 24 21 22 23 23 20 19 18 18 18 17 17 17 18 17 16 17 20 34 52 62 72 82 93 105 111 130 149 165 199 209 217 192 106 53 31 27 29 28 23 25 30 32 30 32 44 68 101 138 148 145 138 122 114 111 97 89 85 75 68 66 62 62 57 50 47 44 38 38 33 33 35 35 31 31 32 33 32 27 26 24 21 19 17 16 14 15 15 16 17 16 15 16 16 17 18 20 20 20 19 19 16 15 16 18 22 31 31 31 32 34 33 34 36 35 35 35 37 37 38 35 31 31 33 33 32 31 34 34 32 29 31 35 40 42 46 48 44 41 47 54 59 56 52 51 53 55 51 49 51 48 54 54 50 56 59 53 59 60 57 51 45 47 50 54 55 54 54 51 50 45 46 50 51 52 56 52 - 33 33 31 31 33 35 33 33 35 43 47 68 73 71 70 66 64 63 63 60 56 54 55 60 57 56 59 57 57 58 55 57 56 54 53 49 52 54 57 60 63 66 63 58 51 49 51 51 51 51 53 53 49 48 52 51 54 57 55 52 51 51 50 50 51 49 48 47 45 40 37 40 38 24 21 21 23 21 20 20 20 18 18 19 19 19 18 19 19 18 20 32 49 59 69 77 83 86 94 116 140 163 207 215 225 225 191 111 55 25 25 26 24 29 32 33 36 43 58 73 103 126 121 114 108 98 93 88 80 77 77 74 68 64 60 58 56 51 47 43 37 38 33 33 33 32 32 31 31 32 30 25 23 22 20 18 17 16 15 14 15 15 16 16 16 16 19 18 18 18 19 18 18 16 15 15 16 18 21 32 34 38 39 39 40 40 42 42 41 38 38 39 40 41 37 34 33 35 33 31 31 32 32 32 34 39 42 44 47 48 48 49 55 60 60 58 51 46 45 42 40 43 45 44 48 50 50 55 59 56 56 55 56 56 45 45 52 58 60 62 67 61 54 50 55 58 54 52 56 52 - 34 35 32 33 35 34 34 33 33 38 42 67 75 74 70 65 65 64 63 61 57 58 60 63 58 56 59 57 54 53 51 52 54 55 50 49 54 55 60 63 64 66 63 59 50 50 51 51 52 55 56 53 53 52 49 50 56 57 55 52 49 48 47 48 48 50 49 47 45 42 38 41 35 21 21 21 21 21 21 21 21 18 20 21 20 19 18 19 19 18 21 29 46 58 68 76 80 81 85 101 126 155 194 210 222 225 206 162 86 47 31 31 29 34 38 39 48 58 68 78 90 100 96 93 83 77 80 78 76 76 74 74 68 65 60 56 54 53 49 44 37 37 37 34 33 32 33 33 32 31 29 25 23 22 20 18 19 19 16 16 16 16 16 15 16 17 19 19 20 18 18 18 17 17 16 16 16 18 21 33 35 39 39 39 43 47 48 48 45 44 44 41 41 41 41 38 36 38 36 35 36 34 34 36 38 41 42 40 43 44 45 42 49 56 52 48 42 41 40 40 40 42 43 45 50 53 54 53 55 59 57 54 54 60 51 49 57 60 63 66 68 65 61 58 59 59 58 53 54 49 - 35 34 33 35 36 35 35 33 33 35 42 63 75 74 69 64 65 65 64 63 61 61 62 63 60 58 58 55 51 51 53 52 55 58 57 57 57 56 63 63 61 62 59 51 47 47 51 50 50 52 54 52 52 51 49 52 56 56 53 50 46 45 46 49 50 53 52 48 44 45 43 40 34 21 21 21 21 21 21 21 21 20 20 22 21 20 18 17 16 19 20 23 37 56 68 76 77 80 83 92 111 134 166 192 198 205 196 178 112 67 46 44 41 46 51 53 60 67 72 75 77 75 73 73 68 64 70 75 76 77 78 76 69 66 62 56 55 54 52 46 41 42 40 38 36 33 33 32 32 30 28 25 23 23 20 19 18 19 19 19 17 16 16 16 16 18 20 19 20 19 18 18 19 17 17 17 17 18 21 34 36 37 36 37 41 43 42 45 46 46 46 41 38 41 39 38 38 39 41 41 41 35 32 35 40 40 37 33 33 39 38 35 41 47 45 41 41 41 43 43 44 43 45 49 47 48 52 51 52 59 60 57 60 60 54 53 59 60 62 71 71 71 65 62 58 56 54 51 49 45 - 35 35 34 34 38 35 34 35 35 36 43 61 75 74 68 64 65 65 65 63 62 60 62 63 60 59 58 52 52 53 53 51 56 58 56 55 53 52 58 58 56 57 56 50 49 50 49 51 48 48 50 51 51 50 53 56 57 56 51 47 44 45 49 52 52 54 52 49 46 45 45 43 36 25 22 21 21 21 18 18 20 21 21 23 22 21 20 17 15 15 18 21 33 53 69 75 77 81 80 82 90 100 123 144 156 189 205 194 128 79 69 64 61 60 61 60 64 71 70 70 68 66 61 59 55 58 70 77 78 82 85 81 74 69 64 59 55 50 49 50 45 44 38 36 38 34 32 31 31 29 29 25 23 23 20 19 19 18 18 18 17 17 16 17 17 17 20 19 17 17 17 19 20 20 18 19 19 19 21 31 34 39 39 36 37 38 37 37 39 37 39 38 38 40 37 37 38 40 41 39 34 27 27 31 34 34 32 31 31 32 32 33 38 47 46 44 44 47 49 50 48 50 50 48 47 48 52 56 61 61 61 63 65 62 54 57 57 57 59 66 71 64 59 53 46 45 43 43 43 36 - 34 35 34 34 39 35 33 38 38 39 40 58 75 75 68 65 66 65 62 62 61 59 58 59 58 55 53 48 48 52 52 51 56 57 54 52 50 50 56 57 56 57 56 53 54 54 53 52 50 49 50 50 51 54 56 58 59 57 52 49 46 44 47 51 54 54 51 49 44 41 44 45 41 27 22 22 22 21 18 19 20 20 21 23 24 21 21 20 17 15 17 20 30 48 64 72 77 84 80 76 77 73 76 92 123 142 158 162 138 106 86 76 68 64 64 62 63 67 65 62 58 54 48 49 59 68 77 81 82 83 86 82 74 68 65 63 58 49 48 50 48 41 37 35 38 35 33 30 30 28 29 26 21 21 20 19 19 18 18 18 17 17 18 18 17 17 16 16 15 15 16 17 19 18 18 19 19 19 20 26 35 39 35 33 33 38 48 44 40 36 35 36 39 42 39 39 37 40 41 36 33 29 27 31 32 34 34 32 33 33 32 33 41 46 51 54 56 57 56 54 51 57 59 55 56 58 62 66 68 63 65 67 66 60 54 55 57 57 57 58 58 53 45 35 34 40 40 37 40 34 - 33 33 33 34 39 35 32 35 39 39 39 54 72 74 66 65 67 66 61 61 60 60 56 54 53 51 52 50 53 57 52 54 54 55 51 50 52 52 57 57 56 57 54 56 52 51 53 53 51 52 53 54 54 53 54 58 59 57 51 50 47 44 46 49 52 52 51 46 39 41 43 44 42 30 23 21 21 21 20 21 21 21 21 23 24 22 21 21 19 16 17 20 25 41 62 72 78 86 87 77 72 63 46 46 61 65 72 82 94 92 78 67 59 56 56 54 51 51 51 44 37 33 33 48 71 84 86 86 86 86 86 81 74 69 66 63 59 52 48 50 46 42 38 35 36 33 31 30 27 28 28 22 18 19 18 17 18 18 20 19 18 19 19 19 19 16 14 14 14 14 15 15 17 18 18 18 19 18 18 23 36 38 33 33 33 41 49 49 42 36 34 35 40 42 38 40 41 45 45 42 41 36 33 34 38 39 37 36 38 37 37 38 44 50 60 64 62 62 61 60 58 59 61 65 64 64 67 68 68 66 67 65 62 60 56 57 58 58 50 47 49 48 37 33 33 39 40 37 41 37 - 33 33 33 34 39 34 32 34 36 42 44 55 73 74 68 65 67 64 60 60 60 59 57 55 51 51 54 52 59 59 53 53 54 56 56 51 52 54 57 57 55 55 56 57 52 48 48 48 52 54 54 54 54 54 52 56 57 57 53 50 48 45 46 47 48 46 45 43 38 41 41 41 41 35 25 22 21 21 21 21 21 21 22 22 24 22 21 20 17 17 17 19 21 32 58 71 78 87 95 91 75 64 43 36 36 41 41 44 59 67 63 54 42 37 37 35 33 33 33 33 33 33 46 68 85 89 90 90 88 87 87 84 73 69 64 60 59 57 51 49 44 43 39 36 37 32 30 29 28 25 23 21 20 18 17 16 17 19 20 20 18 19 19 18 16 16 15 15 14 14 14 15 17 19 19 18 19 19 18 22 33 38 37 37 36 41 46 43 40 37 34 38 40 41 38 39 45 49 49 47 43 40 40 37 41 42 39 40 43 43 44 46 50 57 63 64 64 62 65 66 64 61 64 71 66 65 68 68 66 64 62 62 61 61 58 57 55 47 37 36 43 46 39 35 37 40 40 38 41 41 - 35 35 35 35 34 34 33 35 36 45 51 58 72 74 69 66 65 62 60 61 61 56 56 53 52 54 53 55 59 58 54 57 57 58 59 57 57 57 58 58 55 55 56 54 53 51 50 52 51 53 54 49 50 51 49 50 53 54 50 50 50 47 46 46 42 37 38 37 39 40 37 37 41 38 25 21 21 21 21 21 20 21 23 22 24 23 20 18 16 15 17 18 20 23 48 67 79 93 102 109 100 83 75 83 109 112 88 78 73 67 55 47 47 43 41 37 36 37 39 44 53 65 76 85 88 91 93 93 90 87 86 81 71 66 62 58 56 56 53 50 42 40 39 37 35 31 30 28 28 25 24 25 21 19 17 16 17 19 20 20 18 19 19 17 16 16 16 16 15 14 14 15 17 20 20 19 19 19 18 21 28 36 40 41 40 41 44 43 42 38 38 41 41 42 44 44 47 46 44 41 41 43 44 42 40 42 41 45 52 50 50 51 53 58 62 64 65 65 70 72 70 65 64 71 67 65 65 65 62 59 60 61 62 61 56 49 42 35 35 37 42 48 47 45 46 44 38 36 39 39 - 38 39 37 34 34 34 34 36 39 46 50 59 69 70 67 66 62 60 61 62 60 54 54 53 53 56 56 58 59 59 58 59 59 58 59 57 55 55 55 55 49 47 46 48 50 49 49 52 52 54 52 48 48 49 47 47 46 47 48 52 52 49 49 47 42 37 38 37 39 40 37 37 41 35 25 21 21 21 21 18 18 22 24 24 24 21 20 16 15 15 19 20 20 21 35 60 76 101 112 117 129 123 132 163 191 166 158 158 149 121 88 88 86 75 68 65 61 63 64 67 72 82 86 87 88 90 93 93 91 88 85 77 69 66 62 56 53 49 49 48 41 39 39 39 35 31 29 24 25 26 25 25 21 18 17 16 17 18 19 18 19 18 19 18 17 17 17 17 16 15 15 15 17 19 20 20 18 18 18 20 25 40 39 41 41 40 40 40 42 43 44 42 41 45 49 47 43 41 40 40 44 44 44 44 43 46 46 48 52 50 53 51 48 57 60 62 65 66 70 72 71 64 64 66 65 62 63 61 60 59 57 59 60 55 47 37 34 34 34 35 37 45 48 45 46 46 37 36 40 40 - 37 40 39 34 33 34 34 36 41 46 52 62 69 70 66 64 62 60 61 62 61 58 57 57 57 57 58 58 57 58 56 58 57 57 58 55 54 52 51 51 44 40 39 42 46 45 46 48 50 53 51 51 52 50 48 47 44 42 46 48 47 47 49 47 44 43 43 42 41 43 45 42 41 33 23 23 23 21 20 20 20 22 24 22 21 20 18 17 15 15 16 20 19 18 27 47 67 84 104 114 129 138 159 204 204 167 150 146 142 119 104 110 110 86 76 69 67 67 68 73 81 86 89 89 90 90 91 91 89 86 82 72 64 63 59 55 50 46 44 48 45 41 39 37 35 30 25 24 28 27 24 22 20 17 17 19 19 18 19 20 19 18 20 19 19 18 19 17 17 16 16 16 17 17 20 20 18 17 18 20 23 36 37 40 39 37 37 37 40 42 44 46 48 51 51 50 46 45 44 42 45 45 44 48 44 47 52 47 48 49 53 49 48 54 57 63 66 64 66 67 67 66 65 64 62 62 61 59 58 54 47 45 42 42 38 35 37 41 37 38 37 42 46 45 45 44 45 40 38 40 - 36 40 37 33 32 33 35 39 44 49 57 63 67 67 65 63 61 61 62 63 64 63 61 62 60 57 56 58 58 56 56 59 58 57 57 54 52 53 49 46 43 42 39 42 46 45 45 48 46 46 48 49 53 53 49 44 42 41 41 43 44 45 47 49 49 49 49 49 45 47 52 49 49 35 23 24 26 24 21 21 20 21 24 22 20 18 17 20 18 17 16 16 16 18 22 32 52 69 80 96 114 134 158 191 186 155 130 101 86 79 73 72 71 67 63 58 55 56 61 67 74 84 86 87 87 87 87 87 86 82 77 70 64 60 58 55 49 43 42 46 46 43 38 33 31 30 28 28 28 28 24 21 18 17 16 20 20 19 20 21 21 20 20 19 19 19 19 17 17 17 20 17 16 16 18 19 19 19 18 20 21 32 38 38 41 43 46 46 45 46 44 47 49 50 48 50 50 49 47 45 45 45 43 48 47 48 52 51 51 48 51 51 50 52 56 63 66 64 62 61 62 64 65 64 60 57 58 53 46 40 36 36 34 35 33 33 39 41 41 44 44 47 54 55 55 55 53 41 39 44 - 35 38 34 32 32 32 34 40 48 54 57 60 64 66 67 67 64 66 65 62 64 64 62 62 59 55 57 61 62 61 58 59 57 55 58 57 53 53 52 47 45 47 45 47 48 47 48 45 41 41 45 43 43 46 41 37 41 42 40 44 48 45 45 47 50 50 50 50 50 47 54 55 55 37 24 27 25 24 22 21 20 21 24 21 18 17 20 20 20 19 18 15 15 16 20 22 36 54 66 80 92 113 140 157 158 149 132 94 69 59 46 41 43 41 37 41 45 53 58 62 67 72 76 80 85 86 83 83 84 76 70 66 63 58 54 52 46 41 42 45 44 40 34 30 30 30 31 28 24 26 23 21 18 18 18 18 19 18 20 21 20 20 20 20 20 18 17 16 16 17 20 17 16 17 18 18 19 19 18 20 21 32 42 43 44 44 47 47 45 45 48 51 50 51 49 48 47 47 47 45 43 43 42 50 51 47 51 54 55 49 48 46 45 48 53 59 62 60 60 57 51 51 54 56 52 50 46 40 36 33 32 32 32 33 33 35 38 38 39 46 51 53 57 56 50 50 46 39 42 47 - 35 35 31 31 32 33 35 40 46 50 52 56 62 64 66 66 62 65 64 63 63 60 61 59 56 55 58 60 62 60 56 57 54 55 59 59 52 52 49 46 46 49 52 51 47 46 45 42 41 44 47 44 41 41 40 37 38 40 41 45 48 45 45 48 47 49 49 50 50 47 48 50 53 36 27 27 23 23 22 21 18 20 22 22 20 18 18 20 20 18 16 15 15 15 17 20 26 38 50 68 80 96 116 145 150 145 136 103 73 60 46 41 42 37 39 43 50 58 59 64 68 74 78 81 84 85 81 78 77 70 65 61 58 52 48 46 45 41 41 44 42 37 32 30 30 30 31 26 24 26 24 21 21 20 20 19 18 18 20 21 21 21 20 20 20 18 16 16 15 15 15 16 19 19 19 20 19 19 20 21 21 35 52 53 49 44 43 42 41 41 51 55 55 55 53 53 50 47 49 47 45 45 42 46 44 43 45 48 55 48 45 45 44 44 47 49 46 45 48 47 42 39 40 44 45 42 37 33 33 33 32 31 31 34 36 36 37 38 35 48 59 60 60 56 48 48 44 41 46 47 - 35 35 31 30 31 34 38 41 43 43 46 47 52 60 62 61 59 60 60 60 60 55 54 54 56 54 57 55 55 55 51 51 51 52 56 56 51 46 45 47 47 52 51 50 51 48 48 44 41 46 47 47 44 44 44 42 42 39 40 44 47 46 46 48 47 46 46 49 50 46 47 46 44 33 25 27 24 23 21 21 18 20 21 21 20 20 18 18 19 18 17 16 16 16 16 17 20 26 35 58 72 83 94 125 139 140 137 125 109 86 71 67 66 59 62 63 64 66 72 76 81 83 82 80 77 79 79 77 73 65 58 56 51 49 46 44 43 41 43 43 42 38 33 30 30 30 28 25 24 26 23 21 21 21 21 19 18 18 20 21 21 20 20 20 19 17 16 15 15 15 15 15 16 17 18 20 19 20 20 21 20 34 53 53 47 41 41 41 41 43 49 55 53 53 55 57 57 51 53 54 51 44 42 45 43 44 43 39 46 49 49 48 48 42 43 45 40 40 40 40 37 35 33 35 38 39 36 31 31 34 33 32 34 37 37 35 37 38 35 47 61 63 64 60 53 52 47 43 46 44 - 35 33 30 30 31 33 38 40 40 40 40 39 42 53 55 55 58 60 57 57 57 53 51 50 50 50 53 53 51 51 50 48 48 48 54 51 48 43 43 44 46 48 44 47 51 49 49 45 42 47 46 46 47 45 44 46 47 44 42 45 45 44 46 47 47 46 45 47 49 46 50 51 49 36 23 24 24 24 22 21 20 20 20 20 20 20 19 19 19 19 18 19 20 18 16 15 17 20 22 40 60 71 86 115 135 137 141 152 155 144 124 116 114 103 92 87 79 79 88 89 84 82 83 82 77 76 77 76 72 64 56 49 47 46 43 42 41 40 40 40 41 41 38 32 30 29 29 26 24 24 26 22 21 21 20 19 20 21 21 21 21 18 18 18 19 18 16 16 16 18 16 16 16 16 17 19 18 18 20 20 18 31 47 49 46 41 41 41 41 41 46 52 53 55 56 60 60 56 57 60 56 43 42 46 46 43 43 39 45 51 51 46 43 42 45 47 43 41 41 41 37 35 31 31 33 38 35 31 32 34 33 34 40 41 37 35 37 42 42 48 59 64 68 64 56 54 47 42 42 43 - 34 33 32 31 32 33 39 40 38 39 38 38 38 47 51 50 55 59 58 58 60 58 58 56 51 51 53 53 52 52 52 50 48 48 50 46 46 45 45 44 44 45 41 41 51 51 49 48 46 47 45 45 49 48 47 47 47 48 47 49 47 45 46 51 47 45 45 47 48 47 49 53 54 40 23 23 23 23 23 23 21 18 18 17 18 19 19 20 19 19 19 20 20 19 16 15 15 16 20 27 40 59 79 110 127 141 159 191 201 198 193 186 165 151 136 118 98 94 101 94 83 81 86 86 79 74 75 74 67 59 51 46 45 45 42 39 39 36 34 34 35 36 35 31 30 28 29 26 23 26 26 22 20 18 18 18 20 21 21 21 21 18 19 18 19 18 19 17 17 19 18 19 19 16 17 19 19 18 18 20 18 30 41 46 50 48 44 46 45 43 50 54 55 57 57 60 56 55 59 60 58 47 46 54 51 47 52 47 45 47 45 44 46 49 51 50 48 48 46 47 37 34 35 33 33 34 36 34 38 41 37 37 46 48 44 47 50 50 52 56 59 63 68 67 62 56 52 46 44 43 - 35 35 38 34 33 33 33 34 37 39 37 35 35 40 49 52 57 59 60 60 63 63 63 62 58 54 55 55 56 55 56 55 52 51 53 49 48 47 45 46 48 47 44 41 46 49 50 50 50 51 54 57 57 58 59 59 57 57 56 57 58 59 58 61 60 57 58 58 55 57 57 60 60 45 23 23 24 24 23 26 25 21 18 17 17 20 20 20 19 18 19 20 20 18 16 15 14 15 18 21 27 40 64 84 108 138 182 217 224 213 207 203 201 182 153 133 110 102 99 91 83 77 82 80 74 74 70 66 59 50 45 40 43 41 39 38 36 35 34 35 34 33 32 30 30 28 26 23 23 26 26 22 20 18 17 20 20 20 20 20 21 20 18 18 19 19 19 18 18 18 20 19 18 16 16 17 19 17 17 18 20 30 41 51 55 52 52 49 45 48 53 53 54 55 56 53 53 54 57 56 49 45 50 54 47 45 52 51 46 44 47 52 52 56 59 52 51 54 48 46 39 39 45 48 41 36 42 43 44 42 37 46 54 51 53 58 60 60 59 62 65 65 70 71 64 55 57 51 46 43 - 36 36 38 36 34 31 30 31 34 36 34 33 33 37 45 54 57 57 59 60 61 61 60 63 60 56 55 57 57 57 53 51 53 54 54 53 52 50 48 50 52 51 47 43 44 47 47 48 49 54 60 62 62 61 61 62 62 61 61 62 63 65 67 68 68 67 68 71 68 67 68 69 69 55 31 26 26 27 24 23 24 21 20 18 18 19 21 21 20 18 18 20 18 16 15 15 15 16 17 21 21 24 42 67 88 130 167 211 224 213 211 214 209 194 161 139 114 102 92 87 82 77 78 75 71 69 66 61 52 48 43 37 39 39 38 36 35 41 38 36 35 31 29 29 30 29 25 24 26 26 26 23 20 18 18 19 20 20 20 21 21 20 18 17 17 17 18 19 19 18 20 20 18 17 16 19 19 17 17 17 20 31 44 54 57 57 57 56 53 51 50 50 53 56 56 58 59 58 57 52 45 45 51 50 42 41 47 48 45 44 48 52 51 57 59 57 56 57 55 52 50 54 58 63 56 47 54 59 55 51 50 55 55 53 57 56 57 60 56 60 65 65 70 71 66 61 58 56 48 43 - 33 33 33 34 33 31 30 30 30 32 31 31 31 32 36 45 49 51 54 57 58 59 57 58 56 52 51 57 57 51 48 47 50 53 53 50 48 49 52 52 47 49 51 44 43 45 46 46 47 54 59 62 62 61 58 60 61 57 58 59 62 63 66 68 66 64 65 68 71 71 71 70 69 58 32 27 27 26 23 22 23 21 20 20 20 20 20 20 20 20 20 20 18 16 15 16 19 17 17 19 18 20 25 43 69 107 149 182 194 201 217 217 201 165 148 131 113 99 91 87 82 76 74 75 67 62 60 56 48 44 43 38 36 37 37 38 38 41 38 34 32 30 27 28 30 29 24 24 26 24 24 23 20 18 20 20 20 20 20 21 20 19 20 16 16 16 17 18 18 20 20 20 20 17 17 16 17 16 17 17 20 29 41 48 56 56 57 59 59 57 53 51 55 60 61 63 63 59 55 51 48 49 53 49 42 42 47 50 48 44 44 47 47 49 52 55 57 57 59 59 54 59 63 63 61 56 59 59 59 57 57 57 53 54 55 50 48 49 50 54 62 64 65 67 68 66 62 58 54 45 - 31 31 31 33 33 30 29 30 30 29 29 30 30 29 27 32 39 47 49 53 61 62 58 54 50 50 49 53 53 49 47 46 49 50 51 48 43 44 45 45 43 48 51 46 46 48 49 46 44 51 52 55 56 58 53 54 55 52 51 53 53 56 59 62 61 58 56 55 60 62 63 61 63 55 32 24 24 23 22 21 23 21 20 20 21 21 20 21 21 21 21 21 19 16 15 17 19 16 16 16 17 18 20 25 45 72 101 138 155 165 195 196 182 154 137 119 106 94 88 82 78 73 69 66 60 55 53 49 44 41 41 36 35 35 39 41 38 38 35 34 31 30 27 28 28 28 25 24 25 26 27 22 21 21 21 21 19 18 19 19 19 18 19 17 16 16 16 17 19 20 20 19 19 18 18 17 17 17 17 18 20 28 37 46 55 57 58 57 56 57 57 55 53 62 66 62 61 57 54 51 53 53 50 51 48 48 55 54 51 48 46 45 45 45 48 52 51 48 48 51 47 50 60 59 60 60 58 57 55 54 54 55 55 51 49 50 47 48 51 54 60 61 58 59 63 64 60 55 50 43 - 30 30 31 35 33 27 25 29 30 28 27 28 30 29 25 25 32 41 46 52 61 62 58 53 52 50 49 49 48 46 46 46 48 51 51 47 42 43 41 41 41 44 46 46 46 47 47 47 44 47 49 48 46 44 43 44 47 47 45 45 46 47 49 53 53 54 50 48 47 47 51 55 60 55 34 27 23 22 21 20 21 22 21 21 21 21 21 21 21 21 21 21 20 17 16 19 18 17 15 15 16 16 18 21 31 44 67 95 123 134 144 149 145 141 127 103 89 85 82 76 71 66 62 58 50 48 46 47 44 42 42 37 35 39 41 36 33 34 33 33 31 30 29 28 28 24 25 26 28 28 26 22 21 21 20 19 18 17 17 16 17 18 18 18 20 17 16 16 18 20 20 18 18 20 19 19 19 17 16 18 20 30 43 49 52 57 58 54 53 57 58 56 53 61 65 64 63 60 59 57 57 57 50 50 49 51 57 56 50 52 51 47 49 51 53 53 49 50 50 48 47 47 51 52 53 51 51 52 53 53 55 56 55 50 50 47 44 46 52 51 56 57 54 53 55 52 47 42 42 40 - 29 30 30 35 34 25 25 27 28 27 28 27 29 30 27 26 27 33 41 52 62 62 58 53 52 51 52 51 50 47 48 48 48 50 53 50 48 46 41 42 41 43 47 46 47 49 47 47 47 47 52 53 47 43 42 44 49 50 45 47 46 46 47 50 53 54 54 53 50 48 49 55 62 63 42 25 24 23 21 18 21 22 22 21 21 21 21 20 20 18 20 21 20 18 18 19 19 17 16 16 16 19 17 18 22 31 43 66 82 101 115 110 106 99 90 82 75 73 70 67 62 55 51 47 43 41 40 43 41 38 39 37 40 40 38 32 29 30 31 31 30 30 27 28 28 24 27 30 31 28 28 23 21 18 20 19 18 16 16 16 17 19 20 19 20 17 17 15 17 20 20 19 18 20 20 18 19 17 16 17 20 30 42 46 47 53 56 52 53 58 57 53 53 57 61 62 63 59 57 59 60 60 57 53 52 52 57 54 52 58 58 49 48 49 53 56 53 53 54 55 58 56 55 53 51 48 52 47 43 43 46 54 53 45 47 42 39 42 47 53 61 59 54 53 54 44 41 40 40 38 - 28 29 32 36 33 28 28 29 28 25 28 29 30 30 28 25 25 29 35 48 62 62 56 55 54 52 54 55 56 52 52 53 50 48 54 55 52 46 41 43 41 46 51 48 50 50 47 47 50 50 52 53 53 51 49 52 58 60 54 54 56 57 59 62 63 64 67 67 64 60 62 64 68 69 53 25 24 23 20 18 21 22 22 21 21 20 19 18 18 20 21 21 20 19 20 20 19 17 19 17 17 19 17 17 20 23 31 42 61 71 83 84 77 74 71 67 64 62 57 52 47 44 43 42 41 39 38 39 38 38 38 37 37 34 32 30 25 28 29 29 28 27 25 25 30 30 31 31 30 30 31 26 22 18 19 20 19 17 17 19 17 18 20 18 18 19 19 17 18 21 21 20 19 19 18 19 18 16 15 16 20 30 39 43 47 48 52 54 51 54 52 46 46 50 51 54 58 54 49 53 55 56 55 53 49 49 54 56 55 58 56 52 49 47 53 56 55 54 50 54 59 61 63 60 54 48 51 50 46 44 40 42 45 45 49 43 39 40 46 58 68 66 63 63 62 53 44 40 39 36 - 29 30 32 36 31 29 29 28 27 25 30 31 30 30 28 26 26 29 33 45 59 62 59 59 56 54 59 61 61 60 58 57 57 54 57 56 50 50 48 45 44 49 51 50 50 47 46 48 52 52 49 49 58 57 55 58 63 63 63 64 63 63 66 69 70 70 71 73 71 68 70 70 73 73 64 35 24 21 21 21 22 21 21 21 20 20 17 16 19 21 21 21 21 20 19 19 16 17 19 19 19 19 17 16 18 20 22 27 36 45 58 63 59 56 55 52 48 49 45 42 41 41 41 37 37 39 38 39 38 41 42 37 34 33 31 27 25 26 27 27 28 26 25 27 34 34 33 32 29 29 32 28 21 18 18 20 20 19 18 20 18 18 20 18 17 18 19 18 20 20 20 21 20 19 20 20 18 16 15 17 20 27 38 47 47 43 47 47 46 43 40 36 37 42 41 41 44 44 46 47 43 47 48 47 43 44 50 54 55 54 47 45 48 46 51 52 51 46 37 42 50 57 63 63 58 50 48 51 49 49 43 40 44 51 51 50 43 44 58 68 72 72 70 67 65 58 49 40 39 37 - 30 30 29 31 29 29 29 29 29 33 34 32 33 32 27 26 25 29 35 47 55 57 61 62 58 56 59 62 62 61 60 58 58 58 57 52 48 49 47 46 47 51 50 50 49 44 44 47 49 50 49 52 58 57 55 57 62 60 62 64 62 62 64 67 70 71 73 78 78 75 76 76 76 76 71 47 21 21 22 23 23 21 20 21 20 20 17 17 18 20 20 20 21 20 18 17 15 15 16 17 17 17 16 15 17 18 18 20 23 31 34 39 40 39 39 42 37 42 43 41 42 38 34 32 34 39 38 37 38 42 42 38 35 34 30 27 25 26 28 28 26 25 28 29 35 36 33 31 30 30 32 26 21 18 18 20 20 19 19 20 18 19 20 19 18 19 19 20 21 21 21 21 21 20 20 20 18 16 15 16 20 25 39 47 43 37 37 42 43 39 32 33 36 38 38 38 38 37 45 45 39 42 44 42 42 40 46 47 49 47 37 34 38 42 44 42 39 33 29 37 46 51 53 54 53 49 44 43 42 44 39 39 44 45 46 44 40 44 58 64 68 71 72 72 68 63 59 54 52 44 - 30 30 29 29 29 30 31 31 33 36 35 31 33 33 28 28 25 28 34 42 43 50 59 62 59 54 55 58 60 58 57 56 55 52 51 49 44 43 41 44 41 45 45 46 46 45 43 44 44 46 48 53 57 53 51 52 54 52 49 53 55 53 57 63 65 68 70 74 75 74 74 76 76 74 71 53 21 21 21 21 22 21 20 20 20 20 18 18 20 20 20 20 21 20 18 17 16 15 15 16 17 17 16 16 16 18 18 18 20 22 24 28 31 32 33 36 35 39 40 37 35 33 32 31 32 34 34 35 35 32 31 32 32 31 31 30 28 29 26 28 25 26 30 32 36 35 31 31 31 30 31 26 21 20 20 20 18 17 18 20 19 20 20 18 18 19 20 21 21 21 22 22 21 21 21 20 18 19 16 17 20 24 33 40 41 38 42 43 42 39 33 32 38 38 38 36 37 37 45 44 38 41 37 34 37 38 39 36 37 38 35 32 32 33 39 40 38 32 29 38 49 46 39 42 44 45 43 39 35 33 32 33 35 33 38 44 40 44 48 45 55 64 71 71 68 63 59 57 54 45 - 29 30 28 29 28 31 32 33 36 36 31 27 29 30 29 27 25 25 27 31 34 44 56 59 56 53 52 53 56 57 57 53 51 49 48 46 42 41 43 40 37 40 44 44 46 46 44 45 44 44 48 56 54 48 46 46 49 47 45 45 47 48 48 55 56 60 63 64 68 68 68 72 74 73 69 55 21 20 21 21 21 21 21 21 20 20 20 18 21 21 21 20 21 21 20 20 19 17 17 16 16 19 19 16 15 16 16 16 17 18 20 21 24 25 27 30 31 32 33 32 31 31 33 32 30 30 30 31 30 25 25 30 31 30 32 30 28 29 28 26 25 27 32 35 36 33 30 30 30 30 29 26 22 20 20 20 17 17 17 19 18 19 18 17 17 19 20 20 21 21 21 21 21 21 20 19 19 17 16 17 20 23 31 36 38 40 41 42 40 40 38 34 37 37 36 38 39 37 39 39 36 36 32 32 34 38 36 34 34 39 39 31 30 32 38 42 39 33 33 40 41 35 31 32 35 37 35 33 30 25 25 28 25 25 36 45 47 49 47 43 43 53 59 62 62 57 54 53 51 46 - 28 27 27 29 27 30 33 35 36 35 29 27 27 28 29 29 28 24 24 29 33 44 55 57 53 54 54 53 53 53 52 50 47 47 48 48 44 44 44 41 37 41 46 47 50 51 49 51 50 50 56 63 61 54 54 58 58 55 52 56 58 62 62 64 65 66 66 68 73 73 73 76 78 74 70 61 27 20 21 21 21 21 21 21 18 20 19 18 20 20 21 20 20 19 18 20 20 19 20 17 16 16 15 15 14 15 14 15 15 15 18 20 23 25 25 28 25 28 30 30 29 28 32 32 27 28 28 28 28 25 26 28 29 30 32 29 28 29 28 26 25 27 30 33 36 36 30 30 32 33 32 27 23 21 21 20 18 17 19 16 17 17 19 16 16 17 17 18 20 21 21 20 20 21 20 20 18 17 16 18 21 23 30 35 37 40 38 36 36 37 40 36 38 37 40 41 41 37 37 38 36 36 33 33 34 38 40 35 35 37 36 32 30 31 36 42 39 36 36 39 34 31 29 29 30 30 31 30 27 24 25 28 28 31 38 45 49 51 51 45 44 44 44 47 49 47 52 57 57 49 - 28 27 28 28 25 28 33 34 34 32 27 29 28 29 29 31 31 24 25 30 37 43 49 56 57 58 58 57 57 56 57 59 58 58 57 56 54 54 52 52 53 53 57 58 58 62 63 65 64 65 68 72 72 68 66 67 68 68 68 70 72 76 75 74 74 74 76 78 78 78 75 78 83 79 73 69 43 21 21 21 21 21 20 19 19 18 18 18 19 18 21 21 20 18 20 21 20 19 20 19 16 15 15 14 14 14 14 14 15 15 17 20 25 30 30 29 25 28 30 27 25 24 28 29 27 27 27 28 29 28 27 26 27 30 30 30 27 27 26 25 28 31 30 32 38 36 32 34 36 36 35 30 28 21 21 20 19 18 19 16 17 19 19 17 16 16 17 18 20 21 21 21 20 19 18 20 17 16 16 18 20 22 26 30 33 39 41 36 36 36 38 36 39 45 46 44 43 43 40 43 41 39 42 40 37 37 40 36 35 37 34 33 31 31 34 34 38 41 36 35 33 31 29 29 30 30 29 28 26 24 25 28 31 34 41 40 41 48 50 45 42 37 35 36 41 37 54 60 60 48 - 28 30 29 26 25 29 30 31 30 29 27 29 29 28 27 30 31 30 29 31 40 43 47 55 58 62 64 66 64 63 63 66 67 67 63 62 62 62 62 62 62 62 64 64 64 64 66 68 68 68 69 70 73 74 72 70 74 76 76 76 82 82 78 77 77 77 79 82 82 73 72 78 83 82 78 72 54 25 21 21 21 20 19 19 18 19 19 18 20 20 20 19 18 18 21 21 20 19 18 18 16 15 15 15 15 14 14 14 15 19 18 18 26 33 34 33 32 32 30 27 25 24 26 29 28 29 29 30 30 31 31 30 31 32 31 31 30 29 26 26 30 31 31 32 36 38 37 39 38 35 34 32 30 21 18 19 19 19 16 16 19 20 19 16 17 20 19 19 20 20 20 20 18 18 19 19 17 15 16 17 20 22 26 29 32 35 40 41 40 43 45 41 41 44 46 45 43 43 42 43 41 43 45 45 40 36 37 35 35 36 35 33 32 31 32 33 35 41 34 33 32 30 27 29 30 30 29 29 28 28 29 27 29 32 38 36 32 37 46 42 40 37 35 38 37 35 48 57 57 50 - 25 30 29 28 25 25 27 29 31 27 27 28 28 28 27 30 34 33 31 31 33 38 42 52 57 62 68 68 68 64 64 67 67 66 63 62 62 62 61 61 62 62 63 63 62 61 59 61 62 64 62 63 66 70 68 66 71 75 77 77 77 79 78 77 76 76 78 81 81 73 72 77 78 76 74 70 61 33 21 21 20 18 18 20 20 18 20 20 21 21 19 18 16 17 20 21 20 19 18 17 16 15 15 20 20 16 14 14 15 19 18 20 30 41 45 41 36 35 32 27 28 26 25 28 30 30 29 30 29 32 32 31 33 34 31 31 33 31 25 25 30 32 32 32 35 40 41 39 34 32 33 32 27 21 19 18 18 20 17 17 20 20 18 16 17 19 20 20 20 20 20 21 19 18 17 16 15 15 16 17 20 23 31 36 38 37 37 42 44 45 43 39 39 38 38 40 39 42 41 41 40 42 44 42 37 36 36 36 36 36 37 35 34 34 35 34 33 34 33 31 30 30 31 27 30 31 30 28 29 32 34 30 30 27 29 30 30 36 41 40 47 46 42 43 40 35 48 53 54 54 - 25 26 25 26 25 25 26 28 29 26 29 29 27 28 28 32 34 31 29 29 29 27 31 46 53 57 62 63 62 60 60 63 61 57 58 57 58 58 58 58 58 60 60 58 55 54 54 55 55 59 61 58 58 64 66 67 72 77 78 81 79 77 79 81 80 78 78 77 75 72 72 74 76 77 74 70 65 45 22 21 20 18 18 20 21 20 20 18 20 20 19 18 16 17 18 20 20 19 17 17 16 16 15 16 17 16 15 14 15 16 19 20 29 47 55 51 43 42 39 32 30 30 29 29 30 30 29 30 29 31 32 31 33 34 31 32 32 33 32 31 33 35 34 35 38 41 38 36 33 31 31 29 24 21 20 18 18 20 20 17 17 16 17 19 17 18 18 19 20 21 21 20 20 18 17 17 16 15 16 19 21 23 31 35 38 37 37 39 41 41 37 34 36 35 36 37 39 42 39 40 40 42 42 38 39 40 40 39 37 38 38 38 38 37 45 40 34 37 34 32 30 32 32 29 30 34 32 30 29 31 34 33 33 27 27 30 33 40 39 39 41 48 48 48 44 41 47 52 60 60 - 25 26 25 25 28 29 26 26 26 27 30 30 28 27 29 29 30 28 26 27 28 26 25 43 53 54 55 55 54 54 54 56 52 50 54 54 55 54 54 54 54 57 58 56 54 54 55 60 60 61 64 65 68 70 71 73 74 78 81 81 79 78 81 88 88 80 79 78 72 72 72 73 74 76 75 73 72 64 35 21 20 18 19 21 21 21 21 18 20 20 20 20 19 17 19 20 19 18 17 17 16 16 15 15 16 15 14 13 14 16 19 20 25 47 60 59 50 46 43 34 33 33 33 33 33 32 30 32 31 32 33 32 32 32 34 35 34 34 36 35 35 37 40 41 42 40 36 35 33 31 31 29 22 20 20 17 18 20 20 19 17 16 17 19 18 19 18 18 20 21 21 18 18 19 18 20 19 18 18 18 20 22 29 32 34 36 38 38 36 36 34 34 34 34 35 38 42 40 33 34 34 35 36 36 38 40 38 35 34 36 37 37 38 38 47 47 46 41 36 35 32 31 30 29 30 32 34 36 32 32 35 35 34 32 31 36 40 42 43 40 39 44 48 46 44 44 47 51 63 63 - 30 29 29 30 30 30 27 26 26 26 28 28 27 27 28 27 30 27 26 27 28 27 25 42 52 56 59 59 54 52 53 51 50 52 55 55 58 59 57 57 57 60 63 63 62 62 64 66 66 66 69 71 74 75 75 75 75 76 78 77 74 75 81 88 84 77 77 76 74 73 75 74 73 73 71 70 71 67 48 24 20 20 20 20 20 21 21 20 21 20 18 20 19 19 18 19 18 18 17 16 16 17 15 15 15 14 14 14 15 19 19 18 24 46 60 62 56 50 46 40 39 38 38 38 39 35 33 32 32 32 35 34 32 32 38 38 36 37 39 37 38 38 38 42 43 42 36 35 33 32 30 28 22 18 18 17 18 20 20 18 18 19 19 19 18 20 20 19 20 20 20 19 18 19 19 20 21 21 19 19 20 23 31 32 32 36 43 41 38 38 35 36 36 35 39 40 39 35 32 32 33 33 35 33 33 36 34 31 31 35 36 37 40 39 43 49 52 46 37 38 35 32 29 29 31 32 33 39 35 34 36 37 42 43 42 45 48 48 49 45 44 46 46 41 44 51 52 49 61 59 - 30 31 32 36 35 34 32 31 30 29 27 27 27 29 27 27 29 28 28 28 29 31 33 45 53 54 56 56 54 55 56 58 60 61 63 64 65 67 66 64 63 66 71 71 67 68 70 70 70 71 72 73 74 74 73 73 72 72 73 73 73 73 76 79 79 79 78 77 78 75 75 78 78 74 73 72 73 70 61 36 21 20 21 20 18 21 22 22 22 21 18 20 20 20 18 19 19 17 17 16 16 16 15 15 14 14 14 15 16 16 17 18 22 43 60 63 61 58 55 48 44 42 43 44 40 37 35 34 32 32 35 34 33 33 36 37 38 39 40 40 43 44 42 42 45 47 42 37 35 32 31 24 20 18 18 18 19 20 21 20 19 19 19 16 17 19 19 18 18 18 19 20 18 17 17 18 21 20 18 17 18 22 33 32 32 36 45 44 39 41 41 42 46 46 49 52 54 53 47 49 47 44 44 37 35 40 43 39 35 41 42 47 52 46 49 51 53 54 47 48 41 36 36 36 39 38 40 45 43 43 45 46 49 51 51 53 52 52 52 45 45 46 44 39 44 54 54 50 58 53 - 32 34 38 41 42 42 42 42 41 39 32 30 30 29 27 27 27 27 30 30 33 38 46 58 57 53 52 53 53 58 60 63 65 67 68 69 69 67 66 66 64 65 67 68 68 70 69 69 69 71 73 74 75 77 77 75 73 72 72 73 73 74 76 78 81 82 81 81 78 74 75 76 76 72 73 74 74 72 67 46 21 20 21 20 18 21 23 23 21 21 20 20 21 20 20 21 20 17 16 16 16 15 15 14 14 14 15 15 16 16 15 16 18 34 56 63 64 63 61 55 50 49 48 47 44 44 41 39 37 34 36 36 35 35 36 39 40 42 42 41 46 49 49 49 50 53 49 43 39 33 31 23 20 21 20 18 20 21 21 21 20 19 18 17 17 17 19 19 18 18 18 18 18 17 17 18 20 19 17 16 18 20 31 38 37 38 44 45 46 46 49 51 57 59 64 69 75 76 73 72 67 62 60 59 59 60 61 59 54 53 53 58 60 56 56 57 58 59 57 59 54 50 50 46 50 52 52 54 57 58 55 55 55 55 55 55 50 45 45 45 45 45 39 39 47 51 50 54 63 57 - 35 41 45 47 49 50 52 53 52 48 37 36 33 32 31 31 33 34 35 37 43 50 56 59 57 53 54 55 58 61 64 66 67 71 71 70 70 67 66 65 65 68 69 69 69 70 70 70 70 73 74 75 77 79 79 78 75 74 72 73 74 76 77 80 82 84 82 82 77 75 74 72 72 72 73 73 73 69 63 53 25 20 20 20 20 21 21 21 18 18 20 21 20 20 21 21 20 17 16 15 16 15 15 15 15 15 16 16 16 15 15 16 18 31 53 65 68 68 65 61 59 56 52 50 48 46 45 49 42 37 38 38 37 36 38 40 42 43 43 45 51 53 51 52 51 53 52 47 40 35 32 23 20 21 21 20 21 21 21 21 21 20 20 19 17 17 17 19 16 16 16 17 19 19 19 18 19 18 17 17 19 20 26 40 42 44 47 50 55 56 56 57 63 67 71 76 83 83 82 78 70 66 63 64 68 71 70 66 63 62 60 64 66 66 65 66 66 61 61 63 63 64 65 62 60 63 63 62 62 66 67 69 73 73 71 68 63 55 55 51 48 46 44 46 52 55 62 65 76 72 - 45 52 56 57 57 55 55 54 54 51 48 47 42 38 36 35 38 43 46 50 58 63 62 62 61 60 60 62 65 66 66 67 69 72 72 70 68 68 67 66 68 70 70 70 70 70 70 71 71 73 74 75 76 77 77 76 74 74 75 76 77 78 81 84 85 84 80 77 73 73 75 73 72 71 73 73 70 65 61 52 24 20 21 20 20 20 20 18 18 20 20 21 21 20 21 21 18 17 17 16 16 19 17 16 19 19 17 17 16 16 15 16 20 24 45 67 72 71 69 64 62 60 57 55 51 47 50 47 42 37 37 38 36 38 39 37 40 45 47 48 53 54 54 55 55 56 54 50 42 37 32 22 21 22 21 20 21 20 20 21 21 21 21 21 20 18 17 16 16 16 16 16 17 18 18 20 19 19 19 20 19 18 21 32 39 41 47 53 60 60 58 62 68 69 72 79 76 74 74 72 66 65 64 64 70 72 72 70 66 66 66 70 74 77 86 91 78 69 66 63 63 65 67 67 64 68 67 67 65 71 76 82 98 98 92 92 83 79 76 64 57 56 56 58 59 59 60 61 73 76 - 56 59 62 60 59 57 57 54 56 57 56 54 47 43 44 45 48 51 56 58 61 63 62 63 63 61 61 63 64 64 64 66 65 67 70 69 67 67 67 67 68 67 67 69 68 67 67 70 70 70 73 74 77 77 74 74 74 75 77 77 78 81 85 86 86 81 77 72 72 72 76 75 74 72 71 70 69 66 63 50 22 21 21 21 20 21 21 20 21 21 20 21 21 20 20 20 18 19 19 16 16 19 18 19 19 19 19 17 17 17 16 17 18 21 40 63 74 75 72 67 65 63 61 58 56 53 52 50 43 39 39 40 38 39 39 37 42 48 49 49 57 56 58 58 60 60 57 52 46 42 35 28 23 22 21 20 21 20 20 21 21 20 20 21 20 19 17 17 17 17 17 17 18 19 18 19 20 19 19 20 19 19 18 24 34 40 44 49 53 50 49 54 59 59 63 67 64 61 63 65 63 64 65 66 70 71 70 67 66 67 70 74 82 85 100 100 82 70 66 61 60 62 65 63 64 71 71 76 79 81 89 95 92 78 75 76 73 73 68 58 49 54 55 55 50 51 53 49 59 64 - 60 63 62 59 59 60 62 60 60 62 62 59 54 53 57 59 59 58 60 60 60 61 59 61 63 60 61 62 62 62 62 64 62 61 67 67 67 67 70 70 66 65 66 64 63 64 64 67 67 69 74 76 77 77 74 72 74 76 77 77 77 77 79 81 84 81 78 77 74 73 75 78 79 72 65 63 69 70 68 50 22 21 21 20 20 21 22 21 21 21 18 20 18 19 20 19 18 18 17 17 17 17 18 19 18 17 17 19 19 18 20 18 18 20 34 60 72 75 74 70 67 66 64 62 60 58 56 54 49 43 44 43 40 41 42 44 46 49 49 51 61 63 63 62 63 62 60 55 50 46 43 33 23 21 20 21 21 20 21 21 21 20 20 20 20 20 20 18 21 21 20 20 21 21 18 18 20 19 17 17 18 19 20 20 24 36 35 35 35 33 34 33 34 34 36 43 45 43 46 51 52 55 59 62 66 66 65 65 65 70 75 78 81 81 81 82 74 63 59 56 61 66 64 62 65 71 71 75 76 75 78 72 64 53 47 47 45 45 37 39 45 53 45 45 43 49 53 49 45 44 - 60 63 63 63 62 64 64 63 62 63 63 62 61 62 62 62 62 63 63 62 62 61 59 59 60 61 62 65 65 64 64 63 59 48 49 59 65 68 68 68 67 66 64 54 46 49 58 63 63 68 73 77 81 81 77 72 72 74 76 76 75 74 76 77 81 79 78 78 76 73 73 79 82 71 55 45 63 70 68 47 23 22 22 21 20 21 22 20 21 21 18 20 20 19 19 20 18 17 19 19 17 18 20 20 17 16 17 17 18 18 20 18 20 18 31 55 68 73 73 70 69 67 66 66 65 63 60 57 50 44 45 43 40 43 48 51 51 50 53 57 63 66 66 66 66 66 63 60 53 48 50 39 27 22 20 20 21 21 24 22 22 21 20 20 20 20 20 20 21 21 21 21 22 22 20 19 19 17 16 16 17 19 19 19 20 26 27 25 23 22 26 24 23 24 24 25 29 30 31 29 33 35 41 49 57 60 60 66 70 78 78 75 74 72 70 69 63 55 55 61 65 66 64 60 60 65 61 59 58 55 53 47 46 45 43 43 43 35 33 35 52 55 47 42 41 44 42 39 38 36 - 61 61 62 62 64 64 64 62 64 62 62 64 65 65 65 64 62 65 65 62 62 61 61 61 64 64 65 68 69 69 68 61 48 42 42 51 58 57 56 61 63 66 62 47 39 36 39 51 49 53 63 73 83 84 78 73 70 72 74 74 71 72 75 74 75 75 76 78 76 76 79 85 85 68 42 42 58 69 67 44 24 24 24 21 21 21 22 20 21 21 21 22 20 19 20 21 20 18 17 19 19 19 19 20 18 18 17 18 17 17 17 18 18 20 27 47 63 71 74 74 71 71 70 70 67 66 64 62 56 48 52 49 43 46 50 53 53 55 62 64 66 69 69 69 70 69 66 63 58 53 50 40 31 24 20 20 21 21 22 24 24 21 20 20 18 20 21 20 20 20 20 21 24 25 20 18 17 17 16 16 17 18 19 17 19 21 23 26 23 22 22 21 22 22 21 21 22 23 23 23 26 25 31 38 47 54 63 71 75 72 65 62 61 58 60 60 57 61 67 76 75 75 75 72 68 66 61 60 54 53 54 51 55 58 55 49 41 34 33 37 58 59 54 48 41 36 34 35 36 36 - 56 60 62 64 65 61 61 65 66 65 65 66 66 66 66 64 66 67 66 65 66 66 67 69 72 72 73 75 75 71 64 53 47 45 41 46 50 42 41 45 62 63 58 49 42 38 33 35 40 35 36 59 76 82 83 75 70 70 73 69 63 63 66 66 74 76 77 81 75 72 72 81 78 62 44 41 48 59 61 39 23 22 22 21 22 22 21 21 21 21 23 24 20 18 21 21 20 19 19 20 20 20 20 20 20 20 20 18 18 18 18 19 21 24 31 43 59 65 69 74 74 74 74 73 70 69 67 67 61 53 57 57 52 53 56 59 61 62 66 67 70 70 71 71 71 71 70 66 62 56 53 43 36 30 22 20 20 20 21 23 23 21 18 19 18 20 21 21 21 20 20 21 24 26 21 18 17 19 19 16 16 17 17 17 18 21 24 24 23 23 21 20 21 21 21 21 21 23 23 23 23 23 25 33 42 49 62 71 69 57 44 36 33 31 35 42 53 64 71 79 85 91 92 84 81 79 69 62 60 60 61 58 59 59 52 43 37 42 41 45 59 55 51 47 41 38 36 34 36 37 - 56 61 64 65 65 65 66 68 68 67 67 69 71 71 71 69 69 69 69 70 71 72 74 79 85 85 86 86 82 66 53 49 52 45 41 44 46 40 41 44 59 60 51 44 41 42 34 33 40 35 34 43 65 75 82 67 55 61 65 61 52 53 54 55 67 78 82 82 67 55 55 65 64 51 44 41 41 45 49 34 23 22 21 21 23 22 21 21 21 22 24 22 20 18 20 21 21 18 20 21 21 20 20 20 21 21 20 18 18 18 20 21 26 30 33 44 57 60 64 70 75 78 77 74 73 70 70 71 65 59 60 61 58 60 60 62 62 66 69 70 71 73 74 74 74 74 73 70 65 60 55 46 39 32 28 21 20 18 20 21 22 21 18 18 18 21 21 21 21 20 20 21 24 26 20 18 19 18 17 17 17 17 16 16 18 21 24 23 22 22 21 20 20 21 21 22 23 24 27 26 26 23 25 30 37 43 51 56 55 43 34 25 20 21 21 25 37 55 61 67 75 85 92 85 85 85 71 62 59 61 63 64 59 46 33 33 42 48 41 46 55 50 47 42 39 42 39 33 37 36 - 58 62 65 65 65 66 68 66 67 69 69 70 72 72 70 69 71 70 69 71 71 74 75 78 82 82 82 79 67 55 50 53 52 47 45 48 44 42 41 34 37 40 36 35 36 42 41 37 40 36 33 35 46 53 58 44 37 52 54 52 56 58 55 46 45 58 64 65 48 42 37 37 43 46 45 41 38 38 37 29 25 24 22 21 23 23 22 21 21 21 21 21 20 18 18 20 18 20 21 21 20 20 20 20 21 21 20 20 21 21 24 29 33 37 40 46 53 56 61 70 75 78 78 77 74 72 71 70 66 64 66 62 61 64 65 65 66 68 70 73 74 74 76 77 77 77 75 73 67 62 57 47 36 33 32 23 20 18 20 21 22 21 21 20 21 21 22 23 22 20 20 21 26 25 20 18 19 17 17 19 18 19 16 15 17 20 21 22 22 22 22 21 21 22 23 24 26 26 26 28 27 24 25 29 36 40 34 29 31 31 27 23 21 18 18 22 29 33 39 45 61 74 81 77 76 73 65 64 61 59 66 68 60 36 33 36 49 47 40 50 55 47 43 39 41 43 38 33 36 37 - 61 65 66 65 66 67 66 65 66 69 68 69 70 69 68 68 71 69 69 70 68 68 68 68 73 77 74 64 48 49 53 55 52 48 46 51 48 46 39 29 29 31 33 35 33 36 44 42 39 36 35 35 37 35 36 34 34 44 50 52 58 56 51 37 35 35 40 50 46 43 34 29 32 38 42 40 40 38 34 27 24 23 22 22 22 22 22 21 20 20 21 21 20 18 17 18 18 18 20 20 18 19 20 21 22 21 21 22 27 30 33 36 42 48 50 48 51 58 66 71 74 77 77 77 74 74 74 70 66 66 67 65 66 67 70 71 71 73 74 76 77 77 78 80 80 80 78 77 71 66 61 52 37 34 29 23 21 20 21 21 21 22 23 22 22 21 22 25 23 20 20 22 26 24 20 18 19 17 17 19 19 19 17 15 15 17 20 21 22 22 22 22 22 24 24 27 27 26 24 26 27 23 23 29 34 36 31 27 26 26 24 23 21 20 18 21 23 27 29 35 44 68 81 72 68 64 63 64 62 65 68 65 51 39 37 43 49 43 40 53 58 48 45 45 45 42 37 34 38 36 - 65 67 67 66 69 70 66 65 67 69 68 67 68 69 66 67 69 67 67 67 66 66 67 68 72 76 67 49 48 57 60 59 53 48 48 51 51 44 35 32 32 34 38 38 33 37 48 46 41 39 39 34 34 35 35 33 31 35 46 53 53 44 40 38 35 34 38 47 47 41 32 29 30 31 36 38 38 39 34 28 25 24 23 22 23 22 23 22 21 21 21 21 20 18 17 18 19 20 20 19 18 20 20 22 22 21 23 30 36 38 43 46 51 59 61 57 55 61 73 77 76 77 77 77 76 77 78 75 72 70 71 70 69 69 74 78 77 77 78 80 80 81 82 83 84 84 84 80 75 69 66 63 55 34 27 24 21 21 21 21 21 21 22 23 21 21 23 25 23 21 21 22 26 22 20 18 16 17 17 19 20 18 17 15 15 16 19 21 22 21 22 22 23 24 25 27 26 24 24 24 26 26 28 29 29 30 29 24 24 23 22 21 22 22 21 21 22 25 30 34 37 64 85 85 80 70 65 62 62 65 64 51 40 39 43 49 49 39 43 55 62 56 49 47 43 41 40 37 40 40 - 64 68 70 69 70 70 67 66 69 71 69 68 70 70 69 66 68 68 68 69 69 67 67 68 71 66 54 48 56 60 61 55 49 52 51 51 46 38 35 38 39 39 40 38 37 45 54 51 45 42 42 34 32 34 38 36 31 32 37 42 41 39 38 40 37 35 39 45 43 40 32 31 32 31 32 36 38 38 32 29 28 24 22 21 24 22 22 23 22 21 21 21 18 18 19 19 18 18 20 20 18 20 21 21 23 27 31 37 44 49 59 64 70 71 69 66 65 65 77 84 82 80 82 80 78 78 78 81 78 75 76 74 72 72 78 81 82 83 84 85 87 87 88 88 90 90 90 87 81 73 69 70 63 35 29 27 21 21 21 21 21 20 21 23 20 21 27 28 23 21 21 22 25 22 20 18 16 17 17 19 20 19 17 16 15 16 18 20 21 22 21 21 22 25 23 22 21 21 22 22 23 26 29 29 27 28 24 24 25 24 23 21 22 23 21 21 24 29 31 34 40 59 73 78 76 69 64 59 56 57 55 42 39 40 44 49 44 36 44 56 62 62 50 51 46 44 39 36 37 37 - 63 68 70 70 70 69 69 70 69 71 71 70 72 72 71 69 70 72 70 70 71 72 65 59 61 55 48 53 59 61 58 51 49 52 50 46 41 35 37 41 42 41 38 40 40 46 55 55 51 42 40 34 32 34 38 38 33 32 34 38 43 43 42 39 37 37 39 44 42 38 34 32 34 35 32 35 41 38 31 29 28 24 21 23 24 21 21 22 21 21 20 18 18 17 18 20 19 18 20 20 21 22 21 24 34 43 44 47 52 60 68 74 91 91 83 77 72 72 80 97 97 87 87 86 82 80 77 82 85 80 79 78 77 79 83 86 90 91 94 95 96 96 96 96 96 97 97 95 90 84 82 75 63 40 32 26 22 22 21 20 19 18 20 21 20 21 27 28 26 21 21 22 24 23 21 18 17 17 17 19 20 19 17 16 16 17 19 20 21 23 22 21 21 23 22 21 21 21 23 23 24 29 28 27 29 29 29 30 31 32 31 29 27 28 23 25 33 34 37 44 56 66 74 77 73 73 73 69 59 49 39 36 43 45 44 43 36 39 46 54 62 61 57 58 49 44 37 32 33 37 - 62 66 68 69 69 67 68 70 70 70 70 69 71 70 68 66 65 71 72 72 75 75 62 52 50 48 56 57 60 62 57 51 53 52 49 42 37 35 35 40 44 44 40 40 40 46 53 54 53 43 41 35 33 33 37 39 36 33 36 38 40 43 43 42 38 38 38 42 39 36 35 34 35 33 31 34 40 41 32 28 26 24 24 26 26 23 23 22 21 21 21 21 20 18 18 19 20 21 21 21 23 25 29 40 49 54 55 57 62 66 72 80 106 113 110 95 82 80 86 94 97 91 86 86 84 80 77 85 87 83 81 80 83 88 93 95 99 102 103 105 105 105 105 104 105 107 107 106 101 94 88 75 61 42 36 29 24 22 21 18 19 20 20 20 19 20 23 26 24 21 22 22 23 22 21 20 18 17 18 19 20 18 17 16 16 17 19 19 20 22 26 25 23 26 24 22 21 21 24 25 27 30 29 33 35 38 40 42 43 45 46 42 39 38 34 36 41 43 47 56 64 70 77 83 87 88 88 88 64 40 31 34 45 48 43 35 34 43 56 59 59 56 58 58 50 43 36 30 30 34 - 57 62 66 66 67 67 68 69 68 68 69 69 66 65 63 56 56 64 66 68 72 64 50 48 48 53 64 64 62 62 55 51 53 50 43 40 37 40 38 38 46 49 44 39 40 48 49 47 51 44 41 37 33 32 36 41 41 38 37 37 36 35 39 39 39 39 38 39 40 38 39 35 32 31 31 32 36 36 30 28 22 22 23 24 26 26 25 22 22 23 22 23 20 18 18 19 21 21 23 25 29 32 40 54 58 54 56 61 67 73 79 92 113 127 126 114 102 91 96 99 104 109 105 92 85 82 80 83 90 91 89 86 89 97 102 107 108 111 113 113 113 111 111 111 111 113 116 117 110 102 86 76 62 43 38 30 28 24 23 20 20 21 21 20 18 20 25 28 26 21 21 23 24 22 21 20 19 18 18 18 18 18 19 16 16 16 17 18 18 21 28 33 34 36 33 31 31 32 31 31 34 35 41 48 53 56 55 56 59 58 56 58 56 55 58 60 60 61 64 69 73 80 93 98 94 85 79 75 59 34 31 32 42 48 37 34 37 50 59 57 54 50 53 51 43 42 39 33 30 30 - 49 56 61 65 68 69 70 70 69 70 71 68 64 59 60 58 58 58 59 58 59 51 42 50 53 57 63 64 62 58 51 52 52 48 44 41 41 42 42 39 42 49 48 39 41 48 44 43 50 46 41 39 34 32 36 40 38 37 37 38 38 35 35 37 40 40 40 41 42 39 37 32 31 30 31 31 30 29 28 26 21 20 21 22 23 23 23 22 23 23 22 23 21 18 20 20 21 23 25 31 36 49 54 58 58 56 58 65 73 76 89 105 114 125 129 127 114 100 108 116 120 124 119 104 93 91 86 86 96 106 108 103 103 108 113 116 117 119 120 120 119 117 117 116 116 117 120 120 115 107 87 78 68 56 41 29 28 27 25 21 20 21 22 21 18 20 28 31 27 21 20 24 27 21 18 18 19 20 20 19 18 19 17 16 16 16 16 19 19 20 26 42 44 50 50 44 45 52 52 48 48 52 59 63 68 72 71 71 73 74 71 72 73 75 80 81 81 85 89 94 92 104 113 113 85 66 52 47 39 34 32 34 41 44 35 34 39 45 47 45 48 46 44 45 41 38 38 35 33 32 - 42 47 56 61 68 68 69 70 69 71 71 66 62 55 56 57 57 53 54 51 44 41 43 50 52 56 58 61 58 53 50 52 51 48 46 41 41 42 41 40 43 51 48 39 42 48 44 42 48 44 43 39 38 35 37 39 39 37 37 40 40 34 34 38 39 40 40 42 45 39 37 33 31 30 31 31 25 24 24 24 21 20 21 22 22 22 22 22 23 23 22 22 21 20 21 21 24 27 33 43 59 68 66 63 64 65 70 77 84 92 101 110 116 125 132 135 128 118 122 132 132 122 118 114 110 106 98 99 102 111 120 120 118 122 126 128 128 128 128 126 125 123 122 119 117 118 119 120 115 102 88 78 72 60 37 29 26 26 23 20 20 21 21 20 18 20 28 31 24 20 20 26 27 21 18 18 18 18 18 20 20 17 16 15 15 16 16 17 18 18 21 26 32 42 47 43 43 50 58 58 57 60 67 71 78 84 87 87 90 98 93 95 101 104 106 104 98 98 98 85 76 79 94 81 63 48 39 36 34 36 40 43 45 44 39 39 41 45 44 44 48 42 36 41 42 39 37 36 37 35 - 41 42 47 52 61 63 66 69 69 69 70 64 56 53 52 52 51 50 50 43 39 41 45 52 53 51 56 57 52 47 46 50 49 45 45 40 37 37 39 42 50 53 47 40 44 48 43 42 45 43 42 38 37 38 38 40 43 41 38 40 37 32 35 39 39 40 37 46 50 43 40 36 32 30 30 30 28 24 22 22 22 21 21 21 23 23 23 24 22 23 22 21 20 20 21 24 27 32 44 61 69 74 72 72 74 75 82 100 107 110 110 116 125 131 138 140 137 131 131 135 135 127 125 124 117 116 111 108 104 112 123 132 132 136 138 138 138 137 134 132 130 128 125 122 119 117 117 117 111 97 87 78 65 44 29 25 22 25 26 21 18 18 20 18 20 21 31 29 24 21 21 27 26 22 21 18 18 18 18 18 19 16 15 16 17 17 17 17 17 18 18 20 20 27 30 25 31 35 46 54 54 55 63 75 100 100 92 105 104 109 115 121 118 115 111 103 89 80 72 63 55 53 59 59 47 43 39 37 37 40 46 51 53 45 40 41 44 52 45 43 48 36 34 40 41 41 40 40 42 41 - 42 42 41 44 52 57 63 66 68 69 67 61 52 53 53 50 52 52 50 42 39 41 46 53 53 50 53 53 49 45 43 44 44 42 42 38 36 36 38 44 52 53 45 42 46 47 43 43 42 40 38 38 39 39 37 39 46 44 40 38 35 32 34 38 36 38 37 48 50 41 38 34 33 30 30 30 28 26 22 21 21 22 21 21 22 23 23 24 21 21 21 21 20 18 21 26 32 45 59 67 71 76 80 83 89 92 100 114 123 122 126 131 135 140 144 146 144 139 134 136 137 134 130 128 123 122 120 117 115 119 127 133 140 146 150 149 146 144 141 137 134 131 128 123 120 117 114 111 103 93 84 76 58 34 33 28 22 27 27 24 21 18 18 20 21 23 33 31 25 21 22 27 26 22 21 19 18 18 20 19 17 16 15 17 18 19 20 18 18 19 18 18 18 22 24 24 27 29 32 35 35 36 43 63 86 83 85 116 126 129 132 127 118 110 106 98 76 66 59 51 48 42 42 50 51 43 43 45 48 47 54 58 58 50 42 40 45 52 43 43 48 36 34 39 39 45 46 43 45 46 - 48 44 42 41 43 50 55 62 67 68 65 59 52 49 49 49 51 52 52 43 41 40 47 53 52 50 51 49 49 45 42 42 42 42 44 43 38 39 42 50 54 54 47 48 55 53 50 45 41 39 38 39 38 35 33 36 46 49 48 42 36 33 35 38 35 35 40 46 44 37 37 32 32 31 30 28 28 26 21 21 22 23 22 21 21 24 26 22 21 20 20 21 20 18 22 25 40 60 64 69 75 82 97 106 111 120 130 133 136 135 140 142 146 147 150 152 150 147 144 144 143 140 134 130 127 128 128 128 129 132 137 140 146 151 154 155 153 150 147 143 137 134 130 125 120 116 111 107 99 87 80 71 51 39 44 30 23 24 26 25 21 18 18 21 22 24 34 31 25 23 23 27 24 20 20 18 18 19 21 21 18 17 17 19 19 20 20 20 19 19 18 18 20 21 23 24 27 28 27 27 24 24 27 37 56 59 68 124 152 152 139 120 109 99 91 88 69 55 50 47 44 41 48 51 50 43 44 46 48 50 55 53 53 47 44 44 44 44 40 43 45 34 37 43 39 45 46 46 44 45 - 51 47 49 47 43 48 48 51 54 56 57 55 52 47 45 46 47 51 50 42 42 43 50 51 50 49 46 48 48 49 49 45 43 47 49 49 45 46 50 54 57 55 54 56 58 58 55 45 40 38 38 38 37 34 33 41 49 50 49 43 36 34 34 35 35 36 40 46 45 39 38 33 32 33 28 28 28 24 21 22 22 23 23 21 21 24 26 21 20 18 19 20 21 21 25 32 54 66 68 72 85 99 111 116 121 132 142 142 145 144 149 151 152 154 154 155 156 155 154 152 149 144 140 134 134 133 135 137 140 144 144 146 150 154 157 160 157 154 152 147 143 137 132 128 122 114 108 102 94 84 76 69 48 42 44 27 23 23 23 23 21 21 21 24 23 25 34 32 26 23 21 25 23 20 18 18 19 20 21 21 20 18 20 19 18 19 20 20 20 19 19 19 18 20 21 22 24 26 26 26 24 24 25 30 35 40 59 115 151 151 135 106 88 83 79 74 61 49 46 43 41 44 51 48 43 41 41 42 44 47 50 43 44 44 44 46 40 39 39 42 44 35 38 45 42 45 47 44 43 37 - 52 51 53 53 49 52 52 47 44 45 46 45 47 47 45 44 46 51 46 43 47 48 51 50 49 44 43 47 49 50 50 51 50 48 50 56 55 52 50 57 59 57 58 57 56 57 53 49 43 38 39 39 39 38 36 42 49 51 47 43 39 35 34 35 36 37 39 44 43 39 38 34 33 30 25 26 26 23 21 21 21 22 22 22 22 22 22 21 20 18 18 21 22 22 29 49 68 77 82 89 109 120 122 121 125 142 148 143 147 152 153 156 156 157 158 159 160 161 160 157 154 150 145 140 139 139 141 144 147 147 149 150 153 156 160 160 160 157 155 152 147 142 137 130 122 114 107 98 91 82 76 76 58 45 42 30 24 27 26 23 21 24 24 22 22 25 34 31 22 21 20 22 21 20 18 19 18 20 21 21 20 20 20 18 16 16 17 19 20 20 19 17 16 17 18 21 23 23 27 26 25 26 25 25 29 33 54 93 130 130 118 98 87 80 77 69 55 50 50 50 46 48 51 50 47 45 43 41 47 47 44 42 45 44 49 49 44 44 40 46 48 42 45 50 47 54 52 48 43 37 - 53 51 48 50 52 52 49 47 44 43 42 39 40 42 44 44 45 50 46 46 50 50 51 51 49 42 42 49 52 53 51 52 52 48 58 63 59 52 50 59 60 60 59 57 55 53 51 51 44 39 38 39 39 37 36 39 46 51 46 42 37 34 35 36 36 37 38 41 38 38 38 33 33 31 27 25 25 23 21 21 22 21 24 26 24 22 21 21 18 20 21 27 27 24 34 60 76 98 112 113 127 138 135 128 134 147 149 148 152 155 157 159 160 160 161 163 165 165 167 164 160 157 153 147 144 143 144 148 149 150 150 153 155 158 161 163 162 160 157 154 150 144 140 132 125 116 108 99 91 83 80 83 67 47 36 27 27 30 30 24 21 23 21 20 21 23 34 25 20 20 20 21 21 20 18 17 17 18 20 21 21 21 20 18 15 14 15 17 18 18 19 16 14 15 16 19 21 22 26 27 25 25 26 26 28 33 51 76 99 107 95 88 85 78 85 79 63 59 62 61 57 56 54 54 51 49 46 43 46 44 42 44 47 47 49 49 46 48 50 55 57 54 60 57 48 55 54 51 51 44 - 53 50 48 50 52 52 48 48 46 42 44 41 38 38 41 44 46 51 51 48 49 49 51 51 47 44 47 51 53 54 52 49 48 49 60 63 57 51 54 64 63 58 57 51 49 51 52 52 45 37 37 38 39 36 37 43 49 49 45 42 38 37 38 37 36 38 40 41 38 37 36 33 33 33 27 26 27 24 22 21 22 22 23 26 23 22 21 20 18 22 28 29 28 25 37 63 79 106 123 126 134 141 142 137 140 147 153 154 156 159 161 163 163 164 165 167 168 169 169 168 167 163 159 155 150 147 146 149 149 152 154 156 159 161 164 165 164 162 160 156 153 147 142 135 128 117 110 102 93 85 84 79 72 54 31 25 29 32 29 26 21 20 20 20 21 23 30 23 20 18 19 21 20 18 17 17 17 18 20 21 21 21 20 17 15 15 16 19 17 17 16 15 14 14 15 17 20 21 24 27 26 26 26 26 29 33 44 62 79 97 109 103 92 96 116 118 97 84 80 72 65 61 60 58 59 63 59 48 46 44 46 47 46 46 46 47 47 54 56 63 66 66 65 62 63 64 63 62 63 48 - 52 51 49 52 51 51 48 49 49 48 49 46 39 38 40 45 51 54 54 52 51 50 51 50 45 45 52 54 54 52 47 42 41 51 59 57 51 51 59 64 63 56 51 48 49 50 51 51 45 38 38 37 38 38 41 45 51 51 49 46 43 39 39 39 38 39 41 43 41 37 38 36 36 32 26 28 26 26 22 21 22 22 22 22 21 21 21 21 21 27 29 27 25 29 46 67 94 120 131 137 137 139 144 140 146 152 157 159 161 164 167 167 168 168 168 170 171 173 172 171 169 168 167 160 155 150 148 150 150 153 156 160 163 165 168 168 165 164 160 157 154 150 144 137 129 121 113 103 95 87 86 81 72 60 39 25 30 32 30 30 21 20 21 21 21 22 27 21 20 18 19 20 18 17 17 19 19 19 19 20 18 21 20 17 15 16 19 19 18 19 17 15 14 14 15 17 20 21 22 25 28 30 28 28 30 32 36 54 75 95 112 112 97 106 112 118 116 113 104 88 78 76 79 76 75 78 76 72 69 64 61 62 63 60 58 62 65 69 67 72 75 75 72 72 72 71 65 65 64 43 - 49 51 51 52 50 50 48 48 50 49 51 47 42 38 39 45 51 54 54 55 55 52 52 48 43 43 50 54 54 48 41 37 39 48 57 54 51 51 62 64 59 56 53 48 48 50 49 44 41 39 38 38 37 38 39 41 44 49 49 45 44 35 36 38 36 37 40 42 43 39 39 38 38 30 27 28 26 24 23 21 22 22 22 22 21 20 20 22 23 26 28 25 27 34 59 72 106 130 138 144 145 144 142 147 154 156 160 164 167 168 170 171 171 171 171 172 173 174 174 173 173 171 167 162 157 155 154 153 153 155 159 163 167 168 169 169 168 164 161 158 155 152 146 139 131 123 114 104 94 85 84 79 71 59 52 36 29 30 30 29 23 21 20 20 18 22 27 21 18 17 19 19 18 17 17 18 19 19 19 19 18 18 17 17 16 16 17 17 20 20 19 17 16 16 16 17 19 21 23 26 30 29 28 30 32 32 35 49 67 78 83 78 80 91 95 98 105 115 115 112 110 113 113 109 95 98 98 100 100 81 83 83 82 75 69 68 68 72 74 75 71 69 71 69 64 55 48 55 52 37 - 50 49 49 51 52 50 48 49 53 49 51 48 44 42 40 46 48 52 54 58 59 55 51 46 42 42 45 48 51 48 41 37 40 49 60 57 51 48 56 59 55 55 54 45 43 47 47 42 39 40 38 39 38 37 36 37 43 45 43 44 44 36 35 36 35 37 43 46 45 40 38 36 34 30 25 27 26 23 22 22 22 22 24 22 20 20 20 23 26 28 30 29 29 42 62 72 110 135 139 140 147 146 142 153 157 160 165 168 170 172 173 174 174 174 174 174 175 175 176 174 172 170 168 164 159 156 156 157 156 157 160 165 168 169 169 170 168 164 160 157 156 152 146 140 132 123 113 102 93 84 78 74 66 57 56 38 25 24 28 28 24 21 20 18 18 22 26 21 18 17 17 19 18 18 19 18 19 20 18 18 17 16 16 16 16 15 15 16 20 20 18 18 19 17 19 17 17 20 25 29 30 29 27 30 33 37 42 46 60 66 66 67 69 80 88 82 79 82 85 82 82 84 83 79 75 75 75 75 72 70 79 76 71 66 59 56 64 69 70 70 69 67 66 61 45 42 42 46 39 36 - 51 51 50 54 54 51 49 50 53 50 50 52 48 47 43 43 42 48 54 57 59 56 50 46 42 45 53 56 54 50 42 39 45 52 60 59 51 48 51 55 54 56 53 44 42 45 49 45 42 41 40 40 39 37 36 38 43 42 41 47 46 38 37 37 35 40 44 46 46 40 38 36 33 29 25 26 24 21 21 22 23 22 24 22 20 20 21 26 27 26 27 32 39 50 59 79 123 145 145 143 150 154 151 153 160 165 168 171 173 174 175 176 175 175 175 174 174 174 174 173 172 170 168 165 160 158 158 159 159 160 163 167 169 170 170 170 167 163 160 156 154 151 146 140 134 125 113 99 90 83 75 69 59 50 46 36 25 21 28 32 23 21 21 20 18 22 25 22 20 17 16 19 18 19 17 18 19 20 20 18 16 15 16 16 16 15 14 16 18 20 18 19 18 18 19 17 16 18 21 28 30 30 27 30 36 42 43 45 50 51 49 49 47 48 54 52 45 44 47 53 55 55 46 46 46 49 49 45 44 43 53 53 55 56 56 60 75 78 67 67 72 72 72 62 43 44 47 43 36 36 - 49 51 51 52 52 51 51 51 51 48 51 55 52 52 45 41 41 45 52 57 59 57 50 49 46 51 60 61 55 52 48 47 51 54 62 63 58 53 52 53 54 56 52 45 42 45 50 49 44 43 41 39 40 38 37 43 47 42 41 47 44 37 38 40 42 45 44 41 43 40 39 38 33 27 25 27 24 21 22 21 23 24 23 22 22 21 22 26 25 25 29 38 52 55 68 96 129 144 148 149 157 164 161 161 165 168 174 176 176 176 176 175 175 175 174 172 171 171 172 172 173 172 169 165 161 159 160 160 160 161 164 168 169 169 169 169 167 161 157 155 153 149 144 140 134 126 116 103 92 84 75 66 55 48 39 31 24 21 28 32 23 21 21 20 21 22 24 22 20 16 16 17 20 19 18 18 19 20 20 19 17 16 17 17 17 16 16 17 19 19 20 19 18 18 18 17 15 17 20 30 30 29 26 27 32 34 32 32 35 36 34 32 34 36 43 44 44 58 62 49 47 50 59 72 79 78 58 35 37 41 47 53 60 60 59 73 78 71 59 59 71 75 75 64 47 46 47 43 40 43 - 49 51 53 54 53 53 51 51 52 48 55 56 54 53 45 40 42 44 45 53 60 58 52 48 48 58 65 62 59 57 56 52 52 58 65 66 64 59 54 54 56 54 50 46 43 48 51 50 44 43 39 36 39 37 37 44 47 44 44 45 40 37 41 44 44 47 46 40 40 38 39 35 30 23 24 27 26 23 23 22 24 23 23 23 26 27 28 26 25 27 32 43 51 63 81 110 141 155 159 158 165 167 168 168 170 175 178 179 178 177 176 176 175 175 173 171 170 170 171 173 174 174 173 168 163 160 159 160 160 161 164 168 169 170 169 167 164 160 156 153 150 147 144 140 134 129 120 107 96 87 76 66 56 46 35 25 22 21 24 31 23 21 21 20 21 22 24 21 18 15 15 17 20 20 18 18 18 17 18 17 18 19 20 17 17 18 20 20 18 18 20 19 19 18 19 18 16 16 17 21 22 24 24 24 29 34 37 34 33 32 32 48 63 59 47 46 58 80 89 72 54 47 73 118 129 129 73 34 34 41 49 56 62 62 67 75 66 53 45 53 64 68 73 67 51 47 46 46 46 46 - 49 51 55 56 55 53 50 50 52 50 54 56 55 53 46 40 41 41 41 47 59 61 60 56 56 65 71 67 62 62 59 53 53 58 64 66 64 58 53 53 56 56 50 46 43 45 51 50 44 41 38 36 37 38 37 42 45 43 43 46 45 42 40 42 43 47 46 44 40 36 34 28 25 23 23 26 25 23 22 21 22 22 22 26 28 29 29 29 25 31 38 41 54 70 93 116 144 154 158 160 165 169 173 174 176 178 179 180 179 177 176 176 175 174 172 171 170 171 174 175 176 175 174 169 165 159 159 159 160 162 164 166 168 168 167 164 161 157 153 152 149 144 142 139 134 128 118 109 96 84 76 66 57 44 29 26 21 21 21 26 22 20 20 20 21 21 24 21 18 15 16 19 18 18 19 18 18 16 16 16 19 20 19 19 20 21 22 22 21 21 20 19 19 20 20 20 17 16 16 17 18 20 20 21 27 42 43 43 32 31 35 63 69 69 49 46 65 89 89 81 64 52 70 94 95 82 65 41 36 43 53 61 67 67 67 64 49 45 53 60 55 49 63 64 56 48 48 56 57 48 - 46 49 53 56 53 50 48 49 51 51 52 54 53 51 44 42 41 44 41 43 59 69 71 70 68 71 71 70 67 66 62 55 54 60 64 65 62 58 54 56 57 55 53 51 44 44 48 47 42 37 37 40 43 44 38 38 44 44 44 46 47 44 43 45 47 47 45 45 41 35 29 21 22 24 23 26 24 23 22 21 21 21 21 26 29 32 33 28 24 33 43 45 58 74 100 118 148 153 158 163 165 170 174 176 177 179 180 180 179 179 177 176 175 175 173 171 171 173 175 175 175 175 173 171 167 160 159 159 161 163 165 166 166 165 164 161 159 155 152 149 146 142 139 134 131 126 117 107 93 82 78 66 53 38 25 25 22 21 21 26 22 20 20 20 20 20 23 21 18 17 17 17 17 17 18 19 18 16 16 16 18 18 20 20 22 27 28 26 24 21 20 18 19 19 20 20 18 17 15 15 15 15 16 17 21 25 32 31 31 30 34 59 68 60 45 45 60 77 83 79 68 56 64 73 73 67 64 63 58 55 64 70 73 68 61 59 55 61 72 75 61 49 61 69 66 65 65 67 67 58 - 45 48 53 56 54 50 47 47 47 49 51 51 51 48 42 42 43 45 45 45 57 73 82 81 78 74 72 72 72 70 65 61 59 64 66 64 61 56 52 57 57 57 57 55 50 46 44 42 43 46 45 47 47 44 40 39 42 47 50 50 48 45 43 48 51 49 46 43 38 31 25 21 22 24 23 23 23 23 23 21 21 21 21 26 30 36 36 27 24 33 39 44 65 75 96 124 151 157 162 167 168 171 174 177 179 180 180 180 180 179 177 177 176 176 175 173 172 173 174 175 175 173 171 170 167 163 162 163 164 165 168 168 165 163 161 159 156 153 150 147 143 140 134 131 126 122 116 105 89 78 78 66 45 29 25 32 26 23 23 28 27 21 20 20 20 18 22 23 20 18 17 17 16 17 19 20 18 18 18 18 20 22 23 26 28 28 26 24 21 20 18 17 18 19 20 19 19 15 14 13 14 14 14 15 17 18 21 22 25 25 31 46 59 60 67 73 78 86 89 86 84 78 79 92 96 92 90 93 91 83 83 86 80 76 72 76 78 82 91 100 100 88 88 85 83 85 82 78 74 62 - 45 51 53 54 53 50 47 46 48 49 50 50 50 49 45 41 42 44 43 42 48 68 82 81 78 76 78 78 82 79 73 69 69 68 68 65 60 52 52 58 58 58 58 54 46 40 40 41 46 53 47 44 41 42 46 44 46 49 50 51 49 44 42 49 51 46 43 34 27 22 22 24 24 23 21 22 22 21 21 20 21 22 26 28 32 34 33 32 36 34 34 46 72 73 100 142 152 156 162 167 169 172 174 177 180 182 182 181 180 180 179 178 177 175 175 173 171 171 172 173 173 171 170 170 168 165 164 165 168 168 169 169 167 163 160 158 155 153 149 144 142 137 132 128 123 119 114 105 90 81 76 65 44 29 32 34 30 28 25 31 31 23 21 21 21 18 22 23 20 18 17 17 17 18 20 20 20 20 21 24 25 25 25 22 22 22 22 21 20 18 18 17 17 17 17 17 17 15 13 13 13 13 13 14 14 16 17 20 23 27 28 32 35 43 63 72 79 88 94 95 112 126 130 135 135 133 132 123 119 116 129 130 120 121 114 118 121 115 113 118 127 126 123 112 107 115 105 93 78 64 - 49 51 49 48 48 48 46 47 50 50 51 52 52 51 48 42 41 43 42 41 43 60 75 70 65 68 75 83 86 86 85 79 75 70 68 67 62 55 55 58 58 58 58 50 42 40 40 41 48 53 43 41 41 43 46 45 51 51 49 51 46 42 43 48 48 40 33 27 24 21 21 24 26 23 21 23 23 21 21 20 21 26 28 31 35 36 33 37 45 37 35 51 75 79 117 156 159 159 161 165 170 173 176 179 180 182 182 182 180 180 180 179 177 176 174 172 170 169 170 171 172 172 171 171 170 168 168 166 169 170 170 170 168 164 160 158 155 153 149 144 140 135 131 126 122 117 112 102 87 81 76 68 47 34 34 29 29 30 27 29 27 21 21 21 20 21 22 21 20 18 17 17 18 20 21 23 23 24 25 25 22 21 20 20 20 20 20 20 20 21 20 20 20 18 18 18 18 16 14 13 13 13 13 13 14 15 15 17 20 21 23 23 26 25 31 35 44 57 65 72 86 115 123 119 124 135 133 127 121 116 135 136 136 138 138 141 145 136 129 123 128 124 123 119 115 129 115 100 82 67 - 48 49 46 45 44 45 45 47 49 50 52 52 50 48 45 40 40 42 41 41 42 47 60 58 48 44 58 75 86 86 83 84 81 74 71 69 64 61 56 56 59 59 62 60 55 46 43 48 48 46 42 42 45 44 43 45 48 49 49 50 44 40 42 44 41 32 27 25 26 23 23 24 26 23 22 23 23 22 21 20 21 26 29 34 35 39 36 44 54 40 35 43 72 104 141 155 160 159 160 165 169 173 177 179 180 182 181 180 180 179 179 179 178 176 173 171 169 170 170 172 173 174 174 173 171 170 169 169 169 170 169 169 168 164 161 159 156 153 150 144 140 135 131 126 122 117 110 98 86 79 75 67 46 33 31 27 30 30 26 24 23 21 21 21 20 20 20 20 19 18 19 20 20 21 25 25 24 21 21 20 20 20 20 20 22 23 28 30 34 36 32 28 28 23 21 21 21 21 16 14 14 15 14 14 13 14 14 14 15 16 18 20 21 22 23 24 25 27 31 35 43 54 59 61 76 107 112 110 126 109 111 130 124 109 97 118 145 145 132 122 123 127 135 128 118 129 119 93 77 66 - 47 45 44 48 45 44 45 46 50 52 52 47 42 40 39 38 39 41 40 40 39 37 47 51 44 37 47 71 81 81 79 83 86 81 79 77 72 67 63 66 69 69 69 69 62 51 50 49 43 39 38 41 45 45 43 42 43 48 50 49 43 40 41 38 32 27 24 25 27 23 22 26 26 26 21 22 22 21 20 20 22 25 29 34 40 46 52 54 49 37 36 53 92 142 159 154 159 162 163 165 169 172 176 179 180 180 180 180 179 177 177 177 176 174 171 170 169 170 171 173 175 175 176 174 171 169 169 169 168 168 168 168 165 164 161 160 157 155 152 147 143 137 133 129 125 119 111 98 86 79 75 67 46 31 27 28 30 29 23 22 21 21 21 20 20 18 17 18 18 20 21 21 22 21 21 21 21 21 21 22 24 31 34 32 37 39 41 41 41 35 31 28 25 22 21 21 21 21 16 14 15 18 18 15 14 14 15 15 14 14 14 16 21 21 21 22 26 27 25 24 24 25 27 27 36 60 72 76 87 80 72 80 75 59 49 68 93 119 123 109 95 109 135 132 115 123 112 85 73 68 - 45 43 43 48 44 42 42 43 47 49 46 43 40 43 40 38 39 39 38 38 37 38 43 46 42 37 42 63 73 78 82 85 88 89 89 89 79 74 71 72 72 70 67 63 61 57 53 49 41 40 38 38 41 41 40 40 44 51 50 47 41 38 34 30 25 23 23 24 27 24 22 24 25 23 21 22 22 21 21 20 22 25 30 37 49 54 59 57 48 53 59 85 132 159 164 159 167 167 168 168 169 171 174 177 179 179 180 179 177 176 176 175 173 171 170 169 170 171 173 175 175 175 176 174 171 169 170 168 166 166 166 165 164 163 162 160 159 156 154 150 144 140 135 132 128 123 114 102 86 81 78 64 44 31 27 30 29 25 23 22 21 21 21 20 19 17 16 17 19 21 22 21 23 21 22 30 34 39 41 36 37 42 42 34 36 33 32 32 30 23 21 21 20 18 20 20 18 18 16 14 14 15 15 15 15 15 15 18 16 14 13 14 15 19 20 20 21 21 21 24 25 26 28 30 35 45 63 66 63 59 55 53 48 42 36 36 55 75 87 84 76 76 89 112 105 97 85 74 60 58 - 44 44 43 43 43 42 40 40 45 46 44 43 41 43 41 37 39 39 38 38 38 39 38 41 40 37 35 46 60 62 69 76 82 87 90 87 81 74 71 67 65 63 61 55 58 55 50 50 48 45 40 38 41 41 42 46 49 51 50 46 39 35 27 25 23 23 23 24 26 26 24 23 23 23 22 22 21 20 20 21 23 25 33 45 55 54 54 61 68 76 93 121 143 158 164 167 168 169 170 170 170 172 174 176 177 179 179 177 176 175 176 174 172 170 170 169 169 171 174 176 176 176 176 174 171 169 169 169 166 165 165 164 163 163 163 161 160 158 156 153 147 142 137 134 132 129 120 106 95 88 74 60 45 38 30 28 26 24 22 21 21 21 21 20 18 18 20 20 18 21 29 34 43 43 40 45 47 47 43 33 31 33 32 27 25 25 29 27 25 22 21 21 21 21 20 20 20 20 17 15 14 14 15 16 16 15 16 17 19 19 14 13 14 15 16 18 18 18 18 20 20 21 21 24 30 36 45 52 54 59 50 44 45 41 36 35 37 61 70 72 72 61 64 85 81 69 63 60 42 45 - 46 48 46 43 45 43 39 39 44 46 44 41 38 39 38 37 37 39 39 38 38 36 36 38 40 38 32 34 39 37 47 59 69 80 86 89 83 75 68 64 63 64 59 55 57 55 51 53 53 47 41 42 47 46 48 49 48 49 49 44 33 25 23 26 26 24 24 23 26 24 24 23 23 23 22 21 21 20 20 22 26 31 42 58 62 65 61 60 77 104 126 135 146 155 161 167 170 170 169 169 171 173 175 176 176 177 177 176 176 175 176 174 171 169 169 169 170 172 174 177 178 177 175 174 171 169 170 169 168 165 164 163 163 163 163 163 161 160 157 153 149 143 138 135 134 130 118 106 92 86 74 58 48 43 27 25 25 26 22 20 20 20 20 19 19 20 21 21 23 33 47 54 54 52 43 44 38 35 33 27 27 32 34 34 32 34 38 36 37 41 36 33 32 33 31 26 24 24 21 19 15 15 15 16 16 16 16 17 19 19 15 13 13 13 14 16 19 18 18 19 20 18 20 21 23 25 31 37 39 42 43 47 48 46 42 38 41 54 63 64 60 46 58 75 67 54 48 46 39 42 - 48 49 44 43 45 44 43 42 45 46 42 40 39 38 39 40 40 41 39 38 38 37 37 39 37 36 31 31 32 32 32 33 41 59 71 79 76 71 65 67 70 69 64 58 57 57 56 54 48 46 48 50 50 48 51 49 44 42 42 36 25 22 23 27 27 26 24 24 23 22 21 21 22 22 21 21 20 20 21 23 30 39 51 61 67 80 100 78 76 112 133 146 154 151 158 167 170 170 170 169 171 173 175 175 176 175 175 176 175 176 176 174 171 170 170 171 172 174 177 179 179 177 176 174 172 170 170 170 169 166 165 164 164 164 164 163 162 160 157 154 149 143 138 134 131 122 112 99 86 85 75 51 35 31 25 27 24 24 23 21 20 18 18 20 18 21 29 36 42 44 43 42 36 34 35 34 31 31 35 43 55 53 47 45 47 51 56 55 54 54 48 40 33 32 30 24 22 21 20 19 15 15 16 16 15 15 16 17 17 19 15 14 14 13 13 15 19 21 21 21 20 20 21 22 22 21 23 25 23 27 37 45 48 47 44 44 44 45 47 47 40 34 50 62 55 48 43 37 35 39 - 49 50 45 45 44 43 44 44 48 49 44 43 40 39 40 44 46 45 40 38 40 39 38 39 34 33 32 31 31 31 31 31 32 34 47 64 70 67 65 70 74 74 68 61 59 59 59 55 45 45 47 51 52 49 49 52 44 37 35 30 23 22 23 26 26 24 26 26 23 20 20 22 24 23 21 21 21 21 24 28 33 46 55 64 76 101 142 142 91 110 139 150 165 161 163 168 171 171 171 171 171 172 173 174 175 175 175 175 175 175 174 173 171 170 171 173 175 177 179 180 180 179 177 175 173 172 170 170 169 168 166 165 165 165 165 165 163 160 157 155 149 143 137 132 125 113 99 94 90 83 68 42 29 29 30 30 24 22 21 21 21 19 18 21 22 30 35 39 41 36 31 25 27 27 27 32 35 47 57 65 71 63 54 50 61 61 58 50 39 36 33 25 22 21 21 20 18 19 16 14 14 14 14 15 15 16 16 16 17 16 16 19 15 14 13 14 16 20 20 21 21 21 24 27 24 23 21 21 20 21 30 38 37 34 34 37 35 33 33 33 32 36 46 50 53 46 37 35 36 44 - 49 52 51 50 47 45 42 42 48 50 48 47 40 38 38 43 48 45 40 38 39 40 35 34 34 32 32 34 33 33 33 31 31 31 33 51 65 66 68 71 72 71 69 66 65 62 61 58 50 47 52 54 51 50 53 53 49 39 30 26 23 21 22 23 22 22 23 25 24 22 23 25 24 21 20 21 21 21 26 29 35 51 64 78 95 112 136 139 100 121 148 161 167 168 168 173 174 175 175 174 173 171 170 172 173 174 175 175 174 173 171 169 169 169 171 174 178 179 179 180 180 180 179 177 175 173 172 170 170 169 168 168 168 168 168 168 165 163 160 156 152 144 137 130 120 108 95 90 86 75 57 40 34 34 31 30 22 21 23 23 22 21 23 26 28 29 31 30 30 27 23 23 29 35 43 58 67 72 78 78 67 55 46 38 41 41 32 27 21 21 20 18 18 18 18 17 17 15 13 12 12 13 13 13 14 15 16 16 15 16 16 19 18 14 13 13 14 16 18 21 21 21 26 27 27 26 22 21 20 20 21 27 29 25 27 31 30 29 29 29 33 40 48 54 52 48 46 56 62 63 - 51 52 50 49 46 45 39 38 42 48 50 47 43 42 41 42 48 46 42 41 40 38 34 33 35 32 32 34 35 36 35 31 31 31 31 37 59 67 71 72 68 64 67 68 68 66 66 67 64 59 56 56 53 52 54 49 45 33 24 24 21 20 21 21 22 21 21 21 23 24 24 25 22 21 20 21 22 21 24 27 36 55 70 93 121 124 122 106 100 135 166 167 172 174 174 175 176 178 178 175 171 168 166 169 169 169 173 173 169 167 165 165 165 168 170 173 177 179 180 180 180 180 180 179 177 175 173 172 171 170 170 169 169 170 170 169 168 165 162 159 154 147 140 131 119 108 96 88 76 63 55 53 44 36 29 24 22 23 24 26 27 26 26 25 22 22 22 21 21 21 25 33 49 64 69 75 75 72 69 58 40 33 29 22 20 21 20 20 18 18 16 15 15 15 16 15 14 13 12 12 12 12 12 12 13 14 16 16 15 15 16 16 15 14 13 13 14 14 17 21 21 21 23 25 28 26 24 22 21 20 20 20 22 22 21 27 31 35 42 44 46 58 70 75 74 71 71 76 79 72 - 46 49 45 44 41 41 39 38 40 46 46 46 48 46 44 45 47 45 43 42 40 37 33 32 35 33 33 35 38 36 35 34 33 32 29 31 47 63 61 53 47 47 53 64 68 67 69 75 79 71 64 62 60 56 52 40 35 25 23 22 21 19 20 21 21 21 20 21 22 22 21 21 20 20 20 22 25 22 23 29 40 57 70 97 132 129 127 121 127 157 172 174 176 177 176 176 177 179 179 175 170 166 166 168 165 163 167 167 164 161 158 158 160 164 168 172 176 177 179 180 181 182 181 180 179 177 176 174 173 172 170 170 169 169 170 169 169 168 164 160 157 152 142 132 122 110 100 85 74 60 58 58 48 36 25 23 26 26 29 29 26 24 22 21 20 18 18 21 29 42 52 63 75 75 73 65 58 45 37 25 21 21 21 18 19 19 18 19 18 16 15 13 13 14 14 14 14 13 12 12 12 13 12 12 13 14 16 15 16 15 15 15 13 13 13 13 13 13 15 17 19 20 21 25 26 28 27 24 22 21 21 20 21 20 20 21 23 36 60 72 75 85 107 100 97 88 81 82 79 71 - 37 42 43 42 40 38 39 40 42 43 44 48 47 45 46 45 42 41 39 39 39 38 32 30 32 34 35 39 39 35 34 35 35 30 25 25 40 53 39 35 37 37 37 40 52 60 64 76 81 81 76 72 65 58 49 33 25 22 21 21 21 20 19 20 20 18 18 21 21 21 20 17 16 16 18 21 25 23 23 27 39 56 66 85 121 137 145 154 163 172 173 177 178 179 177 177 177 177 178 173 168 165 167 167 160 153 156 158 155 152 152 153 156 159 168 174 177 179 180 181 182 183 183 182 180 179 179 177 175 173 172 171 171 171 171 170 170 168 165 162 160 154 144 132 123 111 93 82 75 63 58 54 39 27 23 28 30 31 30 27 23 21 20 20 22 29 34 53 65 68 68 68 67 60 44 32 21 21 20 18 18 19 18 18 17 19 18 17 16 15 14 13 12 13 13 13 13 12 12 12 13 13 13 13 13 15 16 19 17 16 16 15 13 13 13 13 13 13 14 14 15 17 20 21 23 27 27 27 23 21 22 22 21 18 20 19 21 21 44 67 75 91 116 116 96 90 88 85 77 67 - 37 39 39 39 38 37 40 42 43 42 44 44 43 43 43 42 38 37 37 37 39 36 32 30 32 34 38 36 33 31 31 33 31 29 25 31 39 42 33 35 37 33 27 27 34 40 48 67 75 76 79 75 68 59 42 27 23 21 20 21 21 20 18 18 18 18 20 21 21 20 17 14 13 14 17 21 22 24 26 28 33 52 66 80 114 144 158 167 168 173 175 177 179 179 179 179 178 176 172 167 163 162 162 160 153 148 150 152 149 148 152 156 159 167 173 179 180 180 181 182 183 183 183 183 182 181 180 179 177 175 174 174 174 174 173 172 170 169 167 163 159 154 143 131 123 108 91 82 75 67 57 39 27 25 29 33 31 25 22 22 20 21 22 32 52 58 59 63 65 63 54 41 34 29 21 20 18 16 15 16 17 18 19 15 15 18 15 15 15 14 13 13 12 12 12 11 12 12 12 12 13 13 13 13 14 15 16 19 17 19 19 15 13 13 13 13 13 12 12 13 13 15 20 20 20 21 21 23 22 21 22 24 26 21 20 20 20 20 20 20 25 47 69 92 88 91 92 94 95 78 - 40 39 37 36 37 37 39 42 42 43 43 39 38 38 37 38 38 37 38 39 38 34 32 31 33 36 36 33 29 25 25 25 27 27 31 36 39 33 29 30 31 29 27 27 31 32 34 53 66 72 74 72 68 54 31 21 21 21 20 21 21 20 21 21 20 21 21 21 21 20 17 14 14 15 19 21 22 23 26 28 25 40 63 81 115 145 166 167 171 173 174 174 176 179 179 180 179 174 168 163 158 155 154 150 144 143 146 144 143 145 152 156 164 172 179 182 182 182 183 183 184 184 184 184 183 183 182 180 179 177 176 176 176 176 175 173 171 170 167 164 157 149 140 131 122 110 98 83 78 69 49 35 36 39 33 30 24 21 20 20 23 31 33 44 58 58 52 42 37 35 30 22 21 20 17 16 15 14 13 14 18 19 15 14 14 14 14 14 14 14 13 13 13 12 12 11 11 11 12 12 13 13 13 13 13 14 15 15 16 17 19 15 14 13 14 14 14 13 13 12 12 14 19 20 21 20 18 20 20 20 20 22 26 26 23 22 21 21 20 18 18 20 25 47 64 74 83 105 115 91 - 43 41 38 36 38 39 39 41 41 41 40 40 39 37 37 38 38 39 39 39 37 35 33 33 36 37 36 32 29 25 26 28 29 33 36 36 32 30 28 27 30 32 34 35 34 31 32 53 65 70 72 66 59 37 21 21 21 20 18 21 21 21 21 22 22 21 21 23 21 21 19 15 15 17 20 21 24 24 25 24 24 31 48 74 106 138 161 166 167 168 171 171 172 176 179 179 177 174 167 160 152 149 149 142 134 133 140 141 142 146 150 158 167 176 182 183 183 183 184 184 185 185 185 185 185 184 183 182 180 179 177 177 176 175 175 174 173 170 167 161 154 146 137 136 131 123 118 107 79 63 46 46 49 39 30 24 21 21 23 25 35 43 45 47 43 38 33 27 23 21 20 17 16 15 14 14 14 13 13 13 14 15 14 13 13 12 13 13 13 13 13 13 13 13 12 11 11 12 12 12 13 12 12 12 13 13 14 14 14 15 15 14 13 13 14 14 14 13 13 12 12 13 15 18 21 21 18 20 18 17 17 20 21 24 26 24 22 22 21 21 21 21 20 21 34 64 98 123 123 91 - 43 43 42 39 39 38 38 39 39 38 36 38 35 35 36 36 38 38 38 38 36 36 33 34 36 37 37 33 31 28 28 31 31 31 31 29 27 27 27 31 34 36 36 36 32 32 43 63 70 71 68 61 45 24 20 20 20 18 19 20 21 20 21 21 21 20 20 23 21 20 17 15 16 20 21 23 31 29 25 24 24 25 32 62 84 114 137 150 160 167 168 170 170 172 176 178 177 174 167 158 150 147 145 134 124 127 133 136 146 152 155 164 168 179 182 183 184 184 185 185 185 186 186 186 186 185 184 183 182 180 179 178 177 176 175 173 171 169 165 159 151 146 145 146 142 129 115 88 68 56 55 49 42 31 21 21 22 27 31 33 40 41 39 32 22 21 21 20 18 17 15 14 13 13 13 13 14 13 13 13 13 14 14 13 13 12 12 13 13 13 13 13 14 13 12 11 12 13 13 13 13 12 11 11 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 12 12 14 18 21 21 21 21 20 16 15 18 20 21 22 23 25 26 25 24 27 27 22 20 21 31 52 74 95 83 - 43 44 43 42 39 39 38 39 40 37 34 33 33 34 38 37 38 38 39 39 37 36 33 35 37 36 35 33 31 30 28 30 31 31 29 29 27 30 29 32 34 34 33 33 36 47 60 69 72 72 67 56 33 21 20 18 18 18 19 20 20 20 20 21 21 21 21 21 20 18 16 16 18 20 23 26 31 30 22 23 24 24 25 41 71 97 115 130 148 161 167 168 171 172 176 178 176 173 167 159 150 147 138 121 115 125 131 142 153 156 161 167 174 179 183 184 185 185 185 185 186 187 187 187 187 186 185 184 183 182 180 179 177 175 173 171 170 168 164 158 153 153 152 151 141 115 85 68 60 58 55 41 31 23 21 21 27 32 32 34 34 30 25 21 18 17 16 16 15 15 14 13 13 12 13 13 14 14 13 13 13 13 14 13 13 12 12 13 13 13 13 13 13 13 12 11 12 13 13 13 13 11 10 10 11 12 13 13 12 12 12 13 13 13 13 13 13 13 13 13 12 13 15 18 20 21 21 21 20 18 16 18 20 20 20 21 22 24 23 25 25 28 28 23 22 21 20 32 60 64 - 41 42 44 42 40 40 39 40 38 38 36 35 36 37 40 41 39 40 40 39 39 39 36 36 38 38 35 33 33 32 31 32 32 34 34 32 34 36 35 37 42 46 51 57 63 67 68 68 67 63 54 37 21 18 17 17 17 18 18 20 20 20 21 21 21 21 21 21 20 16 15 16 20 21 23 25 30 29 22 22 23 26 26 27 45 71 88 110 133 151 156 167 172 174 176 176 174 171 167 161 150 142 128 110 107 126 139 146 156 162 167 171 177 180 182 184 185 185 185 187 187 188 188 188 188 187 185 185 183 182 180 179 176 173 171 169 169 167 163 159 156 156 154 148 129 82 67 63 56 49 38 29 24 24 24 28 30 24 22 23 23 21 18 17 15 14 14 13 13 14 14 13 13 13 13 13 13 13 13 12 13 13 13 13 13 12 12 12 13 13 12 13 13 12 12 11 12 12 13 13 12 11 9 10 11 12 12 12 12 11 11 12 12 12 12 12 12 13 13 12 12 13 15 19 21 21 22 23 21 20 20 20 20 20 20 20 20 20 20 21 22 26 28 26 27 26 23 20 18 25 - 42 41 43 40 38 38 37 37 35 35 36 37 39 39 41 41 40 39 38 35 35 36 36 36 42 45 45 41 41 44 43 42 42 41 42 45 49 50 57 65 69 72 78 78 78 73 67 59 52 44 35 22 20 17 16 16 19 19 18 20 20 18 20 20 20 20 21 21 17 15 15 19 21 21 22 24 29 27 25 26 25 26 26 24 25 35 58 77 101 124 138 152 166 172 173 173 169 168 167 161 148 135 120 103 103 127 144 150 164 167 171 174 178 180 181 182 183 185 186 187 188 188 188 188 188 187 185 185 184 183 180 177 174 171 168 166 168 167 161 158 159 161 156 135 99 71 61 54 42 33 30 27 25 28 28 26 21 20 20 20 20 18 16 14 14 13 12 13 13 13 14 14 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 13 12 11 11 11 12 13 12 12 11 10 10 11 12 12 12 12 11 11 11 12 11 12 12 12 13 13 12 11 12 15 20 21 21 21 24 22 21 22 22 22 20 20 18 18 19 20 20 20 22 28 27 27 28 28 24 21 18 - 41 41 40 39 38 39 39 36 35 35 36 38 38 39 41 39 39 39 37 36 37 40 41 47 55 59 58 55 53 53 54 56 59 61 60 64 67 69 72 79 79 78 75 76 72 63 52 42 34 27 21 20 19 18 17 17 19 19 18 17 18 19 20 20 20 20 21 21 16 14 15 18 23 24 24 24 28 28 29 28 25 25 28 26 24 24 31 44 61 76 93 120 155 165 166 166 165 161 164 161 138 109 91 89 100 125 139 157 167 178 177 177 180 180 180 181 181 184 186 188 188 188 188 188 187 187 185 185 184 183 180 176 171 168 166 166 168 164 158 160 166 162 127 86 75 64 50 36 31 28 28 27 23 23 23 21 18 18 17 17 17 16 15 14 13 13 12 12 12 13 14 14 13 13 12 12 12 12 11 11 11 12 12 12 12 12 12 12 11 11 11 12 12 12 11 11 12 12 13 13 12 12 11 10 11 11 12 12 12 11 11 11 11 10 11 11 12 13 12 11 11 12 14 20 20 18 20 22 24 22 24 24 24 21 21 20 20 20 20 20 20 20 21 22 24 26 28 28 23 21 - 37 39 39 39 39 41 41 39 37 38 38 38 38 38 39 37 39 39 41 46 52 55 55 54 58 59 55 51 50 49 52 55 60 61 59 59 63 64 63 65 68 63 55 47 43 37 32 21 21 20 19 18 20 20 19 16 17 18 19 18 18 20 21 21 21 21 20 19 15 13 15 18 22 23 26 27 27 30 34 34 29 25 30 30 25 27 32 31 31 40 55 69 89 112 141 149 144 145 155 151 113 76 73 83 102 124 139 158 172 182 183 182 183 183 181 181 182 183 186 187 187 187 188 188 187 187 185 185 184 183 180 173 167 163 167 167 167 162 159 167 166 135 79 69 62 44 34 27 28 28 27 24 22 20 18 18 17 17 15 15 15 15 14 13 13 13 13 13 13 13 13 13 12 11 11 11 11 11 11 10 11 12 12 12 12 12 12 11 10 11 11 12 12 12 11 11 12 13 13 13 13 13 12 11 11 11 12 12 12 12 12 11 11 10 10 11 13 13 13 12 11 11 13 16 18 18 18 21 25 24 23 23 22 23 22 22 22 21 21 21 21 21 21 21 22 24 26 26 26 25 - 37 42 42 39 41 43 43 42 38 37 37 39 39 38 38 38 37 41 49 55 55 54 50 46 47 44 39 40 42 40 39 41 46 48 47 46 47 47 43 44 44 42 36 35 32 30 23 20 20 18 18 17 18 20 16 15 16 19 19 19 20 20 21 21 21 20 17 15 14 14 16 20 22 22 23 28 28 30 36 39 33 27 28 30 29 31 36 36 32 33 34 40 54 64 84 101 100 115 127 119 82 64 73 86 104 122 139 159 181 184 184 184 184 184 183 183 183 183 184 185 185 186 187 188 188 187 187 186 184 182 179 170 162 160 161 163 162 159 164 166 156 98 65 56 44 29 25 29 28 23 22 21 20 17 17 18 19 16 15 14 14 14 14 13 13 13 13 13 13 13 12 11 10 9 9 10 10 11 11 10 11 12 12 12 12 12 12 11 10 10 11 12 13 12 12 11 12 13 13 13 13 12 12 11 11 11 12 12 12 12 12 12 11 10 10 11 13 14 13 12 11 11 13 15 18 20 18 21 26 26 23 21 21 23 23 23 23 23 21 21 22 24 25 23 26 24 23 24 26 27 - 39 43 43 43 43 43 41 38 35 37 38 40 41 38 36 36 39 45 52 51 46 41 39 41 38 32 34 37 36 36 39 38 37 40 41 39 38 38 34 37 38 35 34 35 32 24 21 20 20 18 19 19 17 17 17 16 15 16 19 18 19 19 20 20 20 19 16 15 14 15 18 21 23 23 25 27 29 31 35 39 39 34 29 27 29 33 36 35 34 34 31 31 31 31 43 56 62 70 74 73 61 59 71 88 105 121 136 155 178 184 185 185 185 185 184 183 183 183 183 183 183 185 187 188 188 187 187 187 183 181 179 169 164 159 158 162 163 161 151 130 98 71 48 34 29 24 23 25 23 20 20 18 17 16 15 16 19 15 14 13 13 14 14 14 13 13 13 13 13 12 11 10 9 8 8 8 9 10 10 11 12 13 13 12 13 13 13 12 10 11 11 13 13 13 12 12 12 12 12 12 12 12 12 11 11 12 12 12 12 13 12 12 12 11 9 10 13 13 14 13 12 12 14 16 18 20 20 18 22 27 26 22 22 26 28 27 25 27 28 26 24 23 26 26 27 27 24 23 25 25 - 42 43 42 42 42 41 38 36 35 39 40 40 41 40 36 37 47 48 44 42 40 37 34 36 34 31 33 35 37 37 40 36 34 35 35 32 34 34 31 33 33 32 31 33 32 21 18 18 19 17 19 16 17 19 20 19 15 16 17 18 17 18 19 20 18 17 16 15 14 16 20 22 23 25 28 28 30 33 36 40 42 41 30 27 29 27 30 33 33 33 31 32 31 29 27 27 31 34 36 41 36 44 61 75 88 116 129 151 166 178 184 184 184 184 184 183 182 182 181 181 183 183 185 187 187 187 188 188 185 182 178 168 164 158 160 166 166 158 117 80 68 55 34 27 27 22 20 20 21 20 21 19 16 15 15 15 14 14 14 14 14 14 14 14 13 13 13 13 12 11 11 10 8 7 8 8 8 9 10 11 13 13 13 13 13 14 13 12 12 12 12 13 13 13 13 12 12 12 12 12 12 12 11 11 11 12 12 12 12 12 12 12 11 10 9 10 12 13 13 12 12 13 15 17 19 20 20 18 21 27 30 25 28 29 29 29 27 29 29 27 23 23 24 25 25 28 27 26 27 24 - 40 41 40 39 38 34 33 36 38 38 38 38 37 38 37 46 56 49 37 37 38 36 32 31 30 27 30 35 41 40 36 32 30 29 29 29 32 31 29 30 30 31 30 28 22 20 18 19 17 16 15 16 16 19 20 19 16 16 17 16 17 17 19 19 17 16 19 17 16 18 21 22 22 28 30 30 32 34 37 41 42 38 32 33 34 27 27 30 33 33 34 34 32 31 32 29 24 22 22 25 24 31 36 46 62 78 91 118 135 149 166 166 172 181 181 178 178 178 172 178 182 183 184 185 186 186 186 186 184 180 173 167 158 155 157 161 142 105 76 62 46 35 27 26 23 18 20 20 21 23 21 20 16 14 14 14 13 14 14 14 14 14 14 13 12 12 12 12 11 11 10 9 8 7 8 9 9 10 11 12 13 13 13 13 14 14 14 13 12 12 12 12 13 13 13 12 12 12 12 12 12 12 11 10 11 11 12 12 12 12 12 12 11 10 9 10 11 13 13 12 12 14 19 18 18 18 20 20 20 23 29 31 31 27 25 28 27 28 28 26 24 23 26 26 26 28 26 28 27 24 - 35 37 38 36 32 29 29 35 39 38 37 37 37 37 41 55 56 47 35 34 34 32 30 29 27 25 30 36 41 40 33 27 25 25 27 30 30 27 25 27 30 31 30 22 20 18 17 19 16 15 14 15 17 18 19 17 17 19 16 16 16 19 17 19 15 15 19 19 18 20 21 22 24 31 31 32 35 39 42 42 40 38 39 34 35 39 32 27 27 31 33 35 35 32 31 30 28 25 24 24 23 22 22 22 27 37 48 59 68 76 92 104 114 132 133 139 149 151 156 166 172 178 182 182 182 180 180 180 179 173 167 156 148 148 142 126 91 64 49 36 31 29 24 21 20 20 20 21 24 24 21 19 15 14 13 14 14 15 19 18 15 14 13 12 12 12 11 11 10 10 10 10 8 7 8 9 11 12 12 13 13 13 13 13 14 14 14 13 13 13 13 12 13 13 13 12 12 12 12 12 12 12 11 10 10 11 12 12 11 11 12 13 13 11 9 10 11 12 13 12 12 13 15 19 17 17 18 19 19 21 30 32 30 27 25 28 28 28 26 27 27 26 26 26 28 28 26 25 25 24 - 35 36 38 36 32 30 30 35 39 38 38 38 38 37 44 54 55 46 36 35 34 30 27 28 25 25 29 35 39 39 31 24 24 25 29 33 31 25 25 26 28 31 30 21 17 15 15 16 16 15 15 16 18 20 18 17 16 19 16 15 15 16 16 15 14 14 16 19 18 20 23 22 28 33 35 34 38 43 43 40 37 40 40 34 38 40 40 34 32 31 32 34 35 31 29 27 29 29 28 26 27 26 23 22 21 21 25 25 31 36 52 58 63 69 72 75 84 89 109 126 135 148 163 163 166 166 162 166 166 166 156 141 138 130 102 75 63 43 33 30 26 26 21 20 20 21 21 21 20 20 19 16 14 13 14 14 14 15 16 15 14 12 12 12 11 11 10 10 10 11 11 10 10 9 10 10 12 13 14 13 13 13 14 13 14 14 14 14 14 13 13 12 13 13 13 12 11 12 12 12 12 12 11 11 11 12 12 12 11 11 12 13 13 12 10 10 11 12 12 12 12 13 14 16 16 16 17 19 20 21 30 32 29 28 26 25 26 28 26 25 24 24 24 26 28 25 25 25 27 27 - 35 38 40 40 35 32 29 32 36 37 38 37 38 37 44 53 55 49 39 36 33 29 27 28 28 25 27 34 39 35 31 29 30 25 30 34 31 28 25 25 25 28 22 18 15 14 14 15 16 16 16 17 20 20 20 19 16 15 16 16 16 16 15 14 14 14 14 16 18 21 23 23 33 36 37 35 35 41 39 36 35 39 39 34 39 39 39 42 45 44 41 36 32 27 25 25 26 28 28 28 28 27 27 26 27 26 26 26 25 25 27 29 27 31 33 35 39 42 55 63 67 71 77 82 105 123 110 113 132 126 116 101 98 78 64 47 37 27 26 23 21 21 21 21 22 21 20 20 18 17 16 15 15 14 14 14 14 14 14 13 13 12 11 11 11 11 10 10 9 10 11 11 11 11 11 12 13 14 15 14 13 14 18 14 13 14 14 14 14 13 12 12 13 14 13 12 11 11 12 12 13 12 11 11 11 12 13 12 11 12 12 13 13 12 12 11 12 12 12 12 12 12 13 15 17 18 18 19 19 20 21 23 23 24 27 26 27 28 26 26 24 23 24 25 26 26 28 29 33 30 - 37 39 40 40 37 32 29 31 33 39 40 37 37 37 44 53 54 53 46 41 37 31 27 27 27 25 25 34 36 34 33 33 34 32 35 34 32 31 27 27 28 26 18 16 14 13 13 15 19 19 17 19 21 21 20 17 15 15 16 17 19 19 15 14 14 15 15 17 20 24 24 29 35 37 36 37 37 35 35 34 34 36 36 39 39 36 36 39 43 49 49 41 36 30 26 23 23 23 26 28 25 25 26 28 29 32 28 28 28 28 30 32 27 27 27 25 24 25 25 29 31 29 27 29 43 55 52 48 59 60 58 53 51 39 34 21 21 22 21 21 20 20 22 21 21 20 18 18 17 17 17 19 18 14 13 13 13 13 13 12 12 11 11 11 11 11 10 9 10 11 12 12 13 13 13 13 14 15 15 14 13 14 18 14 13 14 14 14 14 13 12 12 13 14 13 12 10 11 12 12 12 12 11 11 12 13 13 13 12 12 12 13 13 13 13 12 12 11 12 12 12 12 13 15 17 19 19 18 17 18 20 20 21 21 21 23 24 26 26 27 27 22 23 24 25 28 28 29 33 31 - 33 38 38 37 38 35 31 31 32 36 40 39 39 37 36 43 46 52 53 51 46 39 34 31 30 29 27 32 35 35 38 41 41 40 40 35 35 35 33 34 34 28 18 15 14 14 15 16 17 19 17 18 20 20 18 17 15 16 16 19 19 17 15 14 15 19 20 19 20 24 29 33 34 36 38 38 38 35 33 32 34 35 35 38 36 33 32 36 38 43 43 42 40 34 29 25 26 27 29 28 25 25 26 28 30 32 30 31 33 31 31 35 34 34 32 31 29 28 30 27 29 29 25 23 23 25 25 25 24 25 23 23 24 23 21 20 21 21 20 20 21 21 21 20 18 18 18 19 20 21 21 19 15 13 12 11 11 11 12 11 11 11 11 11 11 10 10 11 11 12 12 13 14 15 15 15 16 15 14 13 13 14 14 14 14 15 15 15 14 13 12 12 13 14 13 12 10 11 11 12 12 12 11 11 12 13 13 13 12 12 12 12 13 12 12 12 11 11 12 12 12 12 14 15 19 20 20 17 16 17 20 20 18 18 18 20 20 21 22 26 25 21 21 24 26 25 27 30 30 29 - 24 30 36 38 37 36 34 34 34 35 37 37 38 35 33 34 34 39 46 49 50 50 44 39 38 38 38 37 40 41 44 46 49 49 41 35 34 32 32 32 31 22 18 15 14 18 19 17 17 17 16 17 18 20 19 19 19 17 17 17 17 16 15 14 15 20 21 21 22 25 32 33 32 35 38 35 36 35 32 32 36 35 34 32 31 31 33 36 37 38 37 40 38 32 27 31 31 35 39 32 31 30 25 25 29 30 31 32 33 32 31 34 36 36 33 30 30 33 33 31 31 32 29 26 26 27 28 28 27 24 23 23 21 20 21 21 20 20 21 24 21 20 18 17 17 18 20 21 21 21 20 14 13 11 10 9 10 11 11 11 12 12 12 11 10 10 11 12 13 13 13 14 16 19 18 19 20 15 14 13 13 14 14 14 15 19 19 15 14 13 13 12 13 13 13 11 10 11 12 12 12 11 11 12 13 13 14 13 12 12 12 12 13 12 12 11 11 11 12 12 12 13 14 16 17 18 17 16 15 16 18 19 18 17 16 17 17 17 18 20 21 20 21 25 28 28 31 33 30 27 - 22 22 29 34 36 39 37 36 38 36 35 35 37 36 37 37 34 36 39 39 42 43 41 42 45 48 52 52 55 59 58 57 60 58 51 46 43 40 36 35 31 22 18 15 14 16 19 19 17 16 16 17 19 20 17 17 19 19 16 15 15 15 15 14 15 18 20 21 23 27 33 31 33 36 34 33 36 33 32 38 40 37 35 32 27 29 34 40 40 38 37 38 39 33 30 31 31 33 39 34 41 40 31 30 33 31 30 30 30 30 30 29 31 33 31 29 29 32 33 32 32 32 30 29 27 27 26 28 28 26 26 23 20 20 20 20 21 23 24 22 20 18 16 16 17 21 21 21 20 17 14 12 10 8 8 8 8 10 11 12 13 13 12 11 9 10 11 13 14 13 13 14 19 19 18 20 20 15 13 12 13 14 14 14 18 19 16 15 14 14 13 12 13 13 12 11 11 12 12 11 11 11 11 12 13 13 13 13 12 12 12 12 13 13 12 11 11 11 12 12 13 13 14 16 17 17 17 16 15 15 18 20 20 18 17 17 17 16 16 17 17 19 20 21 24 28 33 33 29 23 - 22 22 23 29 35 39 38 40 41 39 39 37 39 42 44 44 45 45 41 40 40 39 38 39 41 45 49 51 56 59 59 60 63 65 68 69 71 72 72 65 48 25 20 15 14 16 18 19 17 16 15 17 19 17 16 15 16 17 15 14 14 14 14 14 15 17 21 22 25 31 34 32 35 38 32 35 36 33 33 40 38 36 35 30 27 31 36 41 42 39 37 36 36 33 32 32 31 33 34 36 41 40 34 36 40 36 32 30 30 31 31 29 29 29 29 27 25 28 28 29 30 31 29 26 23 23 24 24 23 23 26 21 18 18 18 21 23 23 20 20 19 16 15 16 19 21 21 19 16 14 12 10 8 8 9 9 9 10 11 12 13 13 12 11 9 10 12 13 14 14 14 14 16 18 19 20 19 14 12 12 14 14 14 14 16 17 16 14 14 14 13 12 12 12 12 11 11 12 12 11 10 10 11 11 12 13 13 12 12 11 12 13 14 13 12 11 11 12 12 13 13 13 15 16 17 18 19 19 16 16 19 21 21 20 18 20 20 19 17 17 19 19 18 20 20 21 27 32 30 26 - 23 24 24 24 31 38 38 39 41 40 38 39 45 49 49 48 49 49 49 49 47 43 40 40 39 43 47 48 50 53 54 56 58 60 63 67 72 72 71 68 49 23 19 16 15 16 17 17 17 16 16 16 19 18 15 14 15 16 14 14 13 13 14 15 16 18 20 21 26 32 33 34 40 35 31 34 34 32 35 36 38 35 33 30 30 33 36 42 40 39 35 33 34 31 31 32 34 34 34 35 35 40 35 38 40 37 35 34 32 31 34 37 32 31 32 32 28 25 25 29 29 29 27 25 23 23 26 23 21 21 21 21 18 18 21 23 23 21 19 18 17 16 16 19 19 18 18 16 14 12 11 9 9 10 11 11 10 11 12 12 13 12 12 11 11 11 12 13 14 13 14 14 16 18 21 19 16 13 12 13 14 15 14 14 16 19 15 14 14 14 13 12 11 12 11 11 11 12 12 10 9 10 11 11 11 12 12 12 12 12 12 13 15 15 13 12 11 11 12 12 12 13 14 19 19 18 19 19 16 16 19 20 22 21 21 23 23 21 19 19 21 20 20 20 19 20 21 23 24 27 - 27 26 25 24 29 35 36 34 34 35 34 33 37 41 43 43 43 47 51 54 54 48 47 48 49 48 47 45 47 50 52 54 52 52 55 56 55 55 58 52 33 21 18 16 15 16 16 15 16 17 19 15 14 14 14 15 15 15 14 13 13 13 15 16 18 18 21 22 28 30 29 34 40 32 29 30 29 31 37 35 38 36 33 30 29 30 32 33 33 34 32 31 32 30 30 31 33 33 34 35 40 40 35 36 36 40 34 32 31 31 34 39 33 35 36 36 30 27 29 32 30 30 33 30 29 27 23 24 21 20 18 18 20 21 23 21 21 20 19 18 17 16 17 19 17 16 18 14 13 11 11 10 10 11 12 12 12 12 12 12 12 12 12 12 12 12 13 14 14 13 14 14 17 20 21 20 15 13 12 13 14 15 15 15 16 19 15 14 14 13 12 12 12 12 13 13 13 13 12 11 12 12 12 12 11 12 12 13 12 12 13 14 16 15 14 12 11 11 12 13 12 12 13 15 19 18 18 17 16 17 18 20 24 22 21 22 22 21 20 19 21 20 20 21 18 20 21 22 21 20 - 28 28 28 28 27 30 31 31 32 34 33 31 32 34 35 34 38 41 42 42 43 43 43 44 49 49 44 46 48 47 51 50 49 49 52 53 53 58 54 43 28 20 18 16 17 16 15 15 15 19 19 15 13 13 14 15 15 15 14 14 14 14 16 17 18 20 21 22 27 29 29 34 37 30 28 29 28 32 35 37 38 33 30 28 28 29 29 29 27 30 27 29 30 30 30 35 38 35 33 35 44 41 41 41 42 40 36 33 34 33 39 39 34 35 35 32 30 30 30 32 30 32 33 31 31 22 20 22 20 18 18 19 21 21 22 20 20 20 20 20 18 17 17 17 15 14 14 13 12 11 10 10 11 12 12 12 12 13 13 13 12 12 13 13 13 14 14 15 14 14 15 16 18 20 21 17 14 13 12 13 14 14 14 15 19 19 15 14 14 14 14 14 14 15 15 18 14 13 13 13 14 18 14 13 12 12 12 12 12 13 15 16 17 16 15 13 11 11 12 12 12 11 12 14 16 17 19 19 17 17 17 20 22 27 25 24 23 23 21 20 21 21 21 22 21 21 22 23 21 18 - 28 28 28 28 25 27 28 29 32 33 31 29 30 32 31 31 31 32 33 35 37 38 35 36 37 37 39 41 40 39 40 41 39 37 38 38 40 38 35 31 22 18 18 19 19 16 15 15 15 16 15 14 13 13 15 15 15 15 15 15 15 16 17 20 20 20 21 21 24 28 29 32 30 25 27 28 29 35 35 35 33 29 27 26 27 28 30 27 24 25 24 28 29 28 31 38 40 40 35 36 44 33 40 40 42 41 36 34 35 34 41 41 34 36 33 29 29 29 29 32 30 27 25 28 25 20 18 21 19 17 19 19 18 20 20 20 20 21 21 20 19 17 16 15 14 14 13 12 11 10 8 9 11 12 12 12 12 13 13 13 13 13 13 13 13 14 15 15 15 15 17 20 20 18 18 16 15 13 13 13 14 14 14 15 16 16 15 15 16 18 18 20 20 19 20 19 16 15 14 15 16 18 15 14 13 13 12 12 13 15 19 21 19 16 14 13 12 11 12 12 11 11 11 13 14 16 19 19 16 16 16 18 20 28 29 27 24 23 22 22 22 21 23 25 23 21 23 24 20 18 - 28 28 28 26 25 28 28 28 30 30 30 29 30 31 29 29 30 27 27 32 36 36 33 34 33 33 36 34 32 31 32 32 32 30 29 30 30 29 27 25 21 18 16 19 16 16 15 15 15 16 15 14 13 14 15 16 16 15 15 16 16 17 19 20 20 20 20 21 24 25 27 31 29 27 25 27 31 35 35 35 32 27 26 28 29 28 30 27 26 24 24 26 26 28 30 33 34 40 33 38 38 33 36 34 40 36 34 33 35 31 34 40 34 36 34 29 27 28 30 32 30 27 27 23 20 19 18 19 18 19 20 19 19 18 20 21 22 21 20 19 19 16 15 14 13 13 13 12 10 9 8 9 10 12 12 12 12 12 13 13 13 13 13 13 13 15 15 15 15 16 20 21 21 20 16 15 18 14 13 13 14 13 13 14 18 17 17 18 20 21 21 21 21 20 18 17 16 15 15 16 16 15 15 14 14 14 13 13 14 16 21 21 20 15 14 13 12 11 11 10 10 10 11 12 13 14 14 15 16 16 15 15 18 24 29 27 24 23 24 26 23 21 23 27 24 21 24 24 20 18 - 29 29 29 28 26 26 25 25 25 28 30 30 30 29 27 27 30 30 30 31 34 31 29 28 28 29 30 29 25 25 28 28 28 28 28 28 29 30 29 26 20 17 15 15 15 15 15 15 15 15 14 14 13 14 15 17 17 16 15 15 15 16 17 19 20 19 18 21 25 24 26 29 30 30 28 25 33 34 33 32 30 27 26 29 29 28 28 27 26 24 24 24 25 25 27 29 31 33 25 32 33 38 36 32 32 31 32 33 32 27 31 36 38 34 31 31 28 25 31 32 32 26 26 20 17 17 19 20 18 18 20 18 18 21 23 21 21 20 18 16 15 14 13 12 12 12 12 12 11 10 9 9 10 12 12 12 12 12 13 13 13 12 13 14 14 15 15 14 15 16 18 20 20 19 16 15 18 15 14 14 14 13 13 14 17 18 20 23 30 30 21 20 21 20 17 16 16 16 16 16 16 15 14 14 15 16 15 15 16 19 19 18 16 14 13 13 13 12 11 9 9 9 10 11 12 13 13 13 14 14 14 14 17 22 30 28 28 28 25 26 24 23 24 27 26 24 26 24 21 18 - 28 29 28 26 26 26 23 25 26 28 30 30 29 28 28 27 29 31 31 31 33 28 24 24 24 24 25 28 28 25 26 26 27 27 28 29 29 30 30 27 20 17 15 14 15 14 15 14 14 14 14 14 14 14 15 17 19 17 16 15 14 15 16 17 20 18 18 21 24 22 24 25 27 29 27 29 33 31 31 27 26 26 26 28 27 27 26 27 27 24 24 23 23 24 25 28 31 29 25 29 32 38 34 32 32 31 31 32 29 27 30 32 36 31 29 31 29 25 29 31 25 23 21 18 16 17 20 21 20 19 20 20 21 24 23 20 18 19 17 15 14 13 12 12 12 12 13 13 12 12 11 10 11 12 13 12 12 12 13 13 13 13 13 14 15 15 15 14 15 19 19 19 19 19 16 15 15 15 14 14 14 13 14 16 20 22 24 27 27 23 20 20 21 20 18 17 17 17 17 17 17 15 14 14 15 20 20 17 19 18 17 16 15 13 13 13 13 12 11 8 8 8 8 10 11 12 12 12 13 14 14 13 15 21 31 31 30 30 30 29 26 25 25 27 28 26 24 24 21 20 - 29 28 26 26 23 23 23 26 29 30 30 27 27 28 28 29 29 31 30 30 32 27 24 26 25 24 24 26 27 25 24 27 27 25 28 29 28 30 29 27 21 17 15 14 15 15 15 14 14 14 15 14 14 14 15 16 17 19 16 15 14 14 15 17 17 17 18 21 24 22 27 28 27 29 29 30 31 30 29 27 26 28 25 28 28 30 26 24 23 22 24 23 23 23 25 29 31 25 27 31 32 38 34 33 34 31 31 30 25 28 30 30 33 29 25 31 28 25 28 26 22 21 20 18 17 18 21 21 20 18 20 21 24 21 20 18 17 16 16 15 14 13 12 11 12 13 13 13 13 13 12 11 11 12 13 13 13 13 13 14 14 14 14 15 15 15 14 14 15 19 19 19 19 19 16 16 16 16 16 15 15 15 16 21 25 27 24 23 21 21 20 20 20 20 20 19 20 20 18 20 19 19 15 14 15 17 19 17 19 19 16 15 13 12 13 13 13 11 10 8 7 7 7 9 10 11 11 11 12 13 13 14 15 20 28 32 31 31 35 33 29 28 30 32 35 28 21 21 18 18 - 29 26 24 23 22 23 24 26 31 28 28 25 25 26 28 29 28 26 25 25 30 29 26 27 27 25 25 26 25 25 24 24 24 24 26 25 25 28 26 23 20 17 14 14 15 15 15 15 14 15 15 15 14 14 14 15 16 16 16 15 15 15 16 19 17 16 17 21 25 23 27 28 28 28 25 28 29 25 26 26 28 27 25 29 30 28 24 23 21 21 23 21 21 21 23 31 33 29 32 32 32 36 34 34 34 31 31 29 25 29 31 31 31 24 27 31 24 22 26 25 21 18 20 18 20 21 20 18 18 20 21 21 18 18 17 17 15 15 16 15 14 12 11 11 12 13 13 13 13 13 12 11 11 12 13 14 13 13 14 14 14 14 15 15 16 15 14 14 14 16 17 17 16 17 17 17 19 17 19 19 16 17 20 25 27 24 22 21 20 20 21 22 21 21 20 20 19 18 18 20 19 19 16 15 15 16 16 16 16 16 16 14 13 11 11 12 12 11 10 8 7 6 7 9 9 10 10 9 11 12 13 14 15 18 24 34 32 33 34 36 33 31 34 37 40 28 20 17 16 19 - 29 27 24 23 22 24 24 28 31 25 25 24 25 26 26 26 25 25 24 24 28 28 26 25 28 26 25 28 26 26 26 24 24 24 24 25 25 26 25 22 20 16 14 15 15 17 16 16 16 16 17 16 15 14 14 14 15 15 16 16 16 17 17 19 17 16 18 21 25 23 26 26 26 26 23 26 27 25 27 26 25 24 23 27 29 25 21 24 22 21 22 21 21 20 23 33 33 30 32 32 31 36 34 36 33 31 31 30 24 25 30 29 25 24 28 26 21 21 23 21 18 18 18 18 21 21 19 17 18 21 21 20 17 16 17 17 15 15 15 15 14 12 11 11 12 13 13 12 12 12 12 11 11 13 14 14 14 14 14 14 15 15 15 15 16 15 14 14 15 16 15 14 14 15 16 19 19 17 16 19 17 20 24 25 22 21 21 21 20 21 22 22 21 20 20 18 18 17 17 18 19 18 17 16 16 16 16 15 15 14 14 13 11 9 10 11 11 11 10 8 7 6 7 8 8 9 9 9 10 11 13 14 14 16 21 34 34 32 35 40 40 34 37 41 41 27 18 15 15 19 - 30 30 28 24 23 23 24 25 28 25 26 24 24 27 28 24 26 26 24 24 25 25 24 25 26 27 25 29 28 26 26 25 27 26 25 28 26 28 28 23 20 17 16 16 17 17 19 19 17 17 17 16 15 14 14 14 15 15 16 16 17 20 18 18 19 18 18 21 25 23 26 24 26 24 23 24 25 25 27 26 26 22 21 24 26 24 21 24 22 21 21 20 20 20 22 30 29 28 30 27 31 35 34 36 33 29 30 28 25 24 28 25 24 28 28 23 21 21 20 19 19 20 20 19 19 19 18 17 18 18 19 16 15 16 19 20 15 14 14 13 13 12 11 12 12 13 12 12 11 11 11 11 11 13 14 14 15 14 14 14 14 15 15 15 15 14 14 14 15 15 14 13 13 14 15 17 17 16 16 17 19 21 23 21 20 21 21 22 23 21 20 20 18 19 18 18 17 17 17 17 18 18 19 19 18 17 17 16 15 14 12 11 10 8 8 10 11 11 11 9 8 6 7 8 8 9 10 9 10 11 13 13 13 14 18 31 32 30 32 36 36 34 37 41 40 22 18 15 16 18 - 29 29 29 25 25 26 26 24 26 28 29 26 24 26 27 24 26 26 25 24 26 25 24 26 26 25 25 28 29 27 25 25 28 25 28 28 28 27 25 21 18 18 19 19 18 19 19 19 16 16 16 15 15 14 15 15 15 16 17 17 18 20 17 17 19 19 20 21 22 23 23 21 21 21 21 24 24 26 27 23 24 22 21 23 26 24 21 21 20 20 20 18 18 18 21 26 25 26 27 23 28 30 30 32 29 25 28 28 25 27 27 25 26 27 27 22 21 21 18 18 19 19 20 19 18 19 18 20 20 16 15 15 14 15 20 20 15 13 13 13 12 12 12 12 12 13 12 11 11 11 11 11 11 13 14 14 14 13 14 14 15 15 15 15 15 14 13 14 15 15 14 13 12 13 15 16 17 16 17 20 20 20 20 18 18 21 24 25 23 20 19 19 18 18 18 19 20 18 18 18 19 18 19 18 18 18 19 19 15 13 11 9 9 8 7 9 11 12 12 10 9 8 8 9 9 10 10 10 10 11 12 13 12 12 16 22 28 28 27 30 32 32 36 39 33 22 18 17 18 20 - 28 27 26 26 26 26 24 24 29 30 30 27 24 24 25 25 25 26 26 26 26 26 27 27 26 25 25 29 33 29 27 26 28 26 26 26 23 21 20 20 18 19 19 17 17 19 19 16 15 15 15 15 15 15 14 15 15 16 19 19 19 17 16 17 19 20 21 21 21 22 22 20 20 20 23 27 25 26 26 22 22 21 21 25 26 24 23 21 20 20 17 16 16 18 21 24 22 23 23 23 26 26 28 28 24 24 27 23 24 27 26 22 23 23 22 21 20 18 18 18 18 18 20 18 18 19 18 19 16 15 15 15 15 15 16 15 14 12 12 12 12 12 12 12 12 12 12 11 10 10 10 10 11 12 13 13 12 12 13 14 15 15 15 14 13 12 12 13 14 15 14 13 13 13 14 16 17 18 18 20 20 20 20 20 21 23 25 22 20 19 18 19 20 18 19 19 18 20 20 20 21 20 20 20 18 18 19 15 13 11 9 8 8 8 7 8 11 12 12 11 10 9 9 10 10 11 11 10 10 11 12 12 12 12 14 21 23 26 24 25 26 28 31 31 31 24 20 19 20 20 - 25 28 26 26 26 25 24 27 34 33 32 30 25 27 27 25 25 29 27 25 25 26 25 26 25 25 28 31 33 31 28 28 26 28 26 23 20 18 18 18 20 20 18 17 16 17 16 14 13 14 14 15 15 14 14 14 14 16 19 18 18 17 16 17 20 19 20 21 21 22 22 21 21 21 24 27 26 26 26 21 21 21 22 25 22 21 21 20 18 19 15 14 15 18 23 25 22 21 21 21 23 22 24 24 21 22 25 21 21 27 24 21 23 22 20 20 18 17 17 19 20 20 20 18 19 17 17 16 16 17 19 18 16 14 14 14 13 12 11 11 11 11 11 11 12 11 11 10 10 10 9 9 9 11 11 11 11 11 12 13 14 14 14 14 12 12 12 13 14 14 13 13 13 14 15 17 20 20 20 19 19 20 21 22 24 23 21 20 19 18 18 20 21 18 18 20 21 23 23 21 21 21 21 20 19 19 15 13 11 9 8 8 8 8 7 8 10 11 12 12 11 10 10 10 11 11 11 10 9 9 11 12 12 13 14 19 21 21 21 22 21 22 25 27 28 23 20 21 21 21 - 25 28 28 26 26 26 25 31 40 40 37 35 34 34 32 32 32 33 32 27 28 27 25 27 25 25 30 31 32 31 27 27 27 26 26 21 18 16 17 20 20 20 17 16 15 15 15 14 14 15 15 15 15 14 14 13 14 15 16 18 18 19 17 17 17 18 20 21 21 20 21 22 21 21 22 24 26 26 23 21 21 24 23 22 21 20 20 19 18 16 14 14 15 18 22 25 23 21 20 18 20 20 21 24 21 22 24 20 22 26 23 21 23 21 18 17 16 16 17 18 20 20 20 18 17 16 16 17 17 20 20 20 19 14 13 13 12 11 11 12 12 11 11 10 11 11 11 10 9 9 9 9 8 10 10 10 9 11 12 13 14 14 14 13 11 11 12 13 13 13 12 12 14 15 17 19 21 21 20 19 20 20 23 24 23 21 20 20 20 19 18 21 21 21 21 21 22 23 22 21 20 21 21 18 18 15 13 11 8 6 7 8 9 8 7 7 9 10 11 11 11 11 11 11 11 11 10 9 8 9 11 12 12 13 14 17 20 21 21 21 22 22 23 26 26 23 20 21 20 20 - 25 26 27 27 23 23 30 40 48 49 44 41 44 48 42 40 42 43 39 34 36 34 32 33 34 33 32 33 33 33 32 31 30 27 24 20 17 15 16 17 18 19 19 15 15 14 14 15 16 19 19 16 15 14 14 14 14 15 16 19 19 19 17 16 16 17 18 20 20 19 18 20 21 21 22 23 24 23 23 21 21 24 24 23 21 21 20 18 16 15 15 14 16 20 21 22 21 20 20 18 20 20 20 21 20 21 21 20 22 23 22 20 21 20 17 16 16 16 16 17 18 18 18 19 17 16 17 20 20 20 20 19 16 14 13 12 11 11 11 12 12 11 10 10 11 12 11 10 9 9 9 9 9 9 10 10 10 10 12 13 14 14 13 12 11 11 12 12 12 12 12 12 14 19 18 20 21 21 18 20 21 21 23 24 21 23 22 21 20 20 20 21 21 21 21 21 21 22 20 20 18 20 20 19 15 13 11 9 7 6 7 8 8 8 7 7 8 8 10 11 11 12 12 12 11 10 8 7 7 10 11 12 12 13 13 15 18 20 21 22 25 24 25 27 31 24 21 22 21 20 - 25 26 24 24 25 25 36 49 51 48 43 43 47 48 45 40 43 43 40 39 40 40 37 43 48 44 42 46 48 42 40 42 38 34 28 20 18 15 16 16 16 15 15 14 14 14 15 16 19 20 20 17 16 15 16 16 16 16 16 18 18 17 16 16 16 17 17 19 20 17 17 18 22 23 22 22 22 23 22 21 21 21 22 22 21 18 19 17 16 16 16 16 17 20 21 21 20 18 19 20 20 18 20 20 20 21 21 18 21 22 21 20 20 19 16 15 16 16 15 15 16 16 18 19 18 18 20 21 20 18 17 15 14 14 13 12 11 11 11 11 11 11 10 11 12 12 12 11 10 10 11 10 10 10 11 10 10 11 12 14 14 14 12 11 10 10 11 11 11 11 11 12 14 19 17 17 20 19 19 20 21 21 22 24 22 22 22 22 21 21 22 21 21 18 18 18 20 20 20 20 18 19 20 15 13 12 11 10 8 6 7 8 8 8 7 6 6 6 9 9 11 12 12 13 11 10 8 7 8 11 12 12 12 12 13 14 17 21 22 23 26 26 27 29 34 26 21 22 22 20 - 25 27 24 25 28 34 48 54 53 54 52 48 49 47 42 40 43 41 40 37 37 39 41 44 48 47 46 52 52 51 45 45 44 39 31 21 20 17 16 16 15 14 14 14 15 15 15 19 20 19 18 17 19 19 17 19 19 17 17 19 19 19 16 16 19 17 16 17 19 20 16 16 20 21 23 22 21 21 21 20 18 21 21 21 20 19 18 17 17 18 19 18 20 20 20 21 20 18 19 20 20 20 21 21 20 20 20 18 21 21 21 20 20 17 15 15 16 16 15 15 15 16 17 18 18 21 21 21 18 16 14 14 14 14 14 12 11 11 11 11 11 11 11 11 12 12 12 11 10 11 11 11 10 11 11 11 11 11 13 14 14 14 12 10 9 9 10 10 11 11 11 13 14 16 17 16 17 17 18 21 21 20 21 23 21 21 21 24 24 24 21 20 18 17 16 16 17 19 20 20 16 14 14 13 11 10 11 11 10 8 7 8 8 8 7 7 6 5 7 9 11 12 12 12 11 10 9 9 10 11 12 12 11 11 12 12 15 21 25 24 25 28 30 33 34 26 20 21 21 20 - 25 28 28 27 32 43 53 54 55 56 56 50 48 49 49 48 46 44 42 39 37 42 43 45 45 45 47 50 52 48 42 45 42 39 32 21 20 18 19 19 15 14 14 14 15 15 16 17 19 20 17 17 19 19 19 18 19 18 19 19 18 17 16 16 17 19 16 17 19 17 16 16 18 18 21 20 21 20 20 19 18 21 23 22 20 19 20 19 20 20 19 19 20 20 18 20 20 20 20 19 19 19 20 20 20 20 20 20 21 20 19 18 17 16 14 15 16 19 15 16 15 16 18 20 21 21 20 20 16 15 14 14 14 14 14 13 12 11 11 11 10 10 11 11 12 12 11 11 11 12 12 11 10 10 11 10 11 12 13 14 14 14 12 10 9 8 9 10 11 11 11 13 15 20 16 15 15 16 18 21 21 18 20 21 21 21 21 23 23 21 20 18 16 16 16 16 16 15 16 14 13 12 11 10 10 10 11 11 10 8 7 7 8 8 8 8 7 5 6 9 11 12 12 12 12 11 11 10 11 11 11 11 11 11 11 11 14 20 24 25 25 29 30 33 33 26 21 18 18 20 - 25 28 27 27 36 48 52 55 55 56 56 56 54 57 57 52 51 53 50 47 47 47 46 45 45 47 52 56 53 48 43 43 43 40 30 21 20 18 19 16 15 15 14 15 15 15 16 17 18 19 17 16 18 18 18 18 17 17 18 18 18 17 17 17 17 19 16 16 19 17 17 19 19 20 20 20 20 20 19 19 20 24 24 21 20 19 20 19 20 18 18 20 20 18 18 18 19 20 20 18 18 18 19 19 18 18 19 18 20 18 18 17 16 15 15 15 16 19 17 17 17 18 20 22 21 21 18 16 14 14 14 14 14 14 14 13 13 12 11 11 11 11 11 12 12 12 11 10 11 12 12 12 11 10 11 10 11 12 13 14 14 13 12 10 9 8 8 10 11 12 12 14 20 19 16 15 15 17 18 20 20 18 18 20 21 20 20 21 21 20 19 17 16 16 19 19 14 13 13 12 11 10 9 8 9 11 12 11 11 8 6 7 7 8 9 9 8 6 6 9 12 13 13 13 13 12 11 11 11 11 11 11 11 11 11 11 13 17 25 28 28 29 30 30 31 29 25 21 20 21 - 29 28 27 32 44 51 55 54 55 57 58 59 61 61 59 53 57 58 52 52 53 54 51 49 48 49 57 59 57 52 48 47 42 36 29 21 20 16 15 15 15 16 15 14 14 14 16 19 17 17 16 16 18 20 20 17 16 16 17 19 19 17 17 16 16 16 15 15 16 17 20 20 21 21 21 20 21 21 18 18 18 23 24 21 18 19 19 18 18 18 18 21 21 18 17 19 19 20 19 18 19 19 17 19 17 17 17 18 20 18 17 15 16 16 16 16 16 16 17 19 19 20 21 22 20 18 17 15 14 15 15 15 14 14 14 13 13 13 12 11 11 12 12 12 12 12 11 11 11 11 12 11 11 10 10 10 11 11 12 13 13 13 12 10 9 8 9 11 11 12 13 14 15 16 16 16 17 19 19 19 20 20 20 20 20 20 20 21 21 19 20 17 16 16 15 14 12 11 10 8 8 7 7 7 9 11 12 11 10 8 6 6 6 8 9 9 8 5 5 8 11 13 13 13 13 12 12 11 10 9 9 10 11 11 11 11 12 16 26 32 31 30 30 30 32 33 31 30 23 20 - 28 29 29 41 54 57 59 58 57 60 61 60 59 59 57 53 57 58 54 54 57 57 55 53 52 51 59 58 59 59 53 51 44 36 31 21 17 14 13 14 15 16 15 15 14 15 15 19 17 16 16 16 17 20 20 17 15 15 16 18 18 17 17 16 16 16 15 15 16 17 17 18 20 21 21 20 21 21 20 18 20 21 21 20 18 18 19 19 17 19 20 21 21 18 19 19 19 17 16 16 18 16 16 19 16 16 17 19 19 17 17 16 17 17 19 16 16 16 17 18 20 21 21 20 18 17 16 15 15 16 19 15 14 14 14 14 13 13 12 12 12 13 13 13 13 12 12 11 11 11 11 11 10 9 10 10 11 11 11 12 12 12 11 10 9 9 10 11 11 12 13 14 15 15 16 19 19 18 18 18 20 21 21 22 20 20 20 21 21 20 19 17 16 14 13 11 10 8 7 5 6 6 6 7 9 11 11 11 10 8 6 5 5 7 7 7 7 5 5 6 10 12 12 12 12 12 11 11 9 8 9 10 11 11 11 11 12 15 22 32 32 30 30 32 35 35 39 39 30 21 - 27 27 34 50 59 61 61 60 59 61 61 58 53 54 54 55 57 57 53 56 58 57 55 56 55 54 57 56 57 58 50 47 44 41 33 21 16 14 14 14 15 15 15 15 15 15 16 16 17 17 16 15 15 17 19 17 15 14 15 19 19 19 16 16 17 16 15 14 15 16 16 16 17 20 21 20 21 21 18 18 20 21 20 20 19 19 19 17 17 20 21 21 20 19 18 18 17 17 15 15 14 15 15 15 16 17 19 19 18 17 17 17 18 19 19 16 15 15 17 20 21 20 18 17 16 16 16 17 16 17 19 15 14 14 15 14 14 13 12 12 13 14 14 13 13 12 12 13 13 12 11 11 10 10 10 10 11 11 11 11 11 12 11 10 9 10 11 11 11 12 13 14 14 15 17 19 19 18 18 18 18 21 24 24 20 18 18 20 21 20 18 19 14 12 10 8 7 6 7 6 6 6 6 7 9 10 10 10 9 8 6 5 5 6 7 6 6 4 4 5 8 11 12 12 11 11 11 10 9 7 8 10 11 11 11 11 12 15 20 28 32 32 30 34 39 37 39 39 33 21 - 30 32 43 53 59 61 60 60 60 60 59 56 53 56 57 57 57 55 53 58 58 57 51 52 56 57 55 55 57 52 48 48 50 43 26 20 16 14 14 15 15 14 14 15 16 16 16 16 19 19 16 15 14 16 19 19 15 14 14 15 15 16 16 17 19 19 15 14 15 15 16 16 17 18 21 20 21 20 18 19 20 21 21 21 20 19 17 16 16 18 20 21 21 20 19 18 17 19 16 14 14 14 14 15 16 17 19 19 16 16 17 20 20 20 18 17 16 16 19 21 19 17 16 15 15 15 16 19 19 17 18 14 14 14 15 14 13 13 13 13 14 14 14 13 13 12 13 14 14 13 12 11 11 11 11 11 11 11 11 11 11 12 11 10 10 10 11 11 12 13 14 14 14 15 17 18 18 18 19 20 21 21 21 21 20 17 17 18 21 20 19 14 12 10 7 6 6 6 7 7 7 7 6 8 9 9 9 9 9 8 6 6 6 7 7 7 7 6 5 4 6 10 11 11 11 11 11 10 9 8 9 10 10 10 10 11 12 14 20 25 31 31 32 35 39 35 37 39 36 27 - 34 38 49 52 56 59 60 60 61 61 61 59 58 58 58 57 57 55 52 55 57 57 52 54 61 63 63 60 55 51 50 52 50 38 21 18 15 15 14 15 15 14 14 14 15 16 15 15 15 17 18 15 14 15 16 16 15 14 14 14 15 16 16 17 17 17 15 14 14 15 15 15 16 19 21 21 21 20 19 18 21 21 21 21 20 19 16 15 15 18 20 21 21 20 20 18 19 19 19 16 15 14 15 15 16 17 17 16 15 14 16 19 19 19 19 17 17 17 17 17 17 16 15 15 15 16 17 19 17 16 14 14 14 14 14 13 13 13 13 13 14 14 13 13 12 12 13 14 14 14 13 12 11 11 12 12 11 11 11 11 11 11 11 11 11 11 11 12 13 14 14 14 14 15 16 19 19 19 18 20 21 20 18 19 19 17 17 17 19 16 14 12 11 8 6 6 6 7 8 8 7 7 7 7 8 8 8 9 9 8 7 7 7 8 8 7 7 7 6 5 4 9 11 12 11 11 11 11 9 8 9 10 9 9 10 11 12 14 18 24 29 31 34 38 36 33 37 39 39 33 - 36 44 51 52 55 56 56 57 58 61 61 59 58 57 55 56 57 54 51 53 54 57 54 57 62 63 63 59 52 46 46 52 50 32 20 16 15 15 15 15 14 14 14 14 15 16 16 16 16 17 15 15 14 14 15 15 15 14 15 14 15 16 19 18 18 19 16 14 14 14 14 14 16 20 21 20 20 20 20 18 20 21 20 19 20 16 15 15 16 18 19 20 20 19 20 18 18 19 19 19 15 14 15 15 17 17 17 15 14 15 16 17 19 19 19 18 17 17 17 17 16 16 16 15 15 16 19 18 16 14 13 13 14 14 14 13 13 12 13 14 14 13 13 12 12 13 13 13 14 14 13 12 11 12 12 12 11 11 11 11 11 11 11 10 10 10 11 13 14 18 15 14 15 15 16 19 20 20 19 19 20 20 18 17 17 19 18 17 15 13 12 11 10 8 7 6 7 7 7 8 8 7 7 7 8 8 9 9 9 9 7 8 8 9 9 8 8 7 7 5 3 8 12 13 12 11 11 10 10 9 9 9 8 9 10 11 13 14 18 23 31 32 35 39 36 33 38 43 42 32 - 44 50 53 53 54 55 54 57 56 56 57 54 53 53 52 57 57 54 50 51 53 55 55 57 58 56 57 54 52 49 50 52 43 22 18 15 15 15 16 15 14 14 13 14 15 17 18 19 19 16 15 14 14 14 14 14 14 14 15 15 17 17 19 18 19 19 19 15 14 14 14 14 16 18 19 19 18 20 18 19 20 20 18 17 15 14 14 15 17 19 19 20 18 18 17 19 17 17 17 16 15 14 14 15 17 19 16 15 15 16 19 18 19 19 19 19 17 17 19 19 16 16 15 16 17 19 18 19 15 14 13 13 14 14 14 14 13 13 13 13 13 13 13 12 12 13 13 13 13 13 13 12 11 12 12 12 11 10 11 11 11 11 11 10 9 10 11 13 14 18 15 15 15 15 15 16 17 19 18 19 18 20 20 17 18 20 20 20 13 12 11 11 11 10 8 8 8 8 7 7 8 7 6 7 8 9 10 9 9 8 7 8 10 10 10 8 7 6 6 4 3 8 12 14 13 12 11 10 10 10 9 8 8 8 10 11 12 13 16 21 34 34 35 40 39 35 38 43 43 32 - 50 50 53 53 54 53 52 56 54 51 51 51 50 51 53 56 56 52 49 52 56 57 54 55 56 51 51 49 47 46 46 42 28 20 17 15 15 15 16 16 15 14 14 15 19 20 20 20 20 17 15 14 13 14 14 14 14 14 15 19 19 18 18 20 19 18 17 16 16 16 15 15 16 19 19 18 19 19 18 19 19 18 20 16 14 14 14 15 17 19 20 20 18 17 17 16 16 15 16 16 16 15 15 16 19 19 17 15 16 19 20 18 18 19 18 17 17 17 19 17 16 15 15 16 19 18 17 16 14 13 13 14 14 14 14 14 14 14 13 13 13 13 12 12 12 13 13 13 13 12 12 11 11 12 12 12 11 10 10 10 11 11 10 9 8 9 11 13 14 15 16 17 17 17 15 15 16 17 17 17 17 19 19 20 20 19 19 14 12 11 11 11 11 10 10 9 8 8 7 7 8 7 6 7 9 10 10 9 8 7 7 9 11 12 11 9 7 7 7 5 3 7 12 14 14 13 11 10 10 9 9 9 8 7 10 11 12 12 14 20 27 30 33 39 40 39 39 40 40 32 - 48 49 53 52 51 49 49 54 53 51 50 50 51 52 51 51 50 47 44 47 55 56 52 53 55 47 41 42 41 38 34 30 21 18 17 19 17 16 16 15 15 14 15 19 20 21 21 21 21 17 14 13 13 13 14 14 15 14 16 19 19 17 18 19 20 18 18 17 19 19 17 16 17 19 19 18 20 20 19 18 17 17 16 15 14 14 15 17 18 20 20 20 18 18 17 16 15 15 15 19 17 16 16 16 19 19 17 16 15 19 20 20 17 17 17 17 17 17 19 15 14 14 15 19 19 17 16 15 14 13 13 14 14 13 14 14 14 14 14 14 13 12 12 12 12 13 12 12 11 11 11 11 11 12 12 12 11 10 9 9 9 10 10 10 10 10 11 12 13 14 19 21 20 19 16 15 15 15 18 18 15 15 15 16 16 15 14 12 11 11 11 11 11 10 10 9 9 8 7 7 7 6 5 6 8 10 10 8 6 6 6 9 11 12 11 10 8 8 8 7 4 6 11 13 13 13 11 10 10 9 8 8 7 7 8 10 11 11 13 16 23 28 31 33 34 33 33 34 35 31 - 44 45 44 43 41 41 40 41 43 44 43 41 42 41 39 39 40 41 36 35 41 44 42 42 44 38 34 33 34 31 24 21 18 17 16 17 19 19 15 15 14 15 16 21 21 21 21 22 22 18 15 14 14 13 13 14 15 15 15 16 16 17 18 19 19 20 19 18 19 19 19 17 16 17 19 17 17 17 17 17 19 17 16 15 14 14 15 17 18 19 18 18 18 19 18 17 16 16 17 18 19 17 17 17 19 18 19 15 15 16 17 19 17 17 17 17 19 17 15 14 14 14 16 17 17 16 16 15 14 13 13 13 13 13 13 13 14 14 14 14 13 12 12 12 12 12 11 10 9 10 10 11 11 12 13 12 11 11 9 8 9 9 11 11 11 10 10 11 13 16 21 21 20 19 16 15 14 14 14 14 14 13 13 13 13 13 12 11 10 11 11 10 9 8 9 9 8 7 6 6 6 5 5 5 8 9 9 7 6 5 5 8 10 11 11 9 8 9 10 9 5 5 9 12 13 12 11 9 8 8 7 7 7 7 8 10 11 11 12 15 20 22 24 26 27 24 22 22 21 21 - 37 35 33 32 32 33 32 31 32 33 33 32 32 31 30 30 32 31 29 29 31 31 27 29 31 30 29 28 26 22 20 19 17 16 16 17 19 19 16 15 15 15 16 20 20 20 21 21 21 17 15 14 14 13 14 14 15 15 15 15 16 17 19 18 19 19 17 17 17 17 19 16 15 16 16 16 15 15 16 19 19 17 15 14 14 14 16 17 18 18 18 17 17 18 19 19 17 17 18 19 20 19 17 17 19 16 15 15 14 15 15 16 17 17 18 19 17 16 15 14 14 15 19 17 16 15 15 15 14 13 12 12 12 12 12 13 13 14 14 13 13 12 12 12 12 12 11 9 7 8 10 11 11 12 12 12 11 10 9 8 9 9 11 12 12 11 10 11 13 19 21 20 17 15 15 14 14 13 12 12 12 11 11 11 11 11 11 10 10 10 10 9 8 8 9 9 8 6 5 5 5 5 4 4 6 7 8 6 5 4 4 6 8 8 9 8 8 9 10 8 5 3 7 11 12 11 9 7 6 7 7 8 8 8 8 9 11 11 12 13 15 18 21 21 21 21 20 20 18 21 - 32 30 29 28 27 28 27 27 27 28 27 27 28 27 25 25 28 27 25 27 28 25 23 23 25 23 26 24 21 20 18 16 16 16 16 16 17 17 16 18 16 15 16 17 17 17 19 18 18 16 15 15 14 14 14 15 16 15 15 15 16 19 19 18 19 18 18 17 16 16 16 16 15 15 15 15 14 15 16 16 16 16 15 15 15 15 16 17 18 19 18 17 16 17 19 17 17 17 18 19 20 17 15 14 14 14 13 14 14 14 15 16 17 17 19 19 15 15 15 15 16 17 19 16 15 14 14 14 13 12 12 11 11 11 13 13 14 14 14 13 13 12 12 12 12 11 10 9 8 9 10 11 12 12 12 12 11 10 10 10 9 9 11 12 12 11 11 12 14 19 19 16 14 14 13 13 13 12 11 11 11 9 10 9 10 10 10 9 9 10 9 8 8 7 9 9 8 7 5 5 4 4 3 3 5 5 7 5 4 3 4 4 5 5 7 7 7 8 8 7 3 3 7 11 11 10 7 5 6 7 8 8 8 7 8 9 10 11 11 12 14 17 20 20 19 18 18 18 18 20 - 31 30 28 26 25 26 27 29 29 28 26 27 29 29 25 26 29 28 28 25 28 27 24 24 23 23 24 21 18 16 15 15 15 16 16 16 16 16 17 19 17 15 15 14 15 15 16 17 17 16 15 15 15 15 16 17 17 16 16 16 16 17 19 18 18 18 19 18 17 16 16 16 16 16 15 14 14 15 16 16 15 15 15 15 16 17 17 17 19 18 18 17 16 16 16 16 17 19 19 19 17 14 13 13 13 13 13 13 13 13 14 15 17 17 16 15 14 15 16 20 17 17 16 15 14 14 14 14 13 12 12 11 12 12 13 14 14 14 13 13 12 12 12 12 12 11 10 9 10 11 11 12 12 12 12 11 10 10 11 10 9 9 10 11 11 11 12 13 14 15 15 14 13 13 13 13 12 11 10 10 11 10 9 8 8 9 9 9 9 10 9 8 7 8 9 8 8 7 6 6 5 4 4 3 4 5 6 5 4 4 3 4 4 4 6 6 6 6 6 6 3 3 7 10 11 10 6 4 6 7 8 8 7 7 7 8 9 10 11 12 13 16 20 20 19 17 17 20 20 18 - 29 29 26 25 25 25 29 29 27 27 28 25 29 29 27 26 28 29 26 25 28 27 23 23 23 22 22 20 16 15 16 16 16 16 16 17 17 17 19 19 17 15 14 14 14 14 15 19 19 16 15 15 16 19 18 18 18 17 17 16 16 16 17 20 19 20 20 20 19 17 16 17 19 19 15 14 14 14 15 16 16 16 16 16 17 19 18 17 17 19 18 17 16 16 16 16 16 16 16 15 15 13 12 12 13 13 13 13 12 12 13 14 16 16 15 14 14 16 19 20 17 16 16 15 14 14 14 13 12 12 12 12 12 13 13 14 13 13 13 12 12 11 11 11 11 10 9 10 10 11 11 11 12 12 12 11 10 11 10 10 8 8 10 11 11 12 13 15 16 15 14 13 13 12 12 12 11 10 9 10 10 10 8 7 6 7 8 10 11 11 9 7 6 7 8 8 7 7 7 7 5 5 4 3 4 5 5 4 4 4 3 3 4 5 6 6 5 5 6 5 3 3 5 9 11 10 7 5 6 7 7 6 6 6 6 7 9 11 11 12 13 15 19 20 17 17 18 20 20 20 - 27 26 26 26 25 26 29 27 27 29 28 25 29 29 28 28 27 28 27 26 28 26 21 21 22 21 20 17 15 15 19 19 17 16 16 17 17 17 17 19 17 15 14 14 14 15 16 17 19 16 15 15 17 19 19 19 18 16 17 19 15 15 15 20 19 19 18 19 20 17 16 17 19 19 17 15 15 15 15 16 16 17 17 17 18 19 19 17 16 16 17 16 16 16 16 16 15 14 14 14 14 12 12 13 13 13 13 13 12 12 13 14 15 15 14 15 15 17 20 18 17 17 17 16 15 14 14 13 12 12 12 12 13 13 13 13 13 13 12 12 11 11 11 9 9 9 9 10 11 11 11 11 12 12 12 11 10 10 10 10 8 9 10 11 11 12 14 19 19 16 14 14 13 13 12 11 11 9 8 10 10 10 8 6 5 6 7 9 11 11 10 6 6 7 7 7 6 6 5 5 5 5 4 4 4 4 5 4 3 3 2 3 4 5 5 5 4 4 5 5 4 2 4 8 10 9 7 5 5 6 6 5 5 5 6 7 10 11 12 13 14 15 17 19 19 18 20 20 20 20 - 27 26 25 25 26 26 28 28 28 29 29 26 26 28 29 27 28 28 28 28 28 24 21 21 22 21 18 15 14 15 17 18 19 17 16 16 16 16 16 16 16 15 15 14 14 15 17 17 16 15 14 15 19 18 19 19 19 16 16 19 15 14 15 16 16 16 17 19 19 17 17 17 17 18 19 19 17 16 16 16 17 19 20 18 17 17 17 16 15 15 16 16 16 15 15 15 14 13 13 13 13 12 12 13 13 14 14 13 12 12 13 14 14 14 15 16 19 19 19 16 16 19 19 17 16 15 14 13 12 11 11 12 13 13 13 13 12 12 12 11 11 11 10 8 7 7 8 10 11 11 11 10 11 11 11 11 10 10 9 9 9 10 11 11 12 13 13 16 19 16 16 14 13 12 12 11 10 7 7 9 10 9 7 4 4 5 6 8 10 11 9 6 5 6 6 6 5 5 4 4 4 4 4 4 4 4 4 4 3 2 1 3 4 5 5 4 4 4 5 5 4 2 3 7 8 8 6 4 5 6 6 6 6 6 7 9 11 12 13 13 14 15 17 20 20 20 21 20 19 20 - 30 28 26 25 28 27 28 28 25 28 28 26 25 25 28 27 28 28 25 25 28 26 21 21 21 20 16 14 14 15 17 18 19 19 17 17 17 17 16 15 15 15 15 15 16 17 20 19 16 15 14 15 16 17 17 19 17 15 15 15 15 14 14 15 15 15 16 19 18 18 17 17 17 19 19 19 16 19 19 15 16 19 20 17 16 16 15 15 15 15 16 15 14 14 14 14 14 13 13 13 12 12 12 12 13 13 13 13 12 12 12 13 14 14 15 19 17 16 16 15 15 16 17 17 15 14 13 12 12 11 12 12 13 13 13 13 13 12 12 11 11 11 10 9 8 8 8 10 10 11 11 10 10 11 11 11 11 10 9 9 10 10 11 11 11 12 13 15 16 16 16 14 13 12 11 11 9 7 6 6 7 7 5 3 3 5 6 8 9 10 8 6 5 5 5 5 4 4 4 4 4 4 4 3 3 3 4 4 3 2 1 3 4 4 4 3 4 4 5 5 4 2 3 6 8 8 5 4 5 6 7 8 8 8 9 11 11 12 13 14 14 16 19 21 20 20 20 20 18 20 - 29 30 29 28 30 29 28 26 25 26 28 25 25 25 26 28 28 25 25 25 28 27 21 21 20 18 15 14 14 15 19 18 19 19 18 17 17 19 17 16 15 14 15 16 18 20 19 17 16 15 15 15 15 15 16 17 16 15 15 15 14 14 15 16 16 15 15 17 19 18 17 17 19 16 16 15 15 16 15 15 15 19 19 17 16 15 15 15 15 15 16 15 14 13 13 14 14 13 13 12 12 12 11 12 13 13 13 12 12 12 12 13 13 14 14 16 16 14 14 14 15 17 19 16 14 13 13 12 11 12 13 13 13 13 13 13 12 12 12 12 11 11 11 10 9 9 9 10 10 11 10 9 8 10 10 11 10 9 9 9 9 10 10 11 11 12 13 15 16 16 15 14 12 11 10 10 8 6 4 4 6 6 4 3 2 5 7 8 9 9 7 6 5 5 5 4 4 4 4 4 4 3 3 2 2 3 5 5 4 3 1 2 4 5 6 6 5 4 5 5 3 2 3 6 8 9 7 6 6 7 8 9 9 10 11 11 12 12 12 14 15 18 20 21 20 20 20 20 18 19 - 28 30 30 30 30 28 25 28 28 28 28 26 27 24 25 26 26 25 26 26 26 24 21 20 18 17 15 14 14 15 19 19 18 19 19 18 18 19 18 17 16 15 16 19 20 20 19 17 16 16 16 15 14 15 15 16 16 16 15 15 15 15 16 17 16 15 15 17 18 19 17 16 16 16 14 14 14 15 15 15 15 16 17 19 16 15 15 15 15 15 15 14 13 12 13 14 15 14 13 13 12 12 11 12 13 13 12 12 12 11 12 13 13 14 14 14 14 13 13 13 15 19 19 15 13 12 12 11 11 12 13 14 14 13 13 13 12 12 12 11 11 11 11 11 11 10 9 10 10 10 9 8 8 9 9 9 8 7 8 8 9 9 10 10 11 12 14 16 17 16 14 13 11 9 8 8 6 5 3 2 3 4 4 3 3 5 7 9 8 8 7 6 5 5 5 5 4 4 4 5 5 4 2 1 2 3 4 5 5 3 1 2 4 6 7 7 6 6 5 5 4 2 2 8 11 11 10 7 6 6 7 8 8 9 10 11 11 11 12 14 19 19 20 21 20 20 20 20 18 19 - 25 30 30 29 28 25 25 28 28 28 27 28 27 25 24 23 24 26 26 28 27 23 20 18 19 19 16 14 14 15 17 19 18 19 19 17 17 18 19 19 19 17 17 19 21 21 20 17 19 19 16 14 14 14 14 15 15 15 16 16 16 17 17 19 16 16 16 19 19 19 15 15 15 16 15 14 14 15 15 15 15 16 16 19 16 15 15 14 14 15 15 14 12 11 12 14 14 14 13 13 12 12 12 12 13 13 12 12 12 12 12 13 13 13 13 13 13 13 13 13 14 15 18 14 12 11 11 11 11 12 13 14 13 13 13 13 12 12 12 11 11 11 11 12 11 11 9 10 9 9 8 7 7 8 8 7 6 6 7 7 8 8 10 10 11 13 14 19 17 15 13 12 9 7 6 6 5 5 3 1 2 4 5 5 5 6 7 8 8 8 7 6 6 5 5 5 5 5 5 7 7 6 3 2 4 5 5 5 3 3 1 2 4 7 9 9 7 6 5 5 4 2 2 8 11 12 10 6 5 5 5 6 6 7 8 10 11 11 12 14 15 18 20 21 21 18 20 20 18 20 - 24 26 25 26 28 26 26 28 29 29 28 25 26 26 23 23 24 27 27 27 22 20 17 17 17 19 17 15 15 16 17 17 17 19 18 18 18 18 19 17 18 19 19 18 20 20 17 17 17 17 15 14 13 14 14 14 15 16 17 19 19 17 17 19 17 17 17 18 19 17 15 15 15 16 15 15 15 15 15 16 16 16 16 16 16 15 14 13 13 14 14 13 12 12 12 13 14 13 13 13 13 12 12 12 13 13 12 12 13 13 13 13 13 13 13 13 13 14 14 14 13 14 14 13 11 11 10 11 11 12 13 13 13 13 13 13 12 12 12 11 11 11 11 11 11 11 9 9 8 7 7 7 7 7 7 7 6 6 6 6 6 7 9 10 12 13 15 16 18 14 13 11 7 4 3 3 3 3 2 1 2 4 6 6 7 6 6 7 7 7 7 6 6 6 6 6 6 6 7 8 9 7 5 4 6 6 6 4 2 2 2 2 5 8 9 9 7 5 5 4 3 1 2 7 11 11 10 6 4 4 4 5 5 5 6 8 9 10 12 14 15 18 20 21 21 20 21 21 21 20 - 24 24 24 26 27 27 25 25 28 29 28 25 26 25 23 23 24 26 24 21 20 18 16 16 17 19 17 17 16 17 17 17 16 17 19 20 19 18 18 17 17 20 20 19 20 19 17 17 16 19 15 14 14 14 14 14 15 16 17 17 17 17 17 18 19 19 17 18 19 17 15 16 16 16 16 15 15 15 15 16 16 15 15 15 16 16 15 13 13 13 14 13 12 11 12 12 12 12 13 13 13 13 12 12 12 12 12 12 14 14 14 14 14 14 13 13 14 18 18 14 13 13 13 12 11 11 10 11 11 11 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 10 9 8 8 7 7 7 7 7 7 6 6 6 6 6 6 8 10 12 14 14 15 14 13 12 9 6 4 3 3 3 2 3 2 4 5 7 7 7 7 6 6 6 7 6 5 5 5 6 6 7 8 9 10 10 9 8 7 8 8 6 4 2 2 3 5 8 9 9 8 6 5 5 5 3 1 2 5 8 9 8 5 4 3 4 4 5 5 6 7 8 10 12 13 14 16 19 21 21 21 23 22 23 22 - 25 25 25 26 25 24 24 24 25 28 28 25 26 28 27 27 22 20 18 18 17 16 15 17 18 19 19 18 17 18 19 17 16 16 17 19 20 21 19 17 17 19 19 19 20 19 19 16 17 19 16 15 15 15 14 14 15 15 16 16 16 17 17 18 18 17 17 19 19 17 19 17 19 16 15 14 15 15 15 15 15 14 14 15 19 19 15 14 13 13 13 13 12 12 11 11 12 11 12 13 13 13 12 12 12 13 13 14 15 19 16 15 14 14 14 14 15 18 15 13 12 12 12 12 11 11 11 11 11 11 12 12 12 12 13 13 13 12 11 11 12 12 12 12 11 11 11 10 9 8 8 7 6 6 6 7 7 7 7 7 7 7 8 10 13 14 14 14 13 13 12 9 6 4 3 3 2 2 3 4 5 5 6 7 7 6 6 7 7 7 6 5 5 5 5 7 8 9 9 10 10 10 10 10 10 9 7 5 3 3 3 6 9 11 11 9 5 5 6 6 4 1 2 4 6 8 7 5 4 3 4 4 5 6 7 8 9 9 11 12 13 14 16 20 21 21 23 24 24 24 - 27 28 28 27 23 23 24 26 24 25 29 29 28 28 26 23 20 17 16 16 15 15 16 19 19 18 18 18 20 20 17 16 15 16 18 18 20 21 19 18 17 17 17 16 17 17 17 17 17 17 17 17 16 15 15 14 14 15 15 15 16 17 17 19 19 17 17 19 18 17 19 19 17 15 15 14 14 15 15 15 15 14 14 14 16 16 16 14 13 13 13 13 12 12 11 11 11 11 12 12 12 12 12 12 12 13 13 14 16 19 17 16 15 15 16 18 15 14 13 12 11 11 11 12 12 11 11 11 11 11 12 12 12 13 13 14 13 12 11 11 12 12 12 12 12 12 11 10 9 9 9 8 6 5 6 7 8 8 8 8 7 7 8 11 13 14 14 13 13 12 11 9 7 5 4 3 3 3 3 4 5 5 6 7 7 7 8 8 8 8 6 4 5 5 5 7 8 9 9 10 11 11 11 11 11 10 9 7 5 3 4 6 10 11 11 9 6 5 7 6 4 1 2 4 5 7 6 5 4 4 4 5 5 6 8 9 10 9 10 11 11 12 14 16 20 20 21 23 24 22 - 30 30 28 28 26 28 29 29 30 30 30 30 29 26 21 20 16 14 14 14 14 15 16 19 17 17 17 18 20 19 16 15 16 16 19 19 17 18 19 19 19 19 17 16 17 17 19 18 19 17 17 17 16 15 14 14 14 14 14 15 19 17 17 17 17 17 17 19 18 17 17 17 17 16 15 14 15 15 15 15 14 14 14 15 15 16 15 15 15 15 14 14 13 12 11 11 11 10 11 12 12 12 11 11 12 13 14 15 17 19 17 16 16 16 16 18 14 13 12 11 11 10 11 11 12 11 11 11 11 12 12 13 13 13 13 14 13 11 11 11 12 12 12 12 11 11 11 10 10 10 9 8 6 6 6 7 8 8 8 7 7 7 9 11 13 13 13 13 12 12 10 9 6 5 4 4 4 3 3 4 4 5 7 8 8 9 9 10 9 7 6 5 5 6 6 6 7 8 9 11 12 12 12 11 11 11 9 8 5 4 3 5 8 10 10 8 6 5 7 7 5 3 3 4 5 6 6 5 4 4 5 6 6 7 9 10 11 10 10 10 10 11 13 15 20 20 21 22 24 21 - 30 29 25 27 29 32 33 31 34 34 30 29 27 22 20 17 14 13 13 14 14 15 18 16 16 16 17 17 17 16 15 15 15 15 16 15 15 16 19 18 18 19 18 20 20 19 19 19 18 18 17 17 17 16 15 14 14 14 14 16 19 19 17 16 16 17 19 20 20 17 17 17 17 17 16 16 17 19 17 17 19 15 15 15 16 17 16 17 17 19 19 15 13 12 12 11 11 11 11 12 12 12 11 11 13 14 15 15 16 16 17 16 16 16 15 14 13 12 12 11 10 10 11 11 12 12 11 11 11 12 13 13 13 13 13 13 12 11 11 11 12 12 11 11 11 11 10 10 11 11 10 8 6 6 6 6 7 7 7 6 5 7 10 12 13 13 12 12 11 10 8 6 5 4 3 3 4 4 3 2 3 5 6 8 9 10 11 10 9 8 6 5 6 6 6 5 5 7 9 11 12 12 11 11 11 11 10 8 5 3 1 2 4 6 7 6 4 4 6 6 6 3 3 4 5 7 6 5 3 4 5 6 5 6 8 9 10 10 9 10 10 11 12 14 20 20 18 21 22 21 - 29 28 25 27 29 31 33 32 34 34 31 26 22 21 18 15 14 13 13 14 15 16 16 15 16 17 20 19 18 17 16 15 15 15 14 14 14 15 15 16 17 20 18 19 19 18 18 19 18 19 18 18 18 18 17 16 15 15 15 16 18 18 17 16 16 17 17 18 19 17 17 17 19 19 16 19 19 18 19 18 19 17 15 16 17 19 19 18 19 19 18 17 15 13 12 12 12 12 12 13 13 12 12 12 14 14 15 14 15 16 15 16 16 16 14 12 11 11 11 11 10 10 11 12 12 12 12 12 12 12 12 13 13 13 13 13 12 11 11 11 11 11 11 10 10 9 10 10 11 11 10 8 6 6 6 6 6 6 6 6 6 8 11 12 13 12 12 11 9 7 5 5 4 3 2 2 3 2 2 1 1 3 5 8 10 11 11 10 9 8 7 6 6 6 5 4 4 5 8 10 12 11 11 11 11 11 10 8 5 3 1 1 2 3 3 3 2 3 5 5 5 4 3 4 6 8 7 5 3 3 4 6 5 6 7 8 10 10 9 9 10 11 12 14 19 19 18 21 21 21 - 30 30 31 29 29 30 33 32 31 33 33 23 20 17 16 15 14 13 13 14 19 16 16 16 17 18 19 20 20 20 17 16 14 14 14 15 15 15 15 15 16 20 19 19 20 19 18 19 20 21 20 20 20 21 21 19 16 15 15 16 17 19 17 16 16 16 17 18 18 17 16 16 16 16 16 17 19 20 20 18 17 16 15 15 16 19 19 19 19 18 18 19 18 13 13 13 13 13 13 13 13 13 13 13 14 14 15 15 15 15 15 15 15 14 13 12 11 11 11 11 11 10 11 12 12 12 12 12 12 12 12 13 13 13 13 13 13 12 11 11 10 10 9 8 8 9 10 10 11 10 9 7 6 6 7 6 6 6 5 5 8 11 12 13 13 12 11 10 8 5 5 5 4 3 2 1 2 1 1 0 1 2 4 6 9 11 11 10 9 8 7 6 5 5 4 3 2 4 6 8 10 9 9 9 11 11 10 8 5 3 2 2 3 3 2 2 2 2 4 5 5 4 3 5 7 8 7 5 3 2 3 5 5 6 6 7 9 9 8 10 11 11 12 13 16 18 20 21 21 18 - 29 31 31 30 29 30 32 30 30 30 26 21 18 16 15 15 15 14 14 15 16 19 16 17 21 20 18 20 20 20 20 15 14 14 14 16 16 15 15 14 14 15 16 19 20 20 18 20 21 21 20 18 19 18 20 19 17 16 16 16 17 19 18 17 16 16 16 20 20 17 16 16 16 15 15 16 18 19 20 18 17 16 15 14 16 17 17 17 17 17 19 17 15 13 13 13 14 13 13 13 13 13 13 14 14 14 14 14 15 16 15 15 14 13 12 12 11 11 11 11 11 10 11 12 12 12 12 13 13 12 12 12 12 12 12 13 12 12 11 10 9 8 7 6 7 9 10 11 11 10 9 7 6 7 7 8 8 7 6 6 10 12 13 13 13 12 11 9 7 5 5 5 5 4 3 2 1 1 0 0 0 1 2 5 8 10 10 9 8 8 7 6 5 4 3 2 2 3 4 5 6 6 6 7 9 10 10 9 6 4 2 3 4 4 4 3 3 2 4 4 4 3 3 5 7 8 7 5 3 2 3 5 5 6 6 6 8 9 9 10 11 12 12 13 18 18 20 21 21 18 - 27 29 29 29 29 29 31 29 28 24 21 18 16 15 15 15 15 14 14 15 16 17 17 20 21 20 20 20 20 18 16 14 14 15 16 17 16 16 15 14 14 14 14 15 16 16 17 18 19 18 17 16 16 16 17 17 17 16 15 15 17 20 19 17 15 15 16 16 16 17 16 17 17 19 16 16 18 18 19 17 16 16 15 15 15 16 16 15 15 15 16 16 14 13 13 13 14 13 14 14 14 14 13 14 14 13 14 14 15 14 14 13 13 12 12 12 12 12 12 12 11 11 11 12 12 12 12 13 13 12 12 12 11 11 11 12 12 11 10 8 7 7 6 6 7 10 11 11 11 10 8 6 6 7 8 9 9 8 7 7 11 13 14 13 12 11 11 9 8 7 7 6 6 5 4 3 2 1 1 0 1 1 2 5 7 9 9 8 7 8 7 5 4 4 3 3 2 3 4 4 3 3 3 4 6 7 8 8 6 4 3 4 5 6 5 4 4 3 5 5 5 3 4 5 7 7 6 5 4 3 3 5 5 5 5 6 7 9 9 11 11 12 12 14 16 19 20 22 22 20 - 27 33 29 28 28 27 28 28 24 21 18 16 15 15 15 15 14 14 14 15 16 16 16 20 20 19 18 20 19 17 15 14 15 16 19 18 17 16 15 14 14 14 14 14 14 15 16 17 19 17 15 14 14 14 15 16 19 16 16 17 19 20 19 16 15 15 15 15 16 16 16 17 17 19 17 17 19 19 19 17 16 16 16 15 16 16 16 15 14 14 14 15 15 13 13 13 14 13 14 15 15 15 14 14 14 14 14 14 14 14 14 13 12 12 12 12 12 12 13 12 12 11 11 12 12 12 12 12 13 13 12 12 11 11 11 11 11 10 9 8 7 7 6 7 9 11 12 11 11 10 8 6 6 7 8 9 9 9 7 8 11 13 13 13 11 10 9 8 8 8 8 7 6 6 4 3 2 1 1 1 1 3 4 5 7 8 9 8 8 8 6 5 4 4 4 4 4 5 5 4 2 2 1 2 4 5 6 6 5 4 4 5 6 6 5 4 3 3 4 4 4 3 4 5 6 6 5 5 4 3 3 4 5 5 5 5 7 8 9 11 11 12 12 13 15 18 21 24 26 21 - 30 33 28 25 27 29 30 27 21 18 17 15 14 14 15 14 14 13 14 15 15 15 16 17 18 17 16 17 17 19 15 15 17 20 21 21 17 16 15 15 14 14 14 13 13 14 15 16 19 16 14 14 14 14 15 16 19 17 19 17 18 19 18 16 16 16 16 16 15 15 15 16 17 17 18 19 19 18 17 17 17 17 16 16 17 17 16 14 13 13 14 16 20 14 14 13 13 13 14 19 17 16 15 15 15 15 14 13 13 13 13 13 13 12 12 12 12 12 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 9 10 9 8 8 7 8 10 12 12 12 11 10 8 7 6 7 7 8 8 8 7 8 11 12 13 12 10 8 7 6 7 8 7 7 7 6 5 4 3 2 1 1 3 4 5 6 7 8 9 9 9 8 6 5 4 5 4 4 4 5 5 4 3 2 1 2 3 5 5 4 3 4 4 5 6 6 5 4 3 3 4 3 3 2 3 4 5 5 5 4 4 4 3 4 4 5 6 6 7 8 9 11 11 12 12 13 14 17 20 24 27 21 - 30 30 25 25 27 30 32 23 20 18 18 14 13 14 15 15 15 14 14 15 15 15 16 17 17 17 16 17 19 19 16 15 19 20 21 21 17 15 15 14 14 15 15 14 14 14 14 15 15 15 14 14 14 14 15 16 16 16 19 19 17 19 19 17 17 19 19 17 16 15 15 15 16 19 17 19 17 17 17 17 17 17 17 17 17 20 16 14 13 14 15 17 20 15 14 14 13 13 14 19 17 17 19 16 16 15 14 13 12 13 13 14 13 13 12 12 12 12 13 13 12 12 12 13 12 12 12 12 11 11 12 12 12 12 12 11 11 10 10 10 9 9 9 11 11 12 12 12 11 10 9 7 6 6 6 7 7 7 7 9 11 12 12 11 8 6 5 5 5 6 6 6 6 5 4 4 3 2 1 2 3 4 5 6 7 8 8 9 9 9 7 6 5 6 5 4 5 5 6 5 3 2 1 2 3 4 4 3 3 3 4 5 6 5 4 3 2 2 2 2 1 1 2 3 4 4 4 3 3 4 4 4 4 5 6 7 8 8 9 11 11 12 12 13 14 17 21 26 27 21 - 30 30 30 27 29 32 31 21 20 18 16 14 13 14 15 16 19 19 16 16 16 16 16 17 17 17 19 19 18 17 16 15 17 18 20 18 17 16 15 14 15 15 16 16 16 15 14 14 15 15 14 14 14 15 16 16 16 16 16 16 16 17 19 17 18 20 20 18 16 15 14 14 15 19 16 16 16 16 16 17 17 17 17 17 18 20 16 14 14 14 15 17 17 15 14 14 13 13 15 17 18 18 19 18 15 14 13 12 12 13 13 14 13 13 13 12 13 13 13 13 12 12 13 13 13 12 12 11 11 11 11 12 12 12 12 11 10 10 10 10 10 11 11 11 12 12 12 12 11 10 9 7 6 6 6 6 7 8 9 10 11 11 11 9 6 5 4 4 4 5 6 5 4 4 3 3 3 2 2 2 4 4 5 5 6 7 8 8 8 8 7 7 6 6 5 4 5 5 6 5 4 3 2 2 3 4 4 3 3 3 4 5 5 5 3 2 2 2 2 1 1 1 1 2 2 2 2 1 2 3 4 5 5 6 8 9 10 10 10 11 12 12 12 13 14 17 21 24 27 22 - 30 32 32 30 31 32 24 18 18 17 16 15 14 14 15 17 18 19 19 18 19 19 17 17 17 19 19 19 18 17 16 15 17 18 19 17 17 20 16 15 15 15 19 20 20 16 16 16 17 16 16 16 16 16 16 17 17 19 16 15 15 15 16 16 18 19 20 18 18 15 14 14 14 15 16 16 16 17 17 18 17 17 17 17 17 19 15 14 14 15 16 17 16 14 14 14 14 14 16 19 20 20 16 14 14 13 12 11 11 12 13 14 13 13 13 13 13 13 13 13 13 13 13 14 14 13 13 12 11 11 11 11 12 12 12 11 10 8 9 10 11 11 11 11 11 12 12 11 10 9 8 8 7 7 7 8 8 9 10 11 12 11 10 8 6 5 4 4 5 6 6 6 4 3 3 3 3 1 2 2 3 3 4 4 5 6 6 7 7 8 7 7 6 6 5 5 5 6 6 6 5 4 3 2 2 3 3 3 3 2 3 4 4 4 3 2 2 1 1 1 1 1 1 1 1 1 1 1 2 3 4 6 6 8 9 10 11 11 11 11 12 12 13 13 15 18 21 23 24 21 - 30 30 31 31 32 32 22 19 17 17 16 15 14 15 16 19 19 19 19 18 19 19 17 16 17 18 19 19 18 17 17 17 16 19 19 17 17 20 19 15 15 16 18 18 19 17 16 20 20 19 16 16 17 17 17 17 19 17 16 14 15 15 15 16 17 19 19 18 16 15 13 13 14 14 14 15 15 17 19 19 18 17 17 16 17 19 15 14 14 15 16 16 15 14 14 14 14 15 17 19 20 17 14 13 12 11 11 10 11 12 13 13 13 13 14 13 13 13 13 13 13 13 14 14 14 13 13 12 11 11 11 11 11 11 11 10 9 8 8 9 11 11 11 11 11 12 12 11 10 9 8 8 7 7 8 8 9 9 11 12 12 12 9 8 5 5 4 4 5 7 7 6 4 2 2 2 2 2 2 2 3 3 3 3 5 6 6 6 6 7 7 7 7 6 5 5 5 6 6 6 6 5 3 2 2 2 3 3 3 2 3 4 4 4 3 2 2 1 1 1 1 1 1 1 1 1 1 1 3 4 5 7 8 9 10 11 11 11 11 12 12 12 13 14 15 18 20 21 22 21 - 31 32 32 33 33 29 21 18 18 20 20 17 15 15 19 18 19 18 19 19 19 18 17 17 18 18 18 18 17 17 16 15 16 17 17 17 17 18 18 16 15 15 16 17 17 17 17 18 19 19 18 17 18 18 18 17 17 16 15 15 15 15 15 16 17 18 18 18 19 19 15 14 15 16 16 17 17 18 18 18 17 16 16 15 15 15 14 13 13 14 14 14 14 13 13 13 14 15 17 17 17 15 13 13 12 11 11 10 11 12 13 13 13 13 13 12 13 13 13 14 18 18 16 16 17 15 14 12 12 11 11 11 11 11 11 11 10 9 9 10 11 11 11 11 11 11 11 11 10 8 8 8 8 9 10 11 10 11 11 12 12 11 8 6 5 5 5 6 7 8 8 7 5 5 4 3 2 2 2 2 3 2 3 3 5 5 6 5 6 7 8 8 8 7 7 6 6 6 6 6 5 5 3 2 2 2 3 2 2 2 2 3 3 3 2 2 2 1 1 1 1 1 0 0 0 0 2 2 4 6 6 9 10 11 11 11 11 11 12 12 12 13 13 14 16 17 19 21 22 23 - 34 34 33 33 32 25 21 18 17 18 18 16 14 14 15 16 16 17 18 19 18 16 16 16 16 17 17 17 17 16 15 14 14 15 16 17 18 17 17 19 20 20 20 20 20 20 20 20 20 19 18 17 17 17 17 17 17 16 16 16 16 16 16 19 19 17 17 18 19 19 17 16 17 17 16 16 15 16 16 16 15 14 14 14 14 13 12 12 12 12 13 13 14 13 14 15 15 15 15 15 15 14 14 13 13 12 11 11 11 11 12 13 13 13 13 12 13 12 13 15 16 18 17 16 16 14 13 12 11 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 10 11 10 9 8 7 7 8 10 11 12 12 12 12 13 12 10 7 5 5 5 5 5 7 8 9 9 8 7 6 4 2 2 3 3 4 4 4 4 5 6 6 5 6 6 6 7 8 8 7 5 4 4 4 4 4 4 3 3 2 3 3 2 3 3 2 3 3 3 2 2 2 2 2 1 1 0 0 0 0 0 2 3 4 8 9 11 12 12 12 12 11 11 12 12 13 13 14 15 15 15 18 23 25 25 - 34 34 32 31 28 23 21 19 16 15 16 15 14 14 13 14 14 15 17 17 17 16 15 14 15 16 19 21 21 18 15 13 14 18 20 20 20 21 21 21 21 21 21 21 20 20 20 20 20 18 19 16 15 16 17 17 16 15 15 16 16 16 17 19 18 19 19 17 17 17 16 16 17 17 15 15 14 14 14 15 14 14 13 13 13 13 13 13 13 13 13 13 14 14 15 19 19 16 15 14 14 15 14 13 12 12 12 11 11 11 11 13 14 14 13 12 13 12 13 14 15 16 16 15 14 13 13 12 11 11 10 11 11 11 11 11 12 12 12 12 12 12 11 11 10 10 10 10 9 8 7 6 6 9 11 12 12 13 13 13 12 10 6 5 5 4 3 3 5 7 8 8 8 7 6 4 3 3 3 4 5 5 5 5 6 6 7 6 6 5 5 4 5 5 5 4 3 3 4 4 4 3 3 3 3 4 4 4 4 4 4 4 3 3 4 5 5 5 4 2 1 0 0 0 0 0 1 3 4 9 11 12 12 12 12 12 12 12 12 12 13 13 13 14 14 15 18 21 25 25 - 31 31 30 29 26 23 22 20 17 15 15 15 15 14 13 14 15 19 19 19 18 16 15 15 16 20 21 21 19 17 16 20 21 23 23 21 21 21 21 18 18 18 19 19 18 18 19 18 18 20 20 17 18 18 17 16 15 14 15 15 16 16 19 19 18 20 20 18 16 15 14 15 16 16 15 15 14 15 16 15 15 14 13 13 13 14 15 16 14 14 13 13 13 13 14 15 17 16 15 14 14 15 14 13 13 12 12 12 12 12 13 14 15 15 14 13 13 12 13 13 14 14 14 14 14 13 13 12 12 12 11 11 11 11 12 12 12 12 12 12 12 11 10 9 9 9 9 8 8 8 7 6 6 8 10 12 12 13 13 13 11 8 6 5 5 4 3 3 5 7 8 8 7 7 7 7 6 5 5 6 7 7 6 6 6 7 7 7 7 6 5 3 3 3 3 4 5 5 6 6 5 4 3 3 4 4 4 4 4 4 4 4 4 4 5 6 6 5 3 2 2 0 0 0 0 0 1 2 3 7 10 12 12 12 13 13 13 13 12 12 12 12 12 13 14 15 18 20 23 24 - 31 33 33 27 25 26 24 21 19 17 16 16 15 14 14 15 16 19 19 18 18 16 15 15 17 21 20 18 20 19 20 21 24 26 26 22 20 20 18 18 18 20 20 20 21 21 21 20 19 19 18 18 20 20 20 17 16 15 15 14 14 14 16 18 18 18 18 17 15 14 14 15 16 15 14 14 15 16 17 16 16 14 14 14 14 15 15 15 15 14 13 13 13 13 13 14 16 19 19 16 15 15 15 14 14 13 13 13 13 14 14 15 14 14 13 12 12 11 12 12 12 13 13 13 13 13 12 12 12 12 11 11 10 11 12 12 12 12 11 11 11 10 9 8 8 7 7 6 7 8 8 7 6 7 10 11 12 12 12 11 9 7 6 6 6 5 5 5 6 7 8 8 8 7 8 9 10 9 9 9 10 10 8 7 7 7 8 8 8 8 8 7 6 6 6 5 6 6 6 5 5 5 4 3 2 4 4 3 3 2 3 4 4 4 4 4 4 3 3 3 2 1 0 0 0 1 1 2 2 5 7 9 10 11 12 13 14 13 12 11 11 11 12 13 14 15 17 20 21 22 - 31 33 33 29 25 25 25 22 19 17 15 15 15 15 15 15 16 18 19 19 17 16 15 16 19 21 21 21 20 21 22 30 30 23 21 20 18 19 21 21 21 24 25 25 27 27 27 24 21 20 19 18 18 18 18 18 17 16 15 13 13 13 15 16 17 17 16 15 14 14 15 16 15 15 14 14 15 16 16 16 16 15 16 20 20 18 18 15 14 14 14 14 15 15 15 16 19 19 19 18 17 16 15 15 15 14 13 13 13 14 14 14 13 13 12 11 11 10 10 11 11 12 13 13 13 12 12 12 11 10 10 10 11 11 12 12 12 12 12 11 11 11 10 8 7 7 7 6 6 7 8 8 7 6 8 10 11 11 11 10 8 7 7 7 7 6 6 6 7 7 8 7 6 6 8 10 11 11 11 11 11 11 9 7 7 8 9 9 10 11 11 11 10 10 10 9 8 7 6 5 5 5 5 4 3 3 4 3 2 2 2 2 3 4 4 4 4 3 3 3 3 1 0 1 1 2 3 6 6 7 8 8 8 9 11 11 12 11 9 8 9 10 11 13 14 19 19 19 20 20 - 31 32 32 30 23 23 26 22 20 16 14 15 15 16 16 16 16 17 19 19 19 16 16 20 21 21 21 20 20 22 27 28 22 21 21 21 24 24 28 28 27 27 27 23 21 21 21 23 24 22 21 21 21 21 20 20 20 16 15 13 13 13 13 15 16 16 15 15 15 14 14 14 14 14 14 15 16 17 17 17 17 17 20 21 21 18 18 16 15 14 14 14 15 16 17 17 18 17 17 16 16 15 14 14 15 14 13 12 12 13 12 12 12 12 12 11 10 10 10 11 12 13 13 13 12 12 11 11 10 9 9 10 11 11 12 12 13 13 12 12 12 11 11 8 7 7 7 7 7 6 7 7 6 6 6 8 10 11 10 9 7 8 8 8 7 5 5 5 6 7 7 6 5 5 7 9 11 12 12 12 11 11 9 7 8 9 11 11 11 11 11 11 11 12 12 12 11 10 8 7 6 6 6 5 5 5 5 5 3 2 1 1 1 2 3 4 4 5 4 3 2 1 2 2 4 4 5 8 10 10 10 8 8 8 10 10 10 8 7 6 6 7 8 11 14 19 19 18 18 21 - 31 31 30 27 22 22 24 22 18 17 15 15 16 17 18 19 19 18 18 19 19 19 18 21 22 21 20 20 28 28 22 21 21 26 31 31 30 26 26 25 24 21 21 20 19 18 19 18 20 20 21 24 28 28 25 25 22 20 16 14 14 13 13 14 16 17 16 15 15 14 14 13 13 14 15 16 16 16 17 17 19 20 20 21 21 20 20 20 20 20 16 14 14 14 15 15 15 15 15 15 15 15 14 14 14 14 14 13 12 12 12 12 12 12 12 11 11 11 11 12 13 14 13 13 12 11 11 10 8 9 9 10 10 10 11 12 13 13 13 13 13 12 11 9 8 8 8 8 7 7 6 6 6 6 7 8 9 10 10 9 8 8 8 7 5 4 4 5 7 7 7 7 6 6 7 10 11 11 12 12 11 11 11 11 12 12 13 13 12 11 11 11 11 11 12 11 11 10 8 7 6 6 6 6 7 7 8 6 4 3 3 3 3 3 3 3 4 4 4 3 1 1 2 4 5 5 6 7 10 10 10 10 9 9 9 9 9 8 6 5 6 6 7 10 13 16 17 17 15 19 - 31 31 28 23 21 21 23 22 20 19 17 17 16 17 17 17 17 15 17 19 19 19 20 21 21 18 18 24 28 24 21 26 33 33 29 30 30 25 24 23 20 20 18 16 15 14 16 19 19 20 21 26 31 31 29 29 28 21 20 20 16 15 15 15 16 16 15 15 15 15 15 14 14 15 16 16 15 15 16 19 18 21 21 21 21 21 21 21 21 20 19 19 19 19 18 14 14 14 15 15 16 15 14 14 15 19 19 14 13 12 13 13 12 12 11 11 11 11 11 12 12 12 12 12 11 11 11 9 8 8 10 10 10 10 11 11 12 12 13 13 13 12 12 11 10 9 8 8 7 7 6 6 6 7 9 9 10 10 9 9 9 9 9 7 5 5 5 5 7 8 8 7 6 7 8 9 10 10 11 11 11 12 12 13 14 14 14 13 12 11 11 10 10 10 10 9 8 7 7 7 7 7 6 6 7 8 7 6 5 4 4 5 5 4 3 3 2 2 3 2 2 1 1 2 3 4 7 7 9 10 11 11 11 10 10 9 8 7 6 6 6 6 8 10 12 14 15 15 14 17 - 31 31 26 21 21 21 22 21 19 19 18 17 17 16 16 15 14 14 15 17 18 18 21 22 21 20 22 25 26 25 28 33 31 29 29 29 27 24 21 18 18 15 14 14 15 20 21 21 22 22 24 28 31 29 24 24 23 21 20 20 19 16 16 16 16 15 15 16 16 17 16 16 16 17 19 19 15 15 19 19 18 20 21 24 24 22 22 21 21 20 20 20 19 18 16 14 13 14 14 14 14 15 15 15 16 19 19 14 12 12 12 12 12 11 11 11 11 11 12 12 12 11 11 11 11 11 11 10 9 10 11 11 11 11 11 11 11 12 12 13 13 13 13 12 11 10 8 6 6 7 7 7 7 7 9 10 10 9 9 9 9 9 8 7 7 6 5 5 6 7 8 7 6 6 7 7 8 8 10 11 11 12 12 13 13 13 13 12 11 10 10 10 9 8 7 5 5 6 7 9 9 8 7 7 8 9 10 8 7 5 4 5 5 4 3 2 1 1 2 2 2 1 1 1 2 4 5 7 7 10 11 12 12 11 10 8 8 7 6 6 6 7 8 10 12 14 15 16 15 18 - 26 26 21 20 20 21 21 18 19 17 17 16 16 16 16 15 14 14 15 16 18 20 22 22 20 21 28 30 30 26 25 25 25 28 32 32 23 21 18 18 16 16 16 21 21 24 26 27 27 23 23 22 21 20 20 20 20 18 18 18 19 17 16 17 19 19 17 17 19 19 17 16 17 18 18 19 16 16 19 19 18 18 20 22 24 23 22 22 21 20 20 20 19 17 14 14 14 14 14 14 14 15 15 16 16 16 15 13 11 11 11 11 11 10 10 10 11 12 12 12 11 11 10 11 11 12 12 11 11 11 11 12 12 12 12 11 11 11 12 13 14 13 13 12 11 10 8 7 6 8 9 8 7 7 8 10 9 9 9 9 9 8 8 7 7 6 6 6 6 7 8 8 8 7 7 7 8 9 10 11 12 11 12 12 12 12 12 11 10 10 9 9 8 8 7 6 6 7 8 10 9 8 7 7 8 10 11 11 9 6 5 4 4 4 3 2 3 3 3 3 3 3 3 4 4 6 6 6 5 7 9 11 11 10 9 9 9 8 8 8 8 9 10 11 12 13 15 16 16 18 - 24 23 20 19 19 20 20 18 16 15 14 14 15 16 19 19 16 15 16 19 20 21 21 18 18 22 28 30 29 23 21 21 24 31 32 29 21 18 18 17 19 21 22 25 27 27 26 25 22 21 20 20 20 18 18 18 20 20 18 17 17 16 16 17 18 18 18 18 19 19 17 17 16 17 17 19 19 17 18 17 15 14 17 18 21 22 22 21 20 20 21 20 18 16 14 14 15 16 19 19 16 17 17 16 15 14 13 12 11 11 10 9 9 10 9 10 9 11 11 12 11 10 10 11 12 12 13 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 12 12 11 10 9 9 10 9 8 8 8 9 9 9 9 8 8 7 7 7 7 6 5 6 7 8 9 10 10 9 8 8 9 10 11 11 11 11 11 11 11 11 12 12 12 11 9 8 8 8 7 8 8 9 9 9 9 9 8 7 6 8 10 11 11 10 7 6 5 4 4 4 4 4 4 4 4 4 4 4 4 6 7 8 7 6 7 8 10 10 9 8 9 9 9 9 9 10 10 10 11 11 12 14 15 16 18 - 24 23 20 19 21 21 20 19 16 14 14 14 14 16 19 18 16 16 19 18 20 21 21 18 21 26 27 29 26 21 21 21 24 30 29 23 20 18 17 20 21 25 31 32 32 23 20 20 20 22 22 21 21 22 22 21 21 21 18 19 19 19 19 17 16 17 17 17 18 19 18 17 16 15 16 19 19 18 17 15 15 14 15 17 18 20 20 18 18 18 18 19 17 15 15 16 16 17 18 19 18 18 17 16 14 13 12 11 11 10 9 8 9 9 9 9 9 9 10 10 10 9 10 11 12 13 13 13 12 12 12 12 13 13 13 12 12 13 13 12 12 12 13 13 13 12 11 11 10 10 9 8 7 8 9 9 8 7 7 6 6 6 7 7 6 6 6 7 8 10 10 11 10 9 8 10 11 12 11 11 10 10 10 10 11 11 12 12 11 10 8 8 8 9 10 10 10 10 10 9 8 7 6 7 9 10 10 10 9 8 6 6 5 5 4 4 5 5 6 4 3 2 3 3 5 6 8 8 9 9 9 10 9 9 8 8 8 8 9 9 10 11 10 10 10 11 13 14 16 18 - 24 21 20 20 21 20 19 19 19 19 15 15 15 16 19 17 16 16 19 19 20 21 21 21 25 26 27 29 26 21 21 23 27 29 24 20 19 17 21 26 29 36 38 37 28 21 21 24 34 34 27 24 27 27 26 22 21 20 21 22 22 22 22 21 20 20 17 17 17 17 17 16 16 15 16 19 18 17 16 15 15 17 19 19 17 17 18 18 17 17 17 15 15 14 14 15 15 15 16 16 16 16 15 14 13 12 10 9 9 9 8 8 9 9 9 9 10 10 10 9 10 11 12 12 12 13 13 13 13 13 12 12 12 13 13 13 13 13 13 12 12 12 12 13 13 12 11 11 11 10 8 7 7 8 8 8 7 6 6 6 7 7 7 7 7 7 7 8 9 10 10 10 10 9 9 10 11 11 10 9 9 9 9 10 11 12 12 12 11 10 8 9 9 10 11 11 11 11 11 10 9 8 8 10 11 11 11 10 9 7 7 7 7 6 5 4 5 5 5 4 3 1 2 3 5 5 7 8 9 9 8 9 9 9 8 8 8 9 11 11 11 11 10 10 9 11 12 14 15 18 - 23 20 20 20 20 19 18 19 19 19 19 19 17 19 17 17 16 16 17 18 21 21 21 22 26 25 26 28 27 24 23 27 29 26 21 20 20 23 32 35 40 40 37 32 27 24 26 28 31 27 27 30 30 30 21 21 22 30 30 30 27 28 30 30 22 20 19 19 17 16 15 14 14 15 15 16 16 15 15 15 16 16 17 17 16 16 16 16 15 14 14 14 14 13 13 14 14 14 14 13 13 13 12 12 11 10 9 8 9 8 8 8 8 8 9 9 10 11 11 11 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 12 12 12 12 13 13 13 12 11 11 11 11 9 9 8 9 8 7 6 6 6 7 7 7 7 7 7 7 7 8 8 9 9 10 9 8 8 9 9 9 9 9 9 9 10 11 12 12 12 12 11 10 9 8 8 9 11 10 10 10 10 10 10 10 11 11 12 12 12 11 10 9 8 8 6 5 5 5 4 4 4 3 2 1 2 3 4 5 6 6 6 6 7 7 9 10 10 10 10 10 11 12 11 11 11 11 10 11 12 14 15 18 - 21 18 18 18 20 19 17 18 18 18 20 20 18 16 15 15 15 15 15 17 21 21 21 25 26 25 28 28 28 26 27 29 28 24 22 24 31 31 36 54 54 37 25 22 21 21 21 21 23 30 35 35 31 25 25 32 33 33 25 25 31 33 33 27 21 18 18 20 20 19 15 14 14 20 21 22 28 30 30 30 24 21 21 20 15 14 13 13 13 12 12 13 13 12 12 13 13 13 13 12 12 11 10 9 9 8 8 8 8 8 8 8 8 8 9 9 10 11 11 12 12 13 13 13 14 13 14 14 14 13 13 13 13 14 14 14 13 13 12 12 12 13 13 13 13 12 12 11 11 11 11 11 10 10 9 8 6 6 6 7 7 8 8 8 8 8 7 8 8 10 9 9 8 7 7 6 7 7 8 9 9 10 11 12 12 12 12 12 12 11 9 7 7 7 10 10 10 10 10 10 11 11 11 11 11 11 12 12 11 10 8 7 6 5 5 6 6 5 3 3 3 3 3 3 5 6 6 5 5 5 7 8 10 11 11 11 10 9 10 11 11 11 11 12 12 12 12 14 16 19 - 19 18 18 18 19 19 19 19 19 19 19 20 16 14 14 14 14 14 15 20 21 20 20 25 24 24 27 27 26 27 29 29 28 26 31 34 34 39 58 58 49 25 20 20 18 19 20 24 29 35 35 32 31 34 35 35 35 23 23 32 36 36 24 20 18 18 20 21 21 20 20 30 47 54 55 65 71 71 67 63 58 48 43 36 28 21 20 14 12 12 12 12 12 12 12 12 12 12 12 12 11 10 10 9 8 8 8 9 8 8 9 8 8 8 9 10 11 11 11 12 13 13 14 14 14 14 15 14 14 13 13 13 13 14 14 14 13 13 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 10 9 8 8 9 9 10 10 10 9 9 9 10 11 11 11 10 9 8 7 6 7 7 9 10 11 11 12 13 13 12 12 13 12 11 9 7 8 8 10 10 10 10 10 11 11 11 10 8 8 9 10 10 10 9 8 7 6 6 5 7 7 6 5 4 4 5 6 7 8 8 9 8 6 6 7 8 8 9 10 10 10 8 8 9 9 10 11 12 12 12 13 15 16 17 - 17 16 16 16 18 19 19 20 20 18 19 17 17 19 18 15 14 14 17 21 21 20 21 25 23 23 26 26 26 27 33 33 33 35 35 34 44 61 61 45 31 21 19 17 19 21 24 30 35 35 32 31 34 34 35 35 22 22 34 40 40 25 20 18 19 21 24 24 21 24 43 67 76 78 78 83 88 88 82 76 72 65 61 58 48 42 36 25 21 14 13 12 12 12 11 12 12 12 12 11 11 11 10 9 8 8 8 9 10 10 9 7 8 9 9 10 10 11 11 11 12 13 13 14 14 14 15 14 14 13 13 13 13 14 14 14 13 12 12 12 12 12 11 11 11 11 11 11 11 11 12 12 12 12 12 11 11 10 11 11 11 11 11 11 10 10 10 11 11 11 11 11 10 9 8 8 9 9 10 11 12 12 12 12 12 12 12 12 12 11 10 9 10 10 10 10 10 9 9 10 10 9 8 6 7 8 10 10 8 8 7 7 6 5 5 7 9 9 8 5 5 6 7 9 10 10 10 9 8 7 7 7 6 7 8 10 10 9 9 9 9 9 10 11 12 13 14 14 16 15 - 14 14 14 15 16 18 19 19 20 18 16 16 16 18 19 19 16 16 19 21 21 21 24 23 22 22 27 28 26 31 35 35 35 36 37 46 61 60 42 25 21 20 18 20 21 24 30 34 33 32 38 38 32 32 35 25 22 32 45 45 27 20 18 20 23 27 27 23 41 64 72 80 89 91 92 92 94 94 93 91 86 78 73 68 61 58 54 47 36 28 21 20 13 12 11 12 12 12 12 12 11 11 10 9 9 7 7 8 9 9 8 8 9 9 10 9 9 10 11 11 12 12 13 14 14 14 14 13 13 12 12 13 14 14 14 13 12 12 12 12 12 12 11 10 11 11 11 12 11 11 12 12 13 13 12 12 11 11 11 11 12 12 12 11 9 9 10 11 10 9 10 10 10 10 11 11 11 11 10 10 11 11 11 11 11 12 12 12 12 12 11 10 10 11 11 11 10 9 8 8 9 7 6 5 7 8 10 10 9 9 8 7 6 4 6 8 10 11 10 8 7 6 7 9 10 10 10 8 8 8 9 8 7 7 9 10 11 11 11 10 11 11 11 11 11 12 14 14 15 14 - 14 14 19 19 20 20 19 20 20 17 15 15 16 17 18 18 18 18 20 21 21 23 22 21 21 22 23 25 28 32 35 33 32 32 36 43 46 34 25 21 20 19 19 21 23 29 34 34 32 33 34 32 32 34 30 22 27 47 47 32 20 18 21 25 33 33 23 47 71 80 85 88 91 93 93 94 95 96 95 92 90 86 82 74 68 64 60 58 52 42 36 34 28 21 14 13 13 13 12 12 11 10 10 9 9 9 8 9 8 9 9 9 10 10 10 10 11 11 11 12 12 12 13 14 14 14 13 12 12 12 13 13 14 14 13 13 13 12 12 11 12 11 11 10 10 11 11 11 11 11 11 12 12 12 12 11 11 11 11 11 12 11 11 10 8 7 8 10 10 11 11 11 11 12 13 13 12 11 9 9 9 9 10 11 12 12 12 11 12 11 11 10 11 11 11 11 11 10 9 8 8 7 6 6 6 7 8 9 10 10 9 7 6 5 7 10 10 10 9 8 6 5 6 8 9 9 9 9 10 11 11 10 9 9 10 10 11 10 10 11 11 12 11 10 10 11 12 14 15 15 - 14 16 19 20 21 21 21 20 18 18 16 16 16 17 17 17 17 18 19 18 20 23 21 21 21 23 24 26 31 34 34 27 27 33 33 25 25 25 22 20 20 20 24 26 31 41 41 32 29 27 23 23 35 35 22 24 43 43 32 21 18 20 30 35 35 25 40 72 83 85 90 92 94 95 95 96 97 97 95 92 90 88 84 78 71 67 64 62 59 54 47 47 44 36 30 22 21 14 13 12 11 9 10 10 10 10 8 9 9 11 10 10 10 10 10 10 11 11 11 11 12 12 13 13 13 13 13 12 12 12 13 13 13 14 14 14 13 12 11 11 12 11 11 9 10 11 11 11 11 11 11 11 11 11 12 11 11 11 11 11 12 11 11 10 9 9 9 11 11 12 12 12 13 13 13 14 12 11 10 9 9 10 11 11 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 10 11 9 8 6 7 8 9 10 10 10 8 7 6 7 9 11 10 10 9 7 6 5 6 7 8 8 9 10 11 11 11 10 9 9 9 9 9 9 8 11 12 13 13 12 10 10 12 13 15 15 - 14 15 17 19 21 21 20 19 19 19 20 20 17 17 16 17 17 17 17 18 20 21 20 18 18 21 24 30 32 34 30 27 29 33 27 25 25 23 21 19 19 24 31 35 45 45 32 22 21 21 21 37 37 23 22 36 43 31 20 18 18 22 41 41 29 36 67 79 84 84 88 92 94 94 96 97 97 97 96 93 92 90 84 79 74 72 71 68 65 60 56 55 55 50 42 37 34 26 24 21 13 10 10 11 11 10 9 9 10 11 12 12 12 12 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 13 13 14 14 13 13 11 11 12 12 11 10 10 11 11 11 11 11 11 11 12 12 12 12 12 11 11 12 12 11 11 11 10 11 10 12 12 13 13 12 12 11 12 13 12 12 10 10 10 11 12 12 12 12 13 13 13 13 13 13 13 12 12 11 12 12 12 12 12 10 9 7 8 9 10 11 10 9 8 8 8 9 10 10 10 9 9 8 7 6 6 7 7 7 9 9 11 11 10 10 9 9 9 9 9 9 9 11 12 15 14 13 11 10 12 13 15 15 - 15 15 16 18 20 21 21 20 19 20 20 20 17 16 17 17 17 16 17 18 20 20 18 18 18 18 22 28 30 32 27 27 37 37 21 21 25 21 20 18 20 24 33 48 48 33 21 21 20 20 36 37 27 22 22 32 32 21 20 18 20 29 41 37 29 56 78 81 88 89 90 92 93 94 95 96 96 97 96 95 94 92 90 88 81 78 75 74 72 67 63 63 63 59 54 49 43 39 39 35 25 21 18 13 12 11 10 10 10 11 12 13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 12 13 13 13 12 12 12 12 12 11 11 11 10 10 10 10 11 11 11 12 12 13 13 12 11 11 12 12 12 11 11 10 11 11 11 12 12 12 12 11 11 11 12 12 12 11 11 12 12 12 12 13 14 18 18 14 14 14 14 13 12 11 11 12 12 12 12 11 10 9 8 8 9 10 10 9 9 9 9 9 9 9 9 9 8 8 8 6 7 7 8 7 6 8 8 8 7 8 10 9 9 9 10 10 9 9 11 12 13 14 13 12 11 11 13 15 15 - 14 15 16 18 20 21 21 20 18 20 20 18 17 16 16 17 17 17 17 18 20 20 19 16 16 20 24 28 30 29 27 32 37 30 21 21 25 21 20 21 23 35 48 48 32 21 20 17 19 33 37 36 21 21 23 22 24 20 20 20 21 34 34 29 35 67 78 81 88 91 91 92 93 94 95 96 95 95 94 94 94 93 92 91 89 81 78 74 73 70 68 68 68 64 61 59 53 52 53 53 50 45 40 36 32 21 20 12 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 10 9 9 10 11 12 12 12 12 11 11 11 10 11 11 11 10 10 9 9 10 11 11 12 12 12 12 11 11 12 12 12 11 11 11 10 10 10 11 12 12 12 12 11 11 10 11 12 13 13 13 13 13 13 12 12 14 16 19 15 13 13 13 13 12 11 11 12 12 12 11 11 10 10 8 8 8 9 10 9 9 8 9 9 9 9 9 9 8 8 6 6 9 10 11 10 7 8 7 7 7 9 10 9 9 10 10 10 9 9 11 11 12 12 13 12 11 11 12 14 15 - 14 15 16 18 18 18 18 19 19 18 19 17 15 15 16 17 17 16 15 17 18 20 18 16 17 20 24 26 29 29 27 39 39 21 21 21 24 21 20 23 32 48 48 35 22 18 16 16 21 39 39 20 20 23 21 21 21 18 18 20 27 34 30 29 52 73 77 79 85 90 90 90 91 92 94 94 94 94 92 91 91 91 91 90 87 81 77 73 72 72 72 72 71 67 63 61 57 57 59 59 63 63 60 60 56 50 39 22 18 12 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 11 11 10 10 9 9 10 11 12 12 12 11 11 11 11 10 10 10 11 11 11 10 10 9 10 11 11 11 11 10 10 9 11 11 12 12 12 12 11 10 9 9 11 12 12 12 12 11 11 11 12 13 13 13 13 14 13 12 12 12 14 15 17 19 18 14 13 13 12 12 12 12 12 12 12 11 10 9 7 8 8 9 9 9 9 9 9 9 8 8 8 8 8 8 7 9 11 13 12 11 9 9 9 8 9 10 10 9 9 11 11 12 11 10 10 11 11 12 12 12 11 10 12 13 14 - 15 15 18 18 18 17 17 17 16 17 19 16 15 15 16 17 16 15 14 14 16 17 16 16 17 20 22 23 24 25 32 39 29 21 20 21 24 20 20 30 33 33 29 23 21 19 17 20 36 39 21 20 23 23 21 21 21 18 18 20 31 34 29 29 56 72 77 79 82 85 86 86 86 90 91 92 93 92 91 91 90 90 91 91 90 82 79 75 75 76 76 75 73 70 65 60 60 61 61 62 67 67 66 65 63 61 54 42 33 24 14 11 10 10 10 10 10 10 10 11 11 11 12 12 12 11 11 11 10 9 8 10 12 13 13 12 11 11 11 11 11 10 10 10 11 11 11 11 11 10 11 10 10 8 7 8 9 11 12 12 12 12 12 11 9 9 10 11 12 12 13 13 12 13 13 13 13 13 12 13 13 13 13 13 13 14 14 16 19 17 15 14 13 13 13 13 13 13 13 12 12 11 10 10 10 11 11 10 9 9 9 9 9 7 7 7 7 8 8 8 10 11 12 12 11 10 10 10 10 9 11 10 10 10 11 13 13 12 11 10 10 11 11 12 11 11 11 12 13 14 - 16 18 17 17 17 16 16 15 14 16 19 16 15 15 15 16 15 15 14 14 14 15 15 15 17 21 22 23 26 28 30 30 21 19 18 24 23 20 23 33 25 23 23 21 20 18 20 27 37 24 20 20 23 22 21 21 21 20 18 21 33 32 29 33 59 70 74 77 79 79 77 77 83 90 91 92 91 91 91 90 90 90 90 90 90 87 82 79 81 82 82 78 74 72 67 63 62 63 64 65 66 68 68 67 66 63 60 55 44 35 23 18 12 11 9 7 7 8 9 9 9 10 11 12 12 11 11 10 9 9 9 9 11 12 13 12 12 12 12 12 11 11 10 10 11 11 11 11 11 11 10 9 8 8 9 10 11 12 12 12 12 12 12 11 10 10 11 11 12 13 14 13 13 13 14 14 13 12 11 11 12 13 13 14 14 14 14 14 15 15 14 14 14 15 14 13 13 13 13 12 12 12 11 11 12 12 11 11 10 11 11 10 9 8 6 7 8 9 9 9 9 10 11 11 11 11 10 9 9 9 10 10 10 11 12 14 14 13 12 11 9 9 10 11 11 11 11 12 13 14 - 17 18 16 15 15 19 19 15 15 15 15 16 15 14 15 16 16 15 15 15 15 15 15 15 18 21 22 23 27 29 30 21 20 18 20 24 22 21 31 31 21 21 22 20 18 18 22 33 28 20 20 21 23 20 20 21 21 20 18 21 33 32 29 38 60 68 72 73 76 75 75 78 85 90 92 91 90 90 90 90 90 90 90 90 90 88 84 81 81 82 82 81 76 73 69 65 64 64 64 64 64 65 66 66 66 65 62 57 47 37 33 25 20 12 8 6 6 6 7 7 7 9 10 12 12 12 11 10 9 9 10 10 11 12 12 12 12 12 12 11 11 10 10 10 10 11 11 11 11 10 8 7 9 10 11 12 12 12 13 12 12 12 13 12 11 11 11 11 12 13 14 13 13 13 13 13 12 11 11 11 13 14 14 15 14 14 13 13 14 13 13 14 15 15 15 14 13 13 12 12 11 11 11 12 12 12 12 11 11 11 11 11 10 8 7 8 10 11 10 9 7 9 10 12 12 11 11 10 9 8 9 10 11 12 13 13 13 12 11 10 9 8 8 10 10 10 11 13 14 15 - 15 16 15 15 16 19 18 16 15 14 14 14 14 15 15 16 16 16 16 16 16 16 15 15 18 20 21 21 26 26 23 18 17 18 21 24 23 26 31 24 21 21 22 21 18 18 22 26 22 18 18 21 21 20 20 21 21 20 18 22 33 25 25 42 61 71 70 70 72 74 74 77 82 85 86 83 83 83 82 82 83 90 90 90 90 87 87 82 81 81 81 81 77 74 70 68 66 65 64 62 62 62 63 65 66 65 62 57 51 43 36 32 23 14 11 9 7 7 7 7 7 8 10 11 11 11 11 10 10 10 10 10 11 11 12 12 12 12 11 10 9 9 9 10 11 11 11 11 10 9 8 9 11 12 12 12 12 12 13 13 14 14 14 14 12 12 11 11 11 12 12 12 12 12 12 13 12 11 12 12 14 15 15 15 14 14 13 13 13 13 13 13 14 15 15 15 13 13 11 11 11 11 12 12 12 12 13 13 13 13 12 12 11 9 8 8 10 11 11 9 7 10 11 13 13 12 11 11 10 8 9 11 11 12 13 13 13 13 11 9 9 9 9 10 9 9 10 12 14 15 - 14 14 14 15 16 18 19 19 19 16 15 15 15 15 15 16 16 16 16 17 16 15 15 14 16 17 20 20 23 24 20 20 20 18 21 23 23 30 31 21 21 21 22 20 18 18 21 21 21 18 18 21 21 20 19 21 21 20 18 24 32 21 21 42 60 68 68 68 68 69 70 71 73 76 76 75 75 76 75 75 76 83 86 86 87 87 87 84 82 81 81 81 79 76 73 71 70 67 67 65 64 64 64 65 66 64 60 56 52 45 39 36 30 21 20 20 12 10 9 8 8 8 8 10 10 10 10 10 10 10 11 11 11 11 11 12 11 11 10 9 9 10 9 11 11 12 12 11 11 10 10 10 11 11 12 12 12 12 13 13 14 15 14 14 13 12 10 10 11 11 11 11 11 11 12 13 13 12 13 13 13 13 13 14 14 14 14 14 14 13 13 13 14 15 16 15 14 13 12 11 11 11 11 11 11 12 13 13 13 13 13 12 11 10 8 8 9 10 11 8 6 7 11 12 12 12 11 10 9 9 10 11 12 13 13 13 14 13 12 10 9 10 10 10 9 9 9 11 13 14 - 13 14 15 16 17 18 20 20 19 18 18 17 19 19 17 19 19 19 19 17 16 15 14 13 14 15 17 20 23 21 20 20 20 20 21 23 23 27 22 20 20 21 21 20 18 19 21 21 20 18 21 21 21 17 17 20 21 18 18 22 31 21 22 44 60 66 65 65 65 66 66 65 65 68 70 72 72 71 70 70 71 73 79 80 84 84 87 87 86 82 82 82 80 77 74 73 71 70 69 67 66 66 65 65 64 62 60 54 50 44 41 40 33 25 24 24 22 22 21 13 11 9 9 10 9 9 9 9 10 10 11 11 11 11 11 11 11 11 11 11 11 11 10 10 10 11 11 11 11 11 10 9 10 11 12 12 12 12 13 13 13 13 13 13 12 11 10 11 11 11 12 11 11 11 12 13 14 14 14 13 13 13 12 12 13 13 14 14 14 14 13 13 13 14 15 15 14 13 13 11 11 11 11 11 11 11 11 11 12 12 13 12 11 10 9 9 9 10 9 7 6 5 7 9 10 10 9 9 8 9 10 12 13 13 13 12 12 12 11 10 10 10 10 10 10 9 9 12 13 14 - 13 14 14 16 17 19 19 19 18 18 18 18 18 17 17 18 18 18 18 17 17 16 15 14 14 14 16 18 21 18 19 18 18 20 21 22 23 25 20 18 18 21 21 20 19 20 21 21 21 20 26 26 21 16 16 18 21 20 18 22 26 21 22 44 59 62 62 62 64 65 65 65 65 66 67 68 68 66 66 66 66 68 72 75 77 81 84 84 83 80 80 79 77 74 73 73 70 69 67 67 67 65 64 64 62 61 58 56 54 48 46 45 41 35 32 29 26 34 36 36 21 13 11 11 10 9 8 8 9 9 9 10 10 11 11 11 11 11 11 11 11 10 10 10 10 10 11 11 11 11 10 10 10 11 12 12 12 12 12 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 13 14 15 15 14 13 13 12 11 11 11 12 13 13 13 13 13 14 14 15 15 15 15 14 13 12 12 11 11 11 11 11 11 11 11 11 12 11 11 10 10 11 11 10 9 9 8 7 6 6 7 7 7 8 9 9 11 11 12 12 12 12 12 11 11 11 11 11 11 11 11 10 10 12 14 15 - 13 13 13 14 15 16 16 15 15 16 17 18 19 19 17 16 16 16 17 17 16 15 14 14 14 15 16 18 19 18 16 16 17 18 21 23 23 23 20 18 18 21 21 19 20 21 21 21 21 21 27 27 22 18 18 20 21 21 18 21 24 21 24 43 55 56 58 61 63 62 62 62 63 65 66 66 65 64 64 63 63 64 69 72 72 77 81 79 77 75 75 75 75 74 74 74 70 68 66 66 67 66 65 64 62 62 61 59 59 59 59 59 56 46 45 43 36 35 38 44 44 33 22 21 13 11 9 8 7 7 7 8 8 10 11 11 10 10 10 10 10 10 10 10 10 11 12 11 11 11 11 11 11 11 11 12 12 12 13 13 14 14 13 13 13 13 14 13 13 13 13 12 12 12 13 14 14 13 12 12 12 11 11 10 11 12 13 13 13 13 13 13 14 14 14 14 13 12 12 11 10 9 9 11 11 13 13 13 12 11 11 11 11 10 10 10 11 10 10 10 9 8 6 6 5 5 7 7 10 10 10 10 10 11 11 11 11 10 11 11 12 11 10 11 11 11 10 12 13 14 - 13 13 14 14 14 14 14 13 14 15 17 18 20 20 17 15 15 14 15 16 15 15 15 18 19 17 16 17 16 15 15 19 19 18 21 25 26 22 20 18 18 20 20 19 20 21 21 21 21 21 23 23 21 18 18 20 21 21 18 21 24 21 23 42 54 54 54 60 62 63 61 59 59 61 65 65 62 62 62 61 61 61 66 70 73 74 77 75 74 73 73 73 74 74 75 75 73 70 68 67 66 66 66 66 65 64 64 62 62 63 63 63 62 57 61 61 58 52 42 39 45 45 43 36 23 20 13 10 8 7 6 6 5 8 11 11 10 8 8 9 10 10 10 9 10 11 11 11 11 11 11 11 10 11 11 11 12 12 13 13 13 13 13 12 12 13 14 14 13 13 13 12 11 11 12 12 12 11 11 11 11 11 11 11 12 12 13 12 12 12 12 12 12 13 13 12 12 12 11 10 8 7 8 10 11 13 14 15 14 12 12 11 11 11 11 10 10 10 11 10 9 7 6 6 5 5 6 8 11 11 10 9 7 7 9 9 9 8 9 10 10 10 10 10 10 10 8 10 12 14 - 13 14 14 15 16 20 20 19 19 16 16 18 19 20 20 20 19 15 15 16 19 19 19 18 18 17 16 15 15 15 16 19 18 18 20 22 24 21 18 19 19 20 20 19 21 21 20 20 22 23 22 21 20 18 18 20 21 21 18 21 23 20 20 35 46 49 50 54 60 60 55 52 52 56 58 56 56 60 62 60 60 62 65 65 68 68 72 71 70 72 72 72 73 73 74 74 73 71 70 69 66 67 67 66 66 67 67 65 62 64 65 64 63 64 69 69 69 68 60 46 40 43 53 53 44 33 21 13 11 8 7 6 6 7 9 10 9 8 8 9 10 10 9 9 9 10 11 11 11 12 11 11 10 10 11 11 12 12 13 13 13 12 11 11 11 12 12 12 13 13 13 12 11 11 11 11 11 11 10 11 11 12 12 12 12 13 13 13 13 12 12 12 12 13 12 12 12 12 11 9 9 7 7 7 9 11 12 13 13 13 12 11 11 11 10 10 10 10 10 8 6 5 5 5 5 5 5 7 10 10 11 10 8 7 9 9 8 7 7 8 9 9 9 10 11 10 8 10 12 14 - 15 15 15 15 17 18 20 18 17 16 16 16 17 19 20 20 18 17 15 15 17 19 18 18 18 17 16 15 15 16 17 17 18 19 18 20 21 20 18 17 18 20 21 20 21 21 18 18 21 23 20 18 18 18 18 18 21 21 18 18 21 20 20 30 37 42 45 47 50 50 46 46 48 50 45 45 48 55 61 58 58 62 64 64 65 65 67 68 69 70 69 69 71 72 72 72 73 71 70 67 66 67 67 66 66 66 67 65 62 62 65 66 67 71 75 75 73 72 67 60 53 44 44 45 52 52 37 25 21 18 12 11 10 10 11 10 10 8 9 9 10 9 9 9 9 10 10 11 11 11 10 10 10 11 11 11 12 12 13 13 12 12 11 10 9 10 10 10 11 11 12 12 12 13 13 14 13 12 11 11 11 11 11 11 11 12 13 14 14 13 13 13 13 13 12 12 11 11 10 9 8 7 6 6 7 9 10 11 11 11 11 11 11 11 10 11 11 10 9 5 3 3 4 5 4 4 4 5 7 9 10 10 8 8 9 9 9 8 7 7 8 9 9 10 10 9 8 9 11 13 - 14 14 14 15 16 17 18 17 15 15 15 16 16 17 18 18 17 16 20 20 19 18 18 17 17 16 16 15 16 19 19 17 17 18 18 19 20 20 16 15 17 19 20 20 21 21 18 18 18 20 19 18 17 18 17 18 20 20 18 19 21 20 21 26 31 34 37 42 43 43 40 40 40 40 36 36 43 48 51 52 52 57 60 60 65 66 65 65 65 67 68 69 68 68 68 69 71 70 68 66 67 68 68 66 64 64 66 66 65 65 66 67 70 73 74 74 73 70 67 66 65 63 54 43 42 41 39 36 30 24 24 21 18 18 13 12 11 9 10 10 10 10 9 10 9 11 10 10 10 9 9 9 11 11 12 12 12 12 13 13 12 11 11 10 10 11 12 12 13 13 13 13 13 14 15 16 16 14 13 13 13 12 12 10 11 11 12 12 13 13 13 13 13 13 12 12 10 10 9 8 8 7 7 8 8 10 11 11 11 11 11 11 11 11 11 12 13 12 11 7 5 4 5 5 4 3 4 4 5 7 8 9 8 8 9 9 9 8 6 7 8 9 10 10 10 9 7 8 11 12 - 13 13 14 15 16 17 16 15 15 16 19 19 19 19 17 17 16 17 20 20 20 19 17 16 16 16 16 19 19 18 18 17 16 15 16 17 18 19 16 15 16 18 20 21 21 20 19 17 17 17 16 16 16 17 17 18 20 20 20 21 20 18 18 22 24 29 33 34 36 34 32 31 31 31 32 34 38 39 43 46 47 50 56 56 62 65 63 62 63 67 67 68 66 66 65 65 69 68 66 67 69 69 69 66 65 65 67 67 67 67 66 66 69 71 70 69 69 70 72 74 75 75 73 64 48 35 32 31 30 28 27 23 20 19 15 13 11 9 10 10 10 10 10 10 10 10 10 10 9 9 9 10 11 12 12 12 12 12 12 12 12 13 18 20 21 22 26 28 31 32 32 31 22 20 20 17 16 15 14 14 15 14 14 13 12 12 11 11 12 12 13 13 13 13 13 12 11 10 9 9 9 8 8 10 11 12 12 11 11 11 11 11 11 11 12 13 13 13 11 11 9 6 5 5 4 4 4 5 5 6 7 7 7 7 8 8 8 6 6 7 10 11 11 11 11 10 8 9 11 13 - 13 13 14 15 16 16 15 15 15 16 18 18 19 18 17 16 16 19 19 19 19 19 15 15 16 20 20 20 18 17 17 16 15 15 14 15 17 16 16 15 17 18 20 21 21 20 17 16 15 15 15 15 19 19 15 15 17 18 20 21 19 18 18 20 22 29 31 31 31 30 25 24 24 28 30 32 34 37 42 43 44 46 52 55 60 62 60 60 62 66 66 66 65 65 66 67 68 67 70 70 69 70 70 70 70 68 70 70 70 70 67 66 66 68 68 67 68 69 73 78 82 82 81 75 67 54 35 24 21 21 26 22 18 18 15 12 10 9 9 10 10 10 10 9 10 11 10 9 8 9 9 10 11 12 12 12 11 12 12 14 20 21 26 26 26 30 30 30 32 33 35 35 32 28 28 23 22 21 15 15 15 15 15 18 19 15 14 13 13 13 12 12 12 12 12 12 11 11 11 11 11 10 9 11 12 13 13 13 11 11 10 10 9 9 11 11 12 12 12 11 10 6 5 5 4 5 6 5 5 5 5 5 6 7 8 7 6 5 5 7 10 11 11 11 10 9 7 8 11 13 - 13 14 14 15 17 19 19 16 15 15 16 16 17 17 17 19 19 19 19 19 19 19 15 15 17 20 20 19 18 17 19 19 19 19 19 15 15 15 15 15 16 18 18 18 20 18 16 15 15 14 15 16 20 20 19 18 16 17 18 21 20 16 15 18 21 24 28 29 30 30 28 25 26 26 27 27 29 33 38 38 40 44 50 50 56 60 60 60 60 61 62 62 62 63 65 67 69 67 68 69 66 66 68 69 69 69 70 70 70 70 67 65 63 61 61 61 65 66 72 77 80 81 81 80 78 69 61 43 24 20 20 20 18 15 13 11 10 8 8 10 10 11 11 11 11 13 20 20 20 21 21 18 13 14 13 13 12 12 14 16 21 22 30 30 29 30 25 25 29 29 27 23 21 21 23 26 31 31 26 22 21 19 16 17 17 18 20 20 19 14 13 11 11 11 11 11 10 10 10 11 12 12 12 12 12 13 14 13 12 10 10 8 8 7 7 10 10 11 11 10 8 5 5 5 4 4 5 5 5 6 6 6 6 7 7 8 7 6 6 7 8 10 10 11 11 10 8 7 10 12 - 13 13 14 15 17 19 19 17 15 15 14 14 14 15 16 20 20 18 18 19 19 19 15 14 15 18 18 18 17 17 18 18 19 18 18 16 15 15 15 16 16 16 17 17 16 15 14 15 14 13 14 17 20 20 19 17 15 15 17 20 19 16 15 16 18 20 24 29 30 29 27 26 25 26 26 26 27 32 36 38 40 46 49 50 51 55 58 60 60 60 60 62 62 62 62 64 65 65 64 64 64 63 63 63 65 67 69 69 69 69 65 61 59 55 55 55 59 63 70 74 80 82 83 83 81 78 73 65 45 21 20 19 19 14 13 11 11 10 10 10 11 12 13 20 26 31 31 33 35 40 40 36 36 32 24 21 20 20 15 16 18 18 20 21 28 29 28 29 29 28 24 22 21 20 20 21 20 22 26 30 31 31 22 20 18 18 18 19 18 15 13 11 10 9 8 9 9 8 9 10 11 12 12 12 12 13 13 12 12 11 10 9 8 8 7 8 9 10 11 10 9 6 6 6 5 4 5 5 5 7 8 9 8 8 8 9 9 9 8 8 8 9 10 11 13 12 10 7 10 12 - 13 13 14 14 16 17 19 17 16 15 14 14 14 14 16 17 18 17 18 18 18 16 14 13 13 15 15 17 16 17 18 19 18 18 17 16 16 16 19 19 19 16 14 14 14 14 14 15 18 18 15 16 20 20 19 16 14 15 16 19 19 16 15 15 17 20 20 24 25 22 22 21 21 21 21 24 29 32 38 38 40 45 49 51 52 54 56 56 57 57 59 63 63 63 62 61 61 63 62 61 61 62 60 59 59 64 64 64 64 65 62 56 54 48 45 45 48 55 66 73 76 80 82 85 85 82 80 73 63 41 26 21 21 21 21 21 21 21 21 21 14 15 19 22 35 40 40 34 33 32 32 33 37 42 42 37 25 21 21 17 18 18 21 21 21 21 25 31 33 33 27 22 20 19 19 18 18 20 20 21 23 29 28 26 24 21 21 21 20 15 13 12 11 9 7 6 7 8 9 9 11 11 12 12 13 13 13 13 12 11 11 10 9 9 8 8 8 9 11 10 10 9 8 7 6 6 7 7 6 8 8 10 10 10 9 9 10 10 10 10 10 11 11 12 13 12 10 6 9 11 - 13 14 14 14 15 15 16 15 15 15 14 14 14 15 15 15 16 16 16 17 17 15 13 12 12 13 15 16 16 17 17 19 19 17 16 16 16 19 19 19 18 16 14 14 15 19 19 19 20 20 16 16 18 18 19 16 14 14 16 19 18 17 15 15 16 17 19 18 21 20 20 20 20 20 20 21 29 32 36 38 40 45 50 50 51 51 52 51 52 55 58 60 61 61 62 62 62 62 63 60 59 59 57 56 56 59 58 58 61 61 58 52 50 40 35 35 36 41 53 65 71 75 80 82 84 84 80 75 69 59 42 24 22 25 28 28 26 30 36 36 36 33 21 20 22 39 45 45 35 31 31 29 29 31 36 40 38 37 34 24 21 20 20 21 21 21 23 23 25 34 34 31 21 20 20 20 19 17 18 18 18 20 21 21 24 26 25 25 21 20 16 13 13 11 9 7 6 6 7 8 10 11 11 12 14 18 18 14 12 12 12 12 11 11 10 9 10 9 10 10 10 10 10 9 8 9 10 10 9 10 10 11 11 11 10 10 9 10 10 10 10 10 11 12 12 11 8 5 8 11 - 13 13 13 14 14 14 14 15 15 15 15 14 15 15 15 15 16 16 16 16 16 15 14 12 12 13 14 15 16 16 17 17 17 17 16 15 17 19 18 18 17 16 16 19 19 19 19 20 20 20 17 16 17 19 17 15 14 15 16 19 17 16 15 15 15 15 16 17 18 18 18 18 17 17 17 18 23 30 36 39 42 43 47 49 49 51 53 53 51 51 57 58 59 59 63 63 62 62 62 59 54 53 53 57 59 59 57 57 60 60 57 49 45 34 31 30 29 29 37 54 61 68 73 78 81 81 80 77 72 67 55 34 26 22 24 31 31 29 29 32 39 39 36 23 24 31 40 45 43 36 33 35 35 23 23 27 36 44 44 37 31 26 21 20 20 21 22 23 23 24 34 34 34 26 21 20 20 20 20 19 18 18 19 20 18 21 21 21 21 20 17 15 14 12 10 7 6 6 6 6 8 9 10 11 13 15 15 14 12 12 12 13 12 11 10 10 11 10 9 9 10 11 11 11 11 10 11 11 11 11 11 11 11 11 11 11 10 10 9 9 9 9 9 11 11 10 9 6 9 11 - 13 13 13 13 14 14 15 16 20 20 16 14 14 14 15 16 17 17 16 15 15 14 13 13 13 13 14 14 15 15 16 16 17 16 15 15 16 19 18 17 16 16 18 19 20 20 19 20 20 19 19 16 17 19 15 14 14 15 17 17 17 16 15 14 15 15 15 15 16 17 17 19 19 17 19 21 24 30 38 40 42 42 42 47 49 51 51 53 52 56 58 54 54 57 60 62 61 61 61 56 51 51 51 53 59 60 58 61 61 59 52 46 38 33 29 25 21 21 27 34 42 53 61 68 73 76 75 73 69 66 63 54 41 30 23 28 30 25 23 23 25 32 33 32 42 42 36 36 42 43 35 33 35 34 28 21 21 32 37 36 35 35 33 25 23 21 21 21 23 24 24 24 31 32 30 24 21 21 20 21 21 20 19 17 17 18 18 18 18 17 17 16 15 13 11 9 7 7 6 6 6 7 8 9 11 12 13 13 13 13 13 12 12 11 10 10 11 10 9 8 9 9 11 11 11 11 10 11 11 11 11 11 11 11 12 12 12 10 8 7 8 9 10 10 10 9 8 7 11 12 - 13 13 13 13 14 14 14 17 18 19 16 14 14 14 15 17 17 17 17 15 14 13 13 13 13 14 14 15 15 15 15 16 16 16 15 15 16 19 18 17 16 17 18 19 19 20 19 20 19 19 19 19 17 16 15 13 14 15 19 19 17 17 16 19 19 19 17 16 17 18 18 18 20 21 32 35 35 32 34 39 41 42 42 45 48 50 50 52 54 55 57 54 57 58 59 62 61 61 61 57 52 52 52 51 56 60 59 62 62 59 54 49 43 38 31 24 21 21 22 22 27 35 44 55 65 69 69 68 66 65 63 61 50 39 29 26 25 25 24 28 28 25 22 22 31 41 42 42 44 44 43 31 29 29 34 30 20 20 25 29 32 31 29 28 28 26 21 21 21 23 24 24 24 24 31 30 23 21 20 20 21 22 21 20 16 15 15 15 15 19 19 17 15 14 12 10 10 9 8 6 6 7 8 9 11 12 13 14 14 13 13 12 12 11 11 10 11 10 10 8 6 6 8 10 10 10 10 10 11 11 11 11 11 11 12 12 12 11 10 8 9 10 10 10 9 7 7 7 10 12 - 14 13 13 13 14 13 13 14 15 16 15 15 14 15 16 17 17 17 17 16 14 13 13 13 13 14 14 15 15 15 15 15 16 16 15 14 15 17 18 19 19 18 17 18 19 19 19 20 18 18 19 19 18 17 15 14 14 16 19 19 17 17 17 19 19 18 17 16 16 17 20 24 34 37 39 39 38 33 32 33 35 41 43 44 46 47 47 49 52 53 54 54 55 56 56 58 58 57 57 56 56 56 55 51 53 57 57 60 62 62 60 60 55 47 40 31 24 21 20 20 20 21 31 37 49 59 60 61 64 64 61 58 51 45 36 29 26 26 30 30 30 28 24 21 21 21 25 35 39 40 40 34 27 27 29 33 24 22 23 25 29 27 27 26 24 24 23 23 23 23 23 23 26 26 28 29 28 22 21 20 20 21 21 21 20 19 15 15 16 19 19 18 18 14 12 11 10 9 8 6 6 7 8 9 11 12 13 13 14 14 13 13 13 12 12 11 11 11 10 8 6 6 7 8 9 9 10 10 11 12 12 12 12 12 12 12 12 11 10 9 10 10 10 10 8 7 7 6 8 11 - 13 13 13 14 14 14 13 13 13 14 15 15 15 16 16 16 16 16 16 17 15 14 13 13 13 14 14 14 15 14 15 15 16 16 16 16 19 19 19 19 19 18 17 18 18 18 18 20 19 18 19 19 19 17 16 14 14 15 17 18 19 19 17 17 17 18 17 19 21 30 34 41 45 45 43 43 39 35 31 31 32 39 44 44 42 42 44 46 47 48 52 52 52 52 51 51 50 50 54 54 55 56 53 52 52 53 56 58 60 63 63 63 62 56 55 47 34 22 20 19 18 20 21 23 34 43 46 50 55 59 60 56 51 47 40 35 30 27 29 30 30 30 26 24 22 21 21 21 23 25 32 31 29 28 25 24 26 26 23 23 28 28 24 21 18 18 18 21 26 31 31 24 24 31 31 30 29 27 23 21 20 20 20 20 21 20 19 20 20 20 18 18 18 15 13 11 11 10 9 8 6 5 6 9 10 12 12 13 13 13 13 13 13 13 12 12 12 11 11 9 6 7 7 8 8 8 9 10 11 12 12 13 13 13 13 12 12 11 10 9 9 9 8 9 9 9 9 8 9 12 - 14 13 14 14 15 15 14 13 13 13 14 14 15 15 15 15 15 15 16 17 16 15 14 13 13 13 14 14 15 15 16 17 19 19 18 18 18 20 20 19 18 18 19 19 18 18 18 19 18 17 17 18 19 19 17 16 15 15 16 17 19 18 17 16 17 21 31 40 45 48 48 47 54 54 51 49 42 36 32 30 30 36 43 42 39 39 42 44 42 43 47 49 50 49 48 48 48 48 48 48 51 52 52 50 50 47 47 52 55 59 60 62 63 63 63 63 49 37 23 18 17 17 19 18 21 29 35 43 47 49 54 50 46 41 38 38 34 27 25 25 31 31 29 25 25 24 21 20 20 20 23 28 29 29 27 21 21 23 25 22 22 27 26 20 18 17 18 18 21 27 31 29 26 28 32 33 33 33 27 24 21 19 18 19 18 21 21 21 21 18 18 17 17 15 14 13 12 12 11 9 6 6 7 10 11 12 13 13 13 13 13 13 12 13 12 12 12 11 11 10 8 7 7 7 7 6 8 9 11 12 13 13 14 14 13 12 11 10 10 9 8 8 7 9 10 11 10 10 11 12 - 15 14 15 15 16 16 15 14 13 13 13 13 14 15 15 15 15 15 16 16 16 14 14 14 14 14 14 15 15 15 16 17 19 18 17 16 18 19 19 19 19 18 19 19 19 19 18 19 18 17 16 17 18 19 17 17 17 16 16 17 17 18 20 26 36 43 52 55 55 50 50 51 57 60 60 54 47 43 33 30 30 33 35 36 37 38 39 40 37 37 43 44 45 46 49 49 46 44 44 48 49 51 51 46 44 39 37 37 43 47 53 60 64 67 68 68 65 60 43 22 19 17 16 17 19 20 21 33 37 37 41 40 39 39 38 37 34 31 26 25 25 31 31 30 24 23 24 20 17 18 20 21 25 28 28 23 22 21 24 26 25 26 27 25 20 19 21 21 20 20 22 25 28 29 32 33 34 34 30 26 24 21 19 18 18 20 20 21 20 18 16 16 15 14 14 13 13 13 12 10 8 7 8 11 12 13 13 13 13 13 13 13 13 13 12 12 12 12 11 10 9 9 9 10 9 7 8 9 10 12 12 13 14 13 13 12 12 11 11 9 9 10 10 11 11 11 11 11 11 13 - 17 16 16 16 15 15 15 15 15 14 13 13 13 14 15 16 15 15 16 17 16 15 14 14 15 16 17 17 19 19 19 17 17 17 15 15 16 19 19 19 18 18 18 19 19 19 18 18 19 19 17 16 16 18 19 17 17 17 17 19 21 26 41 58 58 55 52 50 50 50 52 61 65 67 67 65 55 52 42 31 29 29 31 34 37 38 39 40 37 37 38 40 41 44 47 46 41 41 44 49 51 49 45 43 40 34 29 29 32 35 43 55 60 65 70 71 71 67 58 41 26 20 16 15 15 17 20 21 24 31 34 35 37 39 37 37 35 35 34 32 25 27 34 34 26 23 24 24 21 17 18 20 23 26 25 24 24 22 22 24 26 26 26 27 24 21 20 21 21 20 18 18 22 24 27 31 32 31 27 25 26 24 21 19 19 18 19 18 17 17 16 16 14 14 13 13 13 13 12 11 9 7 8 10 12 13 14 13 13 13 13 13 13 13 12 12 12 12 12 11 11 11 11 11 11 9 8 7 9 11 12 13 13 13 12 13 13 12 11 9 10 11 11 12 12 11 10 10 11 13 - 17 16 16 19 19 16 15 19 19 15 14 13 13 13 15 16 19 19 19 19 19 16 14 14 16 17 19 19 19 19 19 19 18 17 16 16 19 19 18 18 17 17 17 18 19 18 17 18 18 19 19 19 19 17 17 17 16 17 21 32 42 45 55 60 60 55 52 49 49 51 57 67 72 72 72 71 61 53 47 36 30 29 29 33 36 37 37 37 37 37 37 37 39 40 41 43 41 41 45 51 51 50 47 43 38 32 27 27 27 31 37 50 57 62 67 71 71 68 64 59 47 28 20 16 15 15 16 17 21 21 29 32 33 37 36 35 37 39 39 35 32 32 30 31 29 24 23 23 24 20 17 18 21 24 26 26 25 25 22 22 24 26 26 28 27 25 21 20 21 21 21 18 18 20 21 25 29 29 29 28 27 25 21 19 18 17 16 15 15 15 16 16 16 19 18 14 14 13 12 11 10 8 7 8 11 13 14 14 14 14 14 14 14 13 13 13 13 12 12 13 12 12 11 11 11 10 9 8 9 11 12 13 12 12 12 11 11 10 9 9 10 11 12 12 12 11 9 7 10 13 - 16 16 17 19 17 15 15 16 16 15 14 13 13 13 15 16 19 19 19 19 17 15 14 14 15 17 19 19 19 18 18 19 18 17 17 17 19 18 17 17 16 16 16 19 19 17 16 16 17 18 19 20 20 20 17 18 18 24 42 52 53 54 58 58 53 49 49 45 45 49 61 69 74 74 73 67 60 54 48 40 31 25 25 30 34 32 32 32 34 37 37 37 38 38 39 39 39 42 48 52 53 54 54 53 47 39 28 22 22 23 32 42 52 59 63 68 71 70 67 64 60 48 31 21 16 15 15 15 17 20 21 25 27 31 32 32 33 38 37 35 35 33 27 27 28 29 26 23 23 24 21 18 20 21 26 26 25 26 25 22 22 24 26 26 28 27 25 20 20 22 22 21 19 18 20 21 21 26 27 27 28 26 22 21 20 17 15 14 14 15 16 16 17 18 19 19 15 13 13 12 10 8 7 8 11 13 14 14 14 14 14 14 14 14 14 13 13 13 13 13 13 12 11 11 11 10 10 10 10 11 12 12 11 11 11 11 10 9 9 9 10 11 12 12 12 11 8 6 9 12 - 16 16 16 16 15 14 14 14 15 15 15 15 14 14 14 16 18 18 18 18 17 15 14 13 14 16 18 18 18 18 17 18 20 20 19 18 17 17 16 15 15 15 17 18 17 16 15 15 17 19 18 18 20 19 19 20 25 43 54 55 57 57 55 47 42 41 37 36 36 47 64 70 73 73 70 64 58 53 47 40 33 28 25 25 30 30 31 31 33 35 37 37 37 37 39 39 39 41 48 53 57 59 59 59 58 52 39 26 20 20 24 34 40 45 55 60 64 67 67 66 65 61 50 36 21 17 16 19 19 18 18 20 21 24 30 30 30 34 38 37 37 34 27 24 24 29 28 24 23 23 21 20 18 18 22 24 25 26 26 26 24 22 24 27 26 29 29 23 21 20 22 22 20 17 17 17 20 20 21 26 28 27 26 23 20 18 15 15 14 14 15 16 17 18 19 17 15 14 13 12 10 8 8 9 12 13 14 14 14 15 14 14 14 14 14 14 13 13 13 13 13 12 12 11 11 11 11 11 11 11 11 11 10 10 9 9 10 9 10 10 11 11 11 12 12 11 9 7 8 12 - 16 16 15 14 14 14 14 14 14 16 15 14 14 13 14 15 16 17 18 18 17 15 14 14 14 15 16 17 16 16 16 19 19 19 18 17 16 15 16 16 16 16 16 17 17 16 15 15 17 19 18 18 19 19 18 24 39 52 55 55 56 50 45 40 36 34 31 31 33 49 67 70 70 70 69 65 60 56 50 46 42 34 28 22 22 27 29 30 30 32 33 35 34 34 36 39 39 40 45 54 58 60 61 61 61 59 53 42 23 20 20 23 29 35 43 49 58 64 66 66 65 64 60 50 34 21 18 17 19 18 20 18 18 21 26 28 28 31 34 36 37 35 30 27 24 24 26 27 22 21 21 20 18 19 20 23 27 28 28 28 27 22 22 27 27 27 26 26 23 20 20 21 24 24 20 16 16 18 21 24 28 28 28 25 21 18 16 15 14 15 15 16 16 17 17 17 16 15 14 12 11 10 10 9 11 13 14 14 15 15 15 15 14 14 13 13 13 13 13 13 13 12 12 11 11 11 12 11 11 11 10 9 9 9 9 9 9 9 10 10 11 10 11 12 12 11 9 8 7 11 - 15 15 15 14 14 15 15 15 15 14 14 13 14 14 14 15 15 16 17 18 18 17 15 14 14 15 15 16 16 16 19 20 20 19 18 16 15 15 15 15 16 16 16 17 20 20 17 16 19 19 18 17 17 18 21 41 49 51 50 46 37 35 35 36 33 27 25 25 40 61 69 70 70 68 67 65 65 65 60 51 47 43 34 24 21 21 24 27 27 29 32 35 33 33 33 37 40 41 42 48 53 56 61 61 61 62 61 60 45 28 21 20 21 27 35 42 49 58 64 65 65 65 64 60 50 36 21 18 17 18 20 20 18 20 21 23 27 30 33 35 37 36 35 33 26 24 25 27 23 21 21 21 19 17 19 21 26 29 29 28 26 24 24 24 28 28 26 24 25 23 21 21 24 24 24 21 19 18 20 22 24 28 26 24 21 18 16 14 14 16 19 19 19 19 17 17 17 16 15 13 12 11 10 10 11 13 15 18 19 16 16 16 14 14 13 13 13 13 12 13 13 12 11 11 11 11 12 11 11 11 10 9 10 10 11 10 10 8 10 11 11 11 11 11 11 11 10 9 10 12 - 14 15 15 16 17 16 16 15 14 14 14 14 14 15 17 20 20 17 17 17 17 16 15 14 14 15 17 19 19 19 18 20 20 18 17 16 16 15 16 15 15 15 16 17 19 18 17 17 19 18 17 16 16 18 25 41 43 40 37 35 27 27 30 32 33 28 25 33 59 69 70 70 69 66 65 65 69 69 65 55 51 49 41 31 22 21 21 26 28 27 31 35 32 32 34 39 40 41 41 41 45 50 56 60 61 63 67 67 67 56 37 21 20 21 29 36 40 48 57 60 62 65 65 62 58 48 33 21 16 17 19 20 20 20 20 20 21 28 31 33 35 36 34 34 30 24 26 26 24 21 21 21 20 17 17 20 24 26 27 25 24 26 26 25 24 31 31 25 26 26 22 21 23 27 27 25 21 19 19 18 21 24 24 22 21 18 16 15 16 19 19 19 19 19 18 18 17 17 15 13 13 12 11 11 11 13 14 16 15 15 15 16 15 14 13 13 13 13 13 13 13 12 12 11 12 12 12 12 12 12 12 11 11 11 11 11 11 10 11 12 12 12 12 11 11 11 11 11 11 12 - 14 14 15 16 16 16 15 15 15 15 15 16 17 19 19 19 19 20 18 17 17 16 15 14 15 16 18 19 19 19 18 20 19 18 19 19 17 17 17 17 16 16 16 17 17 17 17 17 19 18 17 17 17 18 27 36 36 34 32 30 25 25 29 33 33 32 40 56 67 67 67 64 64 64 65 69 75 75 72 64 57 50 44 39 28 22 21 21 21 25 30 34 33 32 34 38 36 36 38 40 41 44 47 55 59 61 66 70 69 68 58 35 22 20 21 25 33 41 48 52 58 62 64 62 60 54 41 31 21 17 17 19 21 21 21 18 18 21 24 29 32 33 33 34 34 23 23 26 24 21 21 21 20 17 15 18 23 24 23 21 21 24 26 26 24 27 31 30 26 26 26 21 21 24 28 27 26 21 18 18 20 21 22 22 21 18 15 15 16 18 20 20 18 18 18 19 19 17 15 14 13 12 11 11 12 13 13 14 15 15 15 15 15 15 15 15 14 14 13 13 13 12 12 13 13 12 12 11 12 12 13 12 12 12 12 12 11 11 11 12 12 13 12 12 11 11 11 11 11 12 - 14 14 14 15 15 14 14 15 15 16 17 17 19 19 19 18 18 20 18 17 16 15 15 15 15 16 17 19 19 18 18 18 18 18 19 18 16 17 16 16 16 16 17 16 16 15 16 19 19 18 17 17 18 20 28 36 34 30 29 25 25 25 28 31 32 48 64 67 67 65 62 59 59 62 66 75 78 78 78 68 59 50 46 43 35 29 25 21 21 23 27 31 32 33 35 33 29 29 32 33 35 37 40 49 50 55 61 66 70 70 69 60 45 26 20 20 23 32 35 45 51 54 56 55 55 50 45 43 31 20 17 17 18 18 18 20 20 20 20 21 25 27 29 31 32 25 23 24 24 20 18 18 18 16 16 18 21 21 22 21 21 23 25 26 26 26 28 30 28 28 27 23 21 21 23 28 27 23 21 20 19 18 20 21 21 20 15 15 15 17 19 18 18 17 16 16 16 16 14 13 13 12 11 11 12 13 13 14 15 15 15 15 15 16 18 19 19 15 14 13 13 13 13 13 13 12 12 11 11 12 12 12 12 12 12 12 11 11 11 11 12 12 12 12 11 11 11 11 11 12 - 16 20 20 15 14 15 14 14 15 15 16 17 18 20 20 18 18 19 18 16 15 15 15 15 16 16 17 19 19 19 18 17 18 19 19 16 15 15 15 15 15 17 17 17 16 16 17 19 19 17 17 17 17 20 25 35 33 27 25 28 27 26 27 29 43 63 67 66 64 61 59 55 55 62 68 78 78 78 73 67 61 56 51 46 39 32 28 23 21 21 24 29 30 31 33 31 25 25 27 27 29 32 34 37 43 46 54 61 67 71 71 71 63 42 22 20 21 22 27 35 41 44 47 46 46 46 45 45 43 30 21 16 16 17 18 20 20 19 18 19 20 21 23 25 28 26 23 24 23 20 18 16 16 18 16 18 21 22 22 21 21 21 22 24 27 28 28 28 28 28 28 26 21 20 20 24 28 28 26 21 18 18 18 18 20 20 19 15 14 14 16 17 16 15 14 14 14 14 13 13 12 11 11 11 13 14 14 15 15 16 16 16 16 17 18 19 19 16 14 14 14 13 14 13 14 13 13 12 11 11 12 12 12 12 11 11 12 11 11 11 11 12 11 11 11 12 12 12 12 13 - 17 18 19 16 14 14 14 13 14 18 19 17 18 20 20 19 19 19 18 17 16 15 15 16 17 18 19 19 19 19 18 17 18 19 19 16 15 14 14 15 19 19 18 17 16 16 16 17 18 18 17 17 17 18 27 35 30 25 25 30 30 28 29 41 61 63 62 61 55 49 46 46 53 63 71 78 78 74 67 61 58 58 55 49 41 35 30 26 22 21 21 24 28 30 31 32 30 28 26 26 23 23 25 29 33 39 46 52 61 66 70 71 68 58 43 23 19 18 21 27 29 34 35 37 37 37 40 47 47 42 33 21 18 19 20 20 18 17 16 19 18 20 20 21 22 21 21 21 21 18 15 14 15 19 19 18 22 22 21 20 20 21 21 22 25 26 27 27 28 29 29 27 23 21 20 20 25 28 28 23 20 17 17 19 18 20 20 16 15 15 15 15 15 15 14 14 13 13 13 13 12 12 12 12 13 14 15 15 16 17 16 17 17 18 18 19 17 15 14 14 15 15 15 16 16 15 14 13 12 11 12 12 13 12 12 11 12 12 12 12 12 12 12 12 13 13 13 13 12 13 - 16 17 16 15 13 13 14 14 15 17 18 18 18 19 19 19 19 18 18 17 16 15 15 16 17 18 19 19 18 17 18 18 18 18 18 17 15 15 14 15 17 19 18 19 19 19 16 16 16 16 17 16 18 20 30 35 30 25 27 31 31 29 41 63 63 59 55 52 46 43 41 42 53 66 74 75 72 68 65 58 57 57 55 50 40 38 34 31 27 23 21 21 25 27 30 32 32 30 25 24 23 22 22 22 25 33 38 42 50 58 65 70 69 64 55 37 22 20 20 21 21 27 27 31 32 34 39 45 47 46 43 33 21 18 19 20 17 17 17 19 17 17 18 19 20 20 20 20 20 17 15 16 20 20 18 18 21 22 21 20 20 21 21 21 21 21 23 26 29 29 29 28 24 24 20 20 22 26 28 26 21 21 19 18 18 19 20 17 16 16 19 19 19 19 16 16 15 14 14 13 12 12 12 12 13 13 14 15 15 15 16 17 16 17 18 19 17 16 15 15 15 15 16 16 16 15 14 13 13 12 12 12 13 13 13 13 13 12 13 12 13 13 13 13 13 13 13 12 12 13 - 14 15 15 14 14 13 14 15 16 16 16 17 18 19 19 19 19 18 18 19 19 17 16 15 16 17 19 19 19 17 18 18 18 19 19 18 17 15 15 15 17 18 18 18 19 19 19 17 16 16 16 16 18 20 30 35 31 25 25 28 29 33 54 63 62 57 49 42 37 36 36 40 58 68 71 71 68 64 62 58 57 57 55 51 45 41 36 33 30 28 24 23 22 22 27 32 30 27 24 23 24 24 21 21 21 25 33 36 43 50 60 65 69 68 62 54 35 22 20 20 20 22 26 27 27 32 38 47 46 45 46 41 26 20 18 18 18 17 17 17 17 19 19 17 18 19 18 20 18 18 17 18 20 20 18 20 21 22 21 20 19 19 21 20 20 20 21 23 26 27 27 25 24 23 21 20 21 22 22 24 24 24 21 18 17 17 18 16 15 16 17 18 18 19 18 17 16 15 13 13 13 12 13 13 13 13 14 15 15 15 15 14 15 15 16 17 17 16 15 14 14 14 14 14 14 15 15 14 14 13 13 12 13 13 13 13 13 13 13 13 14 14 13 13 13 13 13 12 12 13 - 14 14 14 14 14 14 14 14 14 14 14 14 16 17 18 19 18 17 17 18 18 17 15 15 15 17 19 19 19 19 19 19 18 19 19 19 18 17 16 16 16 17 17 18 19 19 18 18 19 19 17 16 18 21 30 30 29 25 24 24 30 47 58 60 57 52 44 35 33 33 34 44 61 66 66 67 66 64 62 60 58 58 56 50 44 43 38 34 30 28 27 24 21 21 22 28 27 25 23 23 24 24 21 20 20 21 27 32 35 45 55 61 66 67 66 64 50 35 28 20 19 20 22 23 26 29 36 45 45 45 45 44 34 26 21 18 17 16 17 17 20 20 18 19 16 16 16 16 16 17 18 18 18 18 18 18 23 23 20 19 17 18 18 18 18 18 20 21 23 24 24 24 24 23 22 21 20 21 21 22 26 26 21 20 17 16 16 16 16 16 16 17 17 17 18 19 19 15 14 13 13 13 13 13 13 14 15 15 15 16 14 14 15 15 15 16 16 15 15 15 14 14 13 13 14 14 14 14 14 14 13 12 12 12 13 13 13 13 13 13 13 14 14 13 13 13 12 11 11 13 - 15 15 15 14 14 14 14 13 13 13 13 14 14 16 19 17 17 16 17 17 16 15 14 14 15 16 18 18 19 18 18 18 18 18 19 19 18 18 17 17 19 19 17 18 18 19 19 18 19 18 17 17 18 23 30 28 25 24 24 27 40 53 57 52 49 47 41 33 30 30 36 53 63 62 63 64 66 65 64 63 61 56 52 45 41 38 38 36 30 28 26 24 21 20 20 22 25 26 26 28 28 27 24 23 22 21 21 25 32 37 46 57 59 61 62 60 52 43 33 21 18 18 20 21 23 25 32 35 37 37 39 42 39 36 31 20 16 15 17 18 19 19 18 17 15 14 14 14 14 15 17 19 19 17 17 18 21 21 18 15 14 15 15 15 15 17 19 19 20 21 21 22 23 23 23 21 20 20 20 21 23 23 21 20 18 16 15 16 16 17 17 16 15 15 17 18 19 16 15 14 13 13 13 13 14 14 15 16 15 15 15 15 16 15 15 14 15 15 15 15 14 13 12 12 13 14 14 14 14 14 13 12 12 12 13 13 14 13 13 13 13 13 13 14 14 13 13 12 12 13 - 16 16 15 14 14 14 14 14 14 14 14 14 14 16 19 17 16 16 16 16 15 14 13 14 14 15 16 18 18 18 17 17 17 18 19 19 19 20 20 19 18 18 17 17 18 18 19 19 18 19 18 18 20 23 32 32 26 24 25 38 49 50 47 43 37 36 35 29 25 25 41 58 61 60 60 62 65 66 67 67 63 55 50 44 41 38 38 36 31 28 25 24 23 21 20 20 21 26 29 29 29 28 26 26 26 24 22 21 22 29 34 46 50 55 56 52 48 43 32 23 20 17 17 20 20 21 25 29 32 32 32 35 36 40 40 30 21 19 16 17 17 17 16 16 15 14 14 18 19 17 19 19 18 18 20 20 21 20 17 14 14 14 15 15 16 16 17 17 18 19 18 18 21 22 23 21 21 18 18 20 21 21 20 20 18 16 14 15 16 17 17 17 16 16 16 17 19 17 15 13 13 13 14 14 14 14 15 16 16 15 15 15 16 15 14 13 14 14 15 14 13 11 12 12 13 13 14 14 14 13 13 13 12 13 13 13 14 13 13 13 13 13 13 13 14 13 12 11 11 13 - 15 15 14 14 14 14 14 14 14 14 14 14 14 15 16 16 15 15 15 16 15 14 13 13 14 15 16 17 17 17 16 16 17 19 19 19 19 20 19 18 18 17 17 16 17 18 19 18 19 19 18 19 20 22 29 29 26 25 35 48 50 49 43 38 32 27 27 24 24 32 54 60 59 56 56 59 65 71 71 68 63 55 51 44 36 36 36 36 32 27 25 24 23 21 21 21 20 22 25 28 28 28 28 26 26 26 25 21 21 21 30 36 41 45 46 46 43 37 31 27 21 20 19 18 19 20 21 26 28 28 29 30 33 39 40 37 31 21 18 18 15 16 16 16 15 15 15 17 20 20 20 19 18 17 19 20 20 18 16 14 14 14 14 15 16 16 16 15 15 16 16 17 19 21 21 20 19 18 17 18 19 18 19 18 16 15 14 15 15 17 17 17 17 17 16 15 16 16 18 18 14 13 14 14 14 14 15 16 15 15 15 15 14 14 13 13 13 13 13 13 12 11 12 12 13 13 14 14 13 13 13 13 13 13 13 13 13 14 14 15 14 14 14 14 15 14 13 12 12 13 - 14 14 14 14 14 14 14 13 13 14 14 14 13 14 15 15 15 14 15 15 15 14 13 14 14 15 17 17 17 17 17 17 18 19 19 19 19 19 18 18 17 17 17 17 17 17 18 18 19 18 18 20 20 22 28 29 26 25 38 47 45 41 36 33 27 24 23 23 27 42 58 57 53 53 55 61 66 71 70 63 58 49 45 37 34 33 32 32 30 25 25 25 24 21 21 21 20 20 21 27 26 26 28 25 25 28 28 22 21 21 23 27 34 34 35 37 35 32 29 28 24 21 21 19 18 18 20 21 22 26 28 28 32 39 39 39 35 25 20 19 17 16 16 17 16 15 14 16 20 20 20 19 18 17 17 18 20 17 15 14 14 14 14 14 15 15 15 15 15 14 14 15 17 19 18 18 16 15 15 15 15 15 16 16 15 15 14 15 16 17 17 17 16 15 15 14 14 15 18 16 14 13 13 13 14 14 15 15 14 14 15 15 14 14 13 13 12 12 12 12 12 12 13 13 13 13 13 13 12 12 13 13 13 13 14 13 13 13 14 15 15 14 14 15 16 15 14 13 13 14 - 15 15 14 14 14 14 13 13 13 14 14 14 14 14 15 16 16 15 15 15 14 14 14 14 15 17 19 19 18 19 19 20 20 19 19 19 19 19 18 17 17 17 17 16 16 16 16 17 19 18 18 18 20 22 28 29 25 25 32 38 35 32 27 27 25 24 24 23 32 45 50 46 46 47 58 64 67 67 64 56 49 45 41 36 32 31 30 27 25 26 26 26 26 21 21 21 21 20 20 21 24 26 29 29 28 28 28 24 22 22 22 22 23 24 30 32 31 29 28 28 26 24 21 18 17 17 18 19 20 21 24 25 29 34 38 37 35 31 22 20 17 16 17 17 16 15 14 15 18 19 18 18 17 16 15 16 17 17 15 15 14 14 14 13 13 14 14 16 15 15 14 14 16 17 17 16 15 15 14 14 14 13 13 14 15 15 15 15 16 17 19 19 16 14 14 14 14 15 15 15 13 12 12 13 13 14 15 14 14 14 15 15 15 13 12 12 12 13 13 12 12 13 14 14 14 14 13 13 12 11 12 12 13 13 14 14 13 13 13 14 14 14 14 15 15 15 14 13 13 14 - 16 16 15 14 14 13 13 13 13 14 14 14 14 14 15 17 16 16 15 15 15 15 15 15 16 17 18 18 20 20 20 20 20 20 20 20 19 19 18 19 19 19 17 16 15 15 15 16 17 19 18 18 20 21 24 24 24 28 31 33 29 26 26 26 26 26 27 28 38 44 42 36 36 41 58 64 65 62 55 46 40 39 37 34 30 30 28 26 25 25 26 25 23 21 21 21 20 18 18 20 20 23 25 29 29 28 28 27 24 22 21 21 21 21 23 28 28 26 26 26 24 24 23 21 19 15 15 16 17 18 21 23 28 31 34 34 32 29 26 20 17 16 17 17 16 16 19 19 18 18 19 16 16 16 19 19 17 17 17 16 15 15 14 14 14 14 15 15 15 14 14 14 14 16 16 15 15 14 14 14 14 13 13 14 15 15 15 15 15 16 18 19 16 15 14 14 15 14 14 13 13 12 12 13 13 15 15 15 14 15 15 15 14 13 12 12 12 13 13 12 12 12 13 14 14 14 13 13 13 12 12 12 13 13 14 14 13 13 12 13 14 14 14 14 14 13 12 11 12 13 - 15 16 16 16 14 14 14 14 14 14 15 15 15 16 17 17 16 15 15 15 17 17 16 16 16 16 17 18 20 20 18 18 18 19 20 18 18 18 18 18 18 19 18 19 19 15 14 14 16 17 17 17 18 20 25 26 25 28 30 30 28 27 28 28 28 26 27 32 42 44 43 37 36 43 60 63 59 53 45 40 36 33 32 31 30 29 27 28 26 25 26 23 21 20 20 20 17 15 15 17 18 20 21 24 28 25 25 26 26 23 22 21 21 21 21 21 21 24 26 24 23 23 24 24 22 20 17 16 18 18 20 20 23 27 30 30 30 29 24 21 18 16 17 17 17 17 19 19 18 17 17 16 16 17 18 19 17 18 19 19 19 18 19 19 16 15 15 14 14 14 14 14 14 14 15 15 14 14 14 14 15 15 18 19 16 15 15 15 16 16 17 17 17 16 16 16 15 14 14 13 13 12 11 12 14 15 17 16 15 15 15 14 13 13 12 13 13 13 13 13 13 13 13 14 13 13 13 12 12 12 12 13 12 13 14 14 14 13 13 13 13 13 13 13 13 12 11 10 12 14 - 19 19 17 16 16 15 15 15 15 16 17 17 17 17 18 18 17 16 16 17 17 17 16 16 16 19 19 19 20 18 18 18 19 18 19 18 17 16 16 17 18 20 20 20 20 17 16 15 16 17 19 19 19 18 22 26 26 26 26 27 27 26 27 28 28 26 26 35 42 44 40 36 41 55 63 59 54 47 37 34 32 31 29 28 27 25 24 24 24 22 22 22 21 18 18 20 17 16 19 19 18 18 20 20 21 21 22 23 21 21 21 21 21 20 20 19 18 21 22 21 21 21 23 23 24 20 18 17 18 18 18 18 21 21 24 24 24 28 26 21 20 18 19 19 18 19 20 20 17 16 16 16 16 17 18 18 19 18 18 18 18 18 18 18 17 16 15 15 15 15 14 14 14 14 14 15 15 14 14 15 17 17 19 19 19 16 15 16 17 17 17 17 17 16 16 15 15 14 14 14 13 12 12 12 13 15 16 17 15 15 14 14 13 13 13 14 14 13 13 14 14 13 13 13 13 12 12 12 12 11 12 12 12 13 14 14 14 14 13 13 13 13 13 13 13 12 12 11 12 15 - 19 17 15 15 15 15 14 14 15 16 17 17 17 17 17 17 18 20 20 18 17 17 16 17 17 18 18 19 20 19 17 17 19 18 19 17 16 15 15 15 17 19 20 20 20 19 19 17 17 19 19 19 19 19 18 23 26 25 24 24 25 25 26 28 28 27 31 40 39 37 36 40 53 61 60 49 45 42 36 32 31 30 28 28 24 22 21 20 20 20 20 18 18 18 18 18 17 16 16 16 15 16 19 18 20 18 18 20 20 20 20 20 19 18 17 17 19 20 20 19 20 18 21 21 22 21 19 17 17 16 17 19 20 21 22 21 21 23 23 21 18 18 18 18 18 19 18 19 16 14 15 16 16 17 18 19 20 20 17 17 17 16 17 17 16 15 15 16 19 19 19 16 15 15 15 16 16 15 15 15 16 19 19 19 18 16 16 17 18 20 20 17 16 15 15 15 15 15 15 14 14 13 13 13 13 15 17 19 19 15 15 14 14 13 13 14 14 13 13 13 13 13 12 12 12 12 13 12 11 10 11 12 12 13 13 14 13 13 13 14 14 14 14 14 14 14 14 13 13 14 - 15 15 13 13 13 14 14 14 14 14 15 15 16 16 16 17 17 18 20 18 18 17 17 17 17 18 18 19 20 19 17 17 17 18 17 17 16 15 15 16 17 18 18 18 19 19 18 18 19 18 18 19 18 17 19 20 23 24 23 23 26 26 26 28 27 29 34 40 39 36 37 54 60 59 51 43 39 35 31 27 27 24 21 21 20 20 20 18 18 18 17 18 17 16 16 17 16 16 15 15 15 19 19 17 17 18 18 18 18 17 16 15 16 16 16 19 19 18 17 16 17 18 20 20 20 21 20 20 16 15 19 19 19 20 20 18 18 20 18 18 18 17 17 17 17 17 17 16 15 14 14 15 16 19 19 18 20 19 18 17 16 15 15 16 17 16 16 19 19 19 18 17 15 14 15 15 15 15 15 15 16 19 19 19 20 20 17 17 19 20 20 19 16 15 15 15 17 16 15 14 15 14 13 13 14 16 19 18 18 17 16 16 14 13 12 13 13 13 13 12 12 12 12 11 11 12 12 12 11 9 10 11 12 12 12 13 13 13 14 15 15 14 13 14 14 14 14 13 13 14 - 14 13 13 13 14 14 15 15 15 14 14 14 14 15 15 15 16 18 20 20 20 18 17 17 17 17 18 18 18 18 17 17 18 19 19 16 15 15 15 15 16 16 18 19 19 18 17 18 19 19 19 18 17 16 17 18 20 22 23 23 26 26 28 28 27 31 39 39 36 37 55 60 60 48 40 37 33 30 24 22 22 21 18 18 18 18 18 16 15 15 15 15 15 15 16 20 20 19 19 16 17 19 19 19 19 19 16 16 16 16 15 14 14 15 17 19 18 17 16 16 16 17 18 18 18 18 18 19 17 16 19 19 18 18 18 18 18 18 18 17 16 15 15 16 16 16 16 15 15 14 15 15 17 19 19 18 19 19 18 17 17 19 19 19 18 17 19 19 19 19 18 17 15 14 14 14 15 16 16 16 17 18 18 20 20 20 17 17 18 18 19 18 17 16 15 16 16 15 14 14 14 14 13 13 15 16 19 19 17 16 15 15 14 13 12 13 13 13 13 12 12 12 11 11 11 11 12 11 10 10 10 11 11 12 13 13 14 14 14 15 15 14 13 13 14 14 13 12 12 13 - 14 13 13 13 14 15 16 16 16 16 15 14 14 14 15 16 16 18 19 20 20 19 16 15 15 16 17 18 18 17 17 17 19 18 19 16 15 15 14 14 15 16 18 19 19 18 17 17 18 19 19 18 17 19 19 18 19 18 21 23 26 26 28 29 29 32 38 35 35 47 61 62 52 39 33 32 29 27 23 20 20 20 18 18 18 16 15 16 19 19 16 15 14 14 16 18 18 18 19 18 18 18 19 19 19 19 18 17 19 19 19 19 15 15 16 16 16 15 16 16 17 17 17 18 17 17 17 16 16 16 17 17 17 17 17 16 15 15 15 15 15 15 15 15 16 17 17 19 19 16 15 16 17 18 18 18 18 19 19 17 17 17 18 19 18 18 19 18 18 19 18 19 19 15 14 14 19 19 17 17 16 17 18 18 18 19 19 19 18 17 17 16 15 16 15 15 14 14 14 14 13 13 13 13 13 15 17 19 19 15 14 14 14 14 13 13 13 13 13 12 12 12 12 12 11 11 11 11 11 10 10 10 11 12 13 13 14 14 14 14 14 14 13 13 14 13 13 11 11 12 - 13 13 13 13 13 14 15 15 16 16 15 15 14 14 14 15 16 17 18 18 18 19 16 14 14 15 17 18 17 17 17 17 19 19 19 17 16 15 15 14 15 19 19 19 19 19 19 17 17 18 18 18 19 19 19 17 17 18 18 21 23 23 24 29 30 32 34 34 35 53 57 48 39 32 27 27 28 26 21 20 19 19 17 16 16 16 16 17 19 19 17 15 14 14 15 16 17 17 17 17 17 17 18 18 18 18 18 17 18 19 19 17 16 15 15 15 15 15 15 16 17 17 17 18 19 19 16 15 16 16 17 17 17 17 15 15 14 13 14 14 14 14 14 14 15 16 17 19 18 19 19 16 15 15 16 15 16 17 17 17 16 16 17 17 17 17 17 18 19 19 18 19 18 17 19 19 19 19 18 19 19 17 17 17 18 19 19 18 19 19 16 15 15 15 16 15 14 15 14 14 13 13 13 13 14 14 17 18 17 16 15 19 18 14 13 13 13 13 12 11 12 12 12 12 11 11 11 11 11 11 10 10 10 11 13 13 14 14 14 14 14 14 14 14 14 13 13 11 11 12 - 13 13 13 14 14 14 13 14 15 14 14 14 14 14 14 14 14 15 16 17 18 17 16 15 18 19 17 18 18 16 16 17 20 20 19 19 17 16 15 15 16 19 19 19 18 18 19 18 17 17 17 18 20 20 19 19 19 16 17 18 21 22 24 27 30 32 31 32 44 52 50 40 33 29 27 26 26 23 18 17 17 19 17 16 16 15 16 19 19 17 16 14 14 14 14 14 14 15 16 17 17 17 16 16 16 16 15 15 17 17 18 17 15 15 15 14 14 14 15 17 17 17 17 18 20 20 18 16 16 16 16 17 17 20 20 15 14 13 13 13 13 13 13 13 14 14 15 16 17 17 16 16 15 15 15 14 15 15 16 15 15 15 15 16 16 16 16 17 18 18 19 19 18 18 19 19 18 18 18 19 19 19 17 16 17 18 19 19 19 19 16 15 16 16 15 15 14 14 14 14 14 13 13 13 14 15 16 16 16 16 17 18 16 15 13 13 13 13 13 12 13 13 12 12 11 11 11 10 11 10 10 11 12 12 14 14 15 15 16 15 15 14 13 14 14 14 13 13 12 13 - 14 14 14 14 14 14 13 14 14 14 15 15 15 14 14 14 13 13 14 16 16 16 15 16 19 19 18 18 19 19 16 17 19 18 18 19 18 16 15 15 17 19 19 18 18 18 18 17 17 17 17 18 18 19 19 19 18 17 16 18 18 22 26 25 29 29 29 38 48 47 41 33 29 28 24 24 23 20 18 16 15 16 17 16 16 15 15 16 17 16 14 14 14 14 14 14 14 15 19 19 18 17 15 14 14 14 14 14 14 16 16 16 15 15 15 15 14 15 16 17 16 16 16 17 18 19 18 17 16 15 16 17 20 20 19 19 16 14 14 13 13 12 12 12 13 13 14 14 15 16 16 16 15 15 16 18 19 16 16 15 15 14 15 15 16 16 16 17 17 17 18 18 19 19 19 19 19 18 18 18 18 19 19 17 17 19 19 19 19 18 17 16 15 15 14 13 13 14 14 14 14 13 13 13 13 14 14 14 14 14 15 16 15 14 14 14 14 13 13 13 13 13 12 11 11 11 10 9 9 9 9 12 13 14 15 16 16 15 15 14 14 14 14 14 14 14 14 13 13 14 - 15 15 15 14 14 14 14 14 15 15 16 17 19 19 15 14 13 14 14 15 16 15 15 16 17 18 19 19 19 18 17 17 19 19 18 19 18 16 15 16 17 18 18 19 19 19 17 17 17 17 17 17 17 18 18 17 16 15 15 16 18 21 26 26 27 28 31 41 42 35 32 27 27 27 23 21 20 20 18 19 19 16 16 16 19 19 19 15 15 15 15 14 14 14 13 13 14 15 17 18 18 18 16 15 14 14 14 14 14 15 16 17 19 19 17 16 19 19 17 19 19 16 17 19 19 18 17 16 15 14 15 17 18 18 18 18 17 15 13 12 12 12 12 13 13 13 14 14 14 15 15 15 14 15 16 16 17 16 16 16 16 15 15 14 14 16 19 19 18 17 16 16 17 18 20 20 20 19 18 19 20 20 20 17 17 19 18 18 18 19 19 19 16 14 14 13 13 13 14 14 14 13 12 12 12 13 13 13 13 13 13 13 13 14 14 14 14 14 14 13 12 12 11 11 11 10 10 8 8 8 10 11 12 12 13 14 15 14 13 13 14 18 18 14 13 13 13 13 13 13 - 15 15 15 15 14 14 14 14 14 14 14 15 17 16 15 14 14 14 15 15 15 15 15 16 17 18 19 19 19 18 17 19 19 19 19 18 17 15 14 14 16 19 19 19 19 19 18 17 17 17 16 15 16 16 16 15 14 14 14 15 18 21 22 22 22 25 31 38 38 33 30 27 24 24 22 20 19 17 17 18 19 19 16 16 17 19 18 19 19 16 15 15 15 14 14 14 14 16 17 18 18 18 17 16 15 14 14 14 15 16 16 17 17 17 17 17 18 19 17 17 18 18 19 19 19 19 19 16 15 14 14 16 16 17 17 16 15 13 12 11 11 12 12 12 13 13 13 13 13 13 14 14 13 13 13 14 14 14 14 15 15 15 15 14 14 16 19 19 18 16 15 15 16 18 19 20 20 19 18 18 19 19 18 19 17 18 18 18 20 20 18 18 17 16 15 14 14 14 14 13 13 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 14 14 13 13 12 11 11 11 11 10 9 7 8 10 11 11 11 11 11 12 13 13 13 13 15 17 18 15 14 13 13 12 11 12 - 13 13 13 13 13 14 14 14 13 13 13 14 15 14 14 14 14 15 16 16 16 15 15 16 17 19 19 19 18 18 18 19 19 19 19 17 16 15 14 15 16 19 19 19 19 19 18 18 17 17 16 16 16 16 16 15 15 15 14 15 17 18 20 21 21 22 27 31 32 30 28 23 21 21 20 19 17 16 16 17 18 19 19 16 17 18 18 19 19 17 16 16 15 15 14 15 16 19 19 19 17 17 17 17 19 19 15 16 19 19 19 17 16 15 15 16 17 17 17 16 16 17 17 18 18 18 19 16 15 15 15 15 15 15 15 15 14 13 12 11 11 12 12 13 13 13 13 12 12 13 13 13 13 13 13 12 12 13 13 14 14 14 14 14 14 15 17 17 17 17 16 16 16 17 18 18 19 19 18 18 17 16 17 19 18 18 19 19 19 19 18 17 17 17 17 17 16 15 15 14 14 13 13 13 13 12 12 13 13 13 14 13 13 12 12 13 13 13 13 12 11 11 12 12 12 11 11 8 10 10 11 12 11 11 11 11 12 12 13 13 14 15 16 15 14 14 13 12 11 12 - 13 13 13 13 13 14 14 14 14 14 14 14 15 14 14 14 15 19 19 19 16 15 16 19 19 19 19 18 17 17 19 20 20 19 18 17 16 15 15 14 16 19 19 20 20 18 18 17 17 17 17 17 19 19 17 17 15 15 14 15 17 19 19 19 20 20 23 26 26 27 27 22 20 20 18 18 17 16 16 16 18 18 17 17 16 17 18 18 19 17 16 16 16 15 15 15 16 17 18 17 17 16 17 18 18 19 19 18 19 19 18 17 15 14 14 15 19 19 16 15 14 15 15 16 18 18 19 19 15 15 15 15 16 16 16 15 14 13 13 13 12 12 13 14 14 14 13 13 13 13 13 13 13 13 14 13 12 13 13 14 13 13 13 13 13 14 14 16 17 17 17 17 17 17 16 16 17 17 17 16 16 16 19 19 17 17 18 18 19 19 17 16 16 17 18 19 19 18 18 19 19 19 14 13 12 12 12 12 13 13 13 14 13 12 11 11 12 12 12 11 11 12 12 13 13 13 12 11 10 10 11 12 11 12 11 12 12 13 13 13 13 13 13 14 14 13 13 11 11 11 - 13 13 13 14 18 19 18 14 14 14 14 16 19 19 15 14 15 17 18 18 17 16 17 18 18 18 18 17 17 17 18 19 19 18 18 17 16 15 15 14 15 17 18 18 19 19 17 16 16 16 16 16 17 17 17 16 14 14 14 14 16 18 19 19 19 20 22 26 26 28 28 24 20 18 19 17 17 16 17 18 19 19 18 17 17 17 18 19 19 16 15 16 16 16 15 15 15 16 16 17 19 19 17 18 18 18 17 18 19 18 16 15 15 15 15 16 17 17 16 15 15 14 15 19 19 19 18 19 16 15 15 16 16 16 17 16 15 14 13 13 13 13 13 14 14 14 14 13 14 14 14 13 13 14 14 13 13 13 13 13 13 13 12 13 13 13 14 15 16 17 16 16 16 16 15 15 15 15 15 15 15 16 18 18 18 19 19 18 18 19 17 16 16 17 18 20 20 18 19 19 18 17 15 13 12 12 12 12 12 13 13 14 13 12 11 11 11 11 11 10 11 11 11 12 12 12 12 11 10 10 11 11 11 12 12 13 13 12 12 12 12 12 13 13 13 12 11 10 11 12 - 13 13 13 14 16 18 17 15 14 13 14 15 17 16 15 14 13 14 15 16 17 16 16 16 17 17 18 17 17 17 17 18 19 18 17 16 16 15 15 14 15 17 18 18 19 18 17 16 17 16 16 15 16 16 16 16 14 14 14 14 14 15 17 19 19 19 22 28 28 28 26 22 18 18 18 17 16 16 17 19 19 18 18 18 19 19 18 19 17 16 16 17 17 15 15 15 15 16 16 19 19 19 18 17 17 17 17 17 18 17 17 15 15 15 15 16 17 17 17 16 16 15 16 19 19 18 18 17 16 15 15 16 15 16 16 15 15 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 13 13 13 14 13 13 13 13 13 13 14 15 15 15 15 15 15 16 17 20 20 16 14 14 15 17 17 18 18 18 19 19 18 18 19 16 15 16 19 19 19 18 18 17 15 14 14 13 13 12 12 12 12 13 13 13 13 12 11 11 11 11 10 10 10 10 10 11 11 12 11 11 11 11 11 11 11 11 12 12 12 12 12 11 11 12 12 13 13 12 11 10 10 11 - 14 13 14 15 15 16 16 15 15 14 14 15 15 15 14 14 13 13 14 15 16 16 15 14 15 17 17 17 17 16 15 17 19 19 19 17 16 15 15 14 15 16 18 18 17 16 15 16 17 16 16 15 16 16 15 15 14 14 14 14 15 15 16 17 19 19 21 28 28 25 22 20 19 18 19 19 16 16 19 19 18 17 17 17 18 19 19 17 16 16 19 19 16 16 15 16 16 16 17 19 18 18 18 17 16 16 16 17 17 17 17 16 16 15 16 16 15 15 16 16 17 17 17 19 18 19 19 16 14 14 15 15 16 16 16 16 15 14 14 13 13 13 13 14 14 13 14 14 14 14 14 14 14 14 14 14 14 13 13 14 14 13 13 13 13 13 14 15 15 15 15 15 14 14 17 19 18 16 15 15 16 17 17 18 18 18 18 18 17 17 15 14 14 15 17 19 20 20 18 15 14 13 13 13 13 13 12 12 12 12 13 13 13 12 11 11 11 10 10 9 10 10 10 10 11 11 11 12 12 13 12 11 11 11 11 11 11 11 11 11 11 11 12 13 13 12 11 10 11 11 - 14 14 15 15 15 15 14 15 15 15 15 14 14 14 14 14 14 14 15 16 17 16 15 15 16 17 17 17 17 16 15 16 17 18 19 17 16 15 15 16 17 19 19 19 16 14 14 15 16 16 15 14 14 15 15 15 14 14 14 15 16 16 19 19 20 20 21 26 25 23 22 20 18 17 17 18 19 19 19 19 17 16 15 15 17 17 18 17 16 17 19 19 18 19 19 19 17 17 17 18 19 18 17 16 16 16 16 17 17 17 17 17 16 17 19 19 15 14 15 16 17 19 20 20 19 18 17 15 14 14 15 16 16 16 16 15 15 14 14 13 13 14 14 14 14 14 14 14 13 13 14 14 14 13 13 13 13 13 13 13 13 13 12 12 12 13 14 15 15 15 14 14 14 14 15 16 16 15 15 19 19 16 16 17 17 17 17 16 16 15 14 12 13 14 15 17 18 19 20 19 16 14 14 13 13 13 12 12 12 12 12 12 12 11 11 11 11 11 10 9 10 9 9 10 11 11 11 12 13 13 12 11 11 10 10 9 9 9 10 11 11 11 12 12 12 12 12 11 11 11 - 13 14 14 15 14 14 14 14 14 14 14 13 14 14 15 15 16 19 19 19 18 18 17 18 19 19 18 17 17 17 16 16 18 18 17 17 15 15 16 16 17 18 18 19 19 15 15 19 19 15 14 14 14 14 14 14 14 14 14 15 17 18 19 19 20 20 21 23 24 23 22 20 17 15 16 17 19 19 18 18 19 19 16 15 15 17 17 17 17 18 19 19 19 19 19 19 18 17 17 18 18 17 16 16 16 16 16 16 16 16 17 17 19 19 19 19 16 14 15 16 17 19 19 20 18 17 17 16 15 14 14 15 14 14 15 15 14 13 13 13 14 14 14 13 14 14 14 14 14 14 15 15 15 14 13 13 13 13 12 12 12 12 12 12 13 13 14 15 16 15 14 14 14 14 15 15 15 15 16 19 17 16 15 15 16 17 16 15 15 14 13 12 13 13 14 14 15 18 19 19 17 15 14 13 12 12 11 12 11 11 11 11 10 9 9 9 10 10 9 8 8 9 9 11 12 12 11 11 11 11 11 11 10 10 9 8 9 10 11 11 11 11 11 12 12 12 12 11 10 11 - 13 13 13 14 14 14 14 14 14 14 14 13 13 14 15 16 17 19 20 20 18 17 17 17 17 16 17 16 17 17 17 19 19 17 17 15 15 15 16 16 19 19 19 18 19 17 17 17 17 16 14 14 14 14 14 14 14 14 14 15 17 18 18 20 20 18 18 22 26 26 21 18 16 15 15 16 17 17 17 17 20 20 17 17 18 20 20 17 15 16 18 19 18 18 19 18 19 17 17 17 17 16 17 17 17 17 17 17 16 17 20 20 19 18 18 19 17 16 17 17 17 18 19 20 19 17 17 16 15 14 14 14 13 14 14 15 14 13 13 14 18 18 15 14 14 14 14 14 14 15 15 15 16 14 14 13 13 13 13 13 13 12 13 13 13 13 13 14 15 16 15 14 14 14 15 15 15 15 17 19 19 17 16 19 19 18 19 20 20 19 14 14 13 14 14 13 14 15 17 19 16 14 13 13 12 11 11 11 11 11 9 9 8 8 8 9 9 8 8 8 9 10 10 11 11 11 11 10 10 10 10 10 10 9 8 8 10 10 11 11 10 9 10 11 12 12 11 11 11 11 - 13 13 13 13 13 14 14 13 14 14 15 14 14 14 14 15 17 19 20 20 19 19 16 15 14 14 15 16 16 16 17 20 20 19 16 15 15 15 15 17 18 18 19 18 18 19 17 17 16 15 14 14 14 14 15 15 15 14 15 15 17 17 18 19 19 18 20 20 22 21 21 18 16 15 19 19 16 16 17 19 19 20 19 17 18 19 18 16 15 15 16 18 19 17 17 17 19 17 16 15 16 19 19 17 17 17 17 16 16 17 19 19 17 16 16 16 17 17 17 17 17 19 19 19 19 19 19 19 15 14 14 14 14 18 19 19 19 19 16 16 19 17 15 14 14 14 13 13 13 14 14 14 14 14 14 13 13 13 14 14 13 13 13 13 14 13 13 14 15 16 15 14 14 14 14 14 15 16 17 19 19 17 17 19 18 18 20 20 20 18 15 14 14 15 15 15 15 15 17 17 16 15 14 13 13 12 12 12 11 11 10 10 10 10 9 9 8 8 9 9 10 10 10 11 11 12 11 10 9 10 10 10 9 8 7 8 9 9 9 8 8 9 10 11 12 11 11 11 11 12 - 14 14 13 13 13 13 13 13 13 14 15 19 19 16 15 16 17 18 19 19 19 19 17 15 15 16 16 16 16 15 17 18 19 18 19 15 15 14 15 15 16 17 17 17 17 18 17 16 15 14 13 13 14 14 15 16 16 15 16 15 16 17 19 18 18 19 20 18 18 18 18 17 16 16 19 18 16 16 16 17 18 19 18 16 16 16 17 16 16 15 15 17 20 20 17 17 17 16 15 14 14 16 17 17 16 15 15 15 16 17 19 19 19 15 14 15 16 17 16 16 16 17 18 18 18 18 18 19 17 16 15 15 16 19 18 18 18 18 17 17 16 15 14 14 14 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 13 14 14 15 16 16 15 14 14 14 14 14 14 15 16 17 17 17 17 17 17 18 18 18 18 17 15 15 19 19 17 16 16 16 16 16 16 15 14 14 13 13 12 12 12 12 12 12 11 11 10 10 10 9 9 9 9 8 8 9 11 12 11 10 8 9 10 10 9 6 6 7 8 9 8 8 8 9 11 12 11 10 8 9 10 13 - 15 15 14 13 13 13 13 13 14 15 20 20 18 17 16 16 17 18 18 18 19 17 16 15 17 17 19 19 19 16 16 17 19 18 18 19 16 14 14 14 14 15 16 19 19 18 17 16 15 14 13 13 14 14 15 15 15 15 15 15 15 16 19 19 18 18 18 17 17 17 16 16 15 16 17 17 17 16 15 16 17 19 18 16 15 15 16 17 17 17 16 17 19 19 18 17 16 15 14 13 13 14 16 17 19 19 16 16 16 18 18 20 20 16 15 15 16 17 16 15 15 16 16 15 15 15 17 19 18 17 16 15 16 16 17 16 16 16 16 16 15 14 14 14 14 13 13 13 13 13 13 12 12 13 13 13 14 14 14 14 14 14 14 14 14 14 14 15 15 14 13 13 14 13 13 13 13 14 14 14 15 16 16 16 16 17 19 19 19 16 15 16 20 20 19 17 16 15 15 15 14 14 14 13 13 13 13 12 12 13 12 12 11 11 11 11 10 9 9 8 8 7 7 9 10 11 11 10 9 9 9 9 7 5 5 6 8 8 7 7 8 10 11 11 10 8 7 8 9 12 - 16 16 15 14 14 14 14 15 16 17 20 20 18 17 16 17 17 19 19 19 19 16 14 15 16 17 19 19 19 17 15 17 19 18 17 16 15 14 13 13 14 14 16 17 17 17 16 16 16 15 14 14 13 14 14 14 13 14 14 14 14 16 19 19 19 17 16 15 15 14 14 14 14 15 16 16 16 16 15 15 16 16 16 15 15 16 17 17 17 16 16 17 18 18 17 16 15 15 15 15 18 19 17 19 19 19 18 17 17 18 18 18 19 20 16 15 16 17 17 16 15 15 14 14 14 15 16 19 17 16 16 16 16 16 15 14 14 14 15 14 13 13 13 13 13 13 13 13 13 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 15 19 19 17 20 20 19 19 18 18 17 16 17 19 19 18 17 15 14 14 14 14 14 13 12 12 13 13 13 13 13 12 12 11 11 11 11 11 10 8 7 6 6 7 10 11 11 11 10 9 9 9 9 7 4 5 6 7 6 6 6 8 10 11 11 9 8 7 8 10 11 - 13 14 15 14 14 14 15 16 17 18 18 20 19 17 17 17 18 19 18 18 17 15 14 14 15 17 18 18 18 16 15 16 19 17 16 15 14 13 13 13 13 14 14 15 15 14 14 14 14 14 14 14 13 13 12 13 14 14 14 13 14 15 19 18 18 20 20 17 15 15 13 13 13 15 19 19 16 15 14 14 14 14 13 14 15 19 19 19 19 16 15 16 16 18 17 17 16 16 16 19 17 17 17 17 18 17 17 16 17 17 17 17 17 17 15 15 15 16 15 15 15 14 14 14 14 15 15 16 15 14 15 15 15 15 14 14 14 14 14 13 12 12 12 11 12 13 13 13 12 11 12 12 13 13 13 13 12 12 11 11 11 11 12 12 12 13 13 13 13 13 13 12 13 13 13 13 14 14 13 15 16 18 18 19 20 19 18 18 17 17 17 17 17 18 17 16 14 13 14 15 16 15 14 14 18 18 18 14 13 13 12 12 11 11 9 10 10 10 9 6 4 4 5 10 11 12 12 11 10 10 10 10 7 5 4 5 6 6 6 7 8 9 10 10 10 9 9 9 10 11 - 13 14 14 14 14 14 15 16 16 16 18 19 19 20 20 18 17 18 17 17 16 15 14 14 14 16 19 19 18 15 14 14 14 15 15 14 14 13 13 13 13 13 14 13 13 13 13 13 13 13 13 13 13 12 12 13 14 14 13 12 13 15 19 19 18 18 19 18 16 15 13 13 13 15 17 17 15 15 14 14 14 13 13 14 15 17 18 19 18 16 14 15 16 18 18 17 17 17 19 17 16 15 14 15 16 15 15 14 14 14 14 14 14 13 13 13 13 14 13 13 13 14 14 14 13 14 14 14 13 12 13 13 14 14 14 14 14 14 13 13 12 12 11 11 12 13 13 13 12 12 12 12 13 13 13 13 12 12 11 11 11 11 12 12 12 13 13 13 13 13 13 12 13 14 14 14 14 13 12 13 14 15 15 17 18 18 17 16 16 16 16 16 16 16 16 15 14 13 14 15 16 15 14 15 16 17 17 15 13 13 12 12 11 9 8 8 10 10 10 7 5 5 5 9 11 11 12 12 11 11 10 11 10 7 4 4 5 5 6 6 6 7 8 9 10 10 10 10 10 12 - 14 15 15 15 15 16 19 19 17 19 19 19 19 20 19 18 16 16 15 15 15 14 14 13 14 15 17 19 19 15 14 13 13 14 14 13 13 12 12 12 12 12 13 12 12 12 12 12 12 12 12 12 12 12 11 12 12 12 12 12 12 14 16 19 19 17 17 16 14 13 12 13 13 14 15 16 15 15 14 14 13 13 13 13 13 14 16 18 19 16 14 15 16 16 16 16 15 15 16 15 14 13 13 13 13 13 13 12 12 12 13 12 12 12 12 12 12 13 13 13 13 13 14 14 13 13 12 12 12 12 12 12 13 13 13 13 13 13 13 13 12 12 12 12 12 13 13 13 13 12 12 11 12 12 13 13 12 12 11 11 11 11 11 11 12 12 13 13 13 13 13 13 13 14 15 14 14 12 11 12 12 13 13 13 15 15 16 16 16 16 15 16 16 16 16 15 14 14 14 14 14 13 13 14 15 15 15 14 13 13 11 11 9 8 6 8 9 9 8 6 5 5 6 8 10 10 11 11 11 10 11 11 11 8 4 3 3 4 4 5 5 5 5 8 9 10 10 9 7 11 - 16 16 16 16 16 19 19 19 19 19 18 19 19 18 17 16 15 15 15 15 15 14 13 12 12 13 14 15 15 14 13 12 13 12 12 12 12 11 11 11 11 11 11 12 12 12 11 11 10 10 11 12 12 12 11 11 11 11 12 11 12 12 15 19 17 15 13 13 13 12 12 12 13 13 13 14 14 14 13 13 12 12 12 12 12 12 14 16 19 15 14 14 15 15 14 14 13 13 13 13 13 13 12 12 12 12 12 11 11 12 12 12 12 11 11 11 12 12 12 12 12 13 14 14 13 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 11 12 12 12 12 12 12 12 11 11 11 12 13 13 12 12 12 11 11 10 10 11 11 12 12 13 13 13 13 13 13 14 14 14 13 12 11 11 11 12 12 12 13 14 15 15 15 16 16 16 16 16 15 14 14 14 14 14 13 13 13 13 14 14 15 14 13 12 10 9 7 6 6 6 7 6 6 4 4 4 5 5 7 7 8 8 8 8 9 9 8 5 2 1 2 2 3 4 3 4 4 6 7 7 6 5 4 11 - 16 16 16 17 19 19 19 19 18 18 17 16 16 15 14 14 14 15 15 16 15 13 12 11 11 11 12 12 12 12 11 11 11 10 10 10 10 9 8 8 10 10 10 11 11 11 11 11 10 10 10 11 11 11 11 10 10 10 11 11 11 12 13 15 15 14 13 12 11 11 11 12 12 13 12 13 13 13 13 12 12 11 11 11 11 12 13 15 15 14 14 14 15 15 14 14 14 13 12 13 13 13 12 12 12 12 11 11 10 11 11 11 10 10 11 11 11 12 12 12 12 12 13 13 12 11 10 10 10 9 10 10 11 11 13 13 13 13 13 13 13 12 12 11 12 12 12 11 11 12 11 11 11 12 12 12 12 12 12 11 10 10 10 11 11 12 12 13 13 13 13 13 13 13 13 13 13 12 11 11 11 11 12 12 13 14 15 15 15 15 16 17 17 19 19 15 14 13 13 13 13 13 13 13 14 14 14 14 13 12 9 7 6 6 5 5 5 5 5 4 3 2 2 3 4 5 5 5 5 6 6 5 4 2 1 2 2 1 1 3 3 3 3 4 4 3 1 1 2 11 - 18 19 19 18 19 19 18 17 17 16 15 14 13 12 12 13 13 14 14 14 14 13 12 10 11 11 11 12 12 11 10 9 8 8 8 8 9 8 7 5 6 8 9 10 9 9 9 9 9 9 9 10 10 10 10 10 10 10 11 11 11 11 12 13 14 13 13 12 11 10 10 11 11 12 12 12 12 13 12 12 12 11 11 11 11 12 13 14 14 14 14 14 14 14 14 14 13 13 12 13 13 12 12 12 12 12 11 10 9 9 9 9 8 8 9 10 11 12 12 12 12 12 12 12 12 11 10 11 10 10 10 10 12 13 14 15 14 14 13 13 13 13 12 12 12 12 12 12 11 11 11 11 11 12 11 12 12 12 12 11 10 10 11 12 11 11 12 12 12 12 12 12 12 13 13 13 12 11 10 10 10 11 11 11 12 13 14 14 14 14 14 15 17 20 20 16 14 13 13 12 12 12 12 12 13 13 13 13 12 11 9 7 7 7 6 6 5 5 4 3 3 1 1 2 2 3 3 4 4 4 4 3 2 1 2 2 1 1 1 2 2 2 2 3 2 1 0 0 0 11 - 18 19 18 19 19 18 17 15 14 14 14 14 13 12 11 12 13 13 13 13 13 12 11 10 10 11 11 12 12 11 10 9 8 8 7 7 7 7 6 5 5 7 8 9 8 8 8 8 8 7 7 8 9 9 9 9 10 10 11 11 11 11 11 12 13 13 13 12 11 11 10 9 9 10 11 12 12 12 12 11 11 10 11 11 11 11 11 12 13 13 14 14 13 13 12 12 12 12 13 13 12 11 12 12 12 11 10 9 9 9 10 9 8 7 7 9 10 11 12 12 11 11 11 11 11 10 11 11 11 11 11 11 12 13 14 14 13 13 13 13 13 13 12 11 12 12 12 12 11 11 11 11 11 11 11 11 11 12 11 11 11 11 12 11 10 10 10 12 12 12 12 12 12 12 12 12 11 11 10 10 10 10 11 11 12 13 13 13 13 13 14 14 16 17 17 14 13 12 12 11 11 11 12 12 12 12 12 11 11 9 9 8 9 8 8 7 6 4 3 2 1 1 1 2 2 2 2 4 4 5 4 3 1 0 0 0 0 0 0 1 1 1 1 2 3 2 1 0 0 11 - 18 19 19 18 17 16 14 13 13 13 13 13 12 12 12 12 12 13 13 13 13 12 11 10 10 11 11 11 11 10 8 8 8 7 6 5 5 4 4 4 4 5 6 7 7 7 7 7 7 7 7 7 7 7 7 8 9 10 10 11 11 11 11 12 12 12 11 11 10 10 8 7 7 8 10 11 11 11 11 10 10 9 10 11 11 10 8 10 11 12 14 14 13 12 11 12 12 12 12 12 12 11 11 12 12 11 9 7 6 8 9 9 8 7 5 6 7 9 10 10 9 9 10 9 9 9 11 11 11 11 10 10 11 11 12 12 12 12 12 13 13 13 12 11 11 11 12 11 11 11 11 11 11 11 11 10 10 11 11 11 12 12 12 11 8 8 9 11 11 12 11 12 11 12 11 11 11 11 11 11 11 11 11 11 12 11 12 11 11 12 13 14 15 14 13 12 12 11 12 11 11 10 10 11 12 12 11 11 9 8 8 9 9 9 7 6 5 3 2 2 2 2 2 1 2 2 2 3 5 5 4 3 1 0 0 0 0 0 0 1 1 1 1 2 3 3 1 0 5 11 - 17 17 16 16 14 13 12 12 12 12 12 12 12 11 12 11 12 12 12 12 12 12 11 10 9 10 10 10 8 7 6 6 7 6 5 3 3 3 2 2 3 3 4 4 5 6 6 7 7 6 6 7 7 8 8 8 8 9 8 8 10 10 11 10 10 9 9 9 8 7 6 6 7 8 9 9 10 10 9 9 8 8 10 10 10 9 7 9 11 12 13 13 12 12 12 12 11 11 11 11 11 10 10 11 11 10 8 6 5 5 8 9 8 6 4 4 6 7 8 8 7 7 8 7 8 9 10 11 11 10 9 9 9 10 10 11 11 12 12 12 13 13 12 11 11 11 11 10 10 11 10 10 10 10 10 10 10 11 11 12 12 12 12 10 7 7 9 10 10 10 10 9 9 9 10 11 11 11 10 10 10 11 11 11 12 11 11 10 10 11 12 13 14 14 12 12 11 11 11 11 10 8 9 10 11 11 10 8 6 5 5 7 7 7 5 5 4 2 2 3 4 4 2 1 2 2 2 1 1 2 1 1 0 0 1 1 0 0 0 1 1 2 1 2 2 1 0 1 6 11 - 14 14 14 13 13 12 11 11 11 12 11 11 11 11 11 10 11 12 12 12 12 11 9 9 9 9 10 9 8 7 4 5 6 5 4 2 2 3 2 2 3 3 4 4 5 5 5 5 6 6 7 8 8 9 9 9 9 8 7 6 8 9 10 10 9 9 9 9 7 6 3 4 6 7 7 8 9 9 8 7 7 8 10 10 9 9 8 9 10 11 11 12 12 12 12 12 12 12 11 11 10 10 10 10 10 8 6 5 5 6 8 9 9 8 6 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 8 8 8 8 10 11 11 12 12 12 12 12 11 11 10 10 9 8 7 8 8 9 9 10 10 10 10 10 11 11 12 12 12 10 7 6 8 10 10 9 8 7 7 7 8 10 10 9 8 8 9 10 11 11 11 11 11 11 10 10 11 12 13 13 12 11 10 11 11 10 9 8 8 9 10 8 7 5 3 3 2 4 4 4 4 3 3 1 2 3 4 3 2 2 2 2 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 2 10 - 14 13 13 13 13 12 12 12 12 12 11 11 11 10 9 9 11 12 12 12 11 10 7 7 8 9 10 9 8 6 4 4 5 5 4 3 3 3 4 4 4 3 4 5 5 5 4 5 5 7 8 8 8 9 10 10 10 9 7 6 6 7 8 10 10 9 9 9 7 5 3 4 5 6 6 7 7 8 7 7 7 9 9 10 9 9 9 9 9 10 11 12 12 12 12 13 12 12 11 11 10 10 10 10 9 7 5 5 5 6 8 9 9 9 9 9 10 10 9 9 9 9 9 8 8 7 7 7 7 7 7 7 7 9 10 11 11 11 11 11 11 10 10 9 9 8 7 6 6 6 6 7 8 9 10 10 9 9 10 11 12 12 11 10 7 6 6 9 9 9 8 7 7 7 8 9 9 8 6 6 9 10 11 10 10 11 11 11 11 11 11 12 13 13 12 11 10 10 10 10 9 8 8 8 8 7 6 4 3 2 1 1 2 2 3 2 2 2 2 3 3 2 1 1 2 1 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 2 11 diff --git a/distributed_memory/18-imagens/roteiro.pdf b/distributed_memory/18-imagens/roteiro.pdf deleted file mode 100644 index 3c4dfdd05..000000000 Binary files a/distributed_memory/18-imagens/roteiro.pdf and /dev/null differ diff --git a/distributed_memory/19-cluster/hello_cluster.cpp b/distributed_memory/19-cluster/hello_cluster.cpp deleted file mode 100644 index b47cb8b58..000000000 --- a/distributed_memory/19-cluster/hello_cluster.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * fonte: https://www.boost.org/doc/libs/1_67_0/doc/html/mpi/tutorial.html - */ - -#include -#include -#include -#include - - -namespace mpi = boost::mpi; - -int main(int argc, char* argv[]) { - char name[100]; - mpi::environment env(argc, argv); - mpi::communicator world; - gethostname(name, 100); - if (world.rank() == 0) { - world.send(1, 0, 3.14); - std::cout << "I am process " << world.rank() << " of " << world.size() - << " in " << name << std::endl; - } else if (world.rank() == 1) { - double data; - world.recv(0, 0, data); - std::cout << "I am process " << world.rank() << " of " << world.size() - << " in " << name << ", " << data << std::endl; - world.send(2, 0, data * 2); - } else if (world.rank() == 2) { - double data; - world.recv(1, 0, data); - std::cout << "I am process " << world.rank() << " of " << world.size() - << " in " << name << ", " << data << std::endl; - } - - return 0; -} diff --git a/distributed_memory/19-cluster/mpi_bandwidth.c b/distributed_memory/19-cluster/mpi_bandwidth.c deleted file mode 100644 index b6dee9701..000000000 --- a/distributed_memory/19-cluster/mpi_bandwidth.c +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -* FILE: mpi_bandwidth.c -* DESCRIPTION: -* Provides point-to-point communications timings for any even -* number of MPI tasks. -* AUTHOR: Blaise Barney -* LAST REVISED: 04/13/05 -****************************************************************************/ -#include "mpi.h" -#include -#include -#include -#include - -#define MAXTASKS 8192 -/* Change the next four parameters to suit your case */ -#define STARTSIZE 100000 -#define ENDSIZE 1000000 -#define INCREMENT 100000 -#define ROUNDTRIPS 100 - -int main (int argc, char *argv[]) -{ -int numtasks, rank, n, i, j, rndtrps, nbytes, start, end, incr, - src, dest, rc, tag=1, taskpairs[MAXTASKS], namelength; -double thistime, bw, bestbw, worstbw, totalbw, avgbw, - bestall, avgall, worstall, - timings[MAXTASKS/2][3], tmptimes[3], - resolution, t1, t2; -char msgbuf[ENDSIZE], host[MPI_MAX_PROCESSOR_NAME], - hostmap[MAXTASKS][MPI_MAX_PROCESSOR_NAME]; -struct timeval tv1, tv2; -MPI_Status status; - -/* Some initializations and error checking */ -MPI_Init(&argc,&argv); -MPI_Comm_size(MPI_COMM_WORLD, &numtasks); -if (numtasks % 2 != 0) { - printf("ERROR: Must be an even number of tasks! Quitting...\n"); - MPI_Abort(MPI_COMM_WORLD, rc); - exit(0); - } -MPI_Comm_rank(MPI_COMM_WORLD, &rank); -start = STARTSIZE; -end = ENDSIZE; -incr = INCREMENT; -rndtrps = ROUNDTRIPS; -for (i=0; i= numtasks/2) - dest = src = rank - numtasks/2; -MPI_Gather(&dest, 1, MPI_INT, &taskpairs, 1, MPI_INT, 0, MPI_COMM_WORLD); - -if (rank == 0) { - resolution = MPI_Wtick(); - printf("\n******************** MPI Bandwidth Test ********************\n"); - printf("Message start size= %d bytes\n",start); - printf("Message finish size= %d bytes\n",end); - printf("Incremented by %d bytes per iteration\n",incr); - printf("Roundtrips per iteration= %d\n",rndtrps); - printf("MPI_Wtick resolution = %e\n",resolution); - printf("************************************************************\n"); - for (i=0; i bestbw ) bestbw = bw; - if (bw < worstbw ) worstbw = bw; - } - /* Convert to megabytes per second */ - bestbw = bestbw/1000000.0; - avgbw = (totalbw/1000000.0)/(double)rndtrps; - worstbw = worstbw/1000000.0; - - /* Task 0 collects timings from all relevant tasks */ - if (rank == 0) { - /* Keep track of my own timings first */ - timings[0][0] = bestbw; - timings[0][1] = avgbw; - timings[0][2] = worstbw; - /* Initialize overall averages */ - bestall = 0.0; - avgall = 0.0; - worstall = 0.0; - /* Now receive timings from other tasks and print results. Note */ - /* that this loop will be appropriately skipped if there are */ - /* only two tasks. */ - for (j=1; j= numtasks/2) { - for (n=start; n<=end; n=n+incr) { - for (i=1; i<=rndtrps; i++){ - MPI_Recv(&msgbuf, n, MPI_CHAR, src, tag, MPI_COMM_WORLD, &status); - MPI_Send(&msgbuf, n, MPI_CHAR, dest, tag, MPI_COMM_WORLD); - } - } - } - - -MPI_Finalize(); - -} /* end of main */ - diff --git a/distributed_memory/19-cluster/mpi_latency.c b/distributed_memory/19-cluster/mpi_latency.c deleted file mode 100644 index 9d65bfa27..000000000 --- a/distributed_memory/19-cluster/mpi_latency.c +++ /dev/null @@ -1,112 +0,0 @@ -/****************************************************************************** -* FILE: mpi_latency.c -* DESCRIPTION: -* MPI Latency Timing Program - C Version -* In this example code, a MPI communication timing test is performed. -* MPI task 0 will send "reps" number of 1 byte messages to MPI task 1, -* waiting for a reply between each rep. Before and after timings are made -* for each rep and an average calculated when completed. -* AUTHOR: Blaise Barney -* LAST REVISED: 04/13/05 -******************************************************************************/ -#include "mpi.h" -#include -#include -#include -#include -#define NUMBER_REPS 1000 - -int main (int argc, char *argv[]) -{ -int reps, /* number of samples per test */ - tag, /* MPI message tag parameter */ - numtasks, /* number of MPI tasks */ - rank, /* my MPI task number */ - dest, source, /* send/receive task designators */ - avgT, /* average time per rep in microseconds */ - rc, /* return code */ - n; -double T1, T2, /* start/end times per rep */ - sumT, /* sum of all reps times */ - deltaT; /* time for one rep */ -char msg; /* buffer containing 1 byte message */ -MPI_Status status; /* MPI receive routine parameter */ - -MPI_Init(&argc,&argv); -MPI_Comm_size(MPI_COMM_WORLD,&numtasks); -MPI_Comm_rank(MPI_COMM_WORLD,&rank); -if (rank == 0 && numtasks != 2) { - printf("Number of tasks = %d\n",numtasks); - printf("Only need 2 tasks - extra will be ignored...\n"); - } -MPI_Barrier(MPI_COMM_WORLD); - -sumT = 0; -msg = 'x'; -tag = 1; -reps = NUMBER_REPS; - -if (rank == 0) { - /* round-trip latency timing test */ - printf("task %d has started...\n", rank); - printf("Beginning latency timing test. Number of reps = %d.\n", reps); - printf("***************************************************\n"); - printf("Rep# T1 T2 deltaT\n"); - dest = 1; - source = 1; - for (n = 1; n <= reps; n++) { - T1 = MPI_Wtime(); /* start time */ - /* send message to worker - message tag set to 1. */ - /* If return code indicates error quit */ - rc = MPI_Send(&msg, 1, MPI_BYTE, dest, tag, MPI_COMM_WORLD); - if (rc != MPI_SUCCESS) { - printf("Send error in task 0!\n"); - MPI_Abort(MPI_COMM_WORLD, rc); - exit(1); - } - /* Now wait to receive the echo reply from the worker */ - /* If return code indicates error quit */ - rc = MPI_Recv(&msg, 1, MPI_BYTE, source, tag, MPI_COMM_WORLD, - &status); - if (rc != MPI_SUCCESS) { - printf("Receive error in task 0!\n"); - MPI_Abort(MPI_COMM_WORLD, rc); - exit(1); - } - T2 = MPI_Wtime(); /* end time */ - - /* calculate round trip time and print */ - deltaT = T2 - T1; - printf("%4d %8.8f %8.8f %2.8f\n", n, T1, T2, deltaT); - sumT += deltaT; - } - avgT = (sumT*1000000)/reps; - printf("***************************************************\n"); - printf("\n*** Avg round trip time = %d microseconds\n", avgT); - printf("*** Avg one way latency = %d microseconds\n", avgT/2); - } - -else if (rank == 1) { - printf("task %d has started...\n", rank); - dest = 0; - source = 0; - for (n = 1; n <= reps; n++) { - rc = MPI_Recv(&msg, 1, MPI_BYTE, source, tag, MPI_COMM_WORLD, - &status); - if (rc != MPI_SUCCESS) { - printf("Receive error in task 1!\n"); - MPI_Abort(MPI_COMM_WORLD, rc); - exit(1); - } - rc = MPI_Send(&msg, 1, MPI_BYTE, dest, tag, MPI_COMM_WORLD); - if (rc != MPI_SUCCESS) { - printf("Send error in task 1!\n"); - MPI_Abort(MPI_COMM_WORLD, rc); - exit(1); - } - } - } - -MPI_Finalize(); -exit(0); -} diff --git a/distributed_memory/19-cluster/roteiro.pdf b/distributed_memory/19-cluster/roteiro.pdf deleted file mode 100644 index e8333e70e..000000000 Binary files a/distributed_memory/19-cluster/roteiro.pdf and /dev/null differ diff --git a/distributed_memory/19-cluster/slides.pdf b/distributed_memory/19-cluster/slides.pdf deleted file mode 100644 index 58128f90d..000000000 Binary files a/distributed_memory/19-cluster/slides.pdf and /dev/null differ diff --git a/distributed_memory/20-async/exemplo0.cpp b/distributed_memory/20-async/exemplo0.cpp deleted file mode 100644 index aa5287e7e..000000000 --- a/distributed_memory/20-async/exemplo0.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) { - boost::mpi::environment env{argc, argv}; - boost::mpi::communicator world; - if (world.rank() == 0) { - std::string s; - auto r = world.irecv(1, 0, s); - r.wait(); - std::cout << s << "\n"; - } - else if (world.rank() == 1) { - sleep(3); - std::string s = "Hello async!"; - world.send(0, 0, s); - } -} diff --git a/distributed_memory/20-async/exemplo1.cpp b/distributed_memory/20-async/exemplo1.cpp deleted file mode 100644 index 316419a8a..000000000 --- a/distributed_memory/20-async/exemplo1.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) { - boost::mpi::environment env{argc, argv}; - boost::mpi::communicator world; - - if (world.rank() == 0) { - std::string s[2]; - auto r1 = world.irecv(1, 10, s[0]); - auto r2 = world.irecv(2, 20, s[1]); - - r1.wait(); - std::cout << s[0] << "\n" << std::endl; - - r2.wait(); - std::cout << s[1] << '\n'; - } else if (world.rank() == 1) { - std::string s = "Hello, world!"; - sleep(2); - world.send(0, 10, s); - std::cout << "Fim rank 1 " << std::endl; - } else if (world.rank() == 2) { - std::string s = "Hello, moon!"; - sleep(1); - world.send(0, 20, s); - std::cout << "Fim rank 2 " << std::endl; - } -} diff --git a/distributed_memory/20-async/roteiro.pdf b/distributed_memory/20-async/roteiro.pdf deleted file mode 100644 index 5c936d7b9..000000000 Binary files a/distributed_memory/20-async/roteiro.pdf and /dev/null differ diff --git a/distributed_memory/20-async/slides.pdf b/distributed_memory/20-async/slides.pdf deleted file mode 100644 index 7451a952d..000000000 Binary files a/distributed_memory/20-async/slides.pdf and /dev/null differ diff --git a/distributed_memory/21-collective/roteiro.pdf b/distributed_memory/21-collective/roteiro.pdf deleted file mode 100644 index 87477eb9a..000000000 Binary files a/distributed_memory/21-collective/roteiro.pdf and /dev/null differ diff --git a/distributed_memory/21-collective/slides.pdf b/distributed_memory/21-collective/slides.pdf deleted file mode 100644 index a96fc926c..000000000 Binary files a/distributed_memory/21-collective/slides.pdf and /dev/null differ diff --git a/gpu/22-introducao/roteiro.pdf b/gpu/22-introducao/roteiro.pdf deleted file mode 100644 index bc3fc7ac9..000000000 Binary files a/gpu/22-introducao/roteiro.pdf and /dev/null differ diff --git a/gpu/22-introducao/slides.pdf b/gpu/22-introducao/slides.pdf deleted file mode 100644 index 01dd4b649..000000000 Binary files a/gpu/22-introducao/slides.pdf and /dev/null differ diff --git a/gpu/23-custom-transform/23-roteiro.pdf b/gpu/23-custom-transform/23-roteiro.pdf deleted file mode 100644 index 0037fda35..000000000 Binary files a/gpu/23-custom-transform/23-roteiro.pdf and /dev/null differ diff --git a/gpu/23-custom-transform/stocks-up.cu b/gpu/23-custom-transform/stocks-up.cu deleted file mode 100755 index fc3264188..000000000 --- a/gpu/23-custom-transform/stocks-up.cu +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -typedef thrust::tuple D2; -typedef thrust::device_vector::iterator DIter; -typedef thrust::tuple DIter2Tuple; -typedef thrust::zip_iterator DIter2Iterator; - -struct up { - __host__ __device__ - int operator() (D2 pair) { - if (thrust::get<0>(pair) < thrust::get<1>(pair)) { - return 1; - } - return 0; - } -}; - -int main() { - std::vector data; - double temp; - - while (scanf("%lf", &temp) > 0) { - data.push_back(temp); - } - - thrust::device_vector gpu_data(data); - thrust::device_vector is_up(data.size()-1); - - DIter2Iterator start = thrust::make_zip_iterator( - thrust::make_tuple(gpu_data.begin(), gpu_data.begin()+1) - ); - DIter2Iterator end = thrust::make_zip_iterator( - thrust::make_tuple(gpu_data.end()-1, gpu_data.end()) - ); - thrust::transform(start, end, is_up.begin(), up()); - - int num_up = thrust::reduce(is_up.begin(), is_up.end(), 0, thrust::plus()); - printf("num_up: %d\n", num_up); -} \ No newline at end of file diff --git a/gpu/24-cuda-c/atividade4.pdf b/gpu/24-cuda-c/atividade4.pdf deleted file mode 100644 index 9e9dad593..000000000 Binary files a/gpu/24-cuda-c/atividade4.pdf and /dev/null differ diff --git a/gpu/24-cuda-c/exemplo-add.cu b/gpu/24-cuda-c/exemplo-add.cu deleted file mode 100644 index d875fe5c2..000000000 --- a/gpu/24-cuda-c/exemplo-add.cu +++ /dev/null @@ -1,48 +0,0 @@ -// Exemplo para o curso de Super Computacao -// Criado por: Luciano P. Soares -// Modificado por: Igor Montagner - -#include -#include - -#include -#include - - -/* Rotina para somar dois vetores na GPU */ -__global__ void add(double *a, double *b, double *c, int N) { - int i=blockIdx.x * blockDim.x + threadIdx.x; - if (i A(n), B(n); - for (int i = 0; i < n; i++) { - A[i] = (double)i; - B[i] = (double)n-i; - } - - thrust::device_vector A_d(A), B_d(B), C_d(n); - add<<>>(thrust::raw_pointer_cast(A_d.data()), - thrust::raw_pointer_cast(B_d.data()), - thrust::raw_pointer_cast(C_d.data()), - n - ); - - thrust::host_vector C(C_d); - - for(int i=0;i ",i,i,i); - printf("%6.1f + %6.1f = %6.1f\n",A[i],B[i],C[i]); - } - } - - return 0; -} diff --git a/gpu/24-cuda-c/image.cu b/gpu/24-cuda-c/image.cu deleted file mode 100644 index 74c06f484..000000000 --- a/gpu/24-cuda-c/image.cu +++ /dev/null @@ -1,110 +0,0 @@ -// Leitura de arquivos PGM, PPM, etc -// Criado por: Luciano P. Soares (10 de Abril de 2018) -// originalmente baseado em: ugurkoltuk.wordpress.com/2010/03/04/an-extreme-simple-pgm-io-api/ - -#include -#include -#include -#include -#include "image.h" - -// Rotina para ignorar comentarios em arquivos PGM -void SkipComments(FILE *fp) -{ - int ch; - char line[256]; - while ((ch = fgetc(fp)) != EOF && isspace(ch)) { } - if (ch == '#') { - fgets(line, sizeof(line), fp); - SkipComments(fp); - } else fseek(fp, -1, SEEK_CUR); -} - -// Ajusta informacoes e aloca dados para estrtura de armazenamento de imagens PGM -void createImage(PGMData *data, int row, int col, int max_intensity, int channels) -{ - data->row = row; - data->col = col; - data->max_intensity = max_intensity; - data->channels = channels; - data->matrix = (int *)malloc(sizeof(int) * data->row * data->col * data->channels); -} - -// Executa a leitura de um arquivo PGM -void readImage(const char *file_name, PGMData *data) -{ - FILE *pgmFile; - char version[3]; - int i, j, k; - int tmp; - unsigned char binary = 0; - - pgmFile = fopen(file_name, "rb"); - if (pgmFile == NULL) { - perror("Falha ao abrir arquivo para leitura"); - exit(EXIT_FAILURE); - } - fgets(version, sizeof(version), pgmFile); - if (!strcmp(version, "P6")) { data->channels= 3; binary = 1; } - else if (!strcmp(version, "P5")) { data->channels= 1; binary = 1; } - else if (!strcmp(version, "P3")) { data->channels = 3; binary = 0; } - else if (!strcmp(version, "P2")) { data->channels = 1; binary = 0; } - else { - fprintf(stderr, "Erro ao identificar arquivo PGM: %s\n",version); - exit(EXIT_FAILURE); - } - SkipComments(pgmFile); - fscanf(pgmFile, "%d", &data->col); - fscanf(pgmFile, "%d", &data->row); - fscanf(pgmFile, "%d", &data->max_intensity); - fgetc(pgmFile); - - data->matrix = (int *)malloc(sizeof(int) * data->row * data->col * data->channels); - for (i = 0; i < data->row; i++) - for (j = 0; j < data->col; j++) { - for (k = 0; k < data->channels; k++) { - if(binary) { - data->matrix[(i*data->col+j)*data->channels+k] = fgetc(pgmFile); - } else { - fscanf(pgmFile, "%d", &tmp); - data->matrix[(i*data->col+j)*data->channels+k] = tmp; - } - } - } - - fclose(pgmFile); -} - -// Grava um arquivo PGM -void writeImage(const char *filename, const PGMData *data, unsigned char binary) -{ - FILE *pgmFile; - int i, j, k; - - pgmFile = fopen(filename, "w"); - if (pgmFile == NULL) { - perror("Falha ao abrir arquivo para escrita"); - exit(EXIT_FAILURE); - } - - fprintf(pgmFile, ( data->channels==3 ? (binary?"P6\n":"P3\n") : (binary?"P5\n":"P2\n") ) ); - fprintf(pgmFile, "%d %d\n", data->col, data->row); - fprintf(pgmFile, "%d\n", data->max_intensity); - - for (i = 0; i < data->row; ++i) { - for (j = 0; j < data->col; ++j) { - for (k = 0; k < data->channels; k++) { - if(binary) { - fputc(data->matrix[(i*data->col+j)*data->channels+k], pgmFile); - } else { - fprintf(pgmFile, " %d", data->matrix[(i*data->col+j)*data->channels+k]); - } - } - if(!binary) fprintf(pgmFile, " "); - } - if(!binary) fprintf(pgmFile, "\n"); - } - - fclose(pgmFile); - free(data->matrix); -} \ No newline at end of file diff --git a/gpu/24-cuda-c/image.h b/gpu/24-cuda-c/image.h deleted file mode 100644 index 24a322b42..000000000 --- a/gpu/24-cuda-c/image.h +++ /dev/null @@ -1,23 +0,0 @@ -// referencia https://ugurkoltuk.wordpress.com/2010/03/04/an-extreme-simple-pgm-io-api/ -#include - -// Estrutura de dados para as imagens PGM -typedef struct _PGMData { - int row; - int col; - int max_intensity; - int channels; - int *matrix; -} PGMData; - -// Rotina para ignorar comentarios em arquivos PGM -void SkipComments(FILE *fp); - -// Ajusta informacoes e aloca dados para estrtura de armazenamento de imagens PGM -void createImage(PGMData *data, int row, int col, int max_intensity, int channels); - -// Executa a leitura de um arquivo PGM -void readImage(const char *file_name, PGMData *data); - -// Grava um arquivo PGM -void writeImage(const char *filename, const PGMData *data, unsigned char binary); diff --git a/gpu/24-cuda-c/roteiro.pdf b/gpu/24-cuda-c/roteiro.pdf deleted file mode 100644 index eea8716c3..000000000 Binary files a/gpu/24-cuda-c/roteiro.pdf and /dev/null differ diff --git a/gpu/24-cuda-c/slides.pdf b/gpu/24-cuda-c/slides.pdf deleted file mode 100644 index 51e36cebb..000000000 Binary files a/gpu/24-cuda-c/slides.pdf and /dev/null differ diff --git a/gpu/projeto/enunciado.pdf b/gpu/projeto/enunciado.pdf deleted file mode 100644 index cdb0c9cc7..000000000 Binary files a/gpu/projeto/enunciado.pdf and /dev/null differ diff --git a/gpu/projeto/segmentacao_sequencial/CMakeLists.txt b/gpu/projeto/segmentacao_sequencial/CMakeLists.txt deleted file mode 100644 index c374ed565..000000000 --- a/gpu/projeto/segmentacao_sequencial/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(segmentacao_sequencial) - -set (CMAKE_CXX_STANDARD 11) - -add_executable(segmentacao_sequencial main.cpp imagem.cpp) - -install(TARGETS segmentacao_sequencial RUNTIME DESTINATION bin) diff --git a/gpu/projeto/segmentacao_sequencial/README.md b/gpu/projeto/segmentacao_sequencial/README.md deleted file mode 100644 index ba6d58abd..000000000 --- a/gpu/projeto/segmentacao_sequencial/README.md +++ /dev/null @@ -1,24 +0,0 @@ -Projeto 4: segmentação de imagens -====================== - - -Este projeto contém uma implementação sequencial do algoritmo **Single Source Shortest Path** e sua utilização -para a criação de uma segmentação de imagens em frente e fundo. Este programa não foi extensamente testado em -imagens grandes ou complexas. - -**Limitações**: - -1. o projeto só aceita uma semente de frente e uma semente fundo -1. o algoritmo **SSSP* é executado duas vezes (uma para frente e uma para fundo) -1. na função *SSSP* cada ponto é adicionado a fila de prioridade mais de uma vez, mas só é processado se houver chance de melhorar seu caminho. -1. o leitor de PGM é extremamente limitado e não suporta comentários no PGM. O melhor é converter usando o programa `convert input.png -compress none -depth 8 out.pgm` - -**Testes iniciais**: - -A imagem *teste.pgm* contém um exemplo simples para segmentação. Dois testes possíveis e interessantes são - -1. colocar a semente dentro do círculo grande e a semente de fundo fora dos dois círculos -1. colocar a semente dentro do círculo grande e a semente de fundo dentro do pequeno. - -Antes de rodar, tente prever o comportamento da segmentação final. - diff --git a/gpu/projeto/segmentacao_sequencial/imagem.cpp b/gpu/projeto/segmentacao_sequencial/imagem.cpp deleted file mode 100644 index 2f670c807..000000000 --- a/gpu/projeto/segmentacao_sequencial/imagem.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "imagem.h" -#include -#include - -imagem *new_image(int rows, int cols) { - imagem *img = new imagem; - img->rows = rows; - img->cols = cols; - img->total_size = rows * cols; - img->pixels = new unsigned char[img->total_size]; - return img; - -} - -imagem *read_pgm(std::string path) { - std::ifstream inf(path); - std::string first_line; - std::getline(inf, first_line); - if (first_line != "P2") return NULL; - - imagem *img = new imagem; - inf >> img->cols; - inf >> img->rows; - int temp; - inf >> temp; - img->total_size = img->rows * img->cols; - img->pixels = new unsigned char[img->total_size]; - - for (int k = 0; k < img->total_size; k++) { - int t; - inf >> t; - img->pixels[k] = t; - } - - return img; -} - -void write_pgm(imagem *img, std::string path) { - std::ofstream of(path); - of << "P2\n" << img->cols << " " << img->rows << " 255\n"; - for (int k = 0; k < img->total_size; k++) { - of << ((int) img->pixels[k]) << " "; - } -} - diff --git a/gpu/projeto/segmentacao_sequencial/imagem.h b/gpu/projeto/segmentacao_sequencial/imagem.h deleted file mode 100644 index 9554407dc..000000000 --- a/gpu/projeto/segmentacao_sequencial/imagem.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef IMAGEM_H -#define IMAGEM_H - -#include - - -typedef struct { - int rows, cols; - int total_size; - unsigned char *pixels; -} imagem; - - -inline int get_edge(imagem *img, int p1, int p2) { - int px1 = img->pixels[p1]; - int px2 = img->pixels[p2]; - return abs(px1 - px2); -} - -imagem *new_image(int rows, int cols); -imagem *read_pgm(std::string path); -void write_pgm(imagem *img, std::string path); - -#endif diff --git a/gpu/projeto/segmentacao_sequencial/main.cpp b/gpu/projeto/segmentacao_sequencial/main.cpp deleted file mode 100644 index bcbac9221..000000000 --- a/gpu/projeto/segmentacao_sequencial/main.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include -#include -#include -#include -#include - -#include "imagem.h" - -typedef std::pair custo_caminho; - -typedef std::pair result_sssp; - - -struct compare_custo_caminho { - bool operator()(custo_caminho &c1, custo_caminho &c2) { - return c2.first < c1.first; - } -}; - -result_sssp SSSP(imagem *img, int source) { - std::priority_queue, compare_custo_caminho > Q; - double *custos = new double[img->total_size]; - int *predecessor = new int[img->total_size]; - bool *analisado = new bool[img->total_size]; - - result_sssp res(custos, predecessor); - - for (int i = 0; i < img->total_size; i++) { - predecessor[i] =-1; - custos[i] = __DBL_MAX__; - analisado[i] = false; - } - - Q.push(custo_caminho(0.0, source)); - predecessor[source] = source; - custos[source] = 0.0; - - while (!Q.empty()) { - custo_caminho cm = Q.top(); - Q.pop(); - - int vertex = cm.second; - if (analisado[vertex]) continue; // já tem custo mínimo calculado - analisado[vertex] = true; - double custo_atual = cm.first; - assert(custo_atual == custos[vertex]); - - int vertex_i = vertex / img->cols; - int vertex_j = vertex % img->cols; - - if (vertex_i > 0) { - int acima = vertex - img->cols; - double custo_acima = custo_atual + get_edge(img, vertex, acima); - if (custo_acima < custos[acima]) { - custos[acima] = custo_acima; - Q.push(custo_caminho(custo_acima, acima)); - predecessor[acima] = vertex; - } - } - - if (vertex_i < img->rows - 1) { - int abaixo = vertex + img->cols; - double custo_abaixo = custo_atual + get_edge(img, vertex, abaixo); - if (custo_abaixo < custos[abaixo]) { - custos[abaixo] = custo_abaixo; - Q.push(custo_caminho(custo_abaixo, abaixo)); - predecessor[abaixo] = vertex; - } - } - - - if (vertex_j < img->cols - 1) { - int direita = vertex + 1; - double custo_direita = custo_atual + get_edge(img, vertex, direita); - if (custo_direita < custos[direita]) { - custos[direita] = custo_direita; - Q.push(custo_caminho(custo_direita, direita)); - predecessor[direita] = vertex; - } - } - - if (vertex_j > 0) { - int esquerda = vertex - 1; - double custo_esquerda = custo_atual + get_edge(img, vertex, esquerda); - if (custo_esquerda < custos[esquerda]) { - custos[esquerda] = custo_esquerda; - Q.push(custo_caminho(custo_esquerda, esquerda)); - predecessor[esquerda] = vertex; - } - } - } - - delete[] analisado; - - return res; -} - - -int main(int argc, char **argv) { - if (argc < 3) { - std::cout << "Uso: segmentacao_sequencial entrada.pgm saida.pgm\n"; - return -1; - } - std::string path(argv[1]); - std::string path_output(argv[2]); - imagem *img = read_pgm(path); - - int n_fg, n_bg; - int x, y; - - std::cin >> n_fg >> n_bg; - assert(n_fg == 1); - assert(n_bg == 1); - - std::cin >> x >> y; - int seed_fg = y * img->cols + x; - - std::cin >> x >> y; - int seed_bg = y * img->cols + x; - - - result_sssp fg = SSSP(img, seed_fg); - result_sssp bg = SSSP(img, seed_bg); - - imagem *saida = new_image(img->rows, img->cols); - - for (int k = 0; k < saida->total_size; k++) { - if (fg.first[k] > bg.first[k]) { - saida->pixels[k] = 0; - } else { - saida->pixels[k] = 255; - } - } - - write_pgm(saida, path_output); - return 0; -} diff --git a/gpu/projeto/segmentacao_sequencial/teste.pgm b/gpu/projeto/segmentacao_sequencial/teste.pgm deleted file mode 100644 index d6d38063a..000000000 --- a/gpu/projeto/segmentacao_sequencial/teste.pgm +++ /dev/null @@ -1,250003 +0,0 @@ -P2 -500 500 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -228 -201 -173 -145 -115 -85 -50 -13 -13 -50 -85 -115 -145 -173 -201 -228 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -196 -142 -42 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -42 -142 -196 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -204 -135 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -135 -204 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -188 -81 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -81 -188 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -196 -75 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -75 -196 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -224 -126 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -126 -224 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -187 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -187 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -152 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -152 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -121 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -121 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -237 -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 -0 -0 -0 -0 -104 -237 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -108 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -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 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -132 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -132 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -166 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -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 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -204 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -204 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -243 -64 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -64 -243 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -167 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -167 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -230 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -230 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -159 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -159 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -189 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -189 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -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 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -206 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -206 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -173 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -173 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -138 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -138 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -102 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -102 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -64 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -64 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -22 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -22 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -22 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -22 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -64 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -64 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -102 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -102 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -138 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -138 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -173 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -173 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -206 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -206 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -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 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -189 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -189 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -159 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -159 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -230 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -230 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -167 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -167 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -243 -64 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -64 -243 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -204 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -204 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -166 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -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 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -132 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -132 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -108 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -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 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -237 -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 -0 -0 -0 -0 -104 -237 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -121 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -121 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -152 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -152 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -187 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -187 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -224 -126 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -126 -224 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -196 -75 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -75 -196 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -188 -81 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -81 -188 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -204 -135 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -135 -204 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -196 -142 -42 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -42 -142 -196 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -228 -201 -173 -145 -115 -85 -50 -13 -13 -50 -85 -115 -145 -173 -201 -228 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -247 -239 -232 -225 -218 -211 -204 -198 -192 -187 -182 -177 -173 -170 -167 -165 -164 -164 -164 -165 -167 -170 -173 -177 -182 -187 -192 -198 -204 -211 -218 -225 -232 -239 -247 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -239 -227 -215 -203 -191 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -191 -203 -215 -227 -239 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -253 -239 -225 -210 -194 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -194 -210 -225 -239 -253 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -241 -224 -206 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -206 -224 -241 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -236 -217 -195 -171 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -171 -195 -217 -236 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -219 -195 -167 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -167 -195 -219 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -230 -205 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -205 -230 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -248 -223 -196 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -196 -223 -248 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -223 -194 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -194 -223 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -227 -197 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -197 -227 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -237 -206 -170 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -170 -206 -237 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -221 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -221 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -207 -166 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -166 -207 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -195 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -195 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -224 -184 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -184 -224 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -219 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -219 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -253 -218 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -218 -253 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -223 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -223 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -230 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -230 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -196 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -196 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -209 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -209 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -224 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -224 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -194 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -194 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -215 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -215 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -236 -187 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -187 -236 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -189 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -189 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -220 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -220 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -200 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -200 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -234 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -234 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -218 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -218 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -253 -202 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -202 -253 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -169 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -169 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -220 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -220 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -211 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -211 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -202 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -202 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -194 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -194 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -246 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -246 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -181 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -181 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -172 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -172 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -241 -175 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -175 -241 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -244 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -244 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -184 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -184 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -191 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -191 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -199 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -199 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -208 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -208 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -217 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -217 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -228 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -228 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -182 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -182 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -199 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -199 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -215 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -215 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -247 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -247 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -197 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -197 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -188 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -188 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -189 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -189 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -245 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -245 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -201 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -201 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -185 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -185 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -221 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -221 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -213 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -213 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -246 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -246 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -208 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -208 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -244 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -244 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -207 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -207 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -245 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -245 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -210 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -210 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -216 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -216 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -226 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -226 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -190 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -190 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -206 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -206 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -252 -168 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -168 -252 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -225 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -225 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -193 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -193 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -245 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -245 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -218 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -218 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -187 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -187 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -243 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -243 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -218 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -218 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -190 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -190 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -248 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -248 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -226 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -226 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -201 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -201 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -197 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -197 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -172 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -172 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -225 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -225 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -207 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -207 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -187 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -187 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -228 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -228 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -200 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -200 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -185 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -185 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -169 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -169 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -248 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -248 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -222 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -222 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -206 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -206 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -199 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -199 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -192 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -192 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -185 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -185 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -179 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -179 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -171 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -171 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -167 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -167 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -167 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -167 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -171 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -171 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -179 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -179 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -185 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -185 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -192 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -192 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -199 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -199 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -206 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -206 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -222 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -222 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -248 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -248 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -169 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -169 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -185 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -185 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -200 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -200 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -228 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -228 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -187 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -187 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -207 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -207 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -225 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -225 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -172 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -172 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -197 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -197 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -201 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -201 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -226 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -226 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -248 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -248 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -190 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -190 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -218 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -218 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -243 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -243 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -187 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -187 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -218 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -218 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -245 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -245 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -193 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -193 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -225 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -225 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -252 -168 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -168 -252 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -206 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -206 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -190 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -190 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -226 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -226 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -216 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -216 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -210 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -210 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -245 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -245 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -207 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -207 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -244 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -244 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -208 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -208 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -246 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -246 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -213 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -213 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -221 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -221 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -185 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -185 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -201 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -201 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -245 -165 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -165 -245 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -189 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -189 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -188 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -188 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -197 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -197 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -247 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -247 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -215 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -215 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -199 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -199 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -182 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -182 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -228 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -228 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -217 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -217 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -208 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -208 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -199 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -199 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -191 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -191 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -184 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -184 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -244 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -244 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -241 -175 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -175 -241 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -238 -172 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -172 -238 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -181 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -181 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -246 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -246 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -194 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -194 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -202 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -202 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -211 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -211 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -220 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -220 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -169 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -169 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -242 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -242 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -253 -202 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -202 -253 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -218 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -218 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -234 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -234 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -200 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -200 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -220 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -220 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -189 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -189 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -214 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -214 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -236 -187 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -187 -236 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -215 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -215 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -194 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -194 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -224 -173 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -173 -224 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -209 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -209 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -239 -196 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -196 -239 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -230 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -230 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -223 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -223 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -219 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -219 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -253 -218 -174 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -174 -218 -253 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -219 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -219 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -224 -184 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -184 -224 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -231 -195 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -195 -231 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -207 -166 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -166 -207 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -221 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -221 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -237 -206 -170 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -170 -206 -237 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -227 -197 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -197 -227 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -249 -223 -194 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -194 -223 -249 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -248 -223 -196 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -196 -223 -248 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -251 -230 -205 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -205 -230 -251 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -240 -219 -195 -167 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -167 -195 -219 -240 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -254 -236 -217 -195 -171 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -171 -195 -217 -236 -254 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -241 -224 -206 -186 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -186 -206 -224 -241 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -253 -239 -225 -210 -194 -176 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -176 -194 -210 -225 -239 -253 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -250 -239 -227 -215 -203 -191 -178 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -164 -178 -191 -203 -215 -227 -239 -250 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -247 -239 -232 -225 -218 -211 -204 -198 -192 -187 -182 -177 -173 -170 -167 -165 -164 -164 -164 -165 -167 -170 -173 -177 -182 -187 -192 -198 -204 -211 -218 -225 -232 -239 -247 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 -255 diff --git "a/material/Icon\r" "b/material/Icon\r" new file mode 100644 index 000000000..f179c2996 Binary files /dev/null and "b/material/Icon\r" differ diff --git a/material/aulas/01-introducao/busca-local-1 b/material/aulas/01-introducao/busca-local-1 new file mode 100755 index 000000000..d3d24ac8e Binary files /dev/null and b/material/aulas/01-introducao/busca-local-1 differ diff --git a/material/aulas/01-introducao/busca-local-1-par b/material/aulas/01-introducao/busca-local-1-par new file mode 100755 index 000000000..e828a14df Binary files /dev/null and b/material/aulas/01-introducao/busca-local-1-par differ diff --git a/material/aulas/01-introducao/busca-local-2 b/material/aulas/01-introducao/busca-local-2 new file mode 100755 index 000000000..4010ab450 Binary files /dev/null and b/material/aulas/01-introducao/busca-local-2 differ diff --git a/material/aulas/01-introducao/busca-local-2-par b/material/aulas/01-introducao/busca-local-2-par new file mode 100755 index 000000000..a8920fbee Binary files /dev/null and b/material/aulas/01-introducao/busca-local-2-par differ diff --git a/material/aulas/01-introducao/entradas-busca-local/in-0.txt b/material/aulas/01-introducao/entradas-busca-local/in-0.txt new file mode 100644 index 000000000..c5f799f60 --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-0.txt @@ -0,0 +1,6 @@ +5 +12.03760027911558 14.595231463679347 +6.8752025506733645 93.92215989550134 +38.18979369253821 73.06199968149944 +69.06801021585893 35.64352032137384 +24.937442953659517 41.09322754701119 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-1.txt b/material/aulas/01-introducao/entradas-busca-local/in-1.txt new file mode 100644 index 000000000..ecb6921ef --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-1.txt @@ -0,0 +1,11 @@ +10 +72.5132952287885 19.054607929540957 +89.76943728083425 12.54188960345014 +87.75039322857873 7.178869756528805 +58.502856845160466 52.0413438135805 +38.25985549732883 76.55139715588611 +52.49806343483312 13.477889175249903 +84.61650683423831 42.40198516212946 +72.42669600991553 68.89223016569424 +34.33554877273335 66.67217168467747 +85.0279995604061 5.223687535813548 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-2.txt b/material/aulas/01-introducao/entradas-busca-local/in-2.txt new file mode 100644 index 000000000..ae34c1c20 --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-2.txt @@ -0,0 +1,16 @@ +15 +15.82182580854392 5.564913029807117 +2.985990385190107 64.81301030699542 +60.551917966433976 19.143001110805415 +51.40998779021469 50.92871374655452 +91.51794593769735 64.14289323893512 +30.437280209864493 45.6150740211947 +62.40185334710693 47.19844176140685 +85.3732679383185 38.78424208234108 +35.087951097975065 85.79118736235152 +17.282733340110077 53.5232771007792 +50.31111390256219 18.48273687854981 +48.01961676664091 83.34540240240604 +2.70216899932908 32.6190009037351 +89.88592334954181 87.85415212839563 +31.16991105097322 53.51812286989494 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-3.txt b/material/aulas/01-introducao/entradas-busca-local/in-3.txt new file mode 100644 index 000000000..883f390f5 --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-3.txt @@ -0,0 +1,21 @@ +20 +12.179818058387992 1.0198832874170671 +55.33003101092001 99.68650745283561 +38.76413279635715 23.359063318464667 +14.858411786102055 60.85608398968153 +97.50287308919674 4.45029245234021 +26.292967906036 40.396942284320836 +46.56996343605782 98.23972601481223 +58.87006477671647 96.60567694440864 +7.118186201971843 82.20194366877533 +68.87181704111403 14.990018427139617 +98.47013527309575 3.216953747555229 +90.7480648986641 8.521977994819064 +60.828881853274375 48.86524149255143 +1.5331069181034551 61.99865271444342 +75.72333644702749 85.51674953925223 +86.9504659203325 39.12012960530921 +84.73277846072496 40.90012907920069 +73.24541260060643 94.15221722928433 +41.17487351552811 94.99493892244186 +68.70988382610392 42.36391329911615 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-4.txt b/material/aulas/01-introducao/entradas-busca-local/in-4.txt new file mode 100644 index 000000000..17b11a8ff --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-4.txt @@ -0,0 +1,31 @@ +30 +95.01592961552277 51.170052858962556 +10.6414309697082 18.46161682439339 +38.44993835422172 46.91037916686726 +29.966609470884244 84.35066705435739 +57.855916286641026 25.179598753305786 +98.62330995781723 29.985899047970467 +58.413292891933345 58.7002085988147 +82.72115884154866 85.51394573768295 +5.175489839412184 81.23271896405151 +88.27752238801577 41.05020958100848 +71.3793802849722 75.17730293554916 +47.91296515608868 89.33914414001156 +59.01320240962213 0.2878604919574035 +29.5733413549498 30.157496408481165 +54.777616227693656 87.98924602618115 +49.740170144677634 47.67801877443378 +13.510624841768859 54.33832856924632 +57.58642496140457 50.29437639454115 +6.232387902849457 66.45907016359304 +22.620661399960106 47.18996496537458 +77.81145280916698 72.41327028535326 +50.40419555695125 7.7303697451961195 +98.3849663466701 97.35077956371956 +67.141384934047 83.7642089472584 +12.577260584283511 39.83213987327752 +68.5469333062261 38.397491836329564 +3.663646319675795 56.792475739223335 +40.70216146319555 2.5765483796351796 +50.09525442220853 82.54454117445623 +59.89706629104048 32.81234802621644 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-5.txt b/material/aulas/01-introducao/entradas-busca-local/in-5.txt new file mode 100644 index 000000000..f18adae1a --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-5.txt @@ -0,0 +1,41 @@ +40 +88.38922206822969 97.54498807396165 +12.75263080635456 46.64689089295803 +37.94056565263338 14.686416363162557 +70.59092234689838 74.79949096914577 +79.23976922349541 62.86498167758262 +99.15271534216717 51.01823946730768 +24.155641653310866 5.570123723746034 +87.43108245767334 96.40509535780546 +57.308986295654805 47.62544556396533 +0.009791635243239227 6.24113321344868 +68.19867366756534 78.54161763239496 +23.75563497511026 46.06874439284524 +54.94897762608477 49.70831240620903 +70.12457893245767 26.01624041208286 +65.16922450312043 22.650014451355148 +51.99017728325648 74.52029210434749 +89.25679083738535 5.901686089734426 +36.921213675936194 27.37645977877715 +91.72121422554198 75.12058516505577 +84.03526320026819 38.589483717621405 +12.136811034986728 96.71596394689168 +59.229429153024924 11.02843602458604 +99.85335030333997 41.12830812924552 +89.07856548160487 27.47814245963195 +32.45686888585554 50.57873922646296 +77.16372484236594 63.51702569259102 +13.049608094564558 99.41307067150927 +59.54528028266471 54.30337499757852 +62.06169756329894 50.796811997524294 +1.3324039340038896 79.78754941894142 +90.22857093991851 83.97704127620439 +49.81827571847882 92.18284443750879 +69.27884174851324 21.254889508347652 +50.64614291445388 47.29249673904135 +79.53401472193053 56.39505833401303 +48.67922316987426 51.407800289432096 +26.553216987794816 79.08958897552716 +87.26468644245634 49.4662623847543 +20.9808274382269 28.74288638812542 +51.23678405394491 16.637081247687057 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-6.txt b/material/aulas/01-introducao/entradas-busca-local/in-6.txt new file mode 100644 index 000000000..f631dfb85 --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-6.txt @@ -0,0 +1,51 @@ +50 +95.29349351698365 92.31923329122024 +56.97862705127888 40.29794408499047 +37.08380256189437 48.12376882292203 +11.456010476929901 89.12858154095281 +97.85212906625571 3.8260491025776666 +56.873443084724265 22.35809777890303 +34.07300969018632 5.6881150710716755 +83.22640965968834 25.222176815120577 +79.77554176395996 53.745336832783266 +25.25279369173977 82.40833226517694 +62.23271488945704 39.79781001423645 +66.9204532116907 82.72628929145527 +41.826783225954536 32.01617235858231 +65.6595296773871 4.329841609834883 +78.54749007231099 94.29139910841378 +34.88045554444126 91.53170679523362 +9.34844232580565 79.70758224907452 +95.41258526881168 23.684575280319574 +81.85790579521009 7.6562714253724184 +69.46857557030987 94.54957312522988 +21.595585916516292 59.527545605756515 +34.28386766555073 89.20817468338859 +83.59405268969604 62.37611954925148 +95.28299892345362 17.25901615511879 +69.5024683444503 40.75116864185367 +12.865127076887251 70.80008386128418 +75.72253953245217 42.56472331111855 +41.71637634935886 37.60357988066255 +13.171193283003879 33.924349555290256 +5.817739779331676 12.958812106567175 +84.51558338000513 61.89507954594122 +7.33700988989664 87.69017849922635 +52.36442584523734 22.256661967410306 +74.31798932042078 3.5566360830342147 +0.14780855779226165 0.6853769457074166 +15.803377542810281 0.9735471723193334 +98.1980325196967 56.546365012062275 +94.74618599631171 12.155676243238723 +58.549182682383226 3.231451250683337 +67.86755136241159 38.603259234986695 +10.412150148069088 14.732203177244374 +83.6337231648002 88.97399111635904 +3.100493429432738 8.641003981738503 +92.86027305361183 79.85092676235442 +69.45735073835752 13.485687793205681 +29.080202408520506 97.85010197266864 +95.53723711424892 5.884258881020754 +38.808640898447834 3.5692465775759907 +36.129438936309775 12.310524382637734 +10.32247498171185 54.693591719855185 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-7.txt b/material/aulas/01-introducao/entradas-busca-local/in-7.txt new file mode 100644 index 000000000..5b2318e1a --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-7.txt @@ -0,0 +1,61 @@ +60 +17.364891031162376 64.08340539856785 +7.252560966089028 92.5319337266997 +95.5111696301736 76.48819223926807 +9.550106122186753 89.5792161325405 +20.464360300118777 29.546564025702793 +89.54652718534527 45.724791298145995 +2.0692028809245255 4.6546524721236775 +35.37392537165817 11.351099911714124 +24.222285425702417 57.87698659782017 +37.09139536140046 10.266651227697999 +64.25558931806137 82.93832096613053 +22.83776386336338 43.01149975702232 +53.0064001092961 97.66722004759734 +27.57272567080784 56.380858916945144 +46.5670816836714 41.11373661445936 +45.83544349659413 86.34776245104366 +93.54342584489514 62.50935111067862 +69.51607130494224 2.3912743903477973 +67.68603803318636 55.92340942809572 +57.4916018200191 83.45547245672272 +76.83873037427192 90.48608526293998 +2.55372625761332 20.38841790470731 +11.392428674642762 16.640856201332667 +90.20645389112688 13.329954717059334 +15.103013794366404 97.65581206374797 +83.06075915192498 34.332266318454394 +63.16243703695943 61.46960465742396 +73.98774131368998 41.98532292263106 +43.91935933189954 61.09360566515135 +13.298122621181186 69.24343831395785 +64.16494388780981 74.2046051554188 +96.96839937979443 71.36763397361365 +21.17046363520718 5.432450835985813 +48.265364232667274 91.33598617689181 +61.58361185986205 17.125399467999557 +93.70313134086717 19.011460901717737 +99.07218681051691 24.145072646156017 +90.65686020022875 65.36296905881345 +9.656269939588647 14.885683563906404 +90.61287735909497 11.58302743086066 +89.36865124545238 22.171968137298414 +45.60417219628541 7.679297396824025 +68.23686925556942 2.3318193619784933 +44.15109549310577 97.28283161965507 +38.85647113863365 28.030845797990413 +66.6242885989448 72.86863280240127 +62.60317351979925 54.0552911943592 +23.48103353063562 40.01853837488717 +99.25922940119948 22.792081247577546 +53.5645381810727 92.41000518328329 +60.84538895597672 26.330388650393555 +80.21613462162944 88.16438321654341 +29.670426981245633 61.05697921890712 +19.6260983445793 89.04959072692334 +57.065499033544754 85.90213342247615 +46.68915447157595 68.94295381532267 +44.088660149764166 97.8603964165815 +37.074161840140306 44.05646744772864 +15.667351283282615 23.93049313008443 +3.594784456456601 84.74504480276883 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-8.txt b/material/aulas/01-introducao/entradas-busca-local/in-8.txt new file mode 100644 index 000000000..83e70b585 --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-8.txt @@ -0,0 +1,71 @@ +70 +50.50675697491268 65.17209520710321 +81.78804632177979 74.22968969254879 +85.40764440709947 11.153477794924182 +15.690627424611293 75.49042472777275 +72.98736733043472 10.644224604680952 +39.8817740213144 6.882738622213058 +85.25365725001362 76.23829580074093 +7.531025288516191 39.19678693036439 +27.08801370788001 33.58523056319381 +15.869923486479387 77.68632673215676 +12.609570721711227 58.50035076780985 +68.17682488169751 55.924810170330964 +4.249828547469425 96.24345006082999 +10.481908036491195 44.27642082099317 +96.2138099839943 63.154347856201866 +28.513251695068178 25.185151631108337 +88.45817750220836 31.79785240234436 +65.9085666571888 39.91046597715724 +67.18974666054004 98.01593011209985 +87.9097026047247 71.05719894106169 +43.053835459878634 89.1958716155345 +25.19099189961348 35.90408742216593 +92.43108000691318 93.17876246652342 +17.14543341105489 25.67597767744537 +87.98380714256353 31.935987770687102 +23.899432990991453 55.4496676938217 +79.4919283516241 99.89847368794166 +33.89750568517177 37.67439023065846 +17.59472291360151 3.0436152476779332 +85.99967055179405 97.6307116824783 +32.30653305071578 78.03635542662781 +2.2061649372191128 47.353847840705555 +73.33392911260583 62.66342074523929 +57.98510523340325 30.049852659866627 +20.604809127978108 94.5530475378982 +62.0423641504959 56.89856059369236 +45.19290395258623 56.090253071064986 +58.15135106823902 11.17990922304447 +53.425391039932975 9.437558681554247 +31.451958788567936 98.2125207414834 +89.67796213204576 4.054174882589779 +36.22549911228493 99.7432170852007 +13.789518910236332 76.57579213776108 +84.99854860529558 32.79126845835664 +54.95258277675199 31.326985871321224 +49.315775220631664 34.659072505909826 +39.426046660558164 37.856848664128016 +82.67521308587118 26.713655330743315 +61.34967268131262 83.93452680331728 +31.071254074578892 3.168018067670153 +73.62961921672596 60.42756537193675 +35.81879399385177 86.10103416281873 +41.58287289220295 92.18376854231765 +44.04664562954027 53.51280085517979 +8.70571798426668 76.23943504532508 +99.88205050536999 67.63519712758126 +2.986516148940599 35.11458499783116 +36.18742641603819 37.565861082189514 +79.88720928908694 43.003139397717064 +26.058121328179773 21.4393268779032 +67.49028903211 54.39705101012857 +43.15195555718685 48.56581423562258 +86.62828955867752 34.36314123419116 +28.403591312361954 41.649362199611716 +35.48606702839191 59.57273938172567 +38.840025062544306 32.910032774301854 +7.401550252727473 66.58126443181283 +67.19010397911391 65.11855744770116 +79.70872844356423 68.81911723140252 +37.70502983323909 33.31530468315464 diff --git a/material/aulas/01-introducao/entradas-busca-local/in-9.txt b/material/aulas/01-introducao/entradas-busca-local/in-9.txt new file mode 100644 index 000000000..ac8e7194d --- /dev/null +++ b/material/aulas/01-introducao/entradas-busca-local/in-9.txt @@ -0,0 +1,81 @@ +80 +51.09667913759627 60.21030013638244 +28.0979849483902 24.219778344280975 +2.1172112004375965 25.059972474283065 +58.07850968871323 89.14080089080677 +48.12662176861965 10.362372270329567 +68.4004484275267 71.11174624618299 +16.7754368451705 53.02506128317357 +88.50058982477385 74.78902274744522 +24.42241353887936 82.34570002731525 +76.89608963215603 70.24189799391067 +33.01046449657645 68.3748823739325 +50.36890959035689 49.50688051174893 +46.11547378655138 84.8615519983408 +6.822053979216713 89.4392967992508 +67.88294153045487 26.989009488532634 +18.02188087269715 32.66986025288071 +25.98345180074486 76.7739998113353 +51.70708151064155 7.1988912447143445 +34.48951403409677 71.44215545036144 +24.783533773253918 88.58253722385632 +58.78367763825315 96.87121407254755 +12.681388017178053 13.935227532533556 +80.65637211955607 13.803685037988622 +27.118575976086866 15.410434732922917 +87.33555345619493 66.94765195576117 +97.66237302041516 53.2788680500576 +78.82313102771401 88.85514864240652 +5.914196726765519 77.2392046736815 +75.22065161831166 50.18913964581506 +16.628567767277914 82.64132554289104 +13.06219250042371 67.58455607021718 +5.7386421268995065 99.49920637121758 +62.59480617005062 57.06962789191022 +18.719225132632733 3.1938470487031467 +66.86391806908833 93.18961263834093 +51.07365679806931 80.82879984807944 +23.55533422069398 0.03142834095504199 +11.412519141041233 67.02383124317731 +29.07086333234783 45.43205242560842 +26.34748697377495 62.501410781299185 +33.613120389988026 79.95290460762317 +67.22923837343593 28.417231162772715 +9.539518389189494 98.71499808953546 +35.20813456859966 34.161265613808226 +62.23151336427162 94.72540552924296 +46.086473300163064 66.79165620165548 +26.656598923328477 36.287436355885504 +38.90059179124158 84.17370323564165 +21.61036644197476 91.71077144014303 +65.70599775783886 4.627677495481208 +64.50873025732554 47.858329699466395 +65.80897230057788 90.30465777142601 +99.77243418816312 50.255670105240505 +20.460519454357772 75.54974696531245 +57.70468188523557 25.813011961903342 +26.643512016215166 3.0226777515149683 +44.55287450154535 25.792713647906474 +24.398946480556237 44.8853544573495 +50.22856000843808 8.244168097210181 +99.3625969009592 37.05534983924073 +18.512242116384957 19.479917223491817 +9.770316948958902 8.653123710436383 +1.2991663197607584 76.97175118251819 +74.42671634201969 34.22038548534642 +75.6499763039887 17.241743087093553 +56.7716894756662 49.79143350572179 +11.004535205312305 73.87448589448012 +85.36735868275076 43.707049246134524 +15.387701780131147 30.03521488017625 +25.248800269258865 24.706276833691465 +94.7426493869225 54.7383456393782 +92.84976513475026 74.00029053479446 +84.5680497956926 59.40768256716411 +46.78100459289713 38.31483691186971 +84.19919006557409 52.364616331126655 +77.79381590016649 52.350255437509844 +63.55544973985536 70.9490175463533 +10.204902279536599 33.30312861432058 +96.54317791084289 23.46923934506975 +34.90873748812176 77.48250883698363 diff --git a/material/aulas/01-introducao/index.ipynb b/material/aulas/01-introducao/index.ipynb new file mode 100644 index 000000000..f293cae7f --- /dev/null +++ b/material/aulas/01-introducao/index.ipynb @@ -0,0 +1,231 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 01 - Introdução a SuperComputação\n", + "\n", + "!!! pdf\n", + " ![](slides.pdf)\n", + "\n", + "Como vimos na expositiva, uma solução de alto desempenho depende de três partes:\n", + "\n", + "1. algoritmos eficientes\n", + "2. implementações eficientes\n", + "3. paralelismo\n", + "\n", + "Na atividade de hoje vamos estudar o primeiro ponto e quantificar o efeito de algoritmos eficientes na resolução de um problema complexo. \n", + "\n", + "## Problemas estudados em SuperComputação\n", + "\n", + "Em Desafios de Programação conhecemos a classe dos problemas NP-completo, que são aqueles que acreditamos não existir nenhum algoritmo determinístico que os resolvem em tempo polinomial. Ou seja, são problemas importantes cuja solução é difícil. Em geral temos classes de algoritmos para resolvê-los:\n", + "\n", + "1. ótimos globais: algoritmo que encontra a solução \"correta\" do problema. \n", + "2. ótimos locais: algoritmo que encontra uma solução \"boa\" e que não pode ser melhorada por pequenas modificações. \n", + "3. aproximação: algoritmos que garantem estar \"perto o suficiente\" da solução ótima. Este tipo de algoritmo não nos interessa em SuperComputação.\n", + "\n", + "Iremos analisar hoje 4 executáveis que resolvem o problema do [Caixeiro Viajante](https://en.wikipedia.org/wiki/Travelling_salesman_problem). \n", + "\n", + "1. `busca-local-1` - implementação de um método de busca rápida, porém não ótima.\n", + "1. `busca-local-1-par` - implementação paralela do programa acima.\n", + "2. `busca-local-2` - implementação alternativa do mesmo método acima. Os resultados de ambos são idênticos.\n", + "2. `busca-local-2-par` - implementação paralela do programa acima.\n", + "\n", + "!!! important \n", + " Não estamos interessados no Caixeiro Viajante em si hoje. Queremos é comparar diferentes maneiras de resolvê-lo para entendermos o papel de técnicas de SuperComputação na velocidade de processamento e nos resultados obtidos. \n", + "\n", + "\n", + "## Ferramental\n", + "\n", + "Realizar testes de maneira automatizada é muito importante para quantificar os efeitos de diferentes algoritmos e técnicas de paralelismo. O snippet abaixo executa " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "outputPrepend" + ] + }, + "outputs": [], + "source": [ + "import subprocess\n", + "import time\n", + "\n", + "with open('entradas-busca-local/in-0.txt') as f:\n", + " start = time.perf_counter()\n", + " proc = subprocess.run(['./busca-local-1'], input=f.read(), text=True, capture_output=True)\n", + " end = time.perf_counter()\n", + "\n", + " print('Saída:', proc.stdout)\n", + " print('Stderr:', proc.stderr)\n", + " print('Tempo total(s):', end - start)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos agora praticar usar este snippet para executar nossos testes automaticamente. \n", + "\n", + "!!! exercise\n", + "\n", + " Crie uma função `roda_com_entrada(executavel, arquivo_in)` que roda o primeiro argumento usando como entrada o conteúdo do segundo argumento. Teste seu código com o executável `busca-local-1` e com o arquivo de entrada `in-0.txt` usado no exemplo acima.\n", + "\n", + " Sua função deverá devolver uma tupla `(stdout,time)` com `stdout` sendo a saída do programa e `time` seu tempo de execução em segundos. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: exercício aqui" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Algoritmos sequenciais\n", + "\n", + "Com esse código, vamos criar um relatório interativo que roda nossos testes automaticamente e já plota informações prontas para nossas análises. Vamos começar examinando o desempenho do executável `busca-local-1`.\n", + "\n", + "!!! exercise\n", + "\n", + " Rode o `busca-local` com os arquivos de entrada na pasta `entradas-busca-local`. Guarde os tempos em uma lista.\n", + "\n", + "!!! exercise\n", + "\n", + " Leia o tamanho das entradas dos arquivos na pasta `entradas-busca-local` e guarde em uma segunda lista.\n", + "\n", + "!!! exercise\n", + "\n", + " Plote o tempo de execução pelo tamanho da entrada usando `matplotlib`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: exercício aqui" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "!!! exercise\n", + " Repita os três passos acima para o executável `busca-local-2`. Finalize plotando os tempos de execução de ambos os executáveis no mesmo gráfico." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#TODO: seu código aqui" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "!!! exercise\n", + " Segundo uma coleta de dados informal e altamente confiável, 93,17% dos alunos não colocam legendas nem títulos nos gráficos gerados. Faça isso agora. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "!!! question medium\n", + "\n", + " Interprete o gráfico que você gerou na linha de cima. \n", + "\n", + "!!! question medium\n", + " Compare manualmente a saída dos programas. Existe diferença em seus resultados?\n", + "\n", + "!!! question medium \n", + " Resgate seus conhecimentos de Desafios de Programação e explique a diferença entre os algoritmos.\n", + "\n", + "\n", + "## Algoritmos paralelos\n", + "\n", + "Na discussão inicial da expositiva chegamos à conclusão de que se conseguimos realizar *N* operações em paralelo teremos um ganho de no máximo *N* vezes no desempenho de nosso programa. Nesta parte iremos estudar esta afirmação usando implementações paralelas dos algoritmos da seção anterior. \n", + "\n", + "!!! example\n", + " Execute os algoritmos paralelos com as mesmas entradas e compare com suas versões paralelas. Use um gráfico para facilitar as comparações" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "!!! question medium\n", + " Compare os tempos obtidos. Qual foi o ganho médio? Quantos *núcleos* a máquina que você está usando possui? Responda comparando cada algoritmo sequencial com sua versão paralela.\n", + "\n", + "Já estabelecemos que `busca-local-2` é melhor que `busca-local-1` por ser utilizar um algoritmo mais eficiente e vimos na prática a diferença entre um algoritmo $O(n^3)$ e um algoritmo $O(n^2)$. Vamos agora examinar a seguinte questão.\n", + "\n", + "!!! cite \"É possível usar paralelismo para tornar `busca-local-1-par` melhor que `busca-local-2`?\"\n", + "\n", + "!!! exercise\n", + " Compare o desempenho de `busca-local-1-par` com `busca-local-2`. Faça um gráfico" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "!!! question medium\n", + " Com base em seu gráfico acima, responda a pergunta: \"É possível usar paralelismo para tornar busca-local-1-par melhor que busca-local-2?\"\n", + "\n", + "Vamos agora generalizar a pergunta:\n", + "\n", + "!!! question medium\n", + " Dados dois algoritmos com complexidades computacionais diferentes, sendo que o primeiro é inferior ao segundo. É possível usar paralelismo para tornar o primeiro mais rápido que o segundo para todos tamanhos de entrada? Assuma que você possui um número fixo de *núcleos*. \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0-final" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/material/aulas/01-introducao/slides.pdf b/material/aulas/01-introducao/slides.pdf new file mode 100644 index 000000000..356641a1c Binary files /dev/null and b/material/aulas/01-introducao/slides.pdf differ diff --git a/material/aulas/02-03-implementacao-c++/index.md b/material/aulas/02-03-implementacao-c++/index.md new file mode 100644 index 000000000..3d517838a --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/index.md @@ -0,0 +1,233 @@ +# 02/03 - Implementação em C++ + +!!! pdf + ![](slides.pdf) + +A disciplina utilizará a linguagem C++ para implementação dos programas. Ela é muito usada em implementações de alto desempenho e possui recursos muito úteis e que simplificam a programação se comparada com C puro. Nas aulas 02 e 03 aprenderemos alguns desses recursos e os utilizaremos para implementação de algoritmos simples. + +!!! failure "Gabaritos e respostas" + Este curso não fornece código de resposta para os exercícios de sala. Cada exercício é acompanhado de um algoritmo em pseudo-código e alguns pares de arquivos entrada/saída. Isto já é suficiente para que vocês verifiquem se sua solução está correta. + + Boas práticas de programação serão demonstradas em exercícios corrigidos pelo professor durante o semestre. + +## Compilação + +Programas em C++ são compilados com o comando `g++`. Ele funciona igual ao `gcc` que vocês já usaram em Desafios e Sistemas Hardware-Software. + +``` +$> g++ -Wall -O3 arquivo.cpp -o executavel +``` + +## Entrada e saída em C++ + +Em C usamos as funções `printf` para mostrar dados no terminal e `scanf` para ler dados. Em C++ essas funções também podem ser usadas, mas em geral são substituídas pelos objetos `std::cin` e `std::cout` (disponíveis no cabeçalho iostream). + +A maior vantagem de usar `cin` e `cout` é que não precisamos mais daquelas strings de formatação estranhas com `%d`, `%s` e afins. Podemos passar variáveis diretamente para a saída do terminal usando o operador `<<`. Veja um exemplo abaixo. + +```cpp +int a = 10; +double b = 3.2; +std::cout << "Saída: " << a << ";" << b << "\n"; +``` + + +!!! hint "E esse `std::`?" + Em `C++` podemos ter várias funções, variáveis e objetos em geral com o mesmo nome. Para evitar que eles colidam e não se saiba a qual estamos nos referindo cada nome deve ser definido um `namespace` (literalmente *espaco de nomes*). Podemos ter `namespace`s aninhados.Por exemplo, `std::chrono` contém as funções relacionadas contagem de tempo durante a execução de um programa. + + Todas as funções, classes e globais na biblioteca padrão estão definidas no espaço `std`. Se quisermos, podemos omitir escrever `std::` toda vez digitando `using namespace std`. Isso pode ser feito também com namespaces aninhados. + +A implementação de algoritmos definidos usando expressões matemáticas é uma habilidade importante neste curso. + +!!! exercise + Escreva um programa que receba um inteiro `n` e calcule a seguinte série. + + $$ + S = \sum_{i=0}^n \frac{1}{2^i} + $$ + + Mostre as primeiras 15 casas decimais de `S`. Veja a documentação de [`std::setprecision` aqui](http://cplusplus.com/reference/iomanip/setprecision/). + + !!! answer + Essa série converge para o número 2, mas sua resposta deverá ser sempre menor que este número. Logo, quanto maior `n` mais próxima sua resposta será. Seu programa deverá implementar algo como o algoritmo abaixo. + + ``` + leia inteiro n + s = 0.0 + para i=0 até n + s += 1 / (2 elevado a i) + + print(s) + ``` + +## Vetores em C++ com Vector + +A estrutura `std::vector` é um vetor dinâmico que tem funcionalidades parecidas com a lista de Python ou o `ArrayList` de Java. O código abaixo exemplifica seu uso e mostra algumas de suas funções. Note que omitimos o uso de `std` no código abaixo. + +```cpp +int n; +cin >> n; +vector vec; +for (int i = 0; i < n; i++) { + vec.push_back(i * i) +} +cout << "Tamanho do vetor: " << vec.size() << "\n"; +cout << "Primeiro elemento: " << vec.front() << "\n"; +cout << "Último elemento: " << vec.back() << "\n"; +cout << "Elemento 3: " << vec[2] << "\n"; +``` + +Alguns pontos interessantes deste exemplo: + +1. Não sabemos o tamanho de `vec` ao criá-lo. O método `push_back` aumenta ele quando necessário e não precisamos nos preocupar com isso. +2. O número de elementos colocados no vetor é retornado pelo método `size()` +3. O acesso é feito exatamente igual ao array de C, usando os colchetes `[]` + +!!! tip "E esse `` na declaração?" + Em C++ tipos passados entre `< >` são usados para parametrizar tipos genéricos. Ou seja, um vetor pode guardar qualquer tipo de dado e precisamos indicar qual ao criá-lo. + + Note que, portanto, um vetor `vector` e um vetor `vector` são considerados de tipos diferentes e não posso passar o primeiro para uma função esperando o segundo. + +!!! exercise + Crie um programa que lê um número inteiro `n` e depois lê `n` números fracionários $x_i$. Faça os seguintes cálculos e motre-os no terminal com 10 casas decimais. + + $$\mu = \frac{1}{n} \sum_{i=1}^n x_i$$ + + + $$\sigma^2 = \frac{1}{n} \sum_{i=1}^n (x_i - \mu)^2$$ + + !!! answer + Use o programa `t4.py` para gerar entradas e saídas de teste para seu programa. + + +!!! question short + Você reconhece as fórmulas acima? Elas calculam quais medidas estatísticas? + + !!! answer + Média e variância. + +## Matrizes (versão 1) + +Dados `N` pontos com coordenadas $(x_i, y_i)_{i=0}^N$, computar a matriz de distâncias $D$ tal que + +$$ +D_{i,j} = \textrm{Distância entre } (x_i, y_i) \textrm{ e } (x_j, y_j) +$$ + +!!! tip + Use `t6.py` para gerar os arquivos de entrada/saída da tarefa abaixo. + +!!! exercise + Implemente um programa que calcule a matriz `D` acima. Sua entrada deverá estar no formato dos arquivos `t6-in-*.txt` e sua saída no formato dos arquivos `t6-out-*.txt`. Mostre as distâncias com 2 casas decimais. + + **Dicas**: + + 1. a maneira mais fácil (não necessariamente a melhor) de alocar uma matriz é usando um vetor em que cada elemento é outro vetor. + 2. faça uma implementação o mais simples possível. Vamos melhorá-la nas próximas tarefas. + + !!! answer + ``` + leia inteiro N + leia vetores X e Y + + seja D uma matriz NxN + + para i=1..N: + para j=1..N: + DX = X[i] - X[j] + DY = Y[i] - Y[j] + D[i,j] = sqrt(DX*DX + DY*DY) + ``` + + +!!! question medium + Anote abaixo o tempo de execução para os arquivos `t6-in-*.txt` e `t6-out-*.txt` + +!!! question short + Qual é a complexidade computacional de sua implementação? + +## Referências e passagem de dados + +Na parte anterior fizemos nosso programa inteiro no `main`. Vamos agora organizá-lo melhor. + +!!! exercise + Crie uma função `calcula_distancias` que recebe a matriz e os dados recebidos na entrada e a preenche. Sua função não deverá retornar nenhum valor. + + Ao terminar, meça o tempo de execução para o arquivo `t6-out-4.txt`. + + !!! answer + Aqui podem ocorrer dois problemas: + + 1. Seu programa deu "Segmentation Fault". + 2. Seu programa rodou até o fim, mas a saída é vazia (ou cheia de 0). + + O problema em si depende de como você fez o `for` duplo para mostrar os resultados. De qualquer maneira, simplesmente mover código para uma outra função não funciona neste caso. + +Ambos problemas descritos na solução são previsíveis e ocorrem pela mesma razão: **ao passar um `vector` para uma função é feita uma cópia de seu conteúdo**. Ou seja, a matriz usada dentro de `calcula_distancias` não é a mesma do `main`! + +Isto é considerado uma *feature* em `C++`: por padrão toda variável é passada **por cópia**. Isto evita que uma função modifique um valor sem que o código chamador fique sabendo. + +Em *C* podemos passar variáveis **por referência** passando um ponteiro para elas. Apesar de funcional, isso não é muito prático pois temos que acessar a variável sempre usando `*`. Em *C++* temos um novo recurso: referências. Ao declarar uma variável como uma referência crio uma espécie de *ponteiro constante* que sempre acessa a variável apontada. Veja o exemplo abaixo. + +```cpp +int x = 10; +int &ref = x; // referências são declaradas colocando & na frente do nome da variável +// a partir daqui ref e x representam a mesma variável +ref = 15; +cout << x << "\n"; // 15 +``` + +O mesmo poderia ser feito com ponteiros (como mostrado abaixo). A grande vantagem da referência é que não precisamos usar `*ref` para nos referirmos à variável `x`! Na atribuição também podemos usar direto `int &ref = x`, o que torna o código mais limpo e fácil de entender. + +```cpp +int x = 10; +int *ref = &x; // precisamos de &x para apontar ref para a variável x +*ref = 15; // precisamos indicar *ref para atribuir a variável x +cout << x << "\n"; // 15 +``` + +!!! tip "Dicas" + Note que uma referência tem que ser inicializada com a variável a que ela se refere. Ou seja, ao declarar tenho que já indicar a variável destino e esse destino não pode ser modificado. + +!!! exercise + Modifique sua função para usar referências. Verifique que ele volta a funcionar e que seu tempo de execução continua parecido com a versão que rodava no `main`. + + !!! answer + Basta adicionar `&` na frente dos nomes dos argumentos (vetores x, y e matriz). A chamada da função não muda. + +!!! tip "Dica" + Em *C++* precisamos estar sempre atentos à maneira que passamos os dados. Se não indicarmos será por cópia. Para compartilhar o mesmo objeto entre várias funções usamos referências `&`. + + +## Uma primeira otimização + +Nossa primeira implementação é bastante direta da definição e não tenta ser eficiente. + +!!! question short + Analisando a definiçao da Tarefa 1, como seria possível economizar trabalho? + + !!! answer + Podemos ver que a matriz `D` é simétrica. Ou seja, `D[i,j] == D[j,i]`. Isso significa que poderíamos calcular só um deles e copiar o valor para a outra posição. + +!!! question short + Como isso poderia ser usado para melhorar o tempo de execução de `calcula_distancias`? + +!!! question short + Seu programa criado na tarefa 1 consegue ser adaptado para implementar sua ideia da questão + anterior? O que precisaria ser modificado? + + !!! answer + Duas respostas são possíveis e corretas aqui: + + 1. Preciso checar se o `i > j` e usar o valor já calculado de `D[j,i]`. + + 2. É preciso alocar a matriz inteira antes de começar. Se formos dando `push_back` linha a linha não conseguimos atribuir um valor ao mesmo tempo a `D[i,j]` e `D[j,i]`, já que um deles ainda não terá sido criado. + +Baseado na resposta acima vamos tentar nossa primeira otimização: só vamos calcular `D[i,j]` para `i <= j` (ou seja, só a metade "de cima" de `D`). + +!!! exercise + Use a estratégia acima para evitar calcular a matriz inteira. Verifique se houve melhora no tempo do teste `t6-in-3.txt`. + + **Dica**: tente de novo usar a ideia mais simples possível e implemente adicionando um so `if` no seu programa. + + !!! answer + Não deverá haver ganho de desempenho significativo. Veremos exatamente o por que na próxima aula. diff --git a/material/aulas/02-03-implementacao-c++/slides.pdf b/material/aulas/02-03-implementacao-c++/slides.pdf new file mode 100644 index 000000000..380b964c8 Binary files /dev/null and b/material/aulas/02-03-implementacao-c++/slides.pdf differ diff --git a/material/aulas/02-03-implementacao-c++/t4.py b/material/aulas/02-03-implementacao-c++/t4.py new file mode 100644 index 000000000..a3b64712f --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t4.py @@ -0,0 +1,10 @@ +import numpy as np +import numpy.random +import sys + +n = int(input()) +arr = np.random.rand(n) +print(n) +print('\n'.join([str(a) for a in arr])) + +print(f'{np.mean(arr):0.9f}', f'{np.var(arr):0.9f}', file=sys.stderr) diff --git a/material/aulas/02-03-implementacao-c++/t6-in-0.txt b/material/aulas/02-03-implementacao-c++/t6-in-0.txt new file mode 100644 index 000000000..905625870 --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-in-0.txt @@ -0,0 +1,2 @@ +1 +1283.5194170933116 8391.696769551567 diff --git a/material/aulas/02-03-implementacao-c++/t6-in-1.txt b/material/aulas/02-03-implementacao-c++/t6-in-1.txt new file mode 100644 index 000000000..ce1e323ce --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-in-1.txt @@ -0,0 +1,6 @@ +5 +9320.204932614024 5337.551545512754 +9913.22845873042 3055.512365417963 +4342.424823258477 979.020099196245 +7303.37884823822 4317.316930658008 +6403.915661395014 9169.041745842935 diff --git a/material/aulas/02-03-implementacao-c++/t6-in-2.txt b/material/aulas/02-03-implementacao-c++/t6-in-2.txt new file mode 100644 index 000000000..1ce6bd2ef --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-in-2.txt @@ -0,0 +1,21 @@ +20 +7920.576146886372 1987.4871274820682 +5811.398266386181 2790.4219655539773 +8867.327666091544 4225.31137787017 +458.0082856251688 4424.309576366775 +8949.032760811795 937.3183639376758 +3779.81807475403 4939.2121791244845 +6499.6858663697385 9105.941985972338 +7900.0942746839155 4324.415860304403 +5579.525949945106 3176.161645337592 +9596.722684616374 430.90315690676783 +1740.407053615809 2983.2452906646977 +8146.163298078785 3605.3203848095063 +228.50579705496642 4021.6565835102215 +8197.056345672334 7883.3769996216315 +6328.607620194254 7377.328350421976 +8654.713927201286 191.2311537394784 +225.99192780056288 8936.069272967557 +5972.913478372266 8270.219806016814 +7630.6303531290305 2959.1169158335097 +6416.155822459902 6994.060109018225 diff --git a/material/aulas/02-03-implementacao-c++/t6-in-3.txt b/material/aulas/02-03-implementacao-c++/t6-in-3.txt new file mode 100644 index 000000000..8e15e6f7c --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-in-3.txt @@ -0,0 +1,121 @@ +120 +8107.959343543116 1745.116760583786 +3410.8496197417494 1749.1451969387417 +1329.114233010461 6424.340409159629 +10.8273276765114 6556.4933515363455 +8714.454101046482 6249.143420435545 +3128.688011458355 6768.7292935132 +253.3761515544153 6385.587927887404 +5225.335142728664 3038.395069032923 +957.9962842891965 1733.0683339519026 +8673.655061357527 5641.087195522504 +1275.1243013469305 6144.021659945508 +2744.201288039998 3969.089017004326 +6002.421405438751 4427.869478599498 +5597.061845653717 7367.506265080107 +1610.5627338266293 7949.176601334683 +1222.5899182711696 1458.947874212575 +2799.9472006955093 5520.594931609963 +3161.4455429315235 7502.178608415262 +3469.9800384977943 7752.445446621427 +3530.5472203714703 5147.253852091496 +3664.046113213183 5509.173748807872 +116.87452204524718 7475.217106526552 +5939.81373575982 5792.280512059399 +7572.268234827539 1648.9843443031216 +8450.78176399985 2284.1238570165747 +7819.54453394089 90.83645308689992 +7591.296867745384 6042.462004404352 +6069.868710952256 9013.195781480159 +2310.986319255971 7306.328273326151 +6752.48358146701 2989.4959207608294 +3228.1326213429275 5490.3284703924 +9616.038880260456 4926.11670684904 +210.88230814773289 6353.043334827947 +3495.6052410689285 3984.782429685677 +1069.6518898342056 1795.1396811573372 +4218.404265413248 8055.4821786874445 +6772.369754704872 5851.650808476207 +9554.708402615752 320.37024688467477 +8352.653574341366 1832.1156208390155 +4015.99640763885 7955.442752434668 +1418.891397151234 3953.7294258103107 +1629.4288814445513 3513.2182786271214 +1639.9119213745494 5021.598931038957 +4118.226110308921 959.1607640928357 +3427.9339876713952 8351.006948254064 +2463.4219674171864 314.65444330403545 +2372.4021462818832 3676.4740691182506 +6746.661639543669 8570.295067177909 +9427.149706766806 1798.0366896481014 +1645.6558539767907 86.16116221646597 +4601.258309712975 1790.848214552474 +4161.734000014743 9035.71759250748 +7523.327098023929 6672.032041330614 +1009.952811650544 4991.678887227359 +9527.12564299508 1976.80502837687 +6620.158892327435 6807.341250724579 +9733.309641067179 2135.9824418081907 +918.2622199592716 3258.9116380977903 +3828.753986844926 3818.726085246914 +3149.3902051699097 2828.58001826613 +3167.9715090484397 1222.1225989824313 +8013.566296560305 2554.7374589507745 +3732.413349592566 5387.877354329858 +4401.1940257243605 237.08862532728082 +7456.805124381116 1952.3942629023784 +5950.227470190409 8969.789921040692 +4691.108612678273 9751.28122569928 +4043.742487866817 3189.8290163537504 +1639.2383999848337 2911.801194313307 +7988.01765740762 3782.510193719556 +4335.262907815828 7973.773411225488 +5731.528639012917 5948.476010085713 +5143.291414312402 3363.763263528504 +268.59649804109597 975.9106982099286 +18.86378647864784 4652.51005400717 +3400.6186307817566 9034.079747362885 +8082.088400131495 4868.50371750417 +3047.0690871533934 1325.1713151544097 +5302.418783568549 2606.3958204177793 +7780.878492481028 6369.899821221733 +5440.130422919495 525.1917016858388 +4512.625259450427 4197.910912645453 +7.4266303140135825 7719.001711081804 +7855.918584946947 163.79795210618275 +6288.965857940154 6661.618864967663 +8703.72708809739 4276.74190548356 +1090.964292799862 2465.3451504733735 +974.3921950658519 9835.78463639829 +267.528262604968 3666.6672685960357 +46.86377823219012 8018.386651108718 +7421.254573812563 5133.432146561096 +1500.3060287562264 600.2813378868321 +1731.1664297401708 6096.349964577239 +7745.991092002204 7121.136597871297 +5007.697117642987 7480.4568240387025 +1283.2878855537876 5768.910406280923 +6866.730863651327 8856.35287847276 +8392.379313547372 3801.3970125425612 +3534.8812171928435 1237.8774819638916 +4596.14205351586 9554.49330088071 +829.5267543047413 2654.6110469141636 +4482.910863518761 1832.120982218912 +9512.981377839436 9617.619442174819 +8143.721574484033 6442.831917794774 +8428.330831749823 9355.351656141773 +4170.4938364498075 3726.587355382006 +8890.147554235105 5298.345805084776 +4158.335139287073 7015.133087995166 +7563.635574041343 9480.951061403337 +8445.85999893067 9893.302013683991 +7867.244064595827 1384.6165511909592 +8300.87156944073 3723.910117350894 +9457.725768973816 4522.972527705916 +8162.121317968474 6928.532958864844 +3670.645773718348 2254.826763802151 +8552.602444070304 9974.735422598851 +7068.551475092798 7319.236569887714 +7322.568405294617 6829.900812153272 +628.3542283678223 1419.8298682247735 +7326.774881423832 63.41894034093909 diff --git a/material/aulas/02-03-implementacao-c++/t6-in-4.txt b/material/aulas/02-03-implementacao-c++/t6-in-4.txt new file mode 100644 index 000000000..31cedcbc5 --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-in-4.txt @@ -0,0 +1,2301 @@ +2300 +1117.0351918704746 3172.7787283840294 +2388.338073519369 8215.031814486945 +3539.435134268374 5499.7417513935 +2.9979500623178446 8246.441154250952 +4144.235343758388 9496.973913307384 +1069.3455788654128 9223.189749424186 +1409.8020966145984 1447.2493356912773 +7262.928279913748 4512.527385749484 +9133.35276201121 8396.403110306146 +1400.5515767939303 2421.712111011478 +4926.198260288927 9117.823035178277 +7349.714042865999 476.9733732507453 +5243.154919667063 971.5361324977123 +4028.7329366261215 8201.10544813219 +341.22206372603546 3089.151936405643 +6579.576399241366 7586.196806159107 +8366.31697042967 982.5100348369931 +3980.577249455224 7213.588661650377 +5069.940425448234 4899.271421960011 +7161.183237074232 336.3233399428822 +7553.466101623119 476.65269479695513 +4275.388768233098 2516.225642496499 +133.78311927800368 7581.598441225581 +1477.6267215531768 1070.998754312189 +3607.6492607714326 663.54798159596 +508.56838531845307 5521.855930107567 +4793.96481971759 9378.42909860442 +1818.8918422771094 3259.9575818815774 +1957.9028370463159 8684.427315518264 +6827.087834984062 4103.7830310242 +7163.384356450597 6805.412545442246 +9421.301089146098 9619.567444706969 +4364.736691283194 5129.587201021506 +5924.958092703112 8998.11710277933 +3429.1509848575142 884.171411006911 +5239.353128707924 8819.603707884478 +8588.312310957208 4841.133544295751 +3125.0191854568943 5390.887625639572 +2268.5000064007977 9742.564587145947 +3465.1001822781036 7160.623069046371 +824.1033771887074 2912.308098782872 +5451.544440331647 7516.411047406102 +2258.8013052735214 5009.99069306406 +112.1993651999409 2760.59875932275 +804.8849947997383 8607.706674509469 +9002.768097337084 7089.143957911219 +9163.332219992544 4986.666434936938 +3490.705591346256 364.22125873966314 +6510.674520237729 5061.985253954009 +5685.430226862242 4400.037745653518 +6239.88417628802 6255.862478578738 +8445.416945867317 5475.155379564569 +6638.28414241532 2669.7636429737636 +7663.073456642682 5577.065489105434 +1420.4089801482478 3988.876659781606 +6814.240793387726 1086.103520507643 +7131.910864356764 9379.933896712548 +5095.491747735999 3251.7213718746684 +5083.101519618842 2376.255498954145 +9056.997836718978 911.8177976761422 +44.28401756373823 9284.440106267006 +6536.191409193329 8878.431876518209 +4981.441144653456 1113.7133674328436 +2606.0123800811584 2099.8005275731757 +755.5245386608756 536.5993989402607 +3450.38618546866 9616.984241858814 +8180.546769460932 3775.924570451127 +234.66374724421922 2532.262058217386 +2011.263207705749 376.398092687259 +1055.0897863848675 3556.1253038436967 +4985.07245510015 4566.988683856611 +3257.4400882497266 1477.4233263864178 +9133.204817475378 1095.4145805248172 +2604.7233041957206 4397.972911356433 +9893.54577545945 9222.388761470438 +5409.490494997031 6426.284587793649 +3680.674598584456 4810.007898992995 +6987.54544996612 7101.951336792085 +9224.97073696342 8606.644216267048 +4411.716684265653 9714.048417713348 +1282.5553213494534 7564.724716329911 +390.41060825113385 1402.8938721431473 +9234.835382405674 79.72873033271543 +8539.887990002357 3934.11908085717 +9789.962819736349 6225.407896888782 +1183.5060428221311 8921.875229936802 +5398.085476456024 7798.171911426546 +1135.1077961702515 3873.6552889449604 +2572.2933529302404 9594.108510162157 +7570.453518498116 1735.090913303281 +2660.387368353382 1105.3983526551515 +9505.949968967228 8486.262519226342 +2056.8608578569524 7718.736099872088 +4184.252942825559 7972.203407888775 +2060.2818462734394 4028.701597794385 +3900.7160130857533 3220.820630680397 +5440.723641461954 9507.744297203371 +7560.610751851774 7523.507875474955 +1657.5569137595635 2382.1818663961135 +4430.713993101577 5859.910601119339 +9527.987517684076 5229.99819473952 +9992.22903609042 1383.1150774800872 +2337.9255603093097 3701.1840836701526 +3269.67055489205 7847.994827581546 +1138.411103279675 948.9197147869432 +2293.8514291844826 8759.370260666583 +651.8433352001007 1260.61241491908 +2453.4028936837394 1506.9212901461503 +6438.092380394784 1800.0623873139798 +5896.987923055467 7995.759483141601 +3505.09407580238 691.5697059436366 +1204.927557426002 6077.4823815924965 +1332.7957839520489 6249.457132297505 +1880.9535467427895 6459.365988413618 +2652.5092589839905 8578.507827567391 +9110.205693717666 2160.397373755725 +6793.776331542761 8677.336845302978 +8373.493473509761 6521.265966533047 +6686.070760184701 2272.1694286133866 +9983.733933129735 4980.268895932065 +5287.660603635206 6075.039003067559 +9155.0575909287 6495.758045760347 +577.0059433634334 6427.599563783326 +7165.5977707999145 7498.077026800041 +5871.773261064855 9852.952939075243 +2151.604071215132 4308.878701956122 +8589.62280573461 9143.887082665473 +9412.787445135564 1218.7097567227645 +5262.337104001683 4184.435309866775 +5000.998284497272 4408.586555947355 +3868.4905369958187 3287.0147531535376 +6573.714896227393 376.19301866701704 +8650.830981830215 6477.148518065404 +3039.852587414965 1386.5264898818884 +4440.136214303751 4350.091382183582 +1468.244167976499 2451.6280858565774 +3276.9391094163234 8981.111988864492 +9076.34108828706 561.8707095248699 +1631.3253628070102 8509.51570167742 +5824.8824206534255 3028.2081772139322 +8056.804820548935 9333.7266485629 +6132.03524661689 7052.9610692369215 +9919.893464187928 7357.579295360069 +9511.094920393505 1819.6861366374162 +7262.865537859006 8956.553840402019 +2679.678776769132 1931.7802084965062 +1250.1271718557039 1631.1494779330194 +6356.364296031368 4419.73328424637 +5360.935603286464 1489.0300642844745 +5492.305436207139 2350.2392942271244 +9449.122724591596 4293.211100523692 +1013.2429922322473 5417.643993919624 +7869.503531102488 9465.886336985574 +3106.2274851803504 4257.7210633797595 +2732.0269050147817 3720.1649327238283 +1774.3676989794576 3546.885895736721 +1311.618228357333 9243.263062793327 +7299.66316973067 5703.081387359544 +3097.123583770602 5356.617737150749 +637.5847420340485 8178.110595458228 +9837.129656317495 2579.2324801074906 +2475.309888813807 545.8086317155952 +6028.425209519759 2541.3862448263803 +4875.636995004953 7665.45812359149 +8783.876731915967 3163.6006927378403 +3506.3516152572447 2044.8543997402257 +7915.349302501525 412.16231394078153 +8968.696594657818 5590.626311776769 +5432.067487633591 8777.576355959656 +5439.658664776757 1848.7573450004957 +6646.916317294898 6687.533462305594 +4736.3118469645615 3645.2382395967675 +2556.50286751247 7509.689437444422 +8855.873654806399 2955.944369461224 +8622.302590632426 5612.583340315731 +8062.504934292708 2150.0088117918526 +9996.318659232076 8509.058190220325 +9824.526349173724 7536.545519408004 +957.077321166323 512.6822562546107 +3525.3849476691535 2962.469573186425 +7899.298384678756 7127.9144357432515 +3991.701571790202 8549.131032496083 +3958.011746533191 1695.9091400538805 +2795.5368923789824 9567.13837946464 +8339.667888930999 2647.6522601589813 +4582.628886329492 1810.5656239004286 +1965.2775634778652 5046.324341774537 +9379.370628682786 9672.623317418622 +997.4146629629365 2023.6677646376 +4934.4028651277395 1501.037780661909 +6793.442557142508 6158.1401567791645 +4270.008004779578 4849.431497210513 +3889.7894933979073 9116.783884505274 +3237.4976865961767 2375.656243403396 +6882.414226636519 6209.0011845067775 +9298.380299534443 3595.930904107384 +3302.126003965935 107.75977115461632 +1751.599867751813 9188.872463615993 +524.6010617220231 1017.3578730976096 +5821.524428180309 1968.924764346156 +3866.6579097322538 7591.836110661911 +4668.643786095653 575.5613404733506 +9264.368307709066 9034.344952551271 +279.57349438932465 730.8242307963964 +7932.773419702783 5883.606421384722 +41.61954547122204 4308.228664379012 +2949.34648678693 7667.937148303217 +3561.7498631832054 7502.870019835822 +7312.723852414957 6932.135153016377 +4082.3354710066883 3255.0518495996826 +7535.653152823462 9629.105611643088 +7806.370059943297 9452.238408724548 +7390.610522341524 1068.3241427650726 +9392.148713470613 899.6058977433574 +7775.733944965868 4018.2595999386504 +9972.87590714381 879.6800413569994 +5556.48140983947 8432.34440249293 +8051.961390095212 2614.973634457366 +6395.460446624159 5210.194127813283 +5732.956034878758 5692.0712179964075 +2553.057732396381 3440.227439116943 +141.0525667466289 7659.961312663454 +1430.9217698987732 7749.4349768497505 +6492.268052417413 959.8109516554276 +9939.2993960479 2011.854168790449 +1591.867453350998 8928.857329390694 +9032.139097843276 9540.065405007514 +9489.983636381601 3869.9938031610204 +9773.333017101902 6878.666042888084 +8597.479796027175 9526.260276553408 +5994.909060894651 5354.736391993159 +6542.466289821015 7720.165405739014 +9777.99052243172 8029.335564123931 +2158.72390427135 1824.8041251704194 +4621.727134172839 2087.466458416284 +2830.1664433367723 3402.4323401402758 +1859.2468198243262 7794.223882776391 +9301.524180968901 9164.423557421089 +7864.164980697099 8045.135421217 +2162.464738047937 573.7635047991952 +1026.791491398903 7371.043021216934 +21.796930095806523 9730.247957769297 +9632.201908520567 7989.062521808463 +4296.168095122477 9599.763928565064 +7508.549975451984 9732.5548857802 +9876.328084534272 8727.479460366507 +5874.63137893864 6217.383773986158 +8637.270439127931 534.4680513700462 +4132.28566068408 8512.887108489062 +8677.810940404894 9219.784687220852 +9588.055249296025 2404.89861255789 +6738.878573333435 1951.3303927434865 +6204.746869279646 9111.367503117155 +4981.932706139675 3693.205993688825 +3932.1656648983894 3787.949920210315 +737.6909622460227 712.3664472333668 +5662.026706044509 3333.4533526699706 +5937.098227612903 609.7397357319823 +9184.851698634398 4164.856095939047 +5566.491181633399 4908.809676047849 +3122.37898083756 3024.770421061961 +1404.6671333104855 42.295258908441326 +493.30217996425785 7211.269964886517 +6866.3518131515675 6387.982541884424 +1999.514900000422 7346.879830172991 +6558.067857950302 535.6988815634012 +9683.055696389058 7147.451561948767 +9741.307504444387 6129.457332671536 +5267.536464489497 9815.270931779394 +9673.89901961807 4274.16130891543 +9447.628478324174 1101.854080776965 +1672.5734908802126 5910.831017628164 +9579.71345716035 3273.3179005777138 +5646.571673668576 7091.901467637125 +1998.6441274698063 6019.356329587999 +9349.997531518922 8177.294336225506 +1298.8044079426797 1933.5994299960191 +3940.762976286175 7349.085236454519 +2371.446809855975 4041.5637199280186 +5461.6887384329675 7936.7908622561245 +6937.439766905938 9863.434944588977 +7282.737217275472 630.1519885365325 +3594.057098254927 394.26926036185586 +3268.295457398005 5603.63691721977 +3805.850131779398 9148.145088669125 +5382.857041197305 3786.868232149211 +5660.552335280644 7990.800805589446 +9307.13271562354 6642.414089206435 +5825.585524159485 9022.47227431837 +5871.863809847115 2773.396852124752 +3622.2388469581356 2898.7118984237713 +4045.745917272798 1507.4925443772336 +7106.378722672247 2876.9199994894966 +5948.161027695841 8090.831480737255 +742.6329704503831 1818.4888288483169 +454.7145785956919 3038.730299896968 +1058.082733843221 9978.146381166227 +9735.201446785566 6248.933988628469 +8748.033988439936 6214.271875774298 +8453.687850160342 3684.454674552531 +3864.8107085443385 2832.630698072035 +2536.247192994354 1561.2187374760588 +3269.623656114569 7372.639873323985 +7629.0267618912985 5917.979279851311 +3433.1393362995123 4685.7785794535885 +10.003408178527184 9467.20306285701 +3248.166711414041 3199.241592634556 +6425.123556231133 7225.9221326565585 +5301.070104753128 6977.856084849203 +9424.585334507441 5934.794522244935 +5563.644725038741 8431.894224728569 +5980.612428554147 2238.0776591414865 +6162.945795109973 5583.034078541476 +9875.713988424211 7772.8185490254 +9589.615692536667 9882.352807030173 +3543.4837230503113 5956.461648270191 +8068.33676282863 2730.772183937652 +384.333157686787 2674.947499795074 +5679.234765744512 3084.080486531128 +148.2994337542798 3814.626992545868 +5437.657246525724 364.4079944901857 +3601.5389162324473 5571.4351071333585 +7546.0161170393085 6984.408259707925 +8817.151308990957 7939.186156031249 +1450.6051669229469 714.4286631742225 +716.199484537644 1920.6568907529343 +1417.4295497744172 359.0739749848382 +8854.74160661025 6544.344479172587 +1699.320544185139 1708.3799930234966 +3948.3976837398272 2429.9801869482376 +8331.582864520098 7201.4054983562255 +8920.56098816276 1724.4949817676702 +2972.430500810884 2872.3385593341845 +8215.447073312458 5131.824843011179 +6348.955851504528 9541.387571290015 +7060.300167165602 960.3484780980998 +9953.65152335101 4995.954928191259 +7125.779215512841 6913.547292753868 +7811.829538397341 1984.5151320588018 +5110.541513945634 2804.291097361312 +3767.165487307086 422.39477659634093 +1539.2331368748003 1288.9226371781049 +7977.474112274331 8571.580165951713 +3160.2175798743738 8225.643236287706 +8799.607377675356 7277.1129776672815 +5014.448805321606 5123.482916753789 +7689.355711015411 954.8195361536649 +5312.678599013433 9051.336072328138 +7062.557081620726 8474.568969999458 +3716.86921446728 5455.415813668286 +702.850898640598 3154.639723969892 +4821.27105276713 1848.9088731031522 +8646.246930424653 426.8950371813618 +4653.933844512835 7026.952164797249 +3395.3324312766154 302.8976714291731 +1890.7016678239474 9633.058998832874 +1946.0537612521134 9484.875319445526 +2527.4535966297162 8327.511114030556 +127.88332273858005 6811.509554984984 +4771.75219670105 8837.14719382732 +3110.8618155545664 7638.882804851494 +6289.954188090484 1918.669797627298 +8258.753052916858 6454.202263693325 +3308.1157342538627 3898.176643279877 +5114.203649786582 3541.294143003374 +1754.999859423353 5563.019736688115 +1775.7582319924115 6285.492298462503 +7980.775507972172 7522.4390606845955 +8548.78774795805 4094.5313302056643 +8891.087344449686 5291.603564491506 +5058.84803506929 8298.17210866994 +4079.981335924189 4180.631627045203 +4708.936749062737 1363.8861266463898 +6548.533511237675 2155.0101716100944 +9092.819461144174 5908.00154323499 +3380.6070797320162 7861.481733211864 +2184.9082877908345 9716.922001791492 +1897.4813064091577 5590.956961554295 +3972.598275229322 5403.575872387686 +646.8336855701829 3759.3051910218587 +2314.5416341006776 7896.388039322918 +1133.7152043910603 8335.284029114679 +4653.734915694015 656.6348092045071 +68.88795755562005 9945.508650068217 +6970.000126299203 3118.8125732895764 +3229.2523476230704 280.3377600219636 +2257.33770361732 3093.8383145843286 +4046.9157819304023 9802.792643137336 +1002.9215093025567 9971.670980222118 +7279.303653193201 9089.828281187969 +9823.037146360311 4648.340573429297 +4389.935012353343 1347.2471278798737 +6143.746207821685 7382.7386698769 +4706.757469067613 3786.4834946908663 +3220.4099961085817 2470.2136345121116 +2983.6545210801714 5356.346868890175 +7283.578153049012 6525.557512596244 +9052.492128909771 3198.619651938801 +2804.5903488406752 4287.60271993371 +6289.168744844097 5792.964272670951 +9613.378715041163 2246.227653860897 +2662.4340342495157 113.55442732876698 +3347.4814763922122 2967.9458507080026 +7719.496053882197 7806.192436258256 +756.8792110929102 8762.164496549522 +8147.630400117598 5607.682609629317 +3332.27856224134 6048.764999006011 +519.5380730964272 4095.565192431928 +157.0944771513083 4287.381425410001 +7866.247420359122 8120.745709925411 +3014.608525837548 4961.380634297419 +2440.3776191281745 8904.516044087452 +5054.7930740394495 7750.206388503775 +322.59672035120144 7067.028411105659 +5007.792094611291 2793.9678948619585 +8855.714621905317 8988.282584316501 +5340.52002213471 8885.32842853289 +3919.813374738095 5594.592703648175 +9314.066459175547 632.930745293242 +5166.391544350413 9661.126155653512 +7132.837627962249 7166.421530719971 +9488.084905367026 6628.176825904788 +8089.3435144175955 8204.124658487008 +6203.7401983641585 1166.8376829521244 +7388.130606584164 5444.731929053598 +3415.066767780489 5125.4143827421285 +3977.589595885005 7795.527938571961 +9364.110095344917 9615.158553064968 +9479.729343829484 3795.114102629622 +4578.900818876655 8359.915799991652 +677.4672842937057 1527.4180538485748 +646.4706511625673 6333.832098802279 +9376.022523324096 9485.879198124234 +583.0244376380056 7603.7025844895925 +5237.151209713699 2737.06011825803 +8729.202697306699 6447.198844745844 +5134.780540545834 1711.8977315808338 +7418.466815697268 6858.390293207382 +7079.656321205914 2997.4402309420966 +6299.9268791531185 9696.27153546484 +6410.185328152669 2681.3841746373446 +5498.135796800168 8296.889143172531 +8994.262752241188 7159.210416425339 +7804.211022324058 9950.76316339688 +7146.837561148474 9069.320278051715 +109.67294186991606 9398.320917151113 +4386.640504747245 424.2993454098254 +9679.14786606328 590.4187137869254 +1763.639105006939 3794.5833349892955 +1334.5150080293977 813.3903784585228 +7792.912985924208 3825.5459080520636 +508.88772695706683 1832.6412712698059 +1587.7965054416231 4844.885415348479 +7487.119864064518 5718.590757768518 +9279.66764303297 6129.053356140929 +540.9635901899512 4209.775178126584 +8007.484051997419 1229.6489495656526 +3980.8231245597094 4506.304961684757 +4328.777081739504 8193.87707346435 +5297.482815949011 4558.801717379759 +2601.2313465739167 953.7616670576166 +7240.634774458654 4166.212751723897 +6753.5042810744 5222.457247143516 +8245.944437993952 2586.4457353080793 +281.0038688389538 4012.1503378293487 +2999.3494749129245 4982.912420081842 +7974.099725081974 9170.94440453304 +437.29620096661813 6129.781415089554 +4225.724150440169 1047.1243435721944 +2907.0950944071615 4027.205121637345 +7568.09470900906 3225.5081370872763 +8441.834826949853 5542.797937250942 +2120.6300920819754 4556.944520079298 +8845.70781690937 4607.917496854775 +2431.5789290344346 6371.335190812052 +7297.297462299627 6631.141194195582 +5829.869227661254 2625.8503497802867 +2939.836517611337 4468.659753857917 +2655.101245259135 4633.866595126927 +3096.977141371171 3553.0778669061815 +1908.4286045849697 6526.881395780676 +4743.86443341985 7127.003158492532 +2753.8668155394885 4890.430643714376 +242.68361954798868 7323.558297611135 +4675.05974734653 4647.474224954273 +8845.293220833495 2384.094396620716 +3603.1152446974656 3225.0638633434523 +5261.835425392951 29.70156789629419 +4899.470138178063 4311.667296761176 +6086.381654427982 3105.4081628050367 +144.70624784635456 9698.909961679643 +692.0860833328868 4367.675437804421 +3559.6922031449817 5838.048775804794 +8412.729438632441 1285.6076546705285 +599.4342265561281 2556.8024337773686 +6603.928079507377 7692.828718170329 +639.8008156298096 8453.888107185983 +7369.848408666545 9708.058377704432 +1923.992702367896 8285.582800169794 +9360.829735103403 6225.769070071721 +7797.610968434015 660.1857951697476 +6453.51414841988 2473.568300488406 +2524.2746454994503 6473.926419630058 +7282.084383042209 2462.8816892351233 +4993.046785773756 7154.013191130558 +6062.27539982767 4463.907106841114 +3218.147645090813 2543.5007986951055 +3060.6501984265064 1991.3369561709426 +9759.04621105436 2666.471768027442 +6196.4485150180835 7995.862035496484 +3838.1706158840066 5712.409697673833 +7079.449645553893 2872.550807447443 +7290.295631036116 3649.108215409519 +3188.678524592379 2559.964229016447 +9619.301781298262 7735.59397089882 +9551.837976698574 6488.4028727573905 +9630.429103906827 5387.661027383982 +1954.4635690895495 4654.223946772045 +8976.71782195849 9893.572942888897 +8992.98722861317 5775.365402191797 +6798.496713005255 8041.269985601974 +4615.895016789027 6528.669346491408 +2623.258416893428 5500.350823128526 +3724.7347973958067 7390.514928938515 +3803.440562189295 5056.796330018833 +439.47724165855016 3518.7737526532414 +3149.29759040701 5739.683357837863 +4895.218371995914 6227.330202654512 +4199.070972886126 1878.4907804869622 +4035.901032780127 1183.7417859588961 +1317.9712921862763 2486.0500066120817 +3781.3869411354317 6279.651433931081 +8022.841595076375 9482.676594196362 +4007.2776361188157 3109.861706205024 +292.44070283105606 9538.838628027157 +3678.5588280707016 3435.351929491687 +1498.228826556791 1783.6220556470216 +6884.2503038853265 3041.9004149290486 +4110.3012709515515 9805.250438214312 +3281.723414362495 7411.975605474103 +5210.880827280731 7134.231343668751 +5789.357745730131 8794.564926789195 +88.6941401423047 3350.968639467835 +6780.541351495269 9348.181696147112 +1970.9117113821073 8122.147584705592 +6961.8424055793175 1212.9132831272073 +5991.083482566605 2160.8790261522427 +2144.335196184256 6059.382860700419 +4899.178335943293 7713.801401099571 +9826.653922746014 2542.077025588425 +738.4795109209463 3151.267759793204 +9648.955746995365 4253.2442502595295 +3327.8638400280756 5654.9516148198145 +790.8395375262068 5534.994955743181 +8975.34328014355 7749.253299766001 +9175.172625348268 5585.377494718115 +5591.166356433025 4607.4631333259995 +5792.711472763268 8319.913272226928 +2409.0323019520774 5866.188124225581 +657.8186638900918 8963.959199626303 +3423.194367704081 7493.235898211761 +5338.797697519897 7720.8498756755125 +1517.276375125519 7596.0775644425075 +9620.413340037036 229.08197338314616 +5764.829132528088 551.5588727982313 +7039.445840161288 3282.431463201926 +1319.1769065348224 3569.9971555106704 +2289.749157982367 662.9090507919843 +8763.479924183315 1619.469518992681 +4297.22813033407 7034.784593375758 +7433.30466949162 8799.01714641275 +325.2053475147487 1269.7519217505026 +6736.9431924445635 4109.705193109593 +9534.601731188788 4617.699074117621 +1426.4528576865887 6288.178679615778 +1179.6843397625157 8764.739495849806 +31.003597595998798 5835.032055439394 +9302.220153572363 9246.803261505676 +7313.92700610458 1697.4147159453169 +4911.509715018474 2878.0978159767233 +5846.667273953932 6231.118715210807 +7885.316422155309 2478.611377191716 +621.0644605541094 2525.785129542163 +5080.696554933539 3714.6895108488966 +7852.762916365588 8868.250273613536 +1275.3874575808754 912.0741825779199 +9696.972315934207 4900.526711125504 +8121.932183271519 7497.102332445721 +2400.4399462729984 4964.021194363469 +4468.346125465518 665.0879510128616 +1880.257800479941 4938.113501482911 +9075.016084470908 5688.940308515827 +8347.4191614586 4946.219977162272 +6576.377504300965 2232.6803347613245 +8565.396216658824 875.1237179493098 +3579.4896200295602 5019.8793081522745 +8574.378766883428 2714.7614885979765 +1435.0024618139944 7150.000986727272 +3841.9376782831127 623.543943410737 +9620.964317940428 8310.763588160802 +6861.31010132324 5493.397846362429 +6436.644929069508 6094.000188307389 +7286.4145481283485 3499.1199140639096 +637.3113319461987 7840.153961149104 +3222.4101101907 7964.395642510744 +9087.653093751944 4653.051793620333 +2446.08165309252 2019.9614954834221 +8803.904241295802 8897.948917564723 +9960.827253104571 1504.2909863007037 +8660.120096259876 7395.939058501205 +3097.6013055856697 446.2713547160069 +5866.731825116419 8822.279330343232 +52.394926154412104 1482.1457235048663 +2443.9501650541615 86.88214458633881 +1985.7873511340563 5322.8580503867815 +6929.626002390272 5628.151742347115 +7159.105609047598 4422.073716150884 +4144.512318628223 9119.916349125997 +1161.1236870653474 2087.7776864011435 +9388.196873851964 8912.401648360494 +4065.7141859259673 7917.0689486252395 +6418.666451954019 3378.9784586972382 +9892.426872990458 3987.6975495496636 +7282.66510774941 245.59853303176115 +9259.629800327635 743.3028059794633 +3397.2380894954613 7390.442851724331 +564.8015742789858 2648.23649556992 +2129.4262461304847 3355.4614165885155 +5458.748252163993 7770.236487179838 +9103.555947654002 6978.221772297541 +761.1534062709579 6353.469435781463 +568.7023275457037 8877.198215752025 +7502.877018647097 3722.1679802244403 +1381.4887324357771 5420.967177342596 +2384.6354613375966 4239.530447635389 +216.2457968050424 8249.668333228148 +2118.4148765661103 94.58489043213226 +1789.2888410218366 4589.948113505124 +9772.018804016861 2559.392037710374 +165.54419624707273 8791.11731122223 +6167.581020951497 328.7200740295215 +442.09831332582604 7559.484502323358 +7856.387565635876 9528.369977506782 +5674.980637857822 1627.2248812845014 +9688.443887649286 541.7026402950409 +3640.566748402346 9668.168679339431 +8411.508627461775 771.4860515236155 +8681.2994936307 3926.620875650344 +6425.92937073064 9174.2001153665 +6633.438179862462 2104.094444722516 +8651.379348286839 8974.49983846725 +8936.288478744797 4279.2613307463935 +4703.184532145213 7917.071065878294 +3517.7815972115877 767.8522613709426 +201.0261111217948 2778.005363646393 +9415.54492702376 6100.296337802509 +2748.217270393122 7619.14475162352 +4978.310320422516 3997.5704425972035 +5105.551940554475 8240.574882364745 +4033.6611527046907 451.5078595639155 +7541.632013792479 5646.07383260683 +8897.281637063877 2374.7314593712877 +261.3867894498534 6393.663420373339 +2648.213641489738 9197.580458153372 +3989.733384619034 5126.173852257838 +6814.468416031277 9741.306431581848 +506.8514205210151 695.3621915814134 +8144.438934967172 6516.488003219545 +1573.7445399874339 2137.3636778160876 +8820.551557035153 7247.049035011728 +9401.23126615087 3782.7515316211156 +443.7744473557337 8906.236994098994 +3276.793708385638 6761.339426865232 +1992.5362179483086 5865.767288356252 +7019.7129609639815 5552.216947953914 +1099.655009282159 4175.377446925509 +9433.271506583771 1857.1966486764136 +1345.580001044877 2894.3877213963565 +8308.905009595197 4963.323093366428 +9458.085192947601 8854.430313171455 +5473.334013364201 3438.858568699561 +1071.3010806377865 4268.4295102690985 +7754.402593853997 9005.480879408202 +180.72077794902052 1393.518115962703 +5542.17021852078 5484.301788763794 +3697.088555055492 4045.8592071800713 +6431.441423936693 8198.119508834377 +1686.7832008440187 4312.854106037469 +8079.688973226918 1646.8400138518923 +7279.57072246287 1955.7256775891462 +3893.7712762914857 3437.4512908047973 +56.43168002687271 5027.336627027927 +6605.06326537584 1261.2827890702515 +4961.237290558272 1331.7854221753023 +272.7760666638157 7759.688068528941 +4624.012797791374 624.277189230007 +9833.81270586113 5671.708388423597 +4301.007970302861 6854.6594401732755 +8307.931255657113 7348.97166252556 +6369.299900016411 5560.985722176593 +9157.357994532475 6422.473741165494 +5112.780797762949 6526.056488457575 +9607.790012739444 7703.989464678055 +8861.704369767303 4758.693065477178 +4164.394912426255 9362.070213581626 +6203.021976253525 2175.984397687819 +7823.505090606062 9178.589983310987 +6878.494272090497 5112.779133156277 +7296.747239593652 9158.248299859313 +294.3677984422577 2151.128417331587 +1909.860329157994 6499.480005731955 +3066.0442675530307 4169.392848564009 +5324.237621568722 3414.2921424005026 +341.2733623406927 4976.914363479431 +6842.139515835463 4862.404095515809 +4865.676175002543 3280.380115435404 +7917.1798523942 7039.578303307356 +860.1376478179046 4913.823531810538 +2785.658776890324 6498.671478294477 +2407.0034400164163 5860.890917026005 +1862.8653818412356 1654.8105195426465 +9431.007652020426 3176.051693292592 +2285.6015607898116 7335.044596321744 +1893.513293201584 58.195248397860944 +9220.413052111286 2975.9333427988577 +2297.863918645715 634.0778032200634 +9514.884722070383 8163.216974581378 +3229.9561677426536 662.1851741433549 +9119.086383715272 7680.025252121787 +8377.741598384835 9388.78249475484 +1046.7909802021625 5014.839694476977 +9762.325102207775 387.21306745935766 +9812.65625910974 4320.835747991745 +8132.49216074567 6300.221867326845 +761.6510032265722 9758.179708242173 +9709.850685186986 8371.804742200758 +5454.4998326647965 6419.161616224658 +3500.0535830543336 1601.4400733273294 +3761.934179415182 5812.131633430427 +8904.179962458405 7743.497197199941 +8658.54521999805 4140.95195941024 +9716.26649263934 9924.788127032496 +4579.233701232312 4398.971415092982 +2287.489045970887 5079.125310314222 +8478.909234092467 2103.992252980311 +3784.79978639235 2772.2386348706327 +2171.4732784799594 4147.269175277977 +5221.111411950584 8942.876649970003 +330.3823969274966 2984.4036001068885 +631.9242184304175 7129.986628803943 +4270.064832874851 94.49668772685493 +9268.341913150001 4193.681480801719 +2716.533054450314 6831.238737377718 +4463.050910583453 4232.765983710976 +966.3628050150064 1057.6188142853227 +9418.312833350556 3168.071402804691 +3290.544014089284 8627.122060000434 +6569.973268757838 604.7161981443594 +9275.407031131499 2077.651003955635 +9169.697487692587 3995.4904875920015 +9442.7456383428 7368.495838609497 +3423.4597213439256 3218.0750923330147 +218.1611078694723 1004.9622734009522 +8606.99225166657 4622.640323751192 +7627.945372068532 6074.326803286593 +8454.318238726906 680.1782924996036 +7892.2277930288665 2881.1611160824036 +4392.913326601233 6062.60485498863 +9307.05363963424 3894.494330276684 +2243.8665594537933 4641.057729801633 +108.63602111382153 826.6724727526409 +1625.6021331932125 1971.1071916196565 +7566.498291337334 4480.783904714332 +3414.8275430667586 1591.225897613292 +9251.196586920032 7599.462097736189 +5430.999822688066 9284.491736364085 +3934.467735339373 5309.269968446542 +3472.617359057122 8151.1531334215115 +3715.7042658611126 1401.764356706021 +8818.159186353065 2732.4476759949343 +473.54415949290353 1617.2298675915386 +2716.1260523292576 5760.818106497397 +9957.348529868907 9748.657024946095 +8143.699994132302 6827.317486646149 +4910.45183198907 1430.4882224320936 +6544.103289633431 8206.343592484107 +247.21904571338382 7704.636057676388 +7388.772978178163 7166.568868393767 +2355.667685669013 9392.910601971716 +2913.092001335752 6182.423536330703 +815.6533896316032 392.8677708546446 +1072.1057185850402 1068.0451001614633 +2681.1762814757412 9981.121503345872 +8832.373685279712 2760.325130229092 +9443.918158035567 6350.955704617354 +4645.0784382709635 3521.521758468207 +833.5122547507601 3915.9609943528485 +5568.7964386708345 9284.504298715316 +3963.9280967943005 6982.267546651654 +1547.0225312459752 687.898152728108 +3755.517771902638 8157.630331168117 +1056.499275041418 4705.805281456391 +8533.619243475841 7478.653639841525 +5505.413045673097 5350.412915999813 +8984.241099762508 6822.472585192293 +9635.870354826786 7720.097063487155 +4241.850156406751 4079.8351870290517 +3506.248649310898 8491.734217845364 +655.978907511352 2685.6470248197807 +2508.842348780964 1198.6133282112232 +6120.429943896341 9038.04617324059 +1752.6387964132318 7056.505431880096 +725.5146860932482 5478.76935086444 +1681.2861622373232 912.5280465580232 +5003.951974414916 7586.288063014809 +246.53938535298957 6567.31488194832 +215.0383334399586 1311.765687646368 +8782.122031006875 3646.181127935616 +6095.216893348467 4633.470968351845 +7643.3135504887005 4533.137500776219 +6381.935379322029 982.3677169306 +8631.728050123706 1890.5890235372624 +6475.115069076946 5829.162447333491 +1748.2762206004 3215.9927778241336 +7550.207956465192 3891.7120465361068 +9381.524005974316 8690.411760529045 +7672.803895882911 6986.620975565464 +9566.920679232797 7608.995432345355 +1102.2378768310602 5700.297470977337 +6343.658404364126 7470.3417728851455 +4223.138997480709 3605.1021376666504 +1449.0810385916907 5365.0452617162155 +3826.4136171151677 1217.116454460122 +1283.7676066016945 7144.991381701085 +7101.077525435448 1712.3717802892413 +5068.350420333154 2831.215719780912 +5793.645464809034 9088.895820985861 +6197.585935990199 8658.360772275899 +2433.6523350042385 3851.7943275481757 +4031.9350471702974 3179.783690117577 +2209.5452444508046 3416.013697309714 +9006.574442712785 8692.903657385703 +7080.902203997851 9410.348188600085 +6969.22864201034 3654.654370403927 +9524.793428180326 8094.148791817543 +1188.2808336264395 3902.427045946004 +1725.800849006156 7829.155906544642 +8863.30420764531 9580.462090196097 +7215.367977041767 9087.490289461013 +5804.437976643153 8868.413661154464 +8635.624277131557 945.7350940406584 +5101.411116706942 1566.9533958166348 +3816.064381625367 9918.429472746773 +7627.948531304201 4703.259324761768 +2208.571519568606 5711.667628459082 +9462.407883844617 6235.109960689162 +4899.2259388231805 3020.7570500550028 +2712.1756424792907 1797.952896928866 +1919.2596635984105 9036.555290971539 +7247.765615971441 2710.07518036629 +834.4377600590658 5701.12710966547 +66.34835537834172 7641.621373917254 +4201.486856179563 8782.086924542487 +6120.5060501442495 21.134533156633715 +6260.669501752915 7631.095834714756 +990.255532953902 4413.816214207103 +8457.080236982507 2148.3640017429884 +5359.367471911582 8175.0251090241945 +2872.41158074526 1546.8500997796996 +4157.65699110881 316.73847377969963 +2195.3099418842935 9998.498479370368 +5683.130277415541 58.66840106385274 +6712.741203908244 9847.391607665013 +6450.829109310988 7667.369289309466 +7954.115636482063 2941.013677278761 +9828.233380051472 4937.887720670006 +698.6871302702135 3401.4969388245177 +7241.551372023263 3098.0196647295775 +6390.785673784912 6713.5136781669635 +1549.3903302640745 1250.2631682974775 +3955.2676042271205 8400.211114341388 +2295.192624791318 2357.6268275948973 +9010.977383962747 7096.031397350165 +6666.270879235585 8852.28343234244 +7797.512827745495 6094.06981230476 +4448.345862281013 8680.766104888902 +6930.5367833691935 4296.361460001782 +8554.969021184901 7548.941498362001 +7957.932102764205 5781.370123752165 +2411.4363567800747 4812.591807330195 +9834.329556669021 3878.706236456142 +409.72655615909457 6978.094404470746 +9484.40301046891 4337.543957408977 +4354.274461791786 8795.362056494347 +2394.9547727997624 216.80631089054714 +4728.673344846466 2281.058549206687 +6982.113153773299 5236.596523606318 +9560.21822779539 247.25068340188616 +7200.621817550231 6853.880552479913 +393.69830315410303 6442.02341397713 +1102.3948950121521 3616.655757616325 +6153.751841653273 1023.7653124297341 +2190.2851124371336 5726.359068856629 +5464.166147739752 1127.8336278003421 +3126.2674504303222 4727.939326135404 +4589.737420099292 9121.074958601106 +2882.7143142643417 7998.459846548994 +9419.547610775708 3916.7147728043806 +9360.734040136345 1850.7996757563483 +5034.523871598957 1513.9305044381456 +5690.935410428388 3178.8600636614383 +7819.053295842778 7206.385767254909 +3978.139301703892 9054.334236142115 +1709.0998734370344 5145.27791906592 +5391.2654037092825 3028.2029562803823 +4985.144097397346 9746.03813829511 +9315.038254237723 5547.164337342445 +5504.48001249129 6844.359257848956 +776.4410304744529 3865.1275864561317 +2881.340949712732 2724.027118952028 +7146.644962570853 620.8272347997101 +7483.6595489257215 7431.404983386414 +1529.0222436014756 5771.157173014165 +231.37909687293566 3271.089607138995 +8888.465001470826 66.52155967534989 +1063.4867236125501 5346.072514626478 +5691.919741291987 1703.8820985127034 +2238.6804723717823 4654.487955316876 +7673.240898606569 4141.918863516362 +6665.438765198532 787.0295588977039 +549.9823670712611 1174.9537349134687 +1503.0360970968836 9677.855839502272 +8944.406608485313 8826.25030507883 +5099.787514769657 5456.180904471124 +8339.92053860757 616.5623370757701 +7173.026470546463 4621.706775470215 +4103.094677284021 4722.909433639894 +4085.163326081691 4290.335208631375 +54.84982462952037 4442.540163722985 +8466.605362197137 8591.80041301968 +1080.9679616247035 9421.424953944397 +4060.3883517215254 1543.4643393418778 +1981.0977268874185 7815.603536338327 +5131.053277384789 6398.626446561606 +4126.529105242752 424.47510314580273 +8277.31011885872 8165.639059092294 +4890.776187561722 8984.06129888552 +4768.296325681387 8992.213518109167 +1693.6141110030478 9203.54923476341 +1861.781023463146 89.94030828660793 +1491.9335290458434 499.4170026359257 +9311.370538224473 129.40112369352886 +2461.8227090996456 6027.3367001040115 +5006.108350682991 7831.300709590349 +4959.049580239141 2408.6280949283446 +7574.442015856899 9461.203246174262 +5970.067915714438 6618.906532555825 +8893.4857066756 5124.665997621478 +6997.388695992586 6439.820274947769 +4743.2115664344665 7618.517454618024 +1543.5978080978618 4442.913952859183 +2517.5329800433988 1313.9550170627301 +7879.733538025677 625.9046411308744 +4028.0181218365665 2441.7327088961883 +3505.629932054163 998.0698463602433 +3104.045723382426 4501.1732190165885 +7546.665859684341 6311.402931163306 +527.9920315445752 8560.533957591166 +141.04993935706855 1008.6155091654725 +616.7750554105634 1231.4557512534852 +856.3759707638375 7842.29240836076 +7088.497212733251 6228.083003388024 +9088.079093464328 5365.277229162798 +5080.613530274917 27.543731873908015 +7284.016371672214 8127.778233115416 +8353.265801717784 7170.363438370633 +756.6493773898931 4114.325332705746 +962.7806353186852 7308.589721629798 +8959.724100970452 2182.918797926661 +4508.241080138947 7275.121523829009 +2312.0949127465574 5653.950304401096 +9713.496095164928 8475.976249231046 +929.1608818227381 9273.932787035164 +9648.258811045904 4557.920762230377 +7029.713097145942 7488.1178398034435 +9494.156562266644 4878.155020683056 +1363.7505172415943 4369.313536746692 +9229.807157949828 6103.510075046349 +9827.814043847256 8864.801332147988 +3825.883792563125 2995.7075830646986 +3776.354639741145 5162.1257387323685 +7411.661953124916 6283.664706219055 +3650.6164419158226 7736.070024644779 +6724.237685226368 8326.539213018094 +1326.7412307523418 6926.46021606693 +4687.164891420655 8518.37950584017 +6403.561481351402 8929.644449120833 +6904.968875867124 1864.1209229601618 +3230.124879711255 5662.784777332672 +1196.6822163942436 1796.229145332583 +7063.207147743079 3509.0246751610252 +6759.902029003493 5824.633519407498 +9221.796868808382 4405.388171577141 +4861.616424300593 3209.1310768202675 +7620.379563062735 5668.20826833558 +6862.077054752358 6325.152392572874 +7192.394132138658 7951.539776480145 +689.6441903313777 6886.450870890679 +8946.938475675746 1266.0608156085561 +6732.703269963419 5673.2593760339005 +82.11390824868215 8735.00408143183 +4321.703142830602 261.90535026645256 +8410.733719927679 4684.438124529821 +5823.808836223016 4486.2124226984915 +729.9315955193475 5059.01096901961 +561.5847563994847 6522.104853933151 +565.4828607703965 610.4398331504901 +410.68620348302943 2440.43269534147 +5909.776540192014 797.3773508728243 +4959.719641635725 1343.2879002621312 +6403.413667317673 2007.0070509902926 +1850.6175313213203 946.2674504705293 +4778.498514621759 8661.610976933298 +4244.357780421082 692.5360081383403 +2765.4404617294117 677.0681469349315 +9190.593970635146 4120.49122314167 +5963.649929161616 5157.676645392398 +5931.483321622375 2222.5631774660314 +8161.314115905389 646.831877365488 +882.0775989531015 9556.168244963766 +6116.311560326164 1629.86279073964 +5501.422469933187 5297.394668262331 +7076.838760802701 3006.392180600922 +3933.3754022599064 4964.94544283756 +340.50663839416575 2413.1811204555574 +3689.1937914863724 7807.427473366386 +5332.77380026099 2713.1689196637985 +421.1753757101644 5471.005809254927 +9952.850809219502 9498.858895678566 +4856.491419939026 3155.3289654583673 +3210.065776466479 6213.3044101539535 +9322.980519710334 4349.694068385268 +5595.779488922119 6658.184266381435 +7585.318299262317 7955.923077535272 +1191.7736093717467 1995.74326517881 +6730.128046905321 3269.5041288899083 +6914.12744620684 3298.7250798002756 +1821.9503586610442 8780.239025719258 +472.14874715454044 8359.455687531221 +6872.818467936262 4907.077075223187 +6546.385586382333 7146.299159539095 +63.67683193050367 951.4389438729953 +651.303047127848 2689.585392188311 +8178.238802490349 8750.386140567038 +9552.130285379077 1751.7716772591507 +4778.4052142950295 4362.186636846014 +9394.171074794469 2225.516595435313 +2230.9684972816913 3991.58211073836 +7404.4975737008845 7236.316555938069 +1957.7361630445212 1741.0961121617597 +6302.389323773854 9108.911891094634 +3135.7445670697457 7926.7742948323585 +5050.543225099455 5956.44329982083 +1694.572313547529 4072.7305693927096 +9577.612432150037 3801.7404090349505 +1053.0696923325834 1632.6596060710285 +7921.19506928187 9855.76319365538 +137.37910190319445 1279.5319650473637 +7329.350584182216 4868.625187091856 +7021.215027407825 1912.1952765885853 +4180.683849371286 6916.608408314488 +5743.135050649421 4637.337648172862 +151.43474036872882 5681.385313740531 +5147.250385211667 4644.609415818073 +7152.627963810385 6922.071660110774 +6542.814780814881 3917.7726054473837 +5559.186922404147 9746.875853800397 +2561.5385074904607 4740.648060346063 +6148.398448248176 1453.8814396150813 +219.19425734311827 1760.7282573376183 +7646.491477707281 8902.866787213377 +6407.46473456082 3333.3386999767476 +1130.6205282280491 4768.104081492902 +1920.9771917430185 4797.934788907909 +2836.649535381479 4107.569601286886 +6162.659344885729 4624.475065278437 +9653.446010003838 188.49941102454414 +6854.944534276384 8215.708004103803 +9269.908756814277 4308.447483226403 +4537.087903024138 4297.148134276029 +217.8586348029865 1009.3843365380295 +2539.427438088622 6477.529068099092 +1898.3174534363723 5539.894170244345 +9188.909830064436 7117.527080071848 +6726.428251653342 3890.24056648663 +5258.459296084575 1230.9398648325043 +2560.6851073428015 8452.111211930329 +870.5542549851475 6588.511916302501 +2809.5648834053254 9245.485830926084 +3597.0700696767944 3901.2103050749793 +7862.208075911851 649.3543447752326 +9281.653860459475 7348.07488141211 +4367.464426713827 1985.8345515239173 +9023.54535383362 3742.92811170546 +9885.190088578249 7491.288635201614 +4622.246106215545 8997.604803777534 +262.57656737602053 8543.87076897752 +4339.417173966254 347.5292148417608 +689.7676868810931 2852.650946058032 +4986.575191930126 755.216914556559 +496.45633977337565 9258.668257654313 +9784.296487269416 5046.122312425998 +91.042058974371 116.95367060397865 +1002.9906822982182 8521.280154954839 +9103.053139603837 1252.6771473149201 +9057.20590336502 5601.653739718102 +6173.652377765317 5067.719305097234 +8765.054163759913 6519.6925282002985 +8258.832754548308 7523.331785186083 +8671.24160297058 4733.348491639892 +5120.397478159502 3815.469715473002 +5695.471962499351 8113.948039711414 +9171.22844522661 4171.529775032295 +2948.3501405075663 5653.90991725898 +4469.245482174142 6979.642477762026 +1931.1804455175686 8535.75340488728 +3665.5704359461292 7902.186631414808 +7937.633422862199 2854.116207464672 +1594.1570462565091 5034.853580007052 +7882.910186426415 2653.085935987879 +9458.176585661411 2222.287168288822 +3753.175520336427 5116.226044876705 +815.8486685063526 2494.8463741306746 +7786.285902248003 7605.31824395686 +8389.438136916808 9217.324521084685 +1377.554816254959 3074.0908505432117 +5310.259055360266 8302.08053056612 +3412.1408361829176 2580.2800614807406 +1576.5051773637417 3804.727226341207 +6804.230440900418 82.95156170648798 +1102.5532148604366 3466.6133137890765 +5202.5790874432705 8308.569110447892 +6151.485783396606 6859.096029071775 +8898.100977854514 3618.8962678195658 +3749.8672000589518 1769.5148974946185 +6874.214171881047 6871.218922137135 +3745.7161220258226 4548.817661871616 +825.3333245684946 2009.1265347783649 +3320.4848690403032 4669.880901498878 +2409.503048047028 8616.036403073998 +5448.067806683765 1887.0268888375297 +1591.8947962683405 1071.8146784658888 +5874.235574094184 6816.634327685574 +8739.791272665494 6670.233362901865 +6849.428544562115 5244.750600713091 +1938.8579480216738 1993.4125993146545 +5346.439170347729 4945.662079145674 +9513.260384785848 1874.412433339654 +4539.529623679123 89.47078067905845 +3991.087845651894 9371.193174667527 +2609.388831193288 9210.360466476544 +9987.478509486325 7200.54598334561 +7249.9356123355665 1102.9361999340226 +9103.608332012407 9788.111984902685 +7066.256902156014 1023.3228707361797 +7881.572743245237 5789.1518553573615 +3783.838834721771 9674.995629717798 +3814.762293247739 9113.502015876385 +8559.408286992331 8684.395567642103 +84.61920371541254 9279.884710233777 +6396.095125807907 1184.0084973536013 +5270.907378532437 9647.127764408167 +1737.0923567056595 3132.755900929207 +2924.7630151739677 103.16152935441303 +2737.4838995985883 5143.371777041482 +9530.413422408174 842.5818195019019 +4304.355043026892 2398.4834609361083 +4847.924158571989 3419.632892413196 +2817.145918524869 5483.143477495177 +9820.379445023711 4157.606041635038 +3498.5914122029026 6457.788169035484 +9729.933608770656 6289.135319952357 +7179.831290750739 2128.40944530267 +9563.057974409903 5588.843488897075 +3302.721081707043 5012.916655738954 +6453.8358135278595 467.74821440091597 +5116.278026307423 9657.763009316664 +6454.963377997685 2679.939039562268 +1957.031788183622 5438.269539872443 +4329.42170146074 5090.4240412552645 +7628.877096023159 1111.466967523257 +262.36687108618264 8679.647745165057 +2551.627692772962 1688.4818990139372 +282.688902231798 2198.58356598605 +4583.554885676009 6312.02051181875 +9760.701509380031 560.6082550040892 +4775.375470085525 6139.464110887074 +6417.709719269133 9268.203127311052 +2859.760765799143 1778.7179823800902 +6024.42572050509 6585.350462667293 +7208.947948742194 4987.311388019236 +250.8067211131848 4081.3390580433993 +7750.013378297262 8961.171191429934 +4084.80046336665 8573.118403946391 +1463.049944702045 509.89180224087494 +5438.022984121632 4005.504535347816 +9439.728090550892 551.8230168838923 +363.89539421767927 1917.236849564238 +3968.645248809111 2425.698819939347 +6941.756636978647 4011.5541615815455 +3678.3363156221462 4997.603610836376 +5623.079864686006 3789.9283191839086 +9288.323919821358 8572.48580271883 +6031.576711555525 5385.097747677309 +9554.475715690636 4677.956405242575 +7608.4998621491695 6207.2255183732395 +8310.796606600748 6143.172705182226 +7558.118800713304 1754.1845286199941 +4027.390698849993 6029.593519008444 +5182.74268092306 6156.327150006939 +907.3453466248216 7219.805224837504 +9246.371559047106 4090.7956884896644 +67.41728656037726 391.8308155110806 +4089.8567459830615 8747.511066338626 +5441.8969540489925 1738.4739104203118 +2735.234877944166 9082.237192004295 +8609.72376015002 9831.568057835304 +7821.255787520197 1771.1604384364166 +8913.934433175593 2644.720192383807 +1677.251707999926 8261.06289647958 +2459.8868110244266 709.3432801935462 +7455.3174490680085 9540.217860328787 +277.0096901852792 8662.631391485416 +2695.524655627225 2424.5853399225293 +6479.576532974897 3760.4403102346805 +128.35143459913323 7173.551405081456 +9834.06455864601 3771.9686130938658 +6492.295158727589 9053.951820045106 +6861.48523444126 210.184201058351 +8493.811104531715 5876.056608121101 +8351.111888206948 3677.6482127357067 +2175.0378635215793 1433.5214086187898 +3002.8211621278524 8029.850880377773 +529.0192056600806 6459.177401129796 +3990.105432651492 5422.294943431336 +1464.0007094379137 1530.3481124035657 +580.0373903485934 5330.530070313279 +6977.967583476421 3948.124929903609 +6011.152581813254 4479.981201003068 +23.55016387993181 2611.540979416391 +1744.632256769778 9361.917658658676 +6579.696861434188 7197.026726235429 +8815.958061224599 6198.461032857232 +3424.2824286135265 2103.216092387229 +1063.5487672008614 9769.76743522669 +7100.984571888444 2150.9429032430626 +3809.671338176065 3553.9882817222847 +4042.217887561255 1206.6479072737468 +4084.629708186057 495.4158826507571 +1180.6258936417269 4779.732313994093 +7701.16335500031 8240.486930508969 +8715.345554093983 6003.0581163149445 +156.96270530600964 6718.54533774356 +9582.48693180255 5952.583258218721 +4547.151313772121 3406.82929544567 +299.01529937107154 931.4228871294938 +9552.289322078639 6920.49830813269 +6518.850167772893 5463.472355492484 +1966.1209959258363 6056.671535576546 +5393.895632209509 8216.762680510481 +5159.3842593416675 8560.18405734028 +7860.252716759502 7450.176664395787 +3683.182240456182 7367.394037771414 +1214.4681343998752 9867.12732066795 +6521.181044161508 5720.134005266636 +2218.720323169003 7987.394519316913 +3180.5108392038296 4333.1445326901685 +8952.735035168655 8278.131956716905 +696.9419729688764 5485.48207191866 +8507.735956638206 8220.281650103414 +6664.560915094784 399.73330886412526 +1051.8836225388573 4090.1988897931883 +8705.826976554205 2252.2360045935175 +719.497191911792 6809.097052067154 +329.2824518868187 5279.922012548671 +1006.5006509895646 9672.736929138382 +3401.579698741155 9823.295971708738 +3106.6471193253797 6021.7746775483365 +8619.183395866457 6621.165279517639 +3400.0800539381303 3555.154032510377 +9953.715107678217 6838.256582069477 +7509.656608269778 2567.837016270047 +9040.252326792383 560.9737038978491 +1400.7756765480005 7022.536185934389 +8626.665984997046 8376.76916098059 +8396.624655800842 7556.4693342458 +3510.3908875556176 719.9382129750553 +5096.934500995346 6677.208411699603 +4148.428077126554 660.3485737035908 +7759.1945712295 453.80069825066926 +1843.680267509753 5058.931655642259 +3062.5941029635296 8388.982609597031 +773.7604764392414 484.32700127133523 +8709.637057707703 4936.220187268351 +9237.699683902212 8684.881505192812 +1549.7069266445662 6328.889318612988 +3290.9367881576236 5693.613891821959 +5843.065646353899 8642.259561606697 +9183.997337132114 7236.781238373475 +6167.77301361497 6049.759036007782 +9079.09254781463 6525.101153841246 +8883.589864963456 3736.3698695765092 +8309.912543800212 5774.591415584831 +1864.3794518438062 5250.95247024714 +1790.2848818513373 4568.504320881506 +8848.468345290346 9701.502705887606 +2021.9426896756365 1345.5462756849201 +7016.292718895904 1333.6101367030117 +2393.1075621934574 5153.014186024828 +2123.702614810452 9553.764223768048 +3005.406148191938 9996.099049905619 +5848.527902352187 3353.534692136444 +9857.298823748319 3752.2396484601927 +4127.9641899977805 9306.918905561724 +4843.861084828936 5792.927485547615 +6902.221227273169 2466.110135799269 +6545.22276732539 7286.156180072377 +2655.1699640140037 3438.474570725859 +4241.956789355956 2175.2002610162267 +7429.65824193215 3863.5036088386687 +9966.663415389656 9561.148503276552 +3141.5483445649606 1863.161357583508 +4918.514372198656 7935.487702912443 +6596.188891084047 5797.161641832273 +3754.9788685350627 8107.4904780167735 +7219.347750578046 799.4793265405331 +2242.3933656012387 9505.07984180541 +3718.4985518755952 965.5640882168725 +4781.665780307649 9255.92853535925 +1687.8143026599623 4092.355046821681 +7013.472239026918 5061.004953941806 +8275.842052951677 5857.337745712577 +5075.154569145346 339.356290427304 +4245.121665082472 8629.194361394186 +1679.1515083051233 959.0042686382361 +4570.342400739927 4461.567422990654 +2686.61635744335 6925.158500692302 +5201.6167495983345 2450.8802452141854 +6890.729398252837 2308.9980148502264 +5245.011977269257 507.6537034217232 +324.03693382841993 6191.146427348659 +8601.617227411269 8943.850767984473 +8742.777845373153 4687.2569657485365 +1502.3726408920702 4237.6006327272535 +4144.829706305588 2913.8644170534644 +7801.540310518198 995.2991743666429 +9238.33909497584 3966.841828056846 +5353.297417838703 3508.0143612284965 +7102.355754064624 354.7969401487372 +5567.8023810162695 4930.703121603738 +7726.449588512093 9661.541164107659 +4614.926340626562 2164.617953898541 +4114.181820249368 1635.9407637940626 +4102.891005781608 5715.621274503362 +2877.831822436895 3709.470074921708 +5529.526892769379 7352.975784043023 +3179.795840597306 1346.8600791540098 +3296.8053763850935 159.66979519863256 +9810.207660388112 8038.887141353281 +792.9083928282843 750.7114480995747 +5671.638298687974 1088.6835551757802 +6052.34035633128 7811.194182488651 +9157.891920616525 1010.1374970146803 +7849.758892368885 9054.391061377213 +96.27757215939891 6777.996814244552 +6914.710145485872 4244.54221344537 +1369.6457738465306 128.07888916346545 +1440.669513974697 5874.032501106153 +344.89191960589085 6388.743760359285 +6997.945955773967 1852.5631038162483 +8211.89110605617 2064.103021585836 +4718.702643727296 6999.3184804660905 +8088.8705803534 1308.640267054606 +4895.075451036387 7523.235770558347 +537.8876275455046 4084.9785623453618 +610.5732456942503 6581.2562486660945 +1158.427223216002 9131.838072921522 +5652.510637102869 3546.362271238426 +6385.7113432924825 214.66125335842355 +1089.534373432809 5244.177878979012 +9149.488093077933 8707.091688203871 +901.8939652015823 527.5263022760423 +8214.359160490196 481.12325817735166 +139.74796351108654 4636.002622925112 +557.3233469212669 9978.091310431097 +2606.2685043520773 4793.012981331315 +5990.093099071171 9945.912825990032 +2088.132798259479 9532.735136759855 +783.5508151001136 7411.4174890367 +5716.419363596524 3307.352574331074 +5673.714038137165 1504.5049922314747 +5482.12435989261 571.3567933870356 +9133.065953867484 4048.010329986197 +7190.99845593629 1812.5132080739693 +8872.067409996027 4739.75129806368 +9925.492903946179 9902.70854431359 +3682.1602443636757 4579.46175730222 +7583.337292877604 2279.654858545884 +3481.554361412982 2305.4434731233896 +9522.864164605026 2672.1199335324354 +1134.4473446430613 9118.193898611746 +1484.422395263413 195.73630928195308 +4449.058265554886 3354.3931116123204 +9360.730556579758 7068.157591890636 +6511.260004920781 2183.3232360975917 +4700.67532129634 3732.035801969463 +6038.719633859758 8162.757486601639 +3997.488544970197 6619.1867503825615 +7336.757498016465 8347.200481388905 +5142.513242333756 8938.29948635519 +3651.9631360097305 3336.3176548851748 +5147.513225233604 975.6725258730081 +3794.164918053843 8902.677260035876 +7430.379151339871 1927.8272201587877 +5743.42882576028 3750.0101623472883 +8467.918096950847 339.7482413008557 +7958.09262254875 1970.5079193198903 +4182.646707774884 5200.89357137616 +2852.6092626502264 7093.804999057851 +8986.908787088789 1369.069593612533 +4306.925195864209 803.642128788773 +324.19311346527314 9704.025713779993 +7122.803072665325 7300.740041848446 +4943.82012257521 2123.0023712134307 +5107.704634952057 6748.796725567663 +8178.3064740358495 382.93485954162264 +3043.71132187084 3527.8711747141533 +6626.962970835859 7753.670831769012 +8607.97713789059 1376.1941208158623 +5164.597666245534 7123.956808678159 +5686.088990749181 5198.1484028120185 +9987.187599789504 1623.0851844170147 +8741.983954957372 9514.725201317604 +875.4293250163403 3308.30996153352 +7472.021294706401 9105.001638831902 +4104.992253600821 6715.902825953476 +6796.219196205348 2526.943706449247 +1057.775003788316 4736.284938166905 +7887.462189580411 9548.31943008705 +415.53404997248464 2444.5878041749647 +2211.102133639032 6871.708194298493 +2342.686780089086 8088.054179329871 +3877.623825539889 6436.593260814043 +291.1212535624907 9906.18714709303 +5499.985646259552 9590.055834779621 +8371.825685490105 2454.017719952493 +9821.36852923505 359.2540616119355 +6623.652721975967 3971.6012029398075 +3495.924512219983 9459.556915392694 +6635.126612639901 8200.02198645554 +4441.217590552988 2921.3113602026374 +9416.336806657308 6479.7775920087415 +3264.929312515704 5219.30948950875 +2278.096494523073 6055.127475451517 +9176.719182609737 1969.329071105821 +4115.728466850513 1143.9159042288084 +5109.884452154705 8465.88441103542 +7788.079642599742 8268.232751013626 +3338.7947666765995 1140.1927877029484 +6822.848337462199 634.9226015403642 +3327.0280448179146 7641.865188143741 +933.6636147254162 3944.390897660066 +8142.321781199803 7129.872530464175 +3438.1171200319195 2314.9851792506724 +9790.567706833837 6758.958021677871 +3693.325507402566 7079.324013739663 +469.89595117785774 5046.842704873832 +7727.2911759938925 3563.438800570041 +8783.277744497753 1910.1187254340823 +2433.6384086811668 7381.108318691435 +2607.272635834127 2366.948344777585 +8496.013309881584 2287.6382526532357 +957.3212254562146 7715.874593150538 +49.3327793589049 2033.172274135432 +7794.585635234048 7928.7154473182045 +7295.747084977562 84.28090275642842 +2982.1263133255693 347.02099658678765 +704.8501145449582 9295.849303657189 +8257.664342621769 9623.48209562092 +8648.873005180436 5036.946621164532 +7439.624115218927 4042.5459854773317 +2399.3599578754497 2135.5446914731037 +9283.595016876077 4460.96236174793 +6357.893978872492 8065.954572393299 +4463.563363872723 8625.726879417305 +5026.23591706967 7929.349882158071 +3252.7077535562566 5461.200595773288 +3938.663996111039 1231.622386461191 +337.69102712048914 9943.865803855368 +1495.6428070836369 2235.946303147952 +4991.511144794703 7124.190860508933 +5328.132758052276 4952.999609786882 +9879.749831951398 2354.895135450241 +7859.96068500733 6126.100257978517 +1384.1279184249456 9128.290737495015 +6693.978546129216 8111.172381543822 +8891.06359087612 9358.268741108774 +3089.684922080401 7760.117918112976 +2313.3812986864923 5355.45496791457 +1675.823990518227 299.25602923770447 +385.884284326401 6094.719787733982 +3058.4310245851752 9056.97083415979 +2295.4558674524137 673.7507142828703 +2999.6953960996607 9722.223555491059 +7123.068750778263 2242.259393199365 +3422.3718787356747 7328.713337833345 +3694.2108085540704 3429.4320763399987 +9149.102758468347 898.4791021602945 +9231.989692952824 5758.910774033369 +6480.649762366794 3413.5900850977773 +1678.4570219450002 5380.886769934458 +4914.204845838052 6733.525272029809 +7327.019303401568 30.7327168832483 +1069.8247352980984 7255.193532163774 +6438.152071457499 7367.440594373494 +7687.042523181735 6715.421234427141 +8780.168350308533 115.74485676384305 +1100.4494481983563 4704.502391216235 +0.8945451125708104 2244.440549929171 +5477.483429315478 9239.039729091743 +3325.0257245182315 2761.887142334556 +9739.090036049785 355.22618247857184 +9939.32051921821 1837.544303008486 +7889.5951249078435 625.8301187464576 +6314.690141250035 8541.297020275028 +1299.6393484499224 8686.004006211888 +6541.749031923417 432.7218514296061 +3902.163597855346 9335.074059819852 +1281.7942955902163 1883.9926791415528 +7654.328409293765 3589.1849690246836 +6158.830824326807 2810.6252380644305 +2285.136163118998 4577.263203088878 +5189.826228937871 1470.0548000214676 +1075.5842873954957 1410.6077046419307 +1613.22770671956 4608.976331257055 +9252.506269836895 21.902672344574768 +8403.470578769686 2781.3805532324764 +9014.56251310065 9297.849451805003 +8981.591529875139 2061.556660965954 +341.78477088293135 522.199891963675 +796.2037880256678 6651.143040508476 +7766.939720092207 1108.2349341613963 +3580.117071789689 1281.5198531822514 +5462.722656744231 5853.700510145533 +6867.427424822609 5213.38194702337 +4803.350685659985 5613.3820239875695 +1293.2904494765796 9850.970560387539 +3936.930324102731 799.1126036604978 +5781.678984770958 6213.066384041241 +2520.3610594945526 3095.5448060302883 +1625.065581674099 7657.510335003751 +2593.855863422837 7396.041770404175 +2024.909258830664 9048.839040280707 +6561.192138507986 6536.3834978061195 +9893.83504381392 2908.2970969619505 +2149.5991609791754 3878.155435996028 +2030.3667622947808 4454.4479214471385 +4938.516970357585 3445.8573267949364 +8985.089294664393 4739.294861951108 +2234.501598749279 2589.755776941903 +5085.01281313497 5388.50401341585 +4722.266093111514 78.80982810710368 +3432.9578857465235 4934.522866322964 +2138.696050809724 7147.480013532329 +680.2720951932728 5430.228418534207 +8596.787573653652 1698.5348163549452 +4171.183250283071 1115.7356690348574 +3663.613682975797 2370.8761238559505 +8121.006498977154 7146.356914502661 +1802.5286227681315 8126.220006130294 +2309.259386132876 203.07186027268222 +9948.940436895808 1582.68024922951 +6038.199150347729 4486.732036027704 +8285.671374923173 9123.797982917296 +2476.415997635464 7464.59646621347 +1667.8877043799257 7274.629314159739 +2889.010109817345 5816.699027972242 +2851.7433092602105 6933.2531543299465 +9886.54200075366 9124.908812619275 +1773.3769976276349 6056.095874819604 +4225.336901738787 8047.879887633091 +2180.0408884646617 8652.229154097 +6112.118134840506 1086.4204568542325 +5397.330856519591 8537.147760958484 +4313.706323944002 2666.830598722102 +1631.332188646576 5263.365799021946 +8370.212613413712 6005.235547735372 +7733.369135744014 1460.511274045434 +6444.375948796014 1114.2645998031885 +2609.716307977783 9159.506305663292 +8405.307060561108 1625.27173403488 +1054.0616828660443 8206.91122153347 +7845.263511324954 8731.808101203615 +1686.7703611133 72.69584060377032 +1826.196143586316 6261.3476408413335 +6573.028922565678 1547.1522584824615 +5935.708932172025 7371.034362844935 +1781.9554570554596 2371.615546076372 +4973.334024244501 9639.346999570993 +324.37948105811796 9063.838706981318 +7172.27676394077 342.7242324848856 +5332.334477920517 6609.770939815791 +6378.988208132365 6315.635384956148 +3456.068592034529 8422.102534123718 +2087.1338715995225 1104.9307819046294 +1354.7043063898557 9696.381390637422 +2873.1610463638344 9996.1628952144 +5301.071120103321 2623.7544057545006 +5643.204429743195 1373.183639302612 +286.01146527083677 6044.15713640568 +8900.258202385581 9994.71889261547 +5884.531054898652 9966.299979047575 +2772.5313157358432 64.3133394089046 +6992.716851875492 9641.256864275543 +3492.0711023479435 1596.2161509991713 +5097.501051168732 914.5383261857543 +5942.3250854931675 9463.527574525559 +9538.186216989523 5138.961175809538 +9507.39246528004 4226.285561160741 +7222.765397231631 2152.893314074046 +1506.1985530015031 7216.970879308586 +7896.505934688392 9851.58027435809 +5115.741020571598 9198.787373277752 +6018.157077823733 1862.3470838825397 +2216.748582219151 6078.761368783803 +3752.262024888432 1440.2472166682157 +551.0072117616271 3844.403272081458 +6414.611126196161 4629.642933513683 +5278.0759590520265 9517.515005942898 +2819.6431637460837 9302.668763961949 +99.42222895801045 3203.6505258792727 +8113.784694752976 9660.729449194248 +5898.117886364636 6721.561938638922 +9265.476122166976 8129.991328221683 +764.1624832628424 5612.245772548592 +3529.106748811888 2374.362484382874 +1957.3729585420529 4604.196944494911 +7144.1308753261865 8359.080033065224 +5254.848394251602 6575.897468698895 +278.67777785909766 162.91266285625827 +47.04043409399561 1860.9820992236826 +1355.302701930704 8410.375029825896 +3551.2175961064117 6011.128874319934 +9815.876165640657 1696.0196055201393 +4017.5855098685897 1802.3293857735546 +7144.08570952217 4373.58599193815 +6379.087084887091 2022.996397300384 +3405.076853367536 1933.4710231634267 +7278.477814306594 429.24156906596676 +7878.211996742966 852.8985913137932 +7449.898613018796 8755.591458163015 +4422.557909399736 5256.104059868247 +3966.8323858658237 3273.7392676497643 +5962.590332610956 1437.3644855267964 +9158.161714391961 4701.099645824039 +543.1493966769984 6465.058569318383 +1155.09644078187 8509.320711994813 +1258.0558478182347 9819.117936981338 +6155.118341900292 5457.240242750247 +9606.552481770876 2042.1319884369427 +2590.468999709247 5447.60443929408 +4310.403253769127 3999.6975260430067 +7431.14482630081 301.65811675124223 +3427.492671021325 9594.385118625703 +3664.24291044836 6258.589759709321 +8576.981309390738 9898.957052804666 +2995.73561378948 5519.203461269205 +5196.613454603995 2527.0192038999253 +411.0701691213603 8429.760482813981 +8916.870861689495 2938.2141117257797 +5855.669365286269 9770.60988413474 +8165.554039765747 5432.869278007372 +3586.9019591888828 4745.274404810506 +8789.062979048795 9427.865426528933 +4936.090223103249 4195.305527369161 +6226.712520040672 4096.118935593268 +2851.970585038307 1975.6204625074924 +5520.736360320926 3014.5242165033737 +1371.6324470612863 8387.314684739375 +660.7178913006129 4796.49274322738 +953.1113700019745 5293.176395499121 +7746.866293847346 4775.909863382374 +1804.5646126611725 1545.0818631843676 +6342.360394244718 1318.7243383985326 +3863.08485086151 5983.617527915386 +7276.912147684018 778.7087314412988 +2864.7925144109886 9757.153356392128 +1288.6385684252689 706.7262768332938 +63.01933425239214 742.7121129947623 +9216.781370632621 8516.887883273777 +7784.375338683446 6670.992309680799 +4627.875135757344 4161.959038031565 +491.75879987372826 5657.817794533839 +82.87271566653098 9554.519552443011 +5066.72851905931 8484.502689124758 +8730.973284588445 3918.08421868877 +1384.1961542652093 2133.647185479066 +614.37823012358 8682.494784302406 +6632.399659540537 3917.111252837714 +104.92633689321629 8510.716280662335 +7664.056510892859 8486.43906700628 +1121.5285388560226 4346.497260073884 +4784.588472152136 2910.0709952553084 +9920.309334827225 7059.757759605058 +7752.310103252238 3032.310362482892 +1210.3132328659437 7443.669058504675 +1239.8406662466577 7622.8960694868865 +6053.125008965117 5622.221006609239 +2590.6034512626998 3894.994143251448 +1053.4057604259128 2409.4018920597014 +8143.080638206793 3010.089782058768 +6427.75019576867 5626.404067071033 +2630.982198755463 1220.5139617194561 +4032.3794662863697 6096.82957379415 +9416.79712965147 2808.016779162542 +868.0427836190086 6380.900712099793 +5657.554964510646 3580.5839281164563 +8493.501218908468 9672.855350485788 +1212.2853723067628 572.141810993656 +3707.425132371501 2406.9268764425124 +8746.41709668068 7882.486117932056 +8329.640632993314 8896.479700715516 +3564.445028171146 3648.874680886958 +437.13170284386814 2493.7913251756618 +6322.218387550941 3091.3677464404 +6721.303560632656 7746.729741714575 +1626.0017780700375 9649.00927780981 +223.19703233539602 9494.972416759483 +4160.632038994385 3916.7075964704236 +2587.950666478813 6073.603396922511 +852.4527262179515 1836.8780864741452 +1473.9379299567634 7655.196017198903 +7401.460407941589 4966.410567537117 +151.89589954092807 8152.952263726227 +4246.269254028073 3282.091884834988 +659.0588470504932 2188.0868384644523 +9908.119767395585 448.6707313035831 +22.262286831861154 5147.069582833969 +530.7351424313223 2969.7815902366765 +7160.906849967341 2124.3061000882203 +716.9941657421098 1617.9810311868937 +8845.609485861447 6681.74693028417 +4659.766083238941 8965.451191606362 +6325.636284031315 3971.8651183765564 +4748.003138636632 1586.269403371714 +2960.113617301915 8533.745830298438 +8501.681688877994 5666.794602717119 +6031.133572650398 2672.5367257207677 +4056.4577102027256 5659.553425427519 +346.4462219225939 2433.017224955695 +2746.3775623499264 4110.448611023596 +7741.2687456377735 4067.6422434904093 +891.3284380994091 1177.3033775232723 +4434.485498423045 4650.783153633817 +7774.98504137409 7570.995064265921 +1861.270073144129 9219.294122428602 +260.8376144878599 7438.911144401777 +6214.574075540714 6130.677149671448 +6855.639755638881 794.280269507951 +5272.37666940122 8160.640533299825 +814.6959437977208 8850.915310533273 +9500.532902821176 4243.22882777338 +8995.475154440735 2749.823322727708 +6978.043349969684 8125.172882128116 +7352.545993468094 429.6548286074875 +127.69781396349211 9042.452242360483 +997.7473695059724 4581.487258706973 +5812.984716476367 8529.537773347047 +870.3443017166346 1836.652109103466 +2037.038265891361 9280.155357040383 +3258.7508150077238 1132.6353570246572 +6530.473507343808 1929.9716099480825 +9479.435796723681 3465.082998311385 +6892.474572865869 8473.200715878205 +7276.340020789804 7890.246645626903 +1202.7335977350406 4575.001056868514 +4566.172345254113 1467.6409615039065 +1383.1928994748089 2172.5486028606842 +7811.965601197813 56.055799913563575 +8740.6169092457 3662.989045676376 +5335.911796794144 8448.121183531133 +9857.00225480961 2398.1046631145064 +5008.296670920733 3394.8762379913446 +3806.756665634147 7139.528957499234 +4306.9363821832985 796.6081168428707 +5902.0961098642765 9799.4409836648 +3661.8168810455486 5002.573980458109 +5208.9532632716355 1019.8625641073911 +7805.888212252551 5907.236621540216 +4613.77908223158 8521.967369571186 +6266.404353061621 2002.8848965766842 +8421.456489761715 4821.917521396766 +9386.025400970773 8448.971879812025 +7488.51882034077 9173.967253675011 +9051.590616664109 7327.73643652669 +1026.3362413884724 5185.169470027242 +5825.507170204397 823.8628670416115 +2825.6387387243885 7206.768808880568 +2558.4316196889113 8155.158698165033 +8627.749240310503 6330.156346057583 +5500.707016430691 2115.993056923174 +679.365952767349 7435.493116538188 +8654.761758935905 650.773240372522 +6950.476960169475 3599.7611909956486 +5122.683289888897 4810.4010346810555 +843.5168813263216 557.5740066619295 +8278.59643163558 9789.215334925084 +5017.39139866461 491.21049477555243 +9437.385688012691 6611.425064594875 +4875.785388908908 4170.204670479124 +8477.485545125812 3677.607414940689 +6745.471179546348 991.8369381892688 +8480.116165595357 7168.497548199532 +5673.250932089641 8989.928428458523 +7426.909988066861 1717.786308061452 +9748.799500391291 4584.536886103251 +4470.562359351483 9750.686183332542 +8262.265887570897 8300.188556209321 +953.796675650348 4180.64311961094 +8537.157991611211 2742.6302747306786 +5020.5998689530925 4549.07919336204 +7868.424481326445 5861.10350572639 +7306.520157155375 6459.851016423888 +6993.121467886003 6781.042921809639 +7199.598502301633 8859.235458426612 +9170.815600090256 7149.522240667579 +8432.336405320806 9831.352837525863 +518.43452346642 5202.56797579422 +2643.075564185973 473.7350054691503 +2500.9875174876606 7838.131841963538 +9783.562075555485 6587.501126513366 +5799.359928874708 4908.510880812412 +5475.155710642604 6973.692058777598 +689.4850537820573 2303.9243584401315 +9624.841343679147 8596.138492930922 +5785.436368716904 9657.467817814993 +6054.945844861231 3754.087895444873 +7740.150830091541 6013.336657458593 +1035.3810270168829 8957.961401098943 +2943.548723516748 9866.718000650168 +3615.2599028019094 6002.289135590072 +1415.0903705409246 6478.136288730768 +9334.412621064199 2673.7239174547467 +9500.857785217959 7753.275162391586 +1948.6479517711275 7213.562305510588 +3616.7575364841 2846.8333245457798 +94.1531366010806 663.5518343345836 +8443.346966575999 8175.242350907759 +220.3009979039161 2195.0952373261225 +9240.906437406742 1555.0259453629556 +8673.687570299016 5136.5519385178595 +5040.89931678142 5815.829585958635 +4649.199446034527 9098.773711124484 +1533.4684551630785 5562.574430851854 +7089.8819495797625 3149.280792388881 +6778.544703824291 3411.8876402731366 +3645.9451861547977 4692.4340020619575 +4725.057831359079 2880.2380385378724 +3880.013794890519 2947.0053114405237 +8917.51320605972 2709.3651124223106 +9850.099476214757 1181.7192008842815 +259.9113821330623 6555.150648618288 +6667.546533408328 2768.819654221928 +5604.223627847958 7655.410923207762 +8285.348242502207 425.23951817156956 +2505.9232486780024 5944.829426282544 +387.5216909525514 5115.859538969452 +1807.3203120179537 9753.40212434341 +9552.726552372204 3035.143227973912 +115.89696294997287 1763.0853271560077 +9936.289740761895 6821.303466125301 +6008.458971397747 1284.0525799174463 +3087.870714491666 2134.4566159278256 +4310.178738878189 2792.0888819323086 +5951.869633002621 8039.698661459021 +1659.6759676878548 8971.313595902913 +182.49941109364954 1548.1738382650901 +6292.9958141457955 5348.922044551415 +747.9972084094854 5821.489047555413 +60.23520915171776 9821.751774693914 +406.56970967062557 6587.812773772669 +7131.17392450436 91.85826685010446 +1773.926364480969 7533.879186884235 +6036.754655732523 3296.4266774435337 +958.3781564534377 2830.9372389068067 +8827.757047103185 9802.1916334456 +405.456547597004 3913.4366661615395 +8179.725017124887 4824.727609639853 +1146.3440490999644 2629.4633564928727 +1924.798832075435 347.4922771518307 +3684.170189545092 8842.278890841259 +9443.161488415486 2434.960488493576 +9759.639616928429 6801.696734929955 +6613.525229143152 2240.9887526954153 +1928.0742401735097 4350.216114461483 +8471.765464682087 4577.137935577288 +6926.014515104225 9856.185961538817 +6772.149307975413 1710.3086228363418 +60.550648380279796 5765.974444369537 +8352.317318520621 1346.4254574535794 +1242.1398076789515 4450.8922520719925 +6704.6852060572555 8783.055549200717 +3755.8763425392526 935.4253178768945 +1842.69172365522 7390.632577763769 +729.214792154197 7273.796853586238 +9217.148167037527 3264.2946192483246 +1097.6804712366318 1866.2995311166685 +6036.878446646656 1799.010367321704 +7451.465858464794 6508.8002444089325 +2929.5010928253187 2557.8953741684963 +5191.791853405636 4076.981918310181 +9558.472564983294 2327.5320342745654 +6992.680126288784 9621.11313485454 +6882.382231065402 3532.6102556292617 +746.3924002782052 8146.295655110586 +7076.443369469994 7912.676972005244 +8190.667760298782 7882.683533876634 +6761.1695618394915 2914.9431893047195 +9386.81769627305 954.4102638231233 +6552.6451117706465 6275.382409394112 +6355.32623464522 2094.612537033682 +2120.4041921126573 6476.665373652809 +4640.020155859294 7028.572176920751 +1480.8794918254675 3044.3146665873523 +9670.471529688166 366.07789207387833 +8971.100103563977 9744.054616356649 +4618.9089781129815 1079.1742851564568 +4449.303607617276 7507.340303766607 +3717.416669927094 6021.75050338276 +977.3825750369647 1126.2842702568066 +3993.977165648066 4018.3614743244634 +2269.159958655267 8518.629313198846 +7331.677334235543 2614.7621264415266 +2536.324612432327 4105.609418641017 +4079.6292184004046 4210.097295286357 +4218.888464062373 7479.812196477975 +2626.278131555736 4408.160733365682 +5262.645353125459 4667.16016445244 +1802.5814828145726 3892.90585111431 +5621.588487131494 6749.381548565022 +8873.514642188256 4214.161170038472 +6987.023556904102 1359.2999840869945 +7024.356326302212 210.14908037871538 +4261.118659914718 6712.973233667328 +9673.31584579912 3228.9558761583494 +6386.590518056323 6817.194446474665 +7686.135864416728 3266.9527265043685 +4889.423032990468 6567.9394237416245 +6388.584685730309 6067.711135819152 +238.38961110150825 7286.06844626966 +167.45250710800352 6140.563635786722 +2191.1398205829846 4313.809045462858 +1432.8455055731438 5557.735888545675 +8784.768385758995 2423.206676960443 +3575.3257267763383 624.8069112365617 +295.1323020357821 5145.321332836675 +8074.38477490837 1604.5227454180167 +7027.3123043136575 3401.346254952756 +2221.6491027607053 3212.962173041112 +4309.772821577517 4780.469820272607 +8851.43911173141 6827.111319481964 +417.52909138653035 9258.95713292215 +4757.449145212688 9348.031572951983 +9802.724870462782 6377.393103638585 +1133.189054723238 6451.534510014739 +9201.500772762578 8488.109525439053 +6150.808983771369 4478.951380763009 +6509.0775445819045 9375.736151833076 +1115.353790435375 6160.043684932868 +8568.065518845744 6843.853899548273 +8435.328354688401 682.6487158761773 +5632.751959307445 2581.0941122145537 +3263.466271807162 9214.694393890393 +1078.6607911952085 3990.5258239228046 +9776.583510167555 3984.8439366166767 +6546.514160959787 3351.8146121295754 +9743.433833642035 8297.999173253858 +6924.053642074098 9389.516605987967 +9111.519466048298 4290.1147438621765 +507.6934607246697 6995.769016619732 +9028.024727729106 4493.033864623576 +3817.9770967273084 8568.78051468867 +7296.871421764861 7802.713426025165 +7055.061968683377 7168.181846727649 +5225.512683278512 6758.277101409524 +1505.4516333029121 8424.30288041547 +7532.717359606613 1401.4246828850273 +5496.375656208754 9497.262569715711 +676.3237375520048 9363.493880516724 +9506.852549425479 9106.502756764914 +3432.82481742042 5827.874048730735 +4096.271945962277 3814.5477832036736 +5955.796721186811 2501.7538811208683 +3090.464326908231 9363.038586925111 +4683.14487549933 8255.27867129071 +1983.1558473993105 6794.583505102321 +1522.0077235849594 9513.83162490217 +2501.562175987536 5576.636650487338 +4908.336585287318 3789.3236635974727 +5967.828968132456 9317.287578949115 +9619.897565773725 7016.011080488709 +6591.910394316121 6179.717573106249 +5070.200125120194 8556.469661817444 +6634.754675798261 5589.307402225705 +5932.023706914553 3171.4338445786293 +4918.289616388616 4133.713456589927 +4343.435884337034 351.6953038992121 +8982.66028345233 5180.96605957681 +818.1497944058502 2142.33112989352 +1586.6586810276551 4748.21457337761 +6332.519178700856 3331.867873593177 +2699.906767024468 6591.0596248027705 +3620.362789599949 7253.301786517954 +4295.534597191526 3375.9277565299794 +2833.2208897601195 2441.3823859917716 +6244.470906582476 4120.442322179277 +7217.97146542919 529.7699650056486 +2956.4277600353084 4201.835857659934 +4678.297559763789 103.91288755805527 +7771.522309245508 6905.789793946018 +3095.611558761585 2236.829931283254 +9057.928357218312 2448.6649816222484 +4753.801357732167 3866.1033848329052 +8997.468855921015 5584.627933752263 +3385.5057388466794 9749.956819822148 +8888.221656024472 6298.152797947534 +9114.816262604503 5159.422149828148 +5724.417750436232 7142.438306075941 +2197.198570971005 9424.727916400587 +1061.0045618815877 4148.982986142595 +1463.0867792499857 4935.392868927028 +6633.136215523726 7705.99731347047 +1769.9758454808577 6434.735793678905 +5906.319302416278 9162.396229495338 +277.78861376866803 2525.6329246125097 +5454.700208705604 1236.626787813463 +7825.4444866672875 910.7456893068078 +1153.270816932439 5909.725585690751 +4230.767366764353 5321.6753695011075 +8332.935722148924 9198.500077776487 +6328.192354691329 4275.9601811849025 +3250.9023340739964 2542.5359631661536 +5724.711929722132 2712.385253576405 +965.1058063678863 5624.513704006874 +3079.1609225386364 6185.611816132063 +8840.128890089532 41.54689522532284 +780.8559532336334 8089.429167539296 +8717.173078950385 4441.023902916275 +5311.996024546493 7839.26814729085 +1369.4244892652707 8747.082231467337 +4554.505739287773 8371.540923280352 +9989.685198562773 1927.5670191464224 +6622.0495164278955 4794.56302000535 +2725.033449262294 621.2038749060333 +3434.648921164145 3696.0156667608844 +6375.337340504266 2770.1616265354523 +4138.04215326454 6000.155525276493 +8000.8784070715965 5699.039102475935 +6509.599987006533 1242.2055222398799 +1017.0310038508012 755.380412750487 +1271.178446191875 3957.754488382288 +5574.792142080416 3729.959709398827 +6493.992240787014 4680.5655775310315 +7449.052643058205 6940.618033134857 +2229.1704973514616 8693.16541096825 +3558.4487504770145 5710.208815966955 +286.4248920134471 4274.858764456425 +3011.4436542493127 4834.981285515168 +9061.18994291151 7498.853357751462 +7698.011366107601 6225.679558705244 +4905.647005442022 2106.0190530228783 +3468.0444288731305 6238.884970449837 +6579.341482792247 7811.409044402484 +5344.306729290319 9084.648781863103 +5529.045725977174 5174.598065183881 +3876.2582728054717 6087.035248800284 +6430.27171628682 9784.623857495231 +4501.715642520729 3938.2285683938344 +3715.919512084246 8363.92696078416 +638.1006343156215 3034.691407324812 +9041.252655564693 2320.158961996702 +1371.2691141401613 2932.0815309304494 +8252.620107162196 9195.431933241465 +1267.718109724979 4609.753126182763 +730.2788414400508 3365.1445307934437 +7570.914695519726 3181.294815889264 +5248.354855324747 2647.2586730221183 +9899.15462605524 4055.1178783254804 +7732.118349740504 4663.759958011281 +8338.664832739902 2482.1384332135112 +9910.089549747072 8050.547187200131 +4903.203173835588 3492.18837934969 +383.77057167503614 8566.546767128379 +2642.519745331645 1158.628658340307 +3441.0301983954396 9953.64783671824 +8806.562446816857 8952.552158713526 +8634.856795620226 185.1038472803379 +7131.819721932819 1295.7392952439072 +3783.4649888267445 9629.217395284693 +7505.665766346084 2024.4836849817516 +4643.9001160787575 7848.417754935237 +442.2380557637318 2739.4359874918405 +3239.88407948841 511.94961976347207 +6939.823020693016 6211.195067133964 +6375.253430936665 6262.4368840847155 +1980.2337604750253 8148.194913261972 +2127.9898935837414 6752.641840076071 +5801.493559942455 4096.4059253318355 +2882.575233011043 8562.843956734743 +6878.570142569582 648.8915702298303 +5890.540002252228 6362.63531603202 +9202.398304217935 3487.834473603941 +7331.086617894871 2350.140788508436 +3670.1555214657424 3455.8722758769854 +9638.524737008696 8440.819406076274 +714.1187513842606 5331.6503546346 +5579.446042480763 700.3232228514212 +2470.045575363371 9712.78834516448 +1054.1506980776937 2527.1510921166173 +5370.409003123729 5386.98544653713 +5757.982502905171 70.11618973181477 +1051.0898013122905 421.64051149663374 +1512.7241595682183 3077.06630153461 +7980.667992825849 6572.320534822737 +3703.4575065627605 3531.395788077425 +6391.40277803987 5609.312544911792 +1251.7833948132595 4830.60742802685 +7232.518367400246 3476.531780423908 +3707.78951548247 7671.496433020828 +5001.796986863349 8216.210657822281 +9405.518302531698 1323.084115539108 +8770.808070387433 3340.8570365014943 +9199.962330474864 3134.328908119903 +2050.809211487138 8811.62598016287 +4518.740094374848 2906.7897551764986 +6794.648104699131 4042.070178299586 +1776.3269634059175 729.159576686278 +7350.866997871435 3365.9465032585713 +1317.761123857326 2455.614649130302 +4094.058996602866 7382.390864274606 +731.9049035232883 3085.2506444791284 +9413.841355085926 213.84187357325612 +5532.957735768022 2339.8373960281647 +1351.2466225387354 9408.676482703375 +4061.5390720406153 8153.463324447771 +8115.3372993783405 8925.798370614384 +8447.34386879584 4045.581058431701 +9473.87432150552 8210.734105124859 +5401.364598017147 5382.781420024398 +1681.4847197608606 8515.182088644098 +781.8403125037787 9618.577080687111 +1143.1085836790023 1777.7473838973078 +9382.227063343511 8657.197584463504 +3847.418693580611 3464.140520159207 +5919.717574966185 9557.57933238176 +9758.239500561607 7674.0748280129355 +3517.6512897727875 1382.1068766165445 +83.27080552908316 5956.185875080951 +7274.042922891184 6978.866815316795 +5547.251944113971 2265.6683865724603 +3924.8160430226985 2380.4724801461352 +2087.2450394656016 1862.7899841732133 +8968.254706522284 1441.5680416939913 +4422.447069883394 5216.782648706888 +2058.926976094433 5141.577440130485 +9037.288691064716 2672.1544810548494 +1097.0935682305794 6718.79579202468 +5405.448763337055 2109.875782667493 +3837.6985553917466 1418.042304101672 +9561.119559586587 3748.719461941612 +6751.49088324629 3046.991360676198 +9778.271140775747 4331.262126046598 +8688.731058040285 2703.343934074405 +7168.942825434019 5082.168391146802 +6733.981496859359 3918.0212604144017 +1579.78225604558 3377.394006052243 +3372.7103768305965 7351.818645669129 +2798.4110878752645 3326.1793444509335 +9062.73948170726 3762.731296581213 +7214.284045962972 2174.941616950954 +7187.168980247792 8495.296890787939 +6950.088342685357 7976.249860110096 +1545.920443349571 5507.841044692535 +1049.5723896208885 4521.567423507205 +4515.430882394804 2110.207125451634 +6028.851552174804 8969.395441079625 +9318.843414568284 2954.4405318689646 +2188.9923095767726 7349.459832154133 +9295.445589594661 8209.907892687863 +1930.1897635744015 2601.4883042516212 +3615.7752383735196 8329.19840045066 +2307.431700132795 6694.727643620479 +6018.862741107404 3210.4452774327406 +1393.9654689146896 320.5296348008191 +917.4671685792124 3777.143396072251 +129.88594776665585 4684.4195868964225 +4431.713611637655 8576.861415010157 +14.610531556704665 3725.85169154504 +1684.652076273405 9050.449507399946 +4324.937962767882 677.6215686137643 +1077.3953774096224 2051.2611376212963 +9473.057020874972 2880.9243588009613 +9755.925063685952 4187.060825779565 +399.59887619348433 7834.04474492976 +3207.0933124941835 6237.995351783215 +1558.8889627785218 8649.460246302104 +5158.120297512338 157.22339422762244 +4172.788621824516 4031.560986660343 +9609.008708478274 3130.637414109476 +6774.72866402886 6636.555764641335 +6740.468861183183 2171.021333673897 +8152.209579239946 6927.365104160202 +7939.721688579373 740.7298919660277 +6193.949158714587 5868.16553716714 +8555.526544889557 6015.875026560337 +5977.6386493937525 9599.136691211199 +7407.584689378686 6313.076419011418 +3632.8869715837686 3876.742869196588 +3337.377084887221 6555.443419652855 +6290.85063172325 8626.050535279872 +9825.489168441349 2053.0649843442593 +6565.64180711355 2267.664526618329 +4530.584726117616 6620.236041035758 +9895.441622900224 1626.2073421162627 +450.8471753320886 2045.6553689659663 +9860.143991534285 4531.229982778858 +920.7609814294304 277.2730787444666 +1679.4983476349269 6597.867611827239 +1106.1608081606055 5439.868569496109 +5845.498565664205 5387.526233462548 +7629.3529260281575 3840.8101078978907 +7824.88581728089 8407.49539749141 +9053.319281791048 2995.3198225930523 +2396.053139885025 8763.027791995546 +9089.195837031131 2612.5714353474496 +1655.2870503138995 3867.9146108704876 +5784.481771860317 6819.879602587396 +7544.476130233166 9498.218218642967 +8924.552532292457 1407.112508227787 +4404.988134700332 8085.604864897256 +2596.0581591702694 4721.78998783794 +2440.385052630609 2909.994682105547 +9677.480955445197 5338.257489863304 +1052.1803639104544 6293.8527114767885 +4180.182895312237 3794.1711309519187 +2443.823068357294 8922.503528251678 +4178.8293596240765 4362.528863796017 +4085.2517995241465 1248.7300040587922 +4128.603667242603 3750.495978787478 +486.28580130062437 3439.37256112086 +2792.504697217144 9317.371303677406 +1936.3671233974767 202.30210696431828 +9191.795980663268 5365.470635337995 +9259.755208405752 8670.469609352835 +8190.438423205411 2574.0128402931327 +1345.0884610960868 851.6898260424699 +8988.64371986428 5070.184223402572 +4228.479212913688 2901.841926887413 +7138.492556691256 5757.583671469532 +7615.651516896624 4774.204525004198 +2786.7223538993335 4033.3324881598332 +5418.15436156259 9941.50572761467 +4611.826674538593 196.29725895236817 +6676.504929502688 1454.8890140035676 +9761.442650442887 2894.1889701233868 +8351.741374140083 5427.293609720201 +6629.39517482598 9074.563744727702 +6641.3091526935505 4468.0510772209545 +1167.9029161429078 1170.1200675004286 +8133.698738939476 7991.604691322933 +9111.324754574316 6773.525018373204 +9239.53109469104 9766.628253799241 +3904.201089678321 444.57862467180865 +8700.152375839367 9670.190744449163 +9113.281156575114 9274.683901646315 +8365.814725207927 6945.918730926027 +7558.240662191352 3090.0667732275356 +6378.557145442427 2858.8582665528793 +7854.633238919452 3351.2962759656793 +9041.275936790837 6210.856120022629 +4234.382730727469 991.5417023480411 +9361.99960716804 9278.89007030709 +1460.0256860173256 1281.434372879008 +4193.879601041135 107.67745795559946 +4857.2940006522 3088.9560362319535 +7671.807649359499 5010.263497473922 +5486.766825288497 1646.6261758155865 +2222.6905510466777 7341.980240641894 +1549.2278041762374 922.6320916590469 +2139.527849244931 693.9180108970367 diff --git a/material/aulas/02-03-implementacao-c++/t6-out-0.txt b/material/aulas/02-03-implementacao-c++/t6-out-0.txt new file mode 100644 index 000000000..e83ec8809 --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-out-0.txt @@ -0,0 +1 @@ +0.00 diff --git a/material/aulas/02-03-implementacao-c++/t6-out-1.txt b/material/aulas/02-03-implementacao-c++/t6-out-1.txt new file mode 100644 index 000000000..965da6155 --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-out-1.txt @@ -0,0 +1,5 @@ +0.00 2357.83 6616.27 2260.19 4815.09 +2357.83 0.00 5945.22 2898.87 7049.15 +6616.27 5945.22 0.00 4462.23 8445.48 +2260.19 2898.87 4462.23 0.00 4934.40 +4815.09 7049.15 8445.48 4934.40 0.00 diff --git a/material/aulas/02-03-implementacao-c++/t6-out-2.txt b/material/aulas/02-03-implementacao-c++/t6-out-2.txt new file mode 100644 index 000000000..1b8753598 --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-out-2.txt @@ -0,0 +1,20 @@ +0.00 2256.84 2429.86 7850.35 1469.89 5085.13 7258.88 2337.02 2625.54 2287.45 6259.87 1633.49 7956.49 5902.37 5620.03 1940.49 10367.71 6577.70 1013.97 5227.72 +2256.84 0.00 3376.03 5597.18 3644.00 2957.13 6352.92 2591.48 450.07 4460.49 4075.56 2472.89 5717.05 5624.02 4615.97 3852.30 8304.56 5482.18 1827.04 4246.92 +2429.86 3376.03 0.00 8411.67 3289.01 5137.35 5424.60 972.30 3451.14 3863.88 7234.34 951.03 8641.22 3718.97 4047.26 4039.68 9841.95 4973.82 1769.93 3697.87 +7850.35 5597.18 8411.67 0.00 9179.14 3361.48 7643.27 7442.76 5271.42 9973.13 1929.04 7731.65 463.47 8476.91 6571.47 9225.23 4517.72 6723.48 7320.74 6488.69 +1469.89 3644.00 3289.01 9179.14 0.00 6537.27 8527.94 3545.80 4045.49 822.17 7493.34 2786.19 9249.90 6986.64 6952.72 802.04 11835.18 7913.83 2413.68 6565.03 +5085.13 2957.13 5137.35 3361.48 6537.27 0.00 4975.87 4165.89 2519.38 7359.43 2825.77 4565.55 3667.93 5308.49 3527.14 6804.99 5348.32 3988.14 4330.07 3342.56 +7258.88 6352.92 5424.60 7643.27 8527.94 4975.87 0.00 4982.38 6000.75 9211.29 7754.88 5741.75 8073.27 2091.82 1737.06 9171.49 6275.99 987.89 6250.00 2113.53 +2337.02 2591.48 972.30 7442.76 3545.80 4165.89 4982.38 0.00 2589.12 4247.12 6304.01 760.03 7677.56 3571.33 3433.63 4201.51 8953.17 4391.29 1391.64 3054.35 +2625.54 450.07 3451.14 5271.42 4045.49 2519.38 6000.75 2589.12 0.00 4865.63 3843.96 2602.27 5417.41 5386.03 4267.43 4285.63 7863.64 5109.23 2062.56 3908.49 +2287.45 4460.49 3863.88 9973.13 822.17 7359.43 9211.29 4247.12 4865.63 0.00 8260.52 3490.14 10032.80 7582.77 7676.81 972.02 12654.98 8636.37 3202.72 7293.22 +6259.87 4075.56 7234.34 1929.04 7493.34 2825.77 7754.88 6304.01 3843.96 8260.52 0.00 6435.89 1834.16 8105.53 6352.92 7456.74 6142.44 6772.46 5890.27 6160.30 +1633.49 2472.89 951.03 7731.65 2786.19 4565.55 5741.75 760.03 2602.27 3490.14 6435.89 0.00 7928.60 4278.36 4187.07 3451.76 9547.04 5146.29 826.65 3804.80 +7956.49 5717.05 8641.22 463.47 9249.90 3667.93 8073.27 7677.56 5417.41 10032.80 1834.16 7928.60 0.00 8854.98 6962.17 9255.98 4914.41 7144.82 7478.00 6864.56 +5902.37 5624.02 3718.97 8476.91 6986.64 5308.49 2091.82 3571.33 5386.03 7582.77 8105.53 4278.36 8854.98 0.00 1935.76 7705.75 8040.28 2257.53 4956.73 1990.60 +5620.03 4615.97 4047.26 6571.47 6952.72 3527.14 1737.06 3433.63 4267.43 7676.81 6352.92 4187.07 6962.17 1935.76 0.00 7553.20 6298.54 961.13 4606.07 393.14 +1940.49 3852.30 4039.68 9225.23 802.04 6804.99 9171.49 4201.51 4285.63 972.02 7456.74 3451.76 9255.98 7705.75 7553.20 0.00 12145.60 8512.47 2951.26 7161.68 +10367.71 8304.56 9841.95 4517.72 11835.18 5348.32 6275.99 8953.17 7863.64 12654.98 6142.44 9547.04 4914.41 8040.28 6298.54 12145.60 0.00 5785.37 9515.91 6487.64 +6577.70 5482.18 4973.82 6723.48 7913.83 3988.14 987.89 4391.29 5109.23 8636.37 6772.46 5146.29 7144.82 2257.53 961.13 8512.47 5785.37 0.00 5563.80 1350.94 +1013.97 1827.04 1769.93 7320.74 2413.68 4330.07 6250.00 1391.64 2062.56 3202.72 5890.27 826.65 7478.00 4956.73 4606.07 2951.26 9515.91 5563.80 0.00 4213.75 +5227.72 4246.92 3697.87 6488.69 6565.03 3342.56 2113.53 3054.35 3908.49 7293.22 6160.30 3804.80 6864.56 1990.60 393.14 7161.68 6487.64 1350.94 4213.75 0.00 diff --git a/material/aulas/02-03-implementacao-c++/t6-out-3.txt b/material/aulas/02-03-implementacao-c++/t6-out-3.txt new file mode 100644 index 000000000..946354a26 --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6-out-3.txt @@ -0,0 +1,120 @@ +0.00 4697.11 8236.98 9418.75 4544.68 7073.18 9122.96 3159.44 7149.97 3936.83 8126.38 5806.54 3410.34 6157.59 8983.68 6891.31 6513.77 7590.24 7589.39 5703.27 5823.79 9833.18 4591.34 544.25 638.79 1679.23 4328.29 7548.43 8033.18 1840.05 6151.37 3520.38 9143.13 5127.37 7038.49 7412.78 4318.27 2030.51 259.70 7437.22 7044.26 6715.47 7250.58 4066.41 8095.70 5822.97 6052.00 6959.61 1320.25 6671.84 3507.00 8290.09 4961.48 7805.25 1437.95 5276.33 1671.69 7347.33 4755.15 5075.56 4967.60 815.10 5693.43 4001.78 683.35 7540.01 8704.80 4313.36 6573.09 2040.92 7282.13 4828.63 3377.76 7877.01 8595.72 8676.87 3123.49 5078.28 2934.77 4636.33 2933.52 4352.31 10065.08 1601.28 5242.21 2600.78 7053.86 10786.41 8072.47 10214.46 3457.20 6706.10 7719.89 5388.19 6519.64 7922.57 7218.75 2075.86 4601.12 8562.66 7335.04 3626.09 7996.90 4697.85 7616.98 4407.93 3638.30 6585.79 7754.96 8155.19 433.48 1988.17 3088.42 5183.70 4466.49 8241.62 5670.20 5145.08 7486.68 1854.28 +4697.11 0.00 5117.72 5888.19 6955.44 5027.51 5609.48 2225.88 2452.91 6545.56 4886.33 2317.88 3727.17 6028.72 6456.12 2207.42 3820.61 5758.44 6003.59 3400.22 3768.54 6605.92 4768.92 4162.62 5068.25 4710.26 5992.39 7735.43 5664.98 3564.41 3745.64 6971.19 5606.75 2237.24 2341.65 6357.83 5303.81 6307.80 4942.50 6235.73 2971.21 2507.07 3720.91 1060.40 6601.88 1719.12 2189.29 7593.14 6016.50 2425.16 1191.14 7325.16 6414.62 4034.64 6120.51 5990.41 6334.28 2914.17 2111.35 1110.65 580.30 4672.68 3652.91 1807.51 4051.06 7654.16 8103.90 1573.57 2119.05 5008.50 6292.90 4797.91 2368.19 3235.99 4464.87 7284.94 5617.02 558.65 2076.76 6359.92 2369.82 2685.21 6871.86 4719.32 5693.50 5865.43 2427.92 8445.71 3682.03 7114.76 5247.55 2229.36 4660.42 6903.02 5949.61 4548.08 7902.88 5387.71 526.10 7894.83 2735.52 1075.27 9957.35 6665.64 9112.05 2118.33 6528.36 5318.77 8776.47 9574.90 4471.28 5273.71 6652.73 7028.56 568.51 9700.41 6663.69 6412.15 2801.92 4263.35 +8236.98 5117.72 0.00 1324.89 7387.42 1832.23 1076.44 5161.90 4705.93 7386.19 285.47 2833.85 5081.90 4370.92 1550.59 4966.54 1726.30 2125.83 2519.36 2545.05 2507.87 1604.33 4653.82 7860.09 8237.69 9068.57 6273.82 5401.57 1319.84 6419.59 2116.28 8421.27 1120.50 3262.69 4636.47 3317.92 5473.30 10242.99 8391.58 3092.51 2472.24 2926.57 1436.76 6135.74 2849.05 6214.09 2939.25 5827.09 9326.35 6346.08 5672.40 3852.66 6199.16 1467.78 9326.73 5304.89 9435.07 3191.98 3610.74 4030.25 5517.65 7723.71 2617.27 6907.95 7585.97 5275.79 4729.86 4222.71 3526.20 7163.82 3381.96 4428.06 4890.30 5550.68 2203.66 3331.95 6929.88 5380.79 5510.34 6451.99 7190.30 3884.81 1850.14 9043.98 4965.52 7680.96 3966.15 3429.84 2954.95 2045.76 6227.41 5826.57 518.87 6454.60 3827.19 657.03 6048.13 7534.56 5636.03 4524.53 3802.69 5570.90 8784.80 6814.63 7680.48 3918.07 7644.42 2890.25 6943.50 7917.18 8255.06 7476.48 8348.03 6851.58 4782.01 8048.86 5808.78 6007.16 5053.33 8742.61 +9418.75 5888.19 1324.89 0.00 8709.05 3125.08 296.71 6290.32 4915.54 8711.06 1329.88 3763.77 6358.48 5644.80 2121.02 5239.59 2975.28 3289.49 3660.06 3791.36 3800.38 924.82 5978.03 9014.38 9459.70 10138.09 7597.88 6538.15 2419.29 7627.15 3389.36 9742.60 285.33 4330.98 4877.66 4466.62 6798.18 11400.65 9586.75 4242.46 2959.23 3446.94 2238.26 6942.68 3859.65 6706.40 3724.45 7030.42 10550.36 6673.67 6616.90 4834.93 7513.39 1856.58 10560.94 6614.09 10680.24 3420.16 4698.08 4873.18 6198.63 8947.51 3900.75 7694.82 8754.45 6410.97 5666.72 5253.46 3991.93 8445.74 4550.76 5752.92 6044.48 5586.53 1904.00 4198.70 8245.88 6048.59 6603.35 7772.29 8115.04 5082.23 1162.51 10119.88 6279.02 8986.87 4231.33 3417.92 2901.20 1462.34 7545.83 6139.63 1780.81 7755.74 5081.58 1496.48 7231.37 8822.75 6380.17 5478.42 3986.85 6505.32 9983.06 8133.69 8870.62 5031.02 8968.01 4172.79 8099.22 9071.06 9405.93 8760.61 9663.29 8159.78 5647.89 9200.34 7098.82 7316.85 5173.65 9781.77 +4544.68 6955.44 7387.42 8709.05 0.00 5609.88 8462.18 4741.61 8975.39 609.42 7440.07 6390.82 3266.83 3311.93 7304.48 8892.36 5959.21 5692.63 5455.68 5299.72 5104.33 8684.56 2812.00 4739.84 3973.78 6222.99 1142.02 3825.42 6490.15 3804.55 5538.55 1601.02 8504.21 5688.91 8847.66 4845.34 1982.35 5988.02 4431.82 4998.70 7648.15 7594.92 7180.25 7007.80 5689.04 8619.37 6843.99 3043.02 4507.80 9378.18 6065.87 5337.81 1263.97 7806.44 4348.94 2167.41 4237.47 8349.98 5456.83 6532.24 7485.61 3760.30 5055.94 7399.26 4477.02 3878.51 5334.07 5583.45 7822.82 2571.38 4706.56 2998.04 4591.15 9956.88 8840.96 5999.39 1518.57 7507.65 4991.15 941.35 6594.30 4675.78 8830.22 6145.61 2460.31 1972.43 8510.86 8530.68 8832.88 8846.32 1707.97 9162.62 6984.96 1303.19 3905.92 7446.67 3195.56 2468.84 7206.99 5280.70 8665.61 6116.87 3461.83 602.70 3119.36 5197.20 966.89 4620.06 3430.59 3654.04 4937.75 2558.88 1879.39 875.58 6433.86 3729.11 1963.18 1508.19 9418.45 6339.47 +7073.18 5027.51 1832.23 3125.08 5609.88 0.00 2900.73 4279.17 5483.59 5658.47 1956.01 2825.92 3706.48 2539.96 1923.06 5641.54 1290.70 734.18 1041.24 1670.53 1368.61 3093.57 2975.88 6779.17 6959.62 8160.78 4521.32 3699.75 978.60 5235.89 1282.26 6743.96 2947.27 2808.02 5382.96 1686.18 3757.32 9103.57 7187.49 1481.76 3293.57 3584.15 2295.41 5893.24 1610.33 6488.27 3183.40 4041.70 8023.62 6845.15 5191.12 2491.27 4395.70 2765.31 7993.91 3491.68 8067.43 4147.87 3031.93 3940.20 5546.75 6451.34 1507.06 6654.44 6475.31 3578.51 3367.01 3694.03 4134.53 5703.56 1705.27 2729.03 3956.31 6460.41 3761.57 2281.61 5305.38 5444.17 4695.76 4669.25 6657.67 2919.66 3262.71 8122.30 3162.09 6106.64 4761.45 3748.04 4220.07 3325.55 4593.51 6379.76 1550.86 4630.73 2009.29 2098.84 4281.49 6042.48 5545.75 3148.64 4712.97 5118.99 6991.09 5025.61 5897.19 3215.59 5946.13 1058.72 5198.55 6167.27 7172.35 6001.87 6715.66 5035.97 4546.32 6300.58 3978.14 4194.33 5904.44 7911.08 +9122.96 5609.48 1076.44 296.71 8462.18 2900.73 0.00 5993.67 4705.57 8453.13 1049.92 3470.40 6073.23 5433.15 2070.45 5021.07 2689.47 3115.07 3494.97 3503.33 3521.47 1098.15 5717.31 8717.89 9166.21 9842.30 7345.94 6382.47 2254.22 7332.93 3106.55 9475.73 53.52 4034.34 4662.46 4302.32 6540.82 11104.13 9291.52 4076.98 2696.73 3184.97 1944.98 6662.07 3733.72 6460.69 3439.41 6850.96 10256.89 6451.45 6325.80 4722.12 7275.59 1586.00 10268.39 6380.74 10388.85 3196.59 4401.38 4586.85 5929.27 8654.25 3619.27 7416.77 8458.29 6255.57 5569.68 4957.80 3740.03 8160.92 4379.97 5495.56 5748.28 5409.70 1748.87 4113.35 7974.35 5780.36 6306.75 7527.52 7826.02 4788.23 1355.91 9823.92 6041.90 8709.52 4008.72 3524.73 2718.96 1645.81 7276.43 5918.16 1505.83 7528.63 4878.76 1200.42 7059.83 8539.40 6104.69 5376.02 3775.20 6214.74 9807.46 7890.55 8697.67 4734.35 8704.94 3955.38 7938.59 8911.84 9109.37 8476.24 9390.92 7927.36 5361.06 9042.08 6878.83 7083.14 4979.90 9486.98 +3159.44 2225.88 5161.90 6290.32 4741.61 4279.17 5993.67 0.00 4462.52 4320.29 5024.85 2649.95 1592.01 4345.04 6097.73 4303.09 3470.42 4917.83 5030.26 2705.47 2922.73 6766.22 2845.06 2727.37 3312.47 3926.58 3823.90 6034.19 5168.04 1527.93 3162.40 4779.31 6010.96 1971.70 4337.67 5117.14 3210.56 5111.86 3351.90 5063.58 3914.95 3627.12 4097.36 2355.61 5608.43 3879.04 2923.42 5737.28 4381.07 4640.02 1394.94 6090.91 4299.31 4645.94 4430.84 4018.77 4597.41 4312.71 1599.80 2086.52 2744.37 2829.87 2783.68 2920.02 2481.70 5975.53 6734.11 1191.26 3588.33 2861.14 5015.00 2953.78 335.55 5368.71 5450.94 6267.20 3392.69 2771.28 438.82 4198.78 2522.37 1361.04 7009.61 3896.57 3776.12 3692.25 4173.90 8017.17 4997.46 7184.49 3035.00 4451.99 4643.31 4798.18 4447.39 4795.36 6045.07 3257.66 2469.72 6546.41 4412.53 1416.44 7853.03 4484.10 7082.59 1259.48 4305.60 4117.39 6853.77 7573.74 3116.84 3151.01 4485.21 4874.21 1740.99 7693.08 4660.80 4332.89 4873.60 3642.33 +7149.97 2452.91 4705.93 4915.54 8975.39 5483.59 4705.57 4462.52 0.00 8648.93 4422.34 2861.87 5719.11 7298.48 6250.27 380.99 4211.67 6175.58 6522.50 4274.89 4645.61 5803.43 6426.17 6614.81 7513.02 7055.34 7910.22 8895.59 5735.14 5929.14 4389.82 9228.07 4679.99 3392.59 127.75 7113.59 7125.28 8712.01 7395.32 6933.20 2267.99 1902.57 3358.49 3253.61 7063.83 2068.38 2403.62 8958.59 8469.40 1784.71 3643.72 7974.50 8215.65 3259.02 8572.60 7603.18 8784.56 1526.36 3548.41 2449.97 2268.27 7103.25 4588.57 3754.14 6502.51 8791.62 8844.65 3412.33 1361.43 7322.66 7095.94 6368.38 4491.75 1023.99 3066.78 7698.78 7783.55 2128.52 4431.33 8249.36 4642.04 4325.60 6060.94 7074.17 7260.15 8152.71 744.25 8102.73 2053.18 6351.01 7303.16 1255.91 4431.25 8666.50 7030.83 4048.93 9254.96 7716.74 2624.03 8626.17 930.45 3526.31 11634.17 8591.65 10672.63 3780.77 8696.56 6175.95 10181.56 11075.09 6918.03 7607.97 8945.89 8882.13 2762.37 11207.28 8279.14 8153.86 454.73 6584.00 +3936.83 6545.56 7386.19 8711.06 609.42 5658.47 8453.13 4320.29 8648.93 0.00 7415.61 6160.68 2933.83 3527.88 7430.65 8544.51 5874.94 5817.91 5615.70 5166.76 5011.35 8751.14 2738.02 4141.25 3364.35 5615.58 1154.38 4260.38 6576.97 3274.42 5447.61 1182.91 8492.67 5436.50 8521.28 5067.40 1912.91 5393.17 3822.47 5200.96 7448.41 7358.60 7060.97 6532.41 5904.34 8181.56 6600.42 3506.22 3916.22 8958.24 5604.35 5646.32 1544.70 7691.17 3762.36 2361.57 3661.78 8113.01 5176.30 6199.01 7059.73 3156.15 4947.73 6888.91 3884.22 4300.85 5723.14 5238.77 7545.33 1981.01 4925.76 2958.14 4201.15 9612.95 8711.07 6270.35 973.06 7091.23 4535.92 1152.48 6052.11 4404.19 8911.86 5538.00 2593.88 1364.68 8220.86 8767.79 8634.89 8948.36 1351.38 8767.36 6957.40 1746.74 4101.53 7391.47 3688.21 1861.07 6767.22 5651.62 8393.41 5663.09 4064.15 961.05 3722.36 4893.24 405.39 4719.76 3997.09 4258.31 4332.19 1953.08 1365.63 1385.35 6041.26 4335.34 2322.18 1799.64 9085.48 5737.98 +8126.38 4886.33 285.47 1329.88 7440.07 1956.01 1049.92 5024.85 4422.34 7415.61 0.00 2624.60 5029.17 4491.78 1836.06 4685.37 1647.35 2324.39 2721.11 2465.86 2471.84 1764.55 4677.93 7736.88 8147.94 8914.62 6316.99 5587.64 1556.91 6320.80 2059.50 8429.36 1084.57 3097.23 4353.73 3509.50 5505.01 10122.57 8287.58 3285.37 2195.01 2654.55 1180.21 5913.21 3083.08 5949.25 2700.52 5985.36 9238.13 6069.18 5478.44 4085.88 6270.47 1182.46 9244.52 5386.04 9359.77 2907.10 3453.70 3808.55 5273.33 7634.76 2571.00 6683.13 7468.80 5462.74 4968.02 4048.77 3252.66 7116.16 3565.45 4460.69 4763.67 5265.21 1950.08 3587.50 6925.44 5134.31 5360.40 6509.67 6994.18 3777.40 2021.79 8892.13 5040.49 7659.69 3683.28 3703.99 2674.42 2240.95 6228.66 5548.31 458.53 6544.22 3964.61 375.20 6214.72 7492.88 5401.55 4760.30 3517.75 5374.23 8940.26 6875.09 7840.98 3771.89 7661.84 3011.93 7119.02 8091.76 8130.68 7430.89 8341.63 6931.54 4567.75 8224.11 5911.42 6086.21 4768.26 8578.82 +5806.54 2317.88 2833.85 3763.77 6390.82 2825.92 3470.40 2649.95 2861.87 6160.68 2624.60 0.00 3290.36 4437.12 4138.39 2935.32 1552.51 3557.64 3852.34 1416.48 1793.87 4381.30 3679.13 5356.60 5950.14 6387.48 5271.93 6041.78 3365.24 4126.25 1596.36 6938.16 3478.64 751.57 2744.12 4344.18 4446.37 7726.33 6001.78 4184.31 1325.40 1204.38 1525.53 3308.72 4434.94 3665.21 473.14 6098.42 7026.75 4035.34 2862.41 5261.19 5490.53 2013.28 7069.46 4804.03 7225.50 1959.18 1094.93 1210.35 2779.46 5455.88 1729.02 4083.31 5125.98 5940.17 6101.16 1515.27 1529.31 5247.13 4309.17 3583.59 2474.28 3884.29 2809.72 5107.35 5413.13 2661.21 2898.52 5579.61 4373.61 1783.17 4642.39 6372.59 4451.41 5967.46 2234.82 6127.83 2495.07 4865.43 4819.81 3591.12 2356.16 5912.13 4177.69 2318.11 6393.79 5650.67 2843.36 5884.42 2322.46 2754.95 8816.02 5939.21 7830.78 1446.76 6288.05 3358.30 7321.72 8222.24 5738.04 5562.08 6736.33 6173.51 1948.59 8354.96 5470.24 5398.67 3312.93 6021.15 +3410.34 3727.17 5081.90 6358.48 3266.83 3706.48 6073.23 1592.01 5719.11 2933.83 5029.17 3290.36 0.00 2967.45 5629.21 5626.84 3383.77 4185.99 4179.24 2574.43 2576.28 6627.67 1365.85 3191.65 3254.25 4702.32 2265.27 4585.82 4681.05 1622.19 2970.77 3647.81 6103.13 2545.67 5591.38 4042.56 1618.63 5430.50 3501.65 4048.41 4607.99 4467.62 4402.73 3947.42 4692.44 5426.15 3706.97 4208.75 4317.96 6150.76 2986.16 4961.89 2710.98 5024.20 4293.16 2458.35 4378.62 5216.81 2257.41 3270.71 4279.13 2748.33 2464.66 4486.26 2871.10 4542.22 5482.54 2317.15 4619.07 2087.84 3918.27 1544.55 1367.64 6692.74 5987.77 5290.23 2125.83 4284.96 1951.35 2633.32 3942.98 1507.44 6838.97 4649.49 2252.05 2705.53 5289.04 7384.21 5785.19 6954.17 1584.58 5909.27 4585.57 3208.38 3210.57 4905.98 4512.04 2470.70 4032.96 5316.00 5468.39 3007.79 6265.58 2940.28 5492.28 1961.57 3016.07 3177.20 5288.76 5986.76 3569.17 2403.84 3456.61 3304.18 3187.36 6105.01 3081.66 2740.90 6158.64 4560.96 +6157.59 6028.72 4370.92 5644.80 3311.93 2539.96 5433.15 4345.04 7298.48 3527.88 4491.78 4437.12 2967.45 0.00 4028.71 7351.67 3351.85 2439.34 2161.63 3033.15 2681.41 5481.25 1612.08 6050.04 5829.62 7608.51 2394.31 1712.26 3286.64 4527.91 3022.52 4702.40 5480.88 3982.33 7179.74 1540.78 1918.12 8082.39 6183.35 1686.84 5395.46 5531.51 4600.25 6576.77 2381.68 7717.67 4901.24 1663.82 6759.33 8284.42 5664.87 2200.70 2047.97 5165.86 6671.21 1166.41 6669.14 6226.69 3964.94 5156.84 6608.04 5385.37 2719.53 7230.00 5725.56 1640.74 2550.12 4457.11 5959.67 4309.16 1399.89 1425.39 4029.38 8321.36 6203.83 2757.14 3524.25 6558.37 4770.22 2400.89 6844.11 3349.98 5600.68 7549.56 988.44 4382.26 6658.54 5240.37 6488.46 5588.23 2884.23 7910.67 4069.52 2163.01 600.09 4600.45 1956.71 4531.11 6467.22 2405.15 6703.79 5646.40 4516.35 2709.34 3459.42 3910.42 3889.20 1481.25 2886.88 3807.27 6399.12 4537.22 4795.42 2602.35 5463.57 3941.18 1472.28 1807.32 7750.03 7506.10 +8983.68 6456.12 1550.59 2121.02 7304.48 1923.06 2070.45 6097.73 6250.27 7430.65 1836.06 4138.39 5629.21 4028.71 0.00 6501.81 2704.19 1614.02 1869.80 3396.63 3189.11 1567.08 4836.80 8673.77 8881.52 10015.24 6277.32 4584.49 950.71 7144.07 2943.21 8557.25 2122.91 4389.74 6177.76 2610.01 5571.70 11014.00 9103.53 2405.44 4000.04 4436.00 2927.72 7426.22 1861.26 7682.01 4340.09 5173.52 9946.64 7863.09 6846.11 2772.91 6049.12 3017.87 9916.71 5138.08 9988.61 4741.08 4688.39 5346.82 6904.98 8372.48 3326.03 8201.46 8374.96 4458.06 3568.94 5345.26 5037.46 7617.94 2724.81 4580.96 5788.45 7101.22 3660.81 2093.16 7167.37 6777.98 6494.24 6369.22 8353.51 4742.78 1619.58 9980.81 4852.35 7987.48 5508.39 1990.98 4488.17 1565.23 6456.98 7349.72 1856.75 6191.05 3429.32 2204.69 5333.88 7949.66 6981.73 3389.80 5351.86 6757.87 8076.63 6704.57 6961.27 4937.97 7747.21 2713.59 6146.98 7106.40 9068.60 7912.84 8562.53 6630.58 6055.54 7231.51 5494.22 5820.63 6602.81 9739.62 +6891.31 2207.42 4966.54 5239.59 8892.36 5641.54 5021.07 4303.09 380.99 8544.51 4685.37 2935.32 5626.84 7351.67 6501.81 0.00 4357.18 6346.64 6682.73 4350.89 4729.17 6117.03 6405.46 6352.52 7275.14 6737.32 7846.59 8975.68 5947.81 5737.80 4502.69 9081.37 4997.57 3398.01 369.34 7244.94 7077.85 8409.55 7139.82 7071.60 2502.49 2094.17 3587.01 2938.45 7236.30 1687.92 2497.90 9004.81 8211.56 1436.50 3394.93 8126.87 8177.75 3539.12 8320.67 7598.62 8537.61 1825.51 3515.77 2363.99 1959.74 6878.82 4662.16 3405.36 6253.71 8874.87 8988.52 3309.81 1511.42 7153.32 7220.23 6362.89 4358.92 1069.31 3412.89 7882.03 7660.14 1829.38 4238.12 8193.20 4319.67 4280.92 6376.90 6758.58 7261.95 7994.21 1014.97 8380.51 2405.45 6663.98 7205.92 902.46 4665.21 8638.01 7112.36 4310.39 9304.73 7542.74 2322.84 8770.33 1258.61 3281.61 11631.62 8528.84 10689.99 3719.18 8575.10 6284.09 10225.53 11104.68 6645.07 7431.83 8786.68 8835.92 2574.18 11236.00 8277.58 8127.54 595.52 6261.68 +6513.77 3820.61 1726.30 2975.28 5959.21 1290.70 2689.47 3470.42 4211.67 5874.94 1647.35 1552.51 3383.77 3351.85 2704.19 4357.18 0.00 2014.29 2330.26 820.46 864.17 3319.55 3151.60 6145.28 6512.04 7394.50 4819.69 4784.42 1851.47 4693.51 429.25 6841.97 2719.60 1686.02 4107.67 2904.77 3986.19 8524.62 6666.14 2721.63 2088.63 2323.72 1262.81 4748.11 2899.24 5216.81 1893.03 4987.71 7601.13 5555.67 4141.95 3769.69 4861.70 1866.50 7603.51 4031.10 7715.38 2942.10 1988.67 2714.60 4314.20 5998.18 941.86 5520.82 5866.72 4671.32 4634.13 2641.87 2855.35 5471.47 2894.01 2962.64 3184.84 5202.10 2913.42 3564.46 5322.24 4202.70 3841.21 5052.82 5650.19 2163.97 3554.03 7366.01 3670.86 6033.39 3500.74 4685.46 3138.50 3717.32 4637.50 5089.06 1214.00 5198.57 2952.15 1536.85 5259.85 5850.72 4345.32 4415.73 3477.99 4054.28 7864.50 5422.77 6810.58 2257.62 6094.25 2019.62 6194.93 7141.21 6540.93 5786.90 6732.11 5543.93 3379.85 7275.47 4632.07 4708.33 4640.27 7090.34 +7590.24 5758.44 2125.83 3289.49 5692.63 734.18 3115.07 4917.83 6175.58 5817.91 2324.39 3557.64 4185.99 2439.34 1614.02 6346.64 2014.29 0.00 397.27 2383.68 2055.40 3044.69 3262.37 7329.07 7430.02 8753.62 4664.16 3277.51 872.72 5767.14 2012.96 6949.67 3166.44 3533.23 6078.31 1193.02 3970.27 9615.21 7687.54 967.32 3953.22 4273.04 2910.04 6612.60 889.68 7221.34 3906.23 3740.94 8473.27 7569.34 5890.02 1830.93 4440.17 3306.29 8429.21 3527.82 8484.42 4799.71 3743.41 4673.61 6280.06 6929.66 2190.04 7370.11 7017.85 3151.38 2719.99 4401.68 4836.18 6093.58 1265.01 3003.22 4588.49 7138.68 4242.22 1550.46 5581.13 6178.07 5343.45 4756.18 7339.67 3569.86 3161.46 8711.48 3238.51 6412.51 5445.79 3198.27 4804.78 3157.07 4874.11 7098.98 2005.51 4600.35 1846.38 2555.72 3944.99 6407.69 6275.42 2504.07 5379.29 5822.01 6694.56 5093.65 5583.40 3908.10 6137.99 1109.51 4826.47 5800.22 7718.10 6378.79 6965.54 5033.47 5272.00 5931.11 3911.39 4215.08 6588.74 8525.56 +7589.39 6003.59 2519.36 3660.06 5455.68 1041.24 3494.97 5030.26 6522.50 5615.70 2721.11 3852.34 4179.24 2161.63 1869.80 6682.73 2330.26 397.27 0.00 2605.90 2251.65 3364.55 3153.15 7353.98 7396.68 8810.16 4461.98 2889.45 1241.89 5784.51 2275.01 6764.77 3546.84 3767.75 6422.70 807.45 3810.35 9605.19 7674.03 582.53 4317.08 4621.54 3287.35 6824.14 600.04 7505.59 4221.16 3377.21 8422.76 7880.36 6067.98 1457.84 4194.87 3697.78 8369.41 3288.90 8412.73 5167.51 3950.05 4934.29 6537.30 6903.65 2379.09 7572.83 7038.14 2762.89 2342.33 4598.55 5175.27 6014.40 893.14 2892.91 4696.86 7494.68 4638.94 1283.51 5439.55 6441.17 5462.57 4527.17 7490.97 3704.30 3462.71 8764.93 3022.68 6282.72 5797.68 3250.89 5191.27 3433.43 4740.44 7418.43 2401.28 4322.36 1561.59 2952.29 3571.63 6311.96 6514.89 2125.00 5741.07 6006.35 6324.30 4853.76 5211.00 4086.35 5949.86 1008.69 4443.62 5416.89 7738.55 6290.20 6803.13 4763.93 5501.28 5547.22 3624.55 3961.51 6940.96 8602.09 +5703.27 3400.22 2545.05 3791.36 5299.72 1670.53 3503.33 2705.47 4274.89 5166.76 2465.86 1416.48 2574.43 3033.15 3396.63 4350.89 820.46 2383.68 2605.90 0.00 385.76 4131.90 2494.12 5345.41 5692.65 6630.45 4158.26 4625.33 2479.70 3877.73 457.33 6089.51 3531.87 1163.00 4158.45 2988.47 3317.47 7719.41 5851.74 2849.84 2425.61 2506.86 1894.81 4229.12 3205.40 4949.02 1872.03 4696.87 6781.38 5400.69 3523.05 3939.36 4274.02 2525.39 6783.12 3507.36 6895.07 3223.33 1361.58 2349.79 3941.84 5178.67 314.09 4986.76 5061.88 4524.01 4748.05 2023.58 2928.19 4661.71 2938.84 2342.28 2404.53 5295.32 3546.36 3889.00 4560.07 3852.54 3097.66 4422.69 5001.00 1365.92 4361.91 6598.76 3146.77 5245.91 3625.49 5340.06 3583.21 4514.36 3890.73 4979.64 2034.34 4654.69 2761.49 2331.66 4988.74 5044.67 3909.38 4534.23 3675.43 3449.22 7468.18 4791.65 6457.27 1558.15 5361.73 1970.56 5920.03 6832.66 5741.46 4978.14 5959.96 4962.30 2895.82 6966.03 4151.50 4148.58 4724.03 6344.82 +5823.79 3768.54 2507.87 3800.38 5104.33 1368.61 3521.47 2922.73 4645.61 5011.35 2471.84 1793.87 2576.28 2681.41 3189.11 4729.17 864.17 2055.40 2251.65 385.76 0.00 4055.58 2293.31 5493.20 5771.81 6828.36 3963.29 4250.43 2249.56 3985.88 436.32 5980.48 3554.78 1533.67 4530.44 2605.95 3127.13 7850.07 5958.51 2471.46 2731.32 2850.18 2082.03 4572.62 2851.62 5331.47 2242.13 4344.30 6854.63 5786.45 3834.62 3561.49 4030.67 2704.07 6844.95 3228.60 6943.66 3550.07 1698.45 2729.55 4315.66 5258.04 139.24 5323.37 5199.59 4147.59 4364.67 2350.22 3293.36 4655.97 2554.37 2113.64 2605.95 5663.88 3744.49 3534.74 4464.25 4229.25 3333.22 4205.85 5290.99 1561.89 4272.49 6793.00 2866.76 5188.19 3985.68 5094.49 3864.09 4402.29 3775.95 5364.61 2020.10 4388.70 2385.66 2394.88 4632.58 5027.29 4273.25 4151.31 4022.81 3767.13 7147.68 4575.94 6123.03 1853.13 5230.35 1585.00 5566.13 6487.40 5888.87 4968.63 5877.02 4716.70 3254.35 6621.12 3855.77 3889.62 5092.95 6562.91 +9833.18 6605.92 1604.33 924.82 8684.56 3093.57 1098.15 6766.22 5803.43 8751.14 1764.55 4381.30 6627.67 5481.25 1567.08 6117.03 3319.55 3044.69 3364.55 4131.90 4055.58 0.00 6061.26 9461.92 9818.42 10670.53 7610.50 6148.46 2200.60 8009.56 3690.49 9835.24 1126.10 4857.88 5759.43 4142.37 6850.66 11843.33 9983.62 3928.58 3754.48 4240.90 2887.89 7646.56 3424.93 7535.25 4417.90 6719.62 10904.66 7545.55 7240.29 4335.44 7449.88 2639.23 10898.87 6537.49 10999.24 4291.79 5210.37 5548.64 6957.76 9304.24 4174.82 8411.06 9185.65 6021.77 5109.22 5812.47 4810.65 8694.31 4247.75 5818.53 6493.76 6501.08 2824.41 3634.97 8380.91 6812.42 7113.04 7743.30 8754.42 5483.01 267.23 10646.58 6225.48 9163.20 5103.69 2511.50 3811.53 547.66 7670.59 7012.75 2123.02 7637.33 4890.83 2066.88 6889.71 9054.33 7112.47 4938.34 4873.00 7134.90 9637.26 8092.97 8521.46 5521.24 9039.31 4067.56 7712.15 8672.90 9857.16 9002.78 9796.29 8063.80 6315.20 8798.24 6953.43 7234.53 6076.95 10340.09 +4591.34 4768.92 4653.82 5978.03 2812.00 2975.88 5717.31 2845.06 6426.17 2738.02 4677.93 3679.13 1365.85 1612.08 4836.80 6405.46 3151.60 3262.37 3153.15 2494.12 2293.31 6061.26 0.00 4453.29 4314.18 6003.32 1670.33 3223.54 3932.01 2918.22 2728.44 3776.89 5756.31 3039.93 6300.45 2843.47 834.67 6558.14 4637.32 2894.88 4880.47 4875.81 4368.42 5165.00 3585.61 6487.66 4147.66 2892.81 5302.40 7141.40 4219.38 3698.84 1811.48 4994.45 5237.05 1221.97 5268.69 5624.41 2889.89 4070.62 5345.04 3844.75 2244.14 5764.33 4128.68 3177.53 4151.26 3219.91 5176.11 2869.55 2708.04 260.35 2555.81 7440.44 6029.65 4117.86 2332.96 5321.94 3249.02 1929.55 5290.74 2139.83 6237.43 5945.69 936.83 3152.15 5880.46 6403.54 6057.48 6299.40 1621.34 6831.26 4219.62 2242.35 1928.41 4656.58 3201.21 3158.91 5150.37 3994.96 5996.67 4219.65 5234.57 2297.92 4346.05 2719.85 2991.39 2160.79 4030.27 4806.10 4810.66 3138.91 3739.90 2495.94 4202.70 4931.49 1898.85 1728.78 6879.67 5894.36 +544.25 4162.62 7860.09 9014.38 4739.84 6779.17 8717.89 2727.37 6614.81 4141.25 7736.88 5356.60 3191.65 6050.04 8673.77 6352.52 6145.28 7329.07 7353.98 5345.41 5493.20 9461.92 4453.29 0.00 1084.06 1577.65 4393.52 7515.90 7725.71 1571.31 5798.92 3862.20 8736.03 4698.42 6504.26 7231.29 4278.11 2386.48 801.58 7240.06 6570.84 6228.38 6824.03 3522.25 7879.89 5280.22 5581.16 6970.38 1860.86 6129.20 2974.39 8136.07 5023.29 7364.62 1982.15 5245.49 2215.24 6846.00 4326.86 4577.48 4424.93 1007.54 5359.46 3471.19 324.64 7498.35 8599.32 3850.29 6065.93 2173.66 7105.01 4676.96 2973.28 7334.62 8128.66 8481.88 3259.64 4536.77 2463.50 4725.52 2410.17 3982.27 9699.07 1512.03 5174.30 2861.00 6532.51 10514.55 7578.28 9859.06 3487.72 6161.86 7341.49 5474.91 6370.49 7518.32 7241.82 2303.36 4058.26 8447.15 6817.32 3094.78 8201.56 4827.79 7753.77 3986.04 3880.03 6360.07 7831.97 8290.47 396.11 2199.13 3437.26 5312.40 3948.38 8383.27 5692.58 5186.93 6947.69 1604.46 +638.79 5068.25 8237.69 9459.70 3973.78 6959.62 9166.21 3312.47 7513.02 3364.35 8147.94 5950.14 3254.25 5829.62 8881.52 7275.14 6512.04 7430.02 7396.68 5692.65 5771.81 9818.42 4314.18 1084.06 0.00 2282.32 3855.36 7137.87 7932.19 1838.96 6128.28 2887.55 9189.78 5238.89 7397.31 7156.93 3942.63 2252.77 462.54 7199.39 7227.38 6931.20 7340.42 4530.63 7876.30 6302.96 6235.81 6513.06 1090.68 7151.28 3881.00 7998.75 4484.85 7918.13 1119.36 4879.62 1291.06 7595.33 4870.13 5329.28 5388.50 514.19 5647.68 4537.57 1047.87 7137.99 8360.24 4499.14 6840.40 1568.22 7022.08 4563.09 3479.24 8286.11 8758.22 8430.07 2610.55 5488.14 3164.81 4140.33 3486.81 4378.55 10041.32 2202.19 4882.20 2008.61 7362.05 10626.57 8299.22 10173.87 3029.60 7151.53 7725.69 4888.09 6233.51 7969.74 6760.43 1518.40 5026.00 8229.00 7630.25 3993.53 7410.02 4170.03 7071.26 4516.81 3046.08 6388.08 7251.30 7609.18 1072.21 1447.57 2454.87 4653.37 4780.23 7691.29 5221.39 4683.69 7870.03 2488.96 +1679.23 4710.26 9068.57 10138.09 6222.99 8160.78 9842.30 3926.58 7055.34 5615.58 8914.62 6387.48 4702.32 7608.51 10015.24 6737.32 7394.50 8753.62 8810.16 6630.45 6828.36 10670.53 6003.32 1577.65 2282.32 0.00 5956.00 9092.30 9077.86 3088.83 7087.71 5158.23 9854.29 5818.87 6961.73 8740.93 5855.22 1750.28 1821.06 8736.08 7475.98 7073.21 7905.71 3801.81 9355.03 5360.80 6521.36 8547.06 2344.98 6173.89 3639.70 9663.87 6587.86 8389.80 2544.15 6822.75 2800.91 7593.71 5461.10 5413.46 4787.16 2471.53 6690.54 3421.48 1896.57 9073.60 10154.37 4884.71 6793.68 3695.52 8618.64 6218.66 4227.81 7602.64 9036.56 9975.40 4784.88 4929.51 3558.65 6279.18 2418.73 5272.93 10918.70 81.53 6746.69 4278.27 7135.27 11908.83 8355.81 11102.28 5058.30 6339.74 8551.87 7030.68 7906.51 8658.13 8817.15 3754.52 4435.54 9997.56 7445.35 3763.67 9676.12 6360.26 9284.50 5151.14 5316.42 7832.65 9393.60 9822.45 1294.66 3664.82 4725.20 6846.27 4679.34 9911.05 7267.31 6757.36 7312.96 493.53 +4328.29 5992.39 6273.82 7597.88 1142.02 4521.32 7345.94 3823.90 7910.22 1154.38 6316.99 5271.93 2265.27 2394.31 6277.32 7846.59 4819.69 4664.16 4461.98 4158.26 3963.29 7610.50 1670.33 4393.52 3855.36 5956.00 0.00 3337.66 5429.46 3166.10 4397.96 2312.10 7386.95 4583.53 7782.78 3927.93 840.86 6049.57 4278.63 4054.91 6516.24 6476.18 6038.31 6156.47 4760.56 7687.84 5730.16 2665.21 4624.45 8415.95 5197.74 4552.09 633.23 6664.70 4503.00 1236.18 4455.20 7230.32 4370.55 5482.66 6542.28 3513.19 3914.01 6624.13 4092.28 3355.94 4708.12 4552.21 6725.18 2294.51 3785.73 1862.14 3628.80 8904.60 7698.94 5148.94 1272.42 6550.03 4128.62 378.36 5921.81 3588.95 7766.97 5884.62 1442.02 2086.93 7419.57 7627.10 7699.48 7798.89 924.80 8168.08 5860.38 1089.71 2956.83 6313.94 2905.68 2379.94 6287.97 4615.77 7563.01 5233.45 4058.89 682.25 3417.00 4131.00 1496.90 3568.10 3438.60 3944.52 4666.01 2424.70 2406.74 1054.02 5451.39 4048.07 1379.64 832.03 8357.71 5984.89 +7548.43 7735.43 5401.57 6538.15 3825.42 3699.75 6382.47 6034.19 8895.59 4260.38 5587.64 6041.78 4585.82 1712.26 4584.49 8975.68 4784.42 3277.51 2889.45 4625.33 4250.43 6148.46 3223.54 7515.90 7137.87 9092.30 3337.66 0.00 4128.27 6062.25 4526.15 5411.06 6434.60 5649.05 8780.80 2084.50 3238.65 9365.33 7535.19 2310.25 6872.39 7068.75 5963.00 8287.12 2723.66 9416.53 6492.45 808.83 7958.01 9963.21 7370.15 1908.27 2755.65 6463.39 7839.86 2273.46 7792.10 7723.40 5657.31 6839.49 8313.95 6744.60 4313.54 8933.34 7195.73 127.27 1563.89 6165.78 7540.39 5571.30 2022.19 3083.34 5724.91 9912.25 7458.57 2669.33 4607.33 8260.93 6452.60 3148.74 8511.33 5060.83 6199.04 9027.84 2361.76 5419.52 8225.80 5161.45 7890.03 6104.61 4108.38 9573.82 5228.03 2527.70 1864.80 5782.45 812.15 5705.87 8178.13 1569.99 8239.71 7354.34 3495.76 3302.67 2383.15 5617.46 4664.13 2765.18 1565.29 2533.76 7837.46 5740.55 5624.92 2953.53 7171.60 2662.43 1966.43 2517.15 9341.80 9037.61 +8033.18 5664.98 1319.84 2419.29 6490.15 978.60 2254.22 5168.04 5735.14 6576.97 1556.91 3365.24 4681.05 3286.64 950.71 5947.81 1851.47 872.72 1241.89 2479.70 2249.56 2200.60 3932.01 7725.71 7932.19 9077.86 5429.46 4128.27 0.00 6193.70 2034.46 7683.05 2306.34 3526.47 5649.26 2049.26 4692.55 10063.55 8152.84 1824.39 3469.26 3853.86 2381.25 6599.44 1529.35 6993.34 3630.37 4612.25 8998.95 7250.76 5972.09 2532.99 5250.79 2655.24 8970.87 4337.97 9045.63 4280.33 3803.55 4555.56 6144.26 7422.74 2387.66 7371.78 7425.90 4001.40 3412.15 4466.32 4445.57 6681.76 2131.47 3680.20 4854.46 6651.73 3506.65 2042.65 6264.87 6026.28 5571.18 5549.47 7468.29 3809.13 2340.23 9042.23 4029.88 7074.29 4992.35 2860.88 4174.07 2373.45 5553.05 6754.87 1341.73 5438.16 2702.33 1849.27 4812.21 7019.11 6190.64 3205.65 4881.93 5889.33 7563.78 5896.31 6451.39 4033.90 6878.76 1870.16 5685.01 6658.01 8120.26 6979.43 7669.61 5863.32 5231.28 6788.09 4757.58 5034.18 6122.26 8810.10 +1840.05 3564.41 6419.59 7627.15 3804.55 5235.89 7332.93 1527.93 5929.14 3274.42 6320.80 4126.25 1622.19 4527.91 7144.07 5737.80 4693.51 5767.14 5784.51 3877.73 3985.88 8009.56 2918.22 1571.31 1838.96 3088.83 3166.10 6062.25 6193.70 0.00 4321.48 3456.94 7355.68 3405.56 5806.98 5664.43 2862.22 3869.97 1974.86 5670.01 5420.05 5149.75 5501.62 3325.89 6308.60 5054.78 4433.63 5580.80 2928.04 5874.44 2462.63 6577.90 3762.35 6081.56 2953.67 3820.14 3100.61 5840.44 3039.05 3606.68 3996.54 1333.92 3856.56 3619.99 1253.65 6033.87 7069.02 2716.14 5113.84 1468.13 5539.49 3130.16 1652.14 6789.35 6935.94 6911.73 2301.85 4062.03 1499.82 3533.37 2791.96 2545.04 8237.96 3033.50 3701.26 2337.60 5685.73 8958.68 6520.22 8381.83 2245.82 5770.07 5904.76 4249.41 4817.99 6134.92 5867.97 1829.87 3663.49 6910.07 5932.42 2547.64 7180.00 3723.05 6582.75 2685.14 3146.49 4789.09 6541.94 7108.45 1954.05 1713.73 3109.64 4183.67 3168.20 7213.46 4341.26 3882.49 6322.09 2981.90 +6151.37 3745.64 2116.28 3389.36 5538.55 1282.26 3106.55 3162.40 4389.82 5447.61 2059.50 1596.36 2970.77 3022.52 2943.21 4502.69 429.25 2012.96 2275.01 457.33 436.32 3690.49 2728.44 5798.92 6128.28 7087.71 4397.96 4526.15 2034.46 4321.48 0.00 6412.77 3138.16 1529.12 4279.42 2749.66 3562.61 8170.31 6296.29 2587.96 2373.71 2542.60 1655.94 4617.76 2867.65 5231.86 2005.58 4676.14 7215.32 5631.10 3946.09 3666.25 4454.79 2273.54 7212.64 3638.73 7319.08 3211.65 1776.23 2662.91 4268.63 5614.10 514.58 5382.62 5513.50 4417.74 4505.11 2440.80 3028.76 5056.99 2719.05 2544.97 2861.84 5398.04 3316.83 3547.95 4893.62 4169.09 3552.43 4636.93 5435.58 1822.16 3916.62 7056.08 3277.29 5608.47 3703.78 4895.13 3477.20 4063.44 4208.28 5186.32 1614.98 4803.18 2669.73 1964.70 4956.76 5433.41 4263.50 4288.23 3714.11 3867.42 7518.90 5007.02 6479.23 1999.71 5665.27 1786.14 5892.51 6827.21 6195.02 5371.49 6304.25 5139.33 3265.62 6961.31 4253.67 4308.00 4829.89 6800.75 +3520.38 6971.19 8421.27 9742.60 1601.02 6743.96 9475.73 4779.31 9228.07 1182.91 8429.36 6938.16 3647.81 4702.40 8557.25 9081.37 6841.97 6949.67 6764.77 6089.51 5980.48 9835.24 3776.89 3862.20 2887.55 5158.23 2312.10 5411.06 7683.05 3456.94 6412.77 0.00 9512.79 6192.40 9101.85 6239.18 2990.50 4606.15 3342.00 6366.89 8254.62 8110.62 7976.70 6779.58 7072.66 8510.32 7350.64 4638.25 3133.78 9324.82 5914.21 6829.22 2725.37 8606.34 2950.65 3537.56 2792.60 8856.12 5892.28 6798.32 7436.21 2862.05 5901.72 7012.96 3674.96 5457.97 6894.72 5836.54 8227.20 1989.54 6097.11 4016.79 4737.77 10147.85 9601.07 7450.29 1535.03 7491.21 4897.80 2335.02 6066.82 5155.11 10006.28 5077.17 3752.52 1119.82 8873.12 9938.96 9432.97 10056.40 2204.55 9196.63 7971.24 2883.61 5268.92 8375.26 4796.40 1662.03 7112.21 6827.97 9075.38 5993.48 4692.63 2113.80 4585.71 5576.09 815.77 5843.84 4995.89 5103.16 3949.75 1781.84 433.11 2474.58 6517.94 5159.40 3495.24 2980.67 9647.41 5374.62 +9143.13 5606.75 1120.50 285.33 8504.21 2947.27 53.52 6010.96 4679.99 8492.67 1084.57 3478.64 6103.13 5480.88 2122.91 4997.57 2719.60 3166.44 3546.84 3531.87 3554.78 1126.10 5756.31 8736.03 9189.78 9854.29 7386.95 6434.60 2306.34 7355.68 3138.16 9512.79 0.00 4049.45 4638.10 4354.14 6580.62 11122.06 9312.75 4128.75 2686.26 3174.41 1953.17 6660.43 3786.99 6444.85 3440.38 6901.64 10280.45 6429.03 6331.59 4775.56 7319.40 1578.55 10292.90 6425.36 10414.42 3173.96 4417.21 4588.75 5922.05 8678.08 3651.40 7413.74 8477.57 6307.73 5623.21 4969.58 3725.90 8190.94 4431.40 5535.45 5767.53 5377.44 1711.34 4166.82 8009.98 5772.65 6321.48 7570.01 7830.00 4811.40 1381.03 9836.33 6085.91 8742.97 3986.07 3565.45 2686.97 1673.40 7312.79 5895.50 1541.80 7574.16 4927.52 1221.17 7111.04 8570.17 6100.32 5429.53 3749.82 6220.05 9858.32 7933.35 8748.73 4751.50 8743.11 4002.59 7990.42 8963.72 9127.16 8506.48 9426.20 7972.04 5363.33 9094.01 6925.40 7127.66 4950.85 9497.12 +5127.37 2237.24 3262.69 4330.98 5688.91 2808.02 4034.34 1971.70 3392.59 5436.50 3097.23 751.57 2545.67 3982.33 4389.74 3398.01 1686.02 3533.23 3767.75 1163.00 1533.67 4857.88 3039.93 4698.42 5238.89 5818.87 4583.53 5649.05 3526.47 3405.56 1529.12 6192.40 4049.45 0.00 3267.99 4134.37 3771.26 7081.01 5312.71 4004.62 2076.95 1924.83 2125.70 3089.02 4366.75 3812.51 1164.75 5621.06 6321.79 4315.27 2456.79 5094.67 4841.89 2681.85 6356.98 4210.66 6505.92 2677.61 372.24 1206.93 2782.02 4738.88 1422.94 3855.55 4452.16 5556.57 5889.12 965.61 2144.15 4496.96 4076.40 2975.81 1760.83 4412.13 3540.28 5050.19 4670.84 2697.17 2272.56 4904.32 3968.62 1039.11 5109.97 5797.61 3868.89 5216.30 2844.47 6371.09 3243.71 5306.96 4090.25 3928.88 2751.72 5282.28 3808.70 2842.09 5924.25 4900.21 2747.19 5677.40 2979.48 2368.27 8242.43 5258.04 7292.11 722.59 5552.16 3101.97 6837.89 7708.15 5086.46 4812.34 5986.36 5517.43 1738.79 7839.18 4887.18 4768.68 3847.09 5482.24 +7038.49 2341.65 4636.47 4877.66 8847.66 5382.96 4662.46 4337.67 127.75 8521.28 4353.73 2744.12 5591.38 7179.74 6177.76 369.34 4107.67 6078.31 6422.70 4158.45 4530.44 5759.43 6300.45 6504.26 7397.31 6961.73 7782.78 8780.80 5649.26 5806.98 4279.42 9101.85 4638.10 3267.99 0.00 7007.61 6998.31 8612.27 7283.10 6828.64 2186.66 1806.97 3276.47 3161.12 6967.13 2033.33 2288.36 8839.18 8357.50 1803.44 3531.61 7873.18 8089.13 3197.10 8459.42 7478.66 8670.36 1471.58 3421.63 2322.35 2175.15 6985.34 4471.92 3677.87 6389.09 8677.31 8741.58 3284.87 1253.54 7198.15 6988.54 6243.66 4365.22 1145.79 3044.46 7604.98 7656.36 2032.50 4309.81 8122.13 4551.25 4198.50 6018.34 6979.59 7136.10 8027.29 670.54 8041.21 2036.18 6306.73 7175.45 1270.10 4351.78 8540.48 6916.00 3979.51 9136.02 7592.59 2527.43 8523.13 892.39 3413.46 11510.04 8464.25 10550.21 3653.18 8569.28 6065.34 10061.98 10953.93 6809.98 7484.03 8820.48 8755.28 2641.30 11086.04 8154.90 8027.94 579.31 6492.34 +7412.78 6357.83 3317.92 4466.62 4845.34 1686.18 4302.32 5117.14 7113.59 5067.40 3509.50 4344.18 4042.56 1540.78 2610.01 7244.94 2904.77 1193.02 807.45 2988.47 2605.95 4142.37 2843.47 7231.29 7156.93 8740.93 3927.93 2084.50 2049.26 5664.43 2749.66 6239.18 4354.14 4134.37 7007.61 0.00 3373.37 9397.24 7471.43 225.78 4966.05 5228.28 3981.59 7097.03 843.91 7937.28 4752.20 2580.14 8141.66 8374.31 6276.32 981.87 3582.80 4436.33 8070.49 2706.71 8090.41 5822.20 4254.64 5335.10 6913.63 6682.92 2711.51 7820.53 6909.05 1958.36 1760.45 4868.79 5754.09 5698.09 142.59 2594.04 4782.01 8106.87 5405.22 1275.31 5008.48 6831.48 5555.86 3941.12 7628.75 3868.78 4224.40 8689.66 2496.01 5864.90 6405.51 3700.42 5905.18 4171.71 4335.51 7935.24 3166.16 3649.23 976.54 3720.66 2766.77 5959.81 6851.78 1545.87 6376.04 6228.98 5520.22 4243.67 4406.03 4329.16 5424.66 1042.08 3636.28 4609.66 7603.58 5952.23 6318.95 4101.58 5826.46 4740.13 2943.70 3337.35 7544.56 8575.26 +4318.27 5303.81 5473.30 6798.18 1982.35 3757.32 6540.82 3210.56 7125.28 1912.91 5505.01 4446.37 1618.63 1918.12 5571.70 7077.85 3986.19 3970.27 3810.35 3317.47 3127.13 6850.66 834.67 4278.11 3942.63 5855.22 840.86 3238.65 4692.55 2862.22 3562.61 2990.50 6580.62 3771.26 6998.31 3373.37 0.00 6191.65 4319.02 3467.50 5679.95 5649.61 5199.15 5566.05 4175.17 7016.08 4908.27 2718.77 4845.58 7715.18 4604.76 4117.49 1112.19 5826.23 4754.27 967.74 4751.14 6402.57 3577.38 4718.57 5867.22 3522.81 3075.13 6094.73 3958.87 3224.70 4420.27 3811.92 5915.38 2399.82 3231.55 1045.34 2973.80 8128.46 6859.14 4636.44 1637.66 5862.33 3562.64 1133.87 5490.54 2800.23 7017.94 5790.14 943.25 2492.08 6614.03 7034.90 6862.01 7065.92 967.93 7441.21 5047.14 1599.85 2401.47 5489.71 3006.18 2613.04 5636.33 4295.00 6748.22 4625.82 4657.63 1493.35 3875.32 3359.41 2188.86 2861.27 3714.56 4374.42 4599.25 2619.85 2996.08 1758.15 4749.51 4491.00 1497.17 1122.36 7575.62 5814.72 +2030.51 6307.80 10242.99 11400.65 5988.02 9103.57 11104.13 5111.86 8712.01 5393.17 10122.57 7726.33 5430.50 8082.39 11014.00 8409.55 8524.62 9615.21 9605.19 7719.41 7850.07 11843.33 6558.14 2386.48 2252.77 1750.28 6049.57 9365.33 10063.55 3869.97 8170.31 4606.15 11122.06 7081.01 8612.27 9397.24 6191.65 0.00 1931.40 9432.48 8910.26 8544.26 9205.73 5473.88 10100.92 7091.29 7927.73 8714.72 1483.16 7912.52 5167.10 10248.97 6668.59 9738.27 1656.66 7119.86 1824.38 9122.68 6710.07 6878.90 6450.08 2714.32 7718.73 5154.19 2657.95 9370.42 10611.16 6213.26 8328.88 3800.12 9263.76 6803.84 5359.37 9309.22 10473.77 10667.78 4780.60 6584.75 4827.82 6304.23 4119.67 6360.65 12078.51 1705.99 7132.78 4046.86 8731.32 12812.69 9871.65 12233.50 5264.71 8059.26 9724.70 7037.18 8481.87 9904.70 8949.20 3669.95 6089.35 10481.24 9032.02 5292.31 9297.34 6282.95 9104.92 6371.19 5022.14 8598.88 9374.47 9636.94 1995.03 3627.15 4203.72 6753.30 6193.89 9706.23 7427.32 6881.60 8993.81 2242.70 +259.70 4942.50 8391.58 9586.75 4431.82 7187.49 9291.52 3351.90 7395.32 3822.47 8287.58 6001.78 3501.65 6183.35 9103.53 7139.82 6666.14 7687.54 7674.03 5851.74 5958.51 9983.62 4637.32 801.58 462.54 1821.06 4278.63 7535.19 8152.84 1974.86 6296.29 3342.00 9312.75 5312.71 7283.10 7471.43 4319.02 1931.40 0.00 7503.45 7251.09 6930.21 7431.94 4323.47 8169.99 6081.59 6258.20 6926.92 1075.04 6930.52 3751.62 8334.01 4910.46 7993.63 1183.35 5268.25 1413.70 7570.07 4940.88 5297.82 5220.44 798.22 5830.10 4261.24 903.89 7531.14 8724.68 4517.75 6799.68 1984.19 7338.90 4880.03 3556.11 8129.27 8798.11 8740.19 3048.42 5329.75 3146.97 4573.67 3192.31 4510.30 10212.65 1740.70 5251.94 2469.71 7289.25 10885.65 8290.65 10356.45 3430.19 6962.19 7875.77 5323.70 6564.49 8091.62 7179.68 1969.68 4854.28 8587.58 7567.95 3869.74 7871.49 4615.45 7523.62 4591.24 3507.66 6667.53 7689.42 8061.73 660.21 1892.50 2908.93 5099.98 4701.05 8145.07 5635.37 5102.84 7735.29 2044.68 +7437.22 6235.73 3092.51 4242.46 4998.70 1481.76 4076.98 5063.58 6933.20 5200.96 3285.37 4184.31 4048.41 1686.84 2405.44 7071.60 2721.63 967.32 582.53 2849.84 2471.46 3928.58 2894.88 7240.06 7199.39 8736.08 4054.91 2310.25 1824.39 5670.01 2587.96 6366.89 4128.75 4004.62 6828.64 225.78 3467.50 9432.48 7503.45 0.00 4770.60 5042.72 3775.34 6997.03 708.72 7796.93 4583.77 2799.03 8197.21 8218.52 6192.31 1090.06 3734.77 4221.40 8131.21 2846.01 8158.05 5626.13 4140.95 5199.59 6786.51 6719.24 2583.18 7727.96 6919.23 2184.07 1918.54 4765.69 5575.60 5761.10 319.79 2640.26 4728.03 7921.92 5185.21 1241.83 5105.12 6700.70 5501.56 4085.13 7565.50 3790.21 4015.54 8686.47 2615.41 5958.83 6220.69 3575.90 5696.02 3969.63 4422.62 7773.49 2945.62 3822.16 1099.58 3499.80 2989.70 6033.97 6734.77 1701.04 6184.85 6141.10 5742.79 4396.15 4629.09 4231.68 5551.35 951.02 3861.72 4835.18 7616.29 6022.13 6433.84 4271.40 5711.07 4965.72 3118.15 3492.89 7361.41 8558.35 +7044.26 2971.21 2472.24 2959.23 7648.15 3293.57 2696.73 3914.95 2267.99 7448.41 2195.01 1325.40 4607.99 5395.46 4000.04 2502.49 2088.63 3953.22 4317.08 2425.61 2731.32 3754.48 4880.47 6570.84 7227.38 7475.98 6516.24 6872.39 3469.26 5420.05 2373.71 8254.62 2686.26 2076.95 2186.66 4966.05 5679.95 8910.26 7251.09 4770.60 0.00 488.24 1090.50 4031.61 4834.49 3786.02 993.00 7049.67 8293.32 3874.21 3847.79 5774.93 6682.31 1115.60 8345.76 5932.65 8510.80 856.39 2413.64 2064.12 3243.60 6741.43 2721.98 4765.24 6360.95 6759.72 6657.25 2733.75 1064.97 6571.36 4966.49 4751.62 3770.84 3192.27 1564.73 5453.18 6725.70 3091.97 4110.61 6805.35 5284.43 3103.36 4021.13 7469.87 5572.28 7291.99 1524.08 5898.83 1186.61 4289.98 6117.19 3354.44 2165.26 7075.64 5031.63 1820.24 7329.03 6975.15 3442.86 6439.21 1426.56 3726.85 9878.96 7170.70 8849.28 2760.96 7591.29 4108.13 8264.87 9200.91 6941.30 6885.82 8058.96 7370.25 2820.76 9335.01 6576.12 6567.02 2654.35 7073.73 +6715.47 2507.07 2926.57 3446.94 7594.92 3584.15 3184.97 3627.12 1902.57 7358.60 2654.55 1204.38 4467.62 5531.51 4436.00 2094.17 2323.72 4273.04 4621.54 2506.86 2850.18 4240.90 4875.81 6228.38 6931.20 7073.21 6476.18 7068.75 3853.86 5149.75 2542.60 8110.62 3174.41 1924.83 1806.97 5228.28 5649.61 8544.26 6930.21 5042.72 488.24 0.00 1508.42 3566.14 5161.28 3305.50 760.70 7194.45 7984.13 3427.10 3434.87 6075.41 6687.01 1603.00 8045.76 5979.85 8220.08 755.27 2220.44 1667.04 2759.75 6455.69 2817.25 4291.35 6032.78 6960.13 6948.91 2435.88 601.50 6364.29 5217.10 4770.50 3517.04 2879.20 1972.79 5798.02 6593.45 2607.15 3783.28 6782.40 4842.49 2963.38 4507.72 7070.20 5623.50 7115.38 1178.13 6356.41 1370.52 4775.04 6014.18 2915.80 2585.13 7101.37 5210.73 2282.10 7481.87 6769.09 2967.81 6730.41 1173.48 3311.86 9970.66 7142.73 8964.13 2550.01 7476.95 4319.58 8415.98 9336.44 6591.00 6674.77 7893.15 7371.60 2397.94 9470.03 6638.51 6588.80 2320.44 6660.40 +7250.58 3720.91 1436.76 2238.26 7180.25 2295.41 1944.98 4097.36 3358.49 7060.97 1180.21 1525.53 4402.73 4600.25 2927.72 3587.01 1262.81 2910.04 3287.35 1894.81 2082.03 2887.89 4368.42 6824.03 7340.42 7905.71 6038.31 5963.00 2381.25 5501.62 1655.94 7976.70 1953.17 2125.70 3276.47 3981.59 5199.15 9205.73 7431.94 3775.34 1090.50 1508.42 0.00 4758.72 3779.15 4778.44 1531.63 6218.69 8428.07 4935.44 4382.62 4740.54 6110.52 630.67 8454.52 5290.72 8592.43 1904.69 2497.59 2662.30 4095.24 6834.39 2124.32 5524.15 6576.95 5845.26 5628.47 3022.21 2109.80 6467.90 3997.53 4195.29 3875.83 4271.78 1662.54 4381.79 6444.00 3955.21 4387.16 6287.24 5887.22 2988.47 3152.93 7889.04 4929.84 7102.98 2614.53 4859.97 1928.54 3393.90 5782.42 4423.52 1078.62 6456.95 4169.89 828.04 6482.67 6861.83 4231.72 5411.69 2501.87 4272.64 9116.39 6657.28 8053.82 2842.69 7255.52 3211.95 7414.60 8369.85 7211.61 6786.19 7833.70 6795.26 3432.04 8504.05 5894.85 5963.43 3741.12 7544.80 +4066.41 1060.40 6135.74 6942.68 7007.80 5893.24 6662.07 2355.61 3253.61 6532.41 5913.21 3308.72 3947.42 6576.77 7426.22 2938.45 4748.11 6612.60 6824.14 4229.12 4572.62 7646.56 5165.00 3522.25 4530.63 3801.81 6156.47 8287.12 6599.44 3325.89 4617.76 6779.58 6660.43 3089.02 3161.12 7097.03 5566.05 5473.88 4323.47 6997.03 4031.61 3566.14 4758.72 0.00 7424.01 1775.88 3229.81 8052.21 5374.79 2622.16 961.78 8076.67 6650.68 5091.42 5503.80 6360.89 5737.08 3940.64 2874.18 2105.56 985.97 4209.46 4445.49 775.54 3483.19 8217.45 8810.76 2231.91 3155.66 4790.26 7017.97 5243.66 2613.98 3849.67 5517.75 8106.74 5567.33 1131.96 2028.72 6533.84 1391.32 3262.68 7911.64 3821.38 6101.65 5659.78 3381.26 9416.91 4707.28 8149.15 5323.02 2642.40 5664.69 7150.57 6581.68 5583.06 8361.81 5132.90 646.51 8608.61 3700.01 946.07 10201.58 6802.59 9437.85 2767.92 6449.79 6056.11 9191.94 9927.10 3773.08 5013.82 6419.58 7210.17 1370.79 10047.10 7011.06 6688.30 3520.15 3331.24 +8095.70 6601.88 2849.05 3859.65 5689.04 1610.33 3733.72 5608.43 7063.83 5904.34 3083.08 4434.94 4692.44 2381.68 1861.26 7236.30 2899.24 889.68 600.04 3205.40 2851.62 3424.93 3585.61 7879.89 7876.30 9355.03 4760.56 2723.66 1529.35 6308.60 2867.65 7072.66 3786.99 4366.75 6967.13 843.91 4175.17 10100.92 8169.99 708.72 4834.49 5161.28 3779.15 7424.01 0.00 8094.03 4792.22 3325.96 8884.37 8454.83 6664.26 1003.64 4426.19 4139.05 8822.16 3545.87 8853.49 5676.96 4549.97 5529.45 7133.62 7390.86 2978.73 8172.08 7561.35 2597.09 1885.84 5197.79 5725.77 6454.88 982.62 3328.47 5274.00 8023.31 5029.97 683.62 5812.83 7036.15 6042.70 4782.56 8080.37 4292.41 3478.40 9307.92 3322.58 6665.86 6332.65 2867.83 5650.77 3397.39 5128.29 7986.83 2821.79 4489.79 1803.75 3356.59 3475.73 6733.84 7113.93 1677.23 6261.04 6603.70 6215.47 5087.22 5100.26 4683.66 6257.36 1522.51 4287.28 5249.60 8260.63 6719.79 7142.29 4943.27 6101.01 5375.75 3784.00 4181.14 7475.22 9158.88 +5822.97 1719.12 6214.09 6706.40 8619.37 6488.27 6460.69 3879.04 2068.38 8181.56 5949.25 3665.21 5426.15 7717.67 7682.01 1687.92 5216.81 7221.34 7505.59 4949.02 5331.47 7535.25 6487.66 5280.22 6302.96 5360.80 7687.84 9416.53 6993.34 5054.78 5231.86 8510.32 6444.85 3812.51 2033.33 7937.28 7016.08 7091.29 6081.59 7796.93 3786.02 3305.50 4778.44 1775.88 8094.03 0.00 3363.05 9300.63 7119.97 849.09 2597.98 8884.89 8125.20 4897.67 7256.63 7709.31 7494.56 3325.08 3760.67 2605.83 1148.86 5985.15 5229.52 1939.32 5255.10 9331.09 9696.00 3280.86 2724.78 6522.82 7884.53 6513.10 4059.40 2292.27 4979.24 8769.65 7232.35 1166.96 3648.56 8058.62 2984.14 4390.78 7801.04 5394.61 7410.72 7391.86 2551.30 9636.86 4007.24 8073.86 6913.81 1004.58 5827.88 8615.90 7604.08 5580.47 9609.88 6878.22 1414.34 9482.78 2853.95 2526.07 11672.25 8355.86 10831.17 3815.15 8132.65 6911.52 10489.67 11293.36 5508.73 6760.09 8162.73 8730.32 2285.09 11419.08 8382.80 8127.71 2142.17 4869.84 +6052.00 2189.29 2939.25 3724.45 6843.99 3183.40 3439.41 2923.42 2403.62 6600.42 2700.52 473.14 3706.97 4901.24 4340.09 2497.90 1893.03 3906.23 4221.16 1872.03 2242.13 4417.90 4147.66 5581.16 6235.81 6521.36 5730.16 6492.45 3630.37 4433.63 2005.58 7350.64 3440.38 1164.75 2288.36 4752.20 4908.27 7927.73 6258.20 4583.77 993.00 760.70 1531.63 3229.81 4792.22 3363.05 0.00 6563.81 7300.55 3663.13 2919.48 5650.06 5958.64 1893.68 7353.84 5276.91 7520.38 1512.90 1463.28 1150.06 2580.07 5751.61 2185.99 3993.17 5368.76 6389.06 6502.28 1740.75 1059.36 5616.62 4724.36 4055.33 2788.48 3423.31 2547.90 5455.38 5832.79 2446.18 3119.31 6042.03 4397.90 2202.83 4683.50 6512.13 4924.49 6359.72 1763.21 6315.97 2104.90 4925.48 5254.87 3197.42 2503.39 6382.88 4627.64 2358.91 6857.85 6021.27 2701.50 6284.59 1850.59 2802.84 9288.98 6400.07 8302.04 1798.79 6716.51 3786.32 7787.22 8691.14 5953.65 5928.66 7135.71 6640.54 1925.23 8824.00 5943.36 5869.26 2852.04 6131.88 +6959.61 7593.14 5827.09 7030.42 3043.02 4041.70 6850.96 5737.28 8958.59 3506.22 5985.36 6098.42 4208.75 1663.82 5173.52 9004.81 4987.71 3740.94 3377.21 4696.87 4344.30 6719.62 2892.81 6970.38 6513.06 8547.06 2665.21 808.83 4612.25 5580.80 4676.14 4638.25 6901.64 5621.06 8839.18 2580.14 2718.77 8714.72 6926.92 2799.03 7049.67 7194.45 6218.69 8052.21 3325.96 9300.63 6563.81 0.00 7283.44 9899.53 7110.81 2626.49 2051.00 6761.38 7155.77 1767.49 7093.69 7885.50 5575.98 6775.52 8173.29 6147.52 4383.32 8656.99 6655.89 891.01 2370.66 6021.23 7622.62 4946.09 2484.09 2811.48 5447.82 9981.98 7785.39 3378.03 3935.30 8135.04 6136.28 2431.33 8150.50 4910.06 6792.79 8479.37 1962.79 4718.55 8322.10 5909.36 8125.56 6722.49 3502.44 9541.77 5592.46 1760.32 2052.25 6139.72 310.23 5044.88 8004.99 2365.03 8367.07 7108.27 2957.94 2545.17 1855.89 5486.18 3911.54 3019.60 1223.41 2153.51 7272.53 5089.50 4871.42 2167.70 7024.74 2287.77 1291.81 1833.21 9410.78 8526.63 +1320.25 6016.50 9326.35 10550.36 4507.80 8023.62 10256.89 4381.07 8469.40 3916.22 9238.13 7026.75 4317.96 6759.33 9946.64 8211.56 7601.13 8473.27 8422.76 6781.38 6854.63 10904.66 5302.40 1860.86 1090.68 2344.98 4624.45 7958.01 8998.95 2928.04 7215.32 3133.78 10280.45 6321.79 8357.50 8141.66 4845.58 1483.16 1075.04 8197.21 8293.32 7984.13 8428.07 5374.79 8884.37 7119.97 7300.55 7283.44 0.00 7967.57 4825.90 8950.34 5232.63 9002.70 204.83 5742.15 456.01 8633.38 5951.91 6361.78 6285.62 1603.38 6731.79 5262.77 1976.38 7970.13 9256.58 5560.41 7867.15 2451.37 8004.19 5557.32 4561.02 9195.38 9831.78 9416.97 3352.16 6397.58 4203.20 4859.23 4185.27 5469.18 11126.05 2267.05 5788.15 2582.12 8362.85 11664.24 9348.29 11255.33 3892.10 8016.82 8814.97 5582.27 7198.71 9060.37 7508.37 2254.82 5918.83 9137.90 8640.19 4944.36 7820.05 4818.85 7623.03 5599.26 3541.26 7414.75 7905.69 8154.52 1613.76 2231.03 2725.11 5284.15 5774.60 8223.33 6003.88 5454.26 8806.92 2724.05 +6671.84 2425.16 6346.08 6673.67 9378.18 6845.15 6451.45 4640.02 1784.71 8958.24 6069.18 4035.34 6150.76 8284.42 7863.09 1436.50 5555.67 7569.34 7880.36 5400.69 5786.45 7545.55 7141.40 6129.20 7151.28 6173.89 8415.95 9963.21 7250.76 5874.44 5631.10 9324.82 6429.03 4315.27 1803.44 8374.31 7715.18 7912.52 6930.52 8218.52 3874.21 3427.10 4935.44 2622.16 8454.83 849.09 3663.13 9899.53 7967.57 0.00 3411.97 9296.52 8827.27 4946.54 8105.07 8361.81 8343.38 3255.06 4324.11 3127.63 1899.44 6829.65 5697.61 2759.67 6103.46 9871.59 10133.57 3922.19 2825.65 7340.88 8333.57 7145.70 4793.34 1639.50 4847.47 9118.40 8018.63 1870.59 4441.11 8782.16 3819.79 5012.58 7806.67 6210.75 8049.66 8208.37 2442.99 9772.70 3836.57 8091.75 7670.23 534.27 6010.80 9311.55 8122.74 5694.29 10206.66 7702.03 2212.61 9917.39 2695.00 3331.42 12358.94 9090.22 11485.76 4430.29 8924.66 7370.50 11103.36 11934.10 6355.64 7584.53 8984.08 9448.94 2967.10 12061.92 9040.20 8815.06 1677.37 5681.16 +3507.00 1191.14 5672.40 6616.90 6065.87 5191.12 6325.80 1394.94 3643.72 5604.35 5478.44 2862.41 2986.16 5664.87 6846.11 3394.93 4141.95 5890.02 6067.98 3523.05 3834.62 7240.29 4219.38 2974.39 3881.00 3639.70 5197.74 7370.15 5972.09 2462.63 3946.09 5914.21 6331.59 2456.79 3531.61 6276.32 4604.76 5167.10 3751.62 6192.31 3847.79 3434.87 4382.62 961.78 6664.26 2597.98 2919.48 7110.81 4825.90 3411.97 0.00 7258.19 5688.98 4810.70 4929.38 5407.51 5143.64 3964.80 2170.03 1784.60 1542.00 3496.77 3700.47 1566.59 2860.11 7304.58 7960.94 1505.98 3167.03 3928.98 6188.64 4308.52 1663.69 4408.64 5402.54 7342.07 4646.30 1622.45 1075.52 5574.74 1518.42 2408.69 7499.75 3638.70 5154.88 4796.87 3574.51 8824.69 4722.28 7715.23 4373.24 3321.65 5174.43 6188.81 5704.11 5180.15 7419.82 4291.26 1201.22 7763.65 3869.37 125.34 9240.31 5847.22 8477.51 1983.09 5540.50 5243.03 8240.96 8968.32 3291.15 4174.19 5572.23 6251.04 1039.86 9087.86 6053.98 5726.92 3990.19 3226.83 +8290.09 7325.16 3852.66 4834.93 5337.81 2491.27 4722.12 6090.91 7974.50 5646.32 4085.88 5261.19 4961.89 2200.70 2772.91 8126.87 3769.69 1830.93 1457.84 3939.36 3561.49 4335.44 3698.84 8136.07 7998.75 9663.87 4552.09 1908.27 2532.99 6577.90 3666.25 6829.22 4775.56 5094.67 7873.18 981.87 4117.49 10248.97 8334.01 1090.06 5774.93 6075.41 4740.54 8076.67 1003.64 8884.89 5650.06 2626.49 8950.34 9296.52 7258.19 0.00 4109.42 5127.18 8866.55 3318.06 8868.42 6625.07 5227.61 6289.15 7876.54 7539.21 3673.02 8801.89 7812.23 1789.71 890.09 5847.08 6623.09 6498.97 1076.03 3463.43 5756.26 8950.81 6031.24 761.12 5721.44 7790.70 6529.73 4494.97 8606.01 4850.52 4357.98 9610.30 3187.70 6578.57 7252.55 3286.22 6632.61 4238.76 5084.52 8845.33 3814.12 4063.56 1770.45 4354.02 2710.94 6730.27 7823.00 676.64 7198.76 7210.75 5382.79 4751.77 4278.55 5309.14 6027.09 2020.59 3430.91 4369.12 8501.19 6734.07 6957.90 4521.43 6798.65 4490.15 3375.78 3854.41 8395.62 9514.18 +4961.48 6414.62 6199.16 7513.39 1263.97 4395.70 7275.59 4299.31 8215.65 1544.70 6270.47 5490.53 2710.98 2047.97 6049.12 8177.75 4861.70 4440.17 4194.87 4274.02 4030.67 7449.88 1811.48 5023.29 4484.85 6587.86 633.23 2755.65 5250.79 3762.35 4454.79 2725.37 7319.40 4841.89 8089.13 3582.80 1112.19 6668.59 4910.46 3734.77 6682.31 6687.01 6110.52 6650.68 4426.19 8125.20 5958.64 2051.00 5232.63 8827.27 5688.98 4109.42 0.00 6726.64 5104.94 913.25 5045.77 7434.80 4668.11 5822.67 6976.43 4146.38 4002.51 7152.36 4720.11 2784.66 4183.69 4922.73 6982.97 2926.65 3443.59 1932.38 4075.44 9223.71 7771.45 4751.42 1888.10 6973.22 4632.69 397.01 6490.25 3896.87 7588.47 6516.73 1234.41 2670.35 7685.80 7273.09 7853.59 7596.72 1541.98 8552.36 5820.70 501.27 2642.34 6305.05 2280.87 2999.30 6740.75 4108.16 7806.83 5715.67 3554.60 661.38 2831.83 4462.86 1937.84 3382.44 2809.21 3350.77 5298.59 3048.93 2891.43 688.37 5861.30 3459.37 791.01 255.39 8667.54 6611.54 +7805.25 4034.64 1467.78 1856.58 7806.44 2765.31 1586.00 4645.94 3259.02 7691.17 1182.46 2013.28 5024.20 5165.86 3017.87 3539.12 1866.50 3306.29 3697.78 2525.39 2704.07 2639.23 4994.45 7364.62 7918.13 8389.80 6664.70 6463.39 2655.24 6081.56 2273.54 8606.34 1578.55 2681.85 3197.10 4436.33 5826.23 9738.27 7993.63 4221.40 1115.60 1603.00 630.67 5091.42 4139.05 4897.67 1893.68 6761.38 9002.70 4946.54 4810.70 5127.18 6726.64 0.00 9035.03 5896.70 9178.89 1735.19 3053.11 3042.40 4343.57 7415.48 2751.14 5840.09 7127.35 6342.84 6017.04 3528.53 2172.99 7082.05 4466.61 4817.54 4442.36 4083.63 1047.52 4696.41 7073.21 4194.42 4910.69 6909.77 6290.94 3591.49 2905.74 8377.09 5536.85 7726.92 2527.63 4844.24 1518.83 3176.24 6412.87 4418.69 1319.26 7064.62 4709.14 823.89 7016.95 7477.77 4523.97 5803.45 2344.02 4695.13 9679.92 7279.87 8606.62 3404.33 7886.16 3742.55 7943.82 8906.10 7748.12 7400.32 8460.77 7409.79 3817.02 9040.05 6490.31 6574.81 3592.18 8011.87 +1437.95 6120.51 9326.73 10560.94 4348.94 7993.91 10268.39 4430.84 8572.60 3762.36 9244.52 7069.46 4293.16 6671.21 9916.71 8320.67 7603.51 8429.21 8369.41 6783.12 6844.95 10898.87 5237.05 1982.15 1119.36 2544.15 4503.00 7839.86 8970.87 2953.67 7212.64 2950.65 10292.90 6356.98 8459.42 8070.49 4754.27 1656.66 1183.35 8131.21 8345.76 8045.76 8454.52 5503.80 8822.16 7256.63 7353.84 7155.77 204.83 8105.07 4929.38 8866.55 5104.94 9035.03 0.00 5637.78 260.48 8703.81 5988.67 6434.36 6403.78 1620.14 6724.14 5413.11 2070.46 7854.68 9155.85 5615.95 7943.11 2372.64 7932.15 5493.70 4598.01 9312.47 9877.57 9345.55 3232.65 6512.74 4271.36 4727.44 4337.13 5484.39 11117.44 2465.75 5695.01 2442.89 8450.30 11615.20 9412.53 11241.71 3794.60 8143.99 8817.46 5443.95 7121.48 9074.19 7376.03 2148.67 6037.63 9040.79 8723.97 5046.29 7640.83 4675.38 7459.91 5635.18 3382.07 7362.65 7756.77 7990.00 1762.35 2134.50 2547.11 5136.42 5863.08 8057.08 5881.00 5330.35 8916.18 2915.92 +5276.33 5990.41 5304.89 6614.09 2167.41 3491.68 6380.74 4018.77 7603.18 2361.57 5386.04 4804.03 2458.35 1166.41 5138.08 7598.62 4031.10 3527.82 3288.90 3507.36 3228.60 6537.49 1221.97 5245.49 4879.62 6822.75 1236.18 2273.46 4337.97 3820.14 3638.73 3537.56 6425.36 4210.66 7478.66 2706.71 967.74 7119.86 5268.25 2846.01 5932.65 5979.85 5290.72 6360.89 3545.87 7709.31 5276.91 1767.49 5742.15 8361.81 5407.51 3318.06 913.25 5896.70 5637.78 0.00 5613.67 6715.88 4089.47 5279.85 6565.99 4475.07 3217.76 6934.84 4926.51 2263.84 3519.66 4441.21 6323.35 3319.74 2565.41 1235.85 3746.91 8622.52 6944.09 3914.56 2428.24 6543.79 4402.77 1240.41 6392.02 3354.22 6675.28 6757.50 361.83 3277.99 7030.29 6406.73 7086.59 6683.92 1855.73 8046.15 4940.42 1168.75 1747.32 5436.96 2063.79 3489.48 6366.94 3412.26 7125.77 5414.85 4033.12 1566.56 3124.39 3935.98 2725.79 2470.58 2835.20 3585.57 5564.28 3511.74 3642.82 1546.72 5424.48 3710.35 680.51 702.77 8057.73 6780.84 +1671.69 6334.28 9435.07 10680.24 4237.47 8067.43 10388.85 4597.41 8784.56 3661.78 9359.77 7225.50 4378.62 6669.14 9988.61 8537.61 7715.38 8484.42 8412.73 6895.07 6943.66 10999.24 5268.69 2215.24 1291.06 2800.91 4455.20 7792.10 9045.63 3100.61 7319.08 2792.60 10414.42 6505.92 8670.36 8090.41 4751.14 1824.38 1413.70 8158.05 8510.80 8220.08 8592.43 5737.08 8853.49 7494.56 7520.38 7093.69 456.01 8343.38 5143.64 8868.42 5045.77 9178.89 260.48 5613.67 0.00 8886.28 6139.66 6620.25 6628.64 1769.99 6825.36 5660.15 2283.90 7811.06 9133.27 5786.34 8131.17 2399.40 7951.02 5527.15 4751.39 9535.54 10035.11 9364.12 3192.68 6735.22 4455.79 4662.41 4585.42 5613.12 11214.41 2722.89 5687.26 2375.48 8648.62 11662.14 9588.74 11332.69 3785.54 8375.01 8928.54 5366.67 7134.06 9197.88 7306.21 2138.15 6263.15 9023.57 8918.87 5259.18 7484.88 4590.83 7336.37 5785.75 3272.84 7408.54 7658.72 7863.43 2011.65 2138.55 2402.85 5043.53 6063.83 7927.18 5828.13 5276.79 9133.08 3175.99 +7347.33 2914.17 3191.98 3420.16 8349.98 4147.87 3196.59 4312.71 1526.36 8113.01 2907.10 1959.18 5216.81 6226.69 4741.08 1825.51 2942.10 4799.71 5167.51 3223.33 3550.07 4291.79 5624.41 6846.00 7595.33 7593.71 7230.32 7723.40 4280.33 5840.44 3211.65 8856.12 3173.96 2677.61 1471.58 5822.20 6402.57 9122.68 7570.07 5626.13 856.39 755.27 1904.69 3940.64 5676.96 3325.08 1512.90 7885.50 8633.38 3255.06 3964.80 6625.07 7434.80 1735.19 8703.81 6715.88 8886.28 0.00 2963.84 2272.25 3034.75 7130.16 3528.73 4611.10 6667.80 7611.49 7509.01 3126.24 800.18 7089.12 5822.87 5513.74 4226.33 2373.64 1658.62 6286.07 7342.42 2875.96 4432.45 7534.84 5283.99 3714.99 4552.15 7596.76 6357.90 7851.72 812.14 6577.11 767.93 4838.59 6767.77 2721.60 2951.59 7844.40 5877.49 2536.40 8167.96 7493.78 3306.25 7291.17 610.78 3839.59 10691.23 7895.86 9673.04 3285.69 8228.62 4960.57 9103.56 10033.94 7197.31 7397.24 8632.51 8120.32 2929.81 10167.86 7369.69 7332.61 1861.79 7161.02 +4755.15 2111.35 3610.74 4698.08 5456.83 3031.93 4401.38 1599.80 3548.41 5176.30 3453.70 1094.93 2257.41 3964.94 4688.39 3515.77 1988.67 3743.41 3950.05 1361.58 1698.45 5210.37 2889.89 4326.86 4870.13 5461.10 4370.55 5657.31 3803.55 3039.05 1776.23 5892.28 4417.21 372.24 3421.63 4254.64 3577.38 6710.07 4940.88 4140.95 2413.64 2220.44 2497.59 2874.18 4549.97 3760.67 1463.28 5575.98 5951.91 4324.11 2170.03 5227.61 4668.11 3053.11 5988.67 4089.47 6139.66 2963.84 0.00 1200.80 2679.36 4371.54 1572.11 3627.09 4079.94 5570.83 5994.90 664.63 2369.91 4159.42 4185.81 2855.94 1391.04 4555.91 3900.06 5232.90 4380.97 2613.21 1908.25 4704.02 3666.59 781.96 5460.28 5438.43 3759.61 4896.44 3054.04 6659.76 3564.47 5651.53 3825.51 3972.41 3096.36 5123.54 3846.84 3206.65 5882.77 4563.66 2597.53 5786.87 3217.22 2091.54 8120.20 5050.24 7197.94 353.94 5273.23 3213.35 6783.08 7630.08 4715.33 4473.12 5672.86 5333.76 1571.87 7759.59 4769.68 4612.37 3999.66 5132.10 +5075.56 1110.65 4030.25 4873.18 6532.24 3940.20 4586.85 2086.52 2449.97 6199.01 3808.55 1210.35 3270.71 5156.84 5346.82 2363.99 2714.60 4673.61 4934.29 2349.79 2729.55 5548.64 4070.62 4577.48 5329.28 5413.46 5482.66 6839.49 4555.56 3606.68 2662.91 6798.32 4588.75 1206.93 2322.35 5335.10 4718.57 6878.90 5297.82 5199.59 2064.12 1667.04 2662.30 2105.56 5529.45 2605.83 1150.06 6775.52 6361.78 3127.63 1784.60 6289.15 5822.67 3042.40 6434.36 5279.85 6620.25 2272.25 1200.80 0.00 1606.56 4871.88 2624.87 2877.99 4395.63 6749.75 7092.30 964.56 1512.44 4931.76 5280.09 4049.84 2064.48 3425.11 3623.11 6210.58 5337.86 1506.89 2164.46 5830.23 3248.55 1932.22 5812.76 5408.56 4954.71 5740.02 2090.23 7337.00 3001.25 6046.47 4853.98 2772.15 3562.26 6289.26 5009.32 3482.51 7081.85 5332.48 1636.75 6879.75 2326.38 1664.69 9305.18 6164.91 8394.40 1359.81 6249.48 4306.41 7983.71 8829.66 4933.88 5228.71 6531.93 6475.89 775.18 8958.92 5960.35 5781.52 2887.94 5009.66 +4967.60 580.30 5517.65 6198.63 7485.61 5546.75 5929.27 2744.37 2268.27 7059.73 5273.33 2779.46 4279.13 6608.04 6904.98 1959.74 4314.20 6280.06 6537.30 3941.84 4315.66 6957.76 5345.04 4424.93 5388.50 4787.16 6542.28 8313.95 6144.26 3996.54 4268.63 7436.21 5922.05 2782.02 2175.15 6913.63 5867.22 6450.08 5220.44 6786.51 3243.60 2759.75 4095.24 985.97 7133.62 1148.86 2580.07 8173.29 6285.62 1899.44 1542.00 7876.54 6976.43 4343.57 6403.78 6565.99 6628.64 3034.75 2679.36 1606.56 0.00 5025.50 4203.82 1578.33 4350.56 8232.09 8664.09 2153.80 2278.60 5457.88 6851.81 5376.82 2913.51 2909.81 4656.66 7815.42 6119.20 158.86 2544.03 6912.20 2376.64 3265.49 7224.85 4805.92 6271.26 6322.60 2420.65 8888.59 3793.20 7478.67 5778.30 1779.83 5081.58 7467.04 6523.14 4921.92 8483.06 5826.41 367.25 8453.88 2742.33 1449.54 10523.47 7212.07 9686.11 2697.66 7025.59 5877.06 9355.75 10151.13 4702.08 5710.13 7103.28 7583.18 1148.55 10276.31 7238.05 6979.10 2547.30 4317.20 +815.10 4672.68 7723.71 8947.51 3760.30 6451.34 8654.25 2829.87 7103.25 3156.15 7634.76 5455.88 2748.33 5385.37 8372.48 6878.82 5998.18 6929.66 6903.65 5178.67 5258.04 9304.24 3844.75 1007.54 514.19 2471.53 3513.19 6744.60 7422.74 1333.92 5614.10 2862.05 8678.08 4738.88 6985.34 6682.92 3522.81 2714.32 798.22 6719.24 6741.43 6455.69 6834.39 4209.46 7390.86 5985.15 5751.61 6147.52 1603.38 6829.65 3496.77 7539.21 4146.38 7415.48 1620.14 4475.07 1769.99 7130.16 4371.54 4871.88 5025.50 0.00 5133.71 4291.94 820.24 6738.71 7926.47 4020.30 6384.32 1228.04 6549.49 4089.64 2982.11 7904.26 8265.34 7953.69 2314.78 5116.44 2711.64 3822.25 3277.44 3867.38 9527.22 2396.13 4454.29 1855.16 6923.18 10127.37 7825.44 9660.22 2645.85 6800.18 7211.90 4574.23 5770.44 7458.39 6405.12 1302.94 4668.27 7789.44 7184.73 3603.85 7220.29 3890.27 6813.25 4017.77 2880.24 5895.59 6940.81 7351.29 1179.23 1203.96 2441.22 4376.32 4353.26 7439.55 4857.31 4330.65 7471.91 2584.25 +5693.43 3652.91 2617.27 3900.75 5055.94 1507.06 3619.27 2783.68 4588.57 4947.73 2571.00 1729.02 2464.66 2719.53 3326.03 4662.16 941.86 2190.04 2379.09 314.09 139.24 4174.82 2244.14 5359.46 5647.68 6690.54 3914.01 4313.54 2387.66 3856.56 514.58 5901.72 3651.40 1422.94 4471.92 2711.51 3075.13 7718.73 5830.10 2583.18 2721.98 2817.25 2124.32 4445.49 2978.73 5229.52 2185.99 4383.32 6731.79 5697.61 3700.47 3673.02 4002.51 2751.14 6724.14 3217.76 6825.36 3528.73 1572.11 2624.87 4203.82 5133.71 0.00 5194.02 5066.92 4212.93 4467.48 2219.99 3242.27 4548.34 2655.24 2076.23 2467.31 5609.23 3785.66 3661.27 4380.57 4120.11 3193.99 4165.87 5153.83 1422.94 4394.28 6655.40 2856.29 5093.98 3939.35 5233.60 3868.85 4528.01 3697.61 5282.36 2122.95 4371.84 2450.56 2478.59 4674.85 4922.62 4154.70 4255.20 3987.17 3634.10 7162.80 4535.70 6147.56 1718.08 5158.51 1682.07 5606.38 6520.39 5755.25 4862.06 5790.27 4689.98 3133.66 6653.83 3854.86 3868.93 5037.91 6424.12 +4001.78 1807.51 6907.95 7694.82 7399.26 6654.44 7416.77 2920.02 3754.14 6888.91 6683.13 4083.31 4486.26 7230.00 8201.46 3405.36 5520.82 7370.11 7572.83 4986.76 5323.37 8411.06 5764.33 3471.19 4537.57 3421.48 6624.13 8933.34 7371.78 3619.99 5382.62 7012.96 7413.74 3855.55 3677.87 7820.53 6094.73 5154.19 4261.24 7727.96 4765.24 4291.35 5524.15 775.54 8172.08 1939.32 3993.17 8656.99 5262.77 2759.67 1566.59 8801.89 7152.36 5840.09 5413.11 6934.84 5660.15 4611.10 3627.09 2877.99 1578.33 4291.94 5194.02 0.00 3504.15 8869.02 9518.61 2974.30 3844.80 5043.34 7736.97 5864.28 3213.53 4198.12 6220.99 8853.71 5915.99 1737.12 2534.92 7002.40 1078.14 3962.39 8676.65 3455.50 6696.14 5901.74 3990.33 10192.05 5371.15 8916.77 5752.82 2923.54 6438.94 7653.61 7268.72 6349.99 8964.96 5351.06 1323.66 9319.44 4312.91 1597.12 10682.92 7246.91 9967.98 3497.12 6765.13 6782.39 9769.85 10469.09 3651.07 5231.20 6628.52 7675.94 2145.92 10585.65 7567.80 7211.07 3953.88 2930.73 +683.35 4051.06 7585.97 8754.45 4477.02 6475.31 8458.29 2481.70 6502.51 3884.22 7468.80 5125.98 2871.10 5725.56 8374.96 6253.71 5866.72 7017.85 7038.14 5061.88 5199.59 9185.65 4128.68 324.64 1047.87 1896.57 4092.28 7195.73 7425.90 1253.65 5513.50 3674.96 8477.57 4452.16 6389.09 6909.05 3958.87 2657.95 903.89 6919.23 6360.95 6032.78 6576.95 3483.19 7561.35 5255.10 5368.76 6655.89 1976.38 6103.46 2860.11 7812.23 4720.11 7127.35 2070.46 4926.51 2283.90 6667.80 4079.94 4395.63 4350.56 820.24 5066.92 3504.15 0.00 7177.30 8274.76 3630.46 5896.15 1905.65 6782.41 4352.61 2710.04 7254.23 7912.88 8161.06 2982.39 4454.12 2251.47 4429.38 2470.60 3702.77 9420.56 1832.59 4851.87 2637.69 6386.47 10206.35 7390.83 9576.19 3181.24 6108.03 7067.91 5176.83 6046.29 7257.97 6929.13 2072.22 3986.48 8122.52 6664.38 2976.33 7936.22 4542.67 7466.43 3734.65 3640.04 6042.45 7529.31 8002.27 700.59 1962.32 3257.54 5025.88 3798.22 8096.83 5380.87 4879.35 6849.19 1893.45 +7540.01 7654.16 5275.79 6410.97 3878.51 3578.51 6255.57 5975.53 8791.62 4300.85 5462.74 5940.17 4542.22 1640.74 4458.06 8874.87 4671.32 3151.38 2762.89 4524.01 4147.59 6021.77 3177.53 7498.35 7137.99 9073.60 3355.94 127.27 4001.40 6033.87 4417.74 5457.97 6307.73 5556.57 8677.31 1958.36 3224.70 9370.42 7531.14 2184.07 6759.72 6960.13 5845.26 8217.45 2597.09 9331.09 6389.06 891.01 7970.13 9871.59 7304.58 1789.71 2784.66 6342.84 7854.68 2263.84 7811.06 7611.49 5570.83 6749.75 8232.09 6738.71 4212.93 8869.02 7177.30 0.00 1481.93 6086.27 7435.31 5573.19 1897.41 3029.22 5663.80 9807.30 7336.21 2550.42 4622.27 8177.32 6396.28 3179.73 8459.99 4983.73 6073.00 9009.84 2332.89 5441.18 8119.13 5050.63 7772.78 5979.54 4108.72 9478.95 5104.62 2577.26 1762.52 5659.15 923.50 5716.33 8100.39 1474.93 8130.38 7286.93 3621.17 3346.18 2507.92 5537.02 4703.47 2651.71 1692.45 2661.03 7823.67 5748.46 5663.63 3009.85 7091.35 2789.67 1993.73 2542.13 9237.11 9012.12 +8704.80 8103.90 4729.86 5666.72 5334.07 3367.01 5569.68 6734.11 8844.65 5723.14 4968.02 6101.16 5482.54 2550.12 3568.94 8988.52 4634.13 2719.99 2342.33 4748.05 4364.67 5109.22 4151.26 8599.32 8360.24 10154.37 4708.12 1563.89 3412.15 7069.02 4505.11 6894.72 5623.21 5889.12 8741.58 1760.45 4420.27 10611.16 8724.68 1918.54 6657.25 6948.91 5628.47 8810.76 1885.84 9696.00 6502.28 2370.66 9256.58 10133.57 7960.94 890.09 4183.69 6017.04 9155.85 3519.66 9133.27 7509.01 5994.90 7092.30 8664.09 7926.47 4467.48 9518.61 8274.76 1481.93 0.00 6593.31 7489.49 6818.79 1812.78 3942.56 6403.50 9826.79 6915.73 1476.40 5944.77 8585.00 7170.99 4580.44 9256.44 5556.24 5105.59 10096.33 3478.38 6787.61 8126.86 3717.68 7522.67 4957.01 5364.53 9691.34 4703.17 4031.12 2292.79 5241.42 2352.49 7007.18 8591.56 218.50 8079.27 7921.90 4823.72 4781.88 3758.14 6047.15 6120.50 2787.54 2885.22 3757.44 8949.24 7025.64 7075.02 4473.91 7565.59 3867.95 3401.04 3931.80 9269.25 10039.99 +4313.36 1573.57 4222.71 5253.46 5583.45 3694.03 4957.80 1191.26 3412.33 5238.77 4048.77 1515.27 2317.15 4457.11 5345.26 3309.81 2641.87 4401.68 4598.55 2023.58 2350.22 5812.47 3219.91 3850.29 4499.14 4884.71 4552.21 6165.78 4466.32 2716.14 2440.80 5836.54 4969.58 965.61 3284.87 4868.79 3811.92 6213.26 4517.75 4765.69 2733.75 2435.88 3022.21 2231.91 5197.79 3280.86 1740.75 6021.23 5560.41 3922.19 1505.98 5847.08 4922.73 3528.53 5615.95 4441.21 5786.34 3126.24 664.63 964.56 2153.80 4020.30 2219.99 2974.30 3630.46 6086.27 6593.31 0.00 2420.52 3988.56 4792.82 3234.00 1113.22 4376.43 4282.42 5879.53 4373.35 2114.31 1387.32 4907.04 3008.35 1111.79 6066.73 4867.19 4134.53 4785.06 3040.36 7320.49 3806.20 6268.17 3896.82 3629.71 3714.28 5400.17 4397.58 3777.80 6330.78 4391.43 2017.19 6388.59 3258.47 1426.97 8439.73 5233.72 7565.60 551.52 5285.21 3827.02 7208.87 8019.68 4228.23 4290.50 5575.71 5562.28 1006.69 8146.46 5118.74 4899.06 3846.79 4533.51 +6573.09 2119.05 3526.20 3991.93 7822.82 4134.53 3740.03 3588.33 1361.43 7545.33 3252.66 1529.31 4619.07 5959.67 5037.46 1511.42 2855.35 4836.18 5175.27 2928.19 3293.36 4810.65 5176.11 6065.93 6840.40 6793.68 6725.18 7540.39 4445.57 5113.84 3028.76 8227.20 3725.90 2144.15 1253.54 5754.09 5915.38 8328.88 6799.68 5575.60 1064.97 601.50 2109.80 3155.66 5725.77 2724.78 1059.36 7622.62 7867.15 2825.65 3167.03 6623.09 6982.97 2172.99 7943.11 6323.35 8131.17 800.18 2369.91 1512.44 2278.60 6384.32 3242.27 3844.80 5896.15 7435.31 7489.49 2420.52 0.00 6408.21 5735.16 5095.90 3533.08 2371.99 2378.17 6370.62 6733.42 2121.17 3675.89 7048.28 4488.06 3148.08 5076.61 6796.96 5973.37 7195.14 707.06 6955.83 1565.70 5349.10 6194.14 2315.69 3185.88 7416.94 5676.19 2879.20 7916.08 6811.48 2528.93 7271.08 849.58 3041.74 10342.33 7401.11 9360.08 2659.16 7633.56 4814.89 8846.03 9750.46 6412.51 6710.95 7982.77 7660.43 2135.00 9883.30 6993.06 6903.02 1802.18 6360.92 +2040.92 5008.50 7163.82 8445.74 2571.38 5703.56 8160.92 2861.14 7322.66 1981.01 7116.16 5247.13 2087.84 4309.16 7617.94 7153.32 5471.47 6093.58 6014.40 4661.71 4655.97 8694.31 2869.55 2173.66 1568.22 3695.52 2294.51 5571.30 6681.76 1468.13 5056.99 1989.54 8190.94 4496.96 7198.15 5698.09 2399.82 3800.12 1984.19 5761.10 6571.36 6364.29 6467.90 4790.26 6454.88 6522.82 5616.62 4946.09 2451.37 7340.88 3928.98 6498.97 2926.65 7082.05 2372.64 3319.74 2399.40 7089.12 4159.42 4931.76 5457.88 1228.04 4548.34 5043.34 1905.65 5573.19 6818.79 3988.56 6408.21 0.00 5559.61 3127.80 2875.38 8213.80 8016.50 6973.03 1090.06 5518.29 2931.84 2595.67 4135.44 3500.13 8898.64 3621.12 3343.06 869.77 7021.70 9264.61 7721.36 9000.25 1465.00 7226.13 6670.99 3347.39 4749.43 6992.80 5196.26 404.80 5128.90 6694.82 7246.80 4011.21 6031.09 2664.87 5590.21 3817.93 1763.97 5011.62 5714.22 6127.92 2400.93 318.29 1645.70 3150.84 4579.69 6217.91 3654.29 3119.20 7729.61 3777.42 +7282.13 6292.90 3381.96 4550.76 4706.56 1705.27 4379.97 5015.00 7095.94 4925.76 3565.45 4309.17 3918.27 1399.89 2724.81 7220.23 2894.01 1265.01 893.14 2938.84 2554.37 4247.75 2708.04 7105.01 7022.08 8618.64 3785.73 2022.19 2131.47 5539.49 2719.05 6097.11 4431.40 4076.40 6988.54 142.59 3231.55 9263.76 7338.90 319.79 4966.49 5217.10 3997.53 7017.97 982.62 7884.53 4724.36 2484.09 8004.19 8333.57 6188.64 1076.03 3443.59 4466.61 7932.15 2565.41 7951.02 5822.87 4185.81 5280.09 6851.81 6549.49 2655.24 7736.97 6782.41 1897.41 1812.78 4792.82 5735.16 5559.61 0.00 2459.96 4680.29 8093.69 5446.29 1413.44 4866.35 6772.25 5453.82 3800.62 7530.08 3780.03 4335.33 8566.84 2353.45 5722.89 6392.83 3842.20 5924.33 4288.63 4194.15 7899.71 3210.30 3515.69 833.98 3765.10 2680.91 5819.70 6783.28 1602.10 6370.53 6143.43 5432.40 4104.65 4319.95 4250.38 5282.51 974.83 3562.86 4536.69 7476.09 5812.69 6176.38 3967.04 5757.44 4667.95 2810.57 3198.82 7529.63 8457.12 +4828.63 4797.91 4428.06 5752.92 2998.04 2729.03 5495.56 2953.78 6368.38 2958.14 4460.69 3583.59 1544.55 1425.39 4580.96 6362.89 2962.64 3003.22 2892.91 2342.28 2113.64 5818.53 260.35 4676.96 4563.09 6218.66 1862.14 3083.34 3680.20 3130.16 2544.97 4016.79 5535.45 2975.81 6243.66 2594.04 1045.34 6803.84 4880.03 2640.26 4751.62 4770.50 4195.29 5243.66 3328.47 6513.10 4055.33 2811.48 5557.32 7145.70 4308.52 3463.43 1932.38 4817.54 5493.70 1235.85 5527.15 5513.74 2855.94 4049.84 5376.82 4089.64 2076.23 5864.28 4352.61 3029.22 3942.56 3234.00 5095.90 3127.80 2459.96 0.00 2650.80 7387.15 5857.82 3867.05 2586.79 5346.15 3369.52 2092.23 5431.11 2133.12 5991.67 6162.43 905.16 3410.08 5802.33 6143.41 5921.31 6049.79 1876.03 6819.56 4003.09 2330.92 1694.37 4451.86 3121.61 3419.08 5197.60 3780.54 5905.86 4301.56 5268.97 2462.33 4345.06 2715.44 3224.83 1900.71 3979.32 4788.45 5038.86 3398.56 3989.56 2620.74 4229.69 4916.22 1914.84 1818.88 6822.83 6097.43 +3377.76 2368.19 4890.30 6044.48 4591.15 3956.31 5748.28 335.55 4491.75 4201.15 4763.67 2474.28 1367.64 4029.38 5788.45 4358.92 3184.84 4588.49 4696.86 2404.53 2605.95 6493.76 2555.81 2973.28 3479.24 4227.81 3628.80 5724.91 4854.46 1652.14 2861.84 4737.77 5767.53 1760.83 4365.22 4782.01 2973.80 5359.37 3556.11 4728.03 3770.84 3517.04 3875.83 2613.98 5274.00 4059.40 2788.48 5447.82 4561.02 4793.34 1663.69 5756.26 4075.44 4442.36 4598.01 3746.91 4751.39 4226.33 1391.04 2064.48 2913.51 2982.11 2467.31 3213.53 2710.04 5663.80 6403.50 1113.22 3533.08 2875.38 4680.29 2650.80 0.00 5428.12 5284.00 5932.07 3301.63 2924.04 773.90 3999.22 2854.05 1045.73 6733.89 4195.01 3491.19 3675.63 4150.72 7698.49 4885.16 6902.11 2884.59 4572.55 4371.46 4570.77 4118.93 4548.01 5756.63 3278.43 2665.78 6214.86 4371.67 1667.94 7629.21 4299.21 6833.05 1038.26 4216.82 3781.88 6578.61 7317.23 3367.04 3178.05 4467.45 4671.29 1843.48 7438.30 4399.14 4094.31 4915.64 3957.26 +7877.01 3235.99 5550.68 5586.53 9956.88 6460.41 5409.70 5368.71 1023.99 9612.95 5265.21 3884.29 6692.74 8321.36 7101.22 1069.31 5202.10 7138.68 7494.68 5295.32 5663.88 6501.08 7440.44 7334.62 8286.11 7602.64 8904.60 9912.25 6651.73 6789.35 5398.04 10147.85 5377.44 4412.13 1145.79 8106.87 8128.46 9309.22 8129.27 7921.92 3192.27 2879.20 4271.78 3849.67 8023.31 2292.27 3423.31 9981.98 9195.38 1639.50 4408.64 8950.81 9223.71 4083.63 9312.47 8622.52 9535.54 2373.64 4555.91 3425.11 2909.81 7904.26 5609.23 4198.12 7254.23 9807.30 9826.79 4376.43 2371.99 8213.80 8093.69 7387.15 5428.12 0.00 3685.07 8645.44 8729.43 2800.34 5291.30 9248.22 5191.14 5328.51 6748.15 7630.66 8280.83 9057.98 1701.38 8887.94 2690.76 7045.97 8273.18 1287.71 5325.22 9678.60 8047.87 4899.23 10277.97 8601.12 3276.77 9608.32 1769.94 4300.41 12654.56 9586.70 11695.99 4773.99 9644.41 7183.47 11205.06 12099.07 7609.63 8489.34 9849.96 9886.43 3634.50 12231.26 9299.31 9166.66 571.39 7116.92 +8595.72 4464.87 2203.66 1904.00 8840.96 3761.57 1748.87 5450.94 3066.78 8711.07 1950.08 2809.72 5987.77 6203.83 3660.81 3412.89 2913.42 4242.22 4638.94 3546.36 3744.49 2824.41 6029.65 8128.66 8758.22 9036.56 7698.94 7458.57 3506.65 6935.94 3316.83 9601.07 1711.34 3540.28 3044.46 5405.22 6859.14 10473.77 8798.11 5185.21 1564.73 1972.79 1662.54 5517.75 5029.97 4979.24 2547.90 7785.39 9831.78 4847.47 5402.54 6031.24 7771.45 1047.52 9877.57 6944.09 10035.11 1658.62 3900.06 3623.11 4656.66 8265.34 3785.66 6220.99 7912.88 7336.21 6915.73 4282.42 2378.17 8016.50 5446.29 5857.82 5284.00 3685.07 0.00 5534.84 8066.12 4499.02 5665.91 7949.74 6813.58 4516.70 3066.51 9031.50 6584.12 8692.99 2435.79 5270.61 1016.72 3365.99 7418.00 4314.54 2239.79 8111.88 5734.61 1686.75 8035.27 8416.66 4901.23 6706.78 2156.10 5280.37 10714.04 8319.77 9635.14 4253.63 8894.76 4766.26 8957.53 9923.72 8501.54 8333.90 9439.75 8455.35 4368.57 10057.37 7537.21 7621.36 3289.64 8629.33 +8676.87 7284.94 3331.95 4198.70 5999.39 2281.61 4113.35 6267.20 7698.78 6270.35 3587.50 5107.35 5290.23 2757.14 2093.16 7882.03 3564.46 1550.46 1283.51 3889.00 3534.74 3634.97 4117.86 8481.88 8430.07 9975.40 5148.94 2669.33 2042.65 6911.73 3547.95 7450.29 4166.82 5050.19 7604.98 1275.31 4636.44 10667.78 8740.19 1241.83 5453.18 5798.02 4381.79 8106.74 683.62 8769.65 5455.38 3378.03 9416.97 9118.40 7342.07 761.12 4751.42 4696.41 9345.55 3914.56 9364.12 6286.07 5232.90 6210.58 7815.42 7953.69 3661.27 8853.71 8161.06 2550.42 1476.40 5879.53 6370.62 6973.03 1413.44 3867.05 5932.07 8645.44 5534.84 0.00 6266.43 7717.01 6703.13 5126.84 8749.90 4962.37 3639.12 9926.31 3737.80 7124.27 6962.96 2555.25 6214.93 3504.18 5601.84 8645.24 3378.95 4747.80 2235.27 3891.58 3470.67 7231.78 7797.36 1303.88 6878.09 7282.83 6140.15 5404.77 5037.97 5363.04 6640.08 2156.45 4186.93 5117.88 8858.05 7225.68 7552.39 5206.27 6784.63 5237.15 4049.00 4498.90 8103.22 9792.21 +3123.49 5617.02 6929.88 8245.88 1518.57 5305.38 7974.35 3392.69 7783.55 973.06 6925.44 5413.13 2125.83 3524.25 7167.37 7660.14 5322.24 5581.13 5439.55 4560.07 4464.25 8380.91 2332.96 3259.64 2610.55 4784.88 1272.42 4607.33 6264.87 2301.85 4893.62 1535.03 8009.98 4670.84 7656.36 5008.48 1637.66 4780.60 3048.42 5105.12 6725.70 6593.45 6444.00 5567.33 5812.83 7232.35 5832.79 3935.30 3352.16 8018.63 4646.30 5721.44 1888.10 7073.21 3232.65 2428.24 3192.68 7342.42 4380.97 5337.86 6119.20 2314.78 4380.57 5915.99 2982.39 4622.27 5944.77 4373.35 6733.42 1090.06 4866.35 2586.79 3301.63 8729.43 8066.12 6266.43 0.00 6156.84 3583.81 1531.31 5083.73 3631.91 8563.03 4710.14 2535.85 858.26 7392.63 8671.40 7906.44 8630.56 711.96 7844.59 6468.53 2277.57 4034.13 6858.16 4168.94 1111.30 5818.81 5840.40 7582.94 4708.90 4960.00 1575.53 4500.19 4074.87 915.27 4472.57 4641.49 5037.95 3490.51 1165.32 1418.37 2061.58 5127.59 5127.86 2652.05 2103.32 8212.89 4864.09 +5078.28 558.65 5380.79 6048.59 7507.65 5444.17 5780.36 2771.28 2128.52 7091.23 5134.31 2661.21 4284.96 6558.37 6777.98 1829.38 4202.70 6178.07 6441.17 3852.54 4229.25 6812.42 5321.94 4536.77 5488.14 4929.51 6550.03 8260.93 6026.28 4062.03 4169.09 7491.21 5772.65 2697.17 2032.50 6831.48 5862.33 6584.75 5329.75 6700.70 3091.97 2607.15 3955.21 1131.96 7036.15 1166.96 2446.18 8135.04 6397.58 1870.59 1622.45 7790.70 6973.22 4194.42 6512.74 6543.79 6735.22 2875.96 2613.21 1506.89 158.86 5116.44 4120.11 1737.12 4454.12 8177.32 8585.00 2114.31 2121.17 5518.29 6772.25 5346.15 2924.04 2800.34 4499.02 7717.01 6156.84 0.00 2593.87 6917.96 2523.23 3224.98 7079.58 4947.10 6244.00 6380.40 2264.14 8759.37 3634.34 7334.87 5799.69 1708.20 4949.32 7461.44 6460.00 4780.98 8444.44 5891.01 495.56 8373.85 2585.52 1522.71 10515.36 7222.63 9666.53 2651.20 7065.95 5797.46 9322.88 10127.18 4820.54 5775.50 7163.97 7586.92 1119.42 10253.09 7218.11 6970.07 2420.57 4461.83 +2934.77 2076.76 5510.34 6603.35 4991.15 4695.76 6306.75 438.82 4431.33 4535.92 5360.40 2898.52 1951.35 4770.22 6494.24 4238.12 3841.21 5343.45 5462.57 3097.66 3333.22 7113.04 3249.02 2463.50 3164.81 3558.65 4128.62 6452.60 5571.18 1499.82 3552.43 4897.80 6321.48 2272.56 4309.81 5555.86 3562.64 4827.82 3146.97 5501.56 4110.61 3783.28 4387.16 2028.72 6042.70 3648.56 3119.31 6136.28 4203.20 4441.11 1075.52 6529.73 4632.69 4910.69 4271.36 4402.77 4455.79 4432.45 1908.25 2164.46 2544.03 2711.64 3193.99 2534.92 2251.47 6396.28 7170.99 1387.32 3675.89 2931.84 5453.82 3369.52 773.90 5291.30 5665.91 6703.13 3583.81 2593.87 0.00 4506.30 2085.76 1776.71 7360.41 3533.64 4173.50 3789.32 4213.82 8425.91 5145.32 7543.91 3297.78 4298.90 4993.36 5133.61 4882.96 5114.19 6442.75 3312.99 2235.40 6983.90 4473.15 1127.43 8178.39 4774.02 7437.72 1592.51 4485.35 4554.77 7236.89 7936.01 2840.96 3199.93 4576.01 5182.54 1669.22 8053.33 5032.90 4681.77 4822.32 3250.35 +4636.33 6359.92 6451.99 7772.29 941.35 4669.25 7527.52 4198.78 8249.36 1152.48 6509.67 5579.61 2633.32 2400.89 6369.22 8193.20 5052.82 4756.18 4527.17 4422.69 4205.85 7743.30 1929.55 4725.52 4140.33 6279.18 378.36 3148.74 5549.47 3533.37 4636.93 2335.02 7570.01 4904.32 8122.13 3941.12 1133.87 6304.23 4573.67 4085.13 6805.35 6782.40 6287.24 6533.84 4782.56 8058.62 6042.03 2431.33 4859.23 8782.16 5574.74 4494.97 397.01 6909.77 4727.44 1240.41 4662.41 7534.84 4704.02 5830.23 6912.20 3822.25 4165.87 7002.40 4429.38 3179.73 4580.44 4907.04 7048.28 2595.67 3800.62 2092.23 3999.22 9248.22 7949.74 5126.84 1531.31 6917.96 4506.30 0.00 6296.01 3924.16 7889.65 6206.56 1520.17 2287.57 7746.00 7638.10 7984.85 7907.75 1287.70 8528.43 6055.89 752.05 2987.29 6525.33 2649.17 2640.29 6660.79 4503.80 7881.92 5609.64 3680.74 370.10 3054.85 4474.59 1542.31 3679.56 3118.63 3585.61 4986.03 2696.60 2494.59 676.33 5816.17 3686.52 1186.87 649.35 8698.38 6322.81 +2933.52 2369.82 7190.30 8115.04 6594.30 6657.67 7826.02 2522.37 4642.04 6052.11 6994.18 4373.61 3942.98 6844.11 8353.51 4319.67 5650.19 7339.67 7490.97 5001.00 5290.99 8754.42 5290.74 2410.17 3486.81 2418.73 5921.81 8511.33 7468.29 2791.96 5435.58 6066.82 7830.00 3968.62 4551.25 7628.75 5490.54 4119.67 3192.31 7565.50 5284.43 4842.49 5887.22 1391.32 8080.37 2984.14 4397.90 8150.50 4185.27 3819.79 1518.42 8606.01 6490.25 6290.94 4337.13 6392.02 4585.42 5283.99 3666.59 3248.55 2376.64 3277.44 5153.83 1078.14 2470.60 8459.99 9256.44 3008.35 4488.06 4135.44 7530.08 5431.11 2854.05 5191.14 6813.58 8749.90 5083.73 2523.23 2085.76 6296.01 0.00 3788.02 9014.72 2442.67 6194.86 4972.44 4762.29 10326.18 6051.83 9232.30 5016.05 3940.54 6692.85 6987.38 6968.70 6691.48 8452.42 4410.14 2034.18 9068.66 5078.59 1619.98 9962.95 6505.99 9322.07 3443.97 5889.45 6615.31 9204.07 9838.49 2574.78 4291.34 5667.74 6957.87 2474.41 9948.94 6986.47 6579.74 4894.24 1942.33 +4352.31 2685.21 3884.81 5082.23 4675.78 2919.66 4788.23 1361.04 4325.60 4404.19 3777.40 1783.17 1507.44 3349.98 4742.78 4280.92 2163.97 3569.86 3704.30 1365.92 1561.89 5483.01 2139.83 3982.27 4378.55 5272.93 3588.95 5060.83 3809.13 2545.04 1822.16 5155.11 4811.40 1039.11 4198.50 3868.78 2800.23 6360.65 4510.30 3790.21 3103.36 2963.38 2988.47 3262.68 4292.41 4390.78 2202.83 4910.06 5469.18 5012.58 2408.69 4850.52 3896.87 3591.49 5484.39 3354.22 5613.12 3714.99 781.96 1932.22 3265.49 3867.38 1422.94 3962.39 3702.77 4983.73 5556.24 1111.79 3148.08 3500.13 3780.03 2133.12 1045.73 5328.51 4516.70 4962.37 3631.91 3224.98 1776.71 3924.16 3788.02 0.00 5717.95 5239.43 3037.31 4191.84 3835.30 6656.18 4278.21 5876.99 3055.38 4692.23 3367.58 4358.89 3319.67 3591.19 5219.47 3899.96 3117.34 5357.23 3993.37 2365.98 7374.06 4269.02 6475.49 582.41 4513.72 2839.41 6100.75 6921.55 4378.14 3817.79 4955.77 4557.97 2117.67 7049.33 4034.28 3850.08 4775.49 5001.35 +10065.08 6871.86 1850.14 1162.51 8830.22 3262.71 1355.91 7009.61 6060.94 8911.86 2021.79 4642.39 6838.97 5600.68 1619.58 6376.90 3554.03 3161.46 3462.71 4361.91 4272.49 267.23 6237.43 9699.07 10041.32 10918.70 7766.97 6199.04 2340.23 8237.96 3916.62 10006.28 1381.03 5109.97 6018.34 4224.40 7017.94 12078.51 10212.65 4015.54 4021.13 4507.72 3152.93 7911.64 3478.40 7801.04 4683.50 6792.79 11126.05 7806.67 7499.75 4357.98 7588.47 2905.74 11117.44 6675.28 11214.41 4552.15 5460.28 5812.76 7224.85 9527.22 4394.28 8676.65 9420.56 6073.00 5105.59 6066.73 5076.61 8898.64 4335.33 5991.67 6733.89 6748.15 3066.51 3639.12 8563.03 7079.58 7360.41 7889.65 9014.72 5717.95 0.00 10894.03 6369.91 9352.80 5364.23 2327.19 4060.67 301.97 7851.75 7273.57 2367.34 7761.62 5005.96 2330.38 6952.96 9255.00 7378.88 4942.20 5130.68 7394.95 9693.31 8235.77 8578.42 5768.06 9206.64 4210.16 7758.91 8714.05 10094.61 9205.54 9976.11 8192.92 6578.48 8837.89 7072.43 7368.98 6329.70 10591.54 +1601.28 4719.32 9043.98 10119.88 6145.61 8122.30 9823.92 3896.57 7074.17 5538.00 8892.13 6372.59 4649.49 7549.56 9980.81 6758.58 7366.01 8711.48 8764.93 6598.76 6793.00 10646.58 5945.69 1512.03 2202.19 81.53 5884.62 9027.84 9042.23 3033.50 7056.08 5077.17 9836.33 5797.61 6979.59 8689.66 5790.14 1705.99 1740.70 8686.47 7469.87 7070.20 7889.04 3821.38 9307.92 5394.61 6512.13 8479.37 2267.05 6210.75 3638.70 9610.30 6516.73 8377.09 2465.75 6757.50 2722.89 7596.76 5438.43 5408.56 4805.92 2396.13 6655.40 3455.50 1832.59 9009.84 10096.33 4867.19 6796.96 3621.12 8566.84 6162.43 4195.01 7630.66 9031.50 9926.31 4710.14 4947.10 3533.64 6206.56 2442.67 5239.43 10894.03 0.00 6684.09 4199.42 7145.75 11870.25 8357.86 11075.92 4988.61 6370.58 8526.88 6958.21 7851.49 8638.10 8748.66 3676.94 4452.53 9940.39 7454.82 3763.04 9597.95 6285.63 9209.36 5125.99 5237.67 7785.43 9321.74 9747.37 1220.87 3587.81 4644.16 6771.66 4678.56 9835.64 7198.63 6687.41 7335.89 538.58 +5242.21 5693.50 4965.52 6279.02 2460.31 3162.09 6041.90 3776.12 7260.15 2593.88 5040.49 4451.41 2252.05 988.44 4852.35 7261.95 3670.86 3238.51 3022.68 3146.77 2866.76 6225.48 936.83 5174.30 4882.20 6746.69 1442.02 2361.76 4029.88 3701.26 3277.29 3752.52 6085.91 3868.89 7136.10 2496.01 943.25 7132.78 5251.94 2615.41 5572.28 5623.50 4929.84 6101.65 3322.58 7410.72 4924.49 1962.79 5788.15 8049.66 5154.88 3187.70 1234.41 5536.85 5695.01 361.83 5687.26 6357.90 3759.61 4954.71 6271.26 4454.29 2856.29 6696.14 4851.87 2332.89 3478.38 4134.53 5973.37 3343.06 2353.45 905.16 3491.19 8280.83 6584.12 3737.80 2535.85 6244.00 4173.50 1520.17 6194.86 3037.31 6369.91 6684.09 0.00 3393.92 6680.41 6190.32 6725.14 6387.85 1901.95 7724.71 4592.72 1527.77 1520.57 5084.66 2269.51 3550.38 6082.92 3351.77 6772.12 5156.15 4374.04 1867.62 3439.92 3619.71 2936.78 2159.76 3094.09 3885.35 5507.97 3560.60 3822.94 1892.08 5125.96 4012.58 1019.91 1047.21 7714.85 6679.32 +2600.78 5865.43 7680.96 8986.87 1972.43 6106.64 8709.52 3692.25 8152.71 1364.68 7659.69 5967.46 2705.53 4382.26 7987.48 7994.21 6033.39 6412.51 6282.72 5245.91 5188.19 9163.20 3152.15 2861.00 2008.61 4278.27 2086.93 5419.52 7074.29 2337.60 5608.47 1119.82 8742.97 5216.30 8027.29 5864.90 2492.08 4046.86 2469.71 5958.83 7291.99 7115.38 7102.98 5659.78 6665.86 7391.86 6359.72 4718.55 2582.12 8208.37 4796.87 6578.57 2670.35 7726.92 2442.89 3277.99 2375.48 7851.72 4896.44 5740.02 6322.60 1855.16 5093.98 5901.74 2637.69 5441.18 6787.61 4785.06 7195.14 869.77 5722.89 3410.08 3675.63 9057.98 8692.99 7124.27 858.26 6380.40 3789.32 2287.57 4972.44 4191.84 9352.80 4199.42 3393.92 0.00 7825.30 9520.80 8458.23 9430.86 1542.29 8087.38 7206.08 3001.31 4891.26 7568.98 4934.31 568.23 5995.97 6687.82 8039.55 4877.65 5401.84 2237.31 5086.07 4566.49 1038.47 5306.54 5327.63 5622.48 3010.66 684.04 793.19 2706.54 5424.03 5700.00 3454.07 2902.80 8565.84 4432.62 +7053.86 2427.92 3966.15 4231.33 8510.86 4761.45 4008.72 4173.90 744.25 8220.86 3683.28 2234.82 5289.04 6658.54 5508.39 1014.97 3500.74 5445.79 5797.68 3625.49 3985.68 5103.69 5880.46 6532.51 7362.05 7135.27 7419.57 8225.80 4992.35 5685.73 3703.78 8873.12 3986.07 2844.47 670.54 6405.51 6614.03 8731.32 7289.25 6220.69 1524.08 1178.13 2614.53 3381.26 6332.65 2551.30 1763.21 8322.10 8362.85 2442.99 3574.51 7252.55 7685.80 2527.63 8450.30 7030.29 8648.62 812.14 3054.04 2090.23 2420.65 6923.18 3939.35 3990.33 6386.47 8119.13 8126.86 3040.36 707.06 7021.70 6392.83 5802.33 4150.72 1701.38 2435.79 6962.96 7392.63 2264.14 4213.82 7746.00 4762.29 3835.30 5364.23 7145.75 6680.41 7825.30 0.00 7371.36 1456.44 5650.35 6869.59 1909.46 3687.01 8121.93 6363.34 3309.16 8614.20 7422.65 2734.85 7908.37 322.76 3450.55 11049.23 8097.02 10065.24 3327.80 8297.78 5487.20 9545.38 10453.18 6861.92 7318.93 8616.06 8361.90 2588.26 10586.17 7700.12 7608.04 1143.29 6682.41 +10786.41 8445.71 3429.84 3417.92 8530.68 3748.04 3524.73 8017.17 8102.73 8767.79 3703.99 6127.83 7384.21 5240.37 1990.98 8380.51 4685.46 3198.27 3250.89 5340.06 5094.49 2511.50 6403.54 10514.55 10626.57 11908.83 7627.10 5161.45 2860.88 8958.68 4895.13 9938.96 3565.45 6371.09 8041.21 3700.42 7034.90 12812.69 10885.65 3575.90 5898.83 6356.41 4859.97 9416.91 2867.83 9636.86 6315.97 5909.36 11664.24 9772.70 8824.69 3286.22 7273.09 4844.24 11615.20 6406.73 11662.14 6577.11 6659.76 7337.00 8888.59 10127.37 5233.60 10192.05 10206.35 5050.63 3717.68 7320.49 6955.83 9264.61 3842.20 6143.41 7698.49 8887.94 5270.61 2555.25 8671.40 8759.37 8425.91 7638.10 10326.18 6656.18 2327.19 11870.25 6190.32 9520.80 7371.36 0.00 6209.48 2040.40 7979.61 9250.47 3815.24 7295.47 4670.67 4078.59 5973.19 9562.45 8971.07 3632.66 7182.63 8738.90 8541.38 7931.67 7469.41 6894.73 9124.01 4253.65 6598.79 7471.69 10905.67 9541.09 10009.64 7753.42 8046.16 7579.48 6593.31 7023.86 8423.07 11655.55 +8072.47 3682.03 2954.95 2901.20 8832.88 4220.07 2718.96 4997.46 2053.18 8634.89 2674.42 2495.07 5785.19 6488.46 4488.17 2405.45 3138.50 4804.78 5191.27 3583.21 3864.09 3811.53 6057.48 7578.28 8299.22 8355.81 7699.48 7890.03 4174.07 6520.22 3477.20 9432.97 2686.97 3243.71 2036.18 5905.18 6862.01 9871.65 8290.65 5696.02 1186.61 1370.52 1928.54 4707.28 5650.77 4007.24 2104.90 8125.56 9348.29 3836.57 4722.28 6632.61 7853.59 1518.83 9412.53 7086.59 9588.74 767.93 3564.47 3001.25 3793.20 7825.44 3868.85 5371.15 7390.83 7772.78 7522.67 3806.20 1565.70 7721.36 5924.33 5921.31 4885.16 2690.76 1016.72 6214.93 7906.44 3634.34 5145.32 7984.85 6051.83 4278.21 4060.67 8357.86 6725.14 8458.23 1456.44 6209.48 0.00 4357.31 7302.55 3304.92 2836.48 8237.76 6083.93 2334.78 8395.37 8125.97 4071.19 7307.76 1157.63 4597.28 10995.10 8351.14 9947.86 3903.43 8775.64 5133.28 9329.47 10278.91 7934.95 8033.55 9230.00 8541.92 3684.36 10413.17 7719.79 7731.73 2275.63 7925.68 +10214.46 7114.76 2045.76 1462.34 8846.32 3325.55 1645.81 7184.49 6351.01 8948.36 2240.95 4865.43 6954.17 5588.23 1565.23 6663.98 3717.32 3157.07 3433.43 4514.36 4402.29 547.66 6299.40 9859.06 10173.87 11102.28 7798.89 6104.61 2373.45 8381.83 4063.44 10056.40 1673.40 5306.96 6306.73 4171.71 7065.92 12233.50 10356.45 3969.63 4289.98 4775.04 3393.90 8149.15 3397.39 8073.86 4925.48 6722.49 11255.33 8091.75 7715.23 4238.76 7596.72 3176.24 11241.71 6683.92 11332.69 4838.59 5651.53 6046.47 7478.67 9660.22 4528.01 8916.77 9576.19 5979.54 4957.01 6268.17 5349.10 9000.25 4288.63 6049.79 6902.11 7045.97 3365.99 3504.18 8630.56 7334.87 7543.91 7907.75 9232.30 5876.99 301.97 11075.92 6387.85 9430.86 5650.35 2040.40 4357.31 0.00 7918.62 7559.15 2555.60 7751.23 4989.91 2566.88 6871.16 9350.43 7625.06 4801.62 5420.58 7612.38 9600.26 8248.73 8487.43 5951.80 9252.15 4232.11 7657.74 8605.72 10255.01 9304.36 10039.04 8188.11 6808.11 8727.82 7056.41 7372.14 6624.13 10783.26 +3457.20 5247.55 6227.41 7545.83 1707.97 4593.51 7276.43 3035.00 7303.16 1351.38 6228.66 4819.81 1584.58 2884.23 6456.98 7205.92 4637.50 4874.11 4740.44 3890.73 3775.95 7670.59 1621.34 3487.72 3029.60 5058.30 924.80 4108.38 5553.05 2245.82 4208.28 2204.55 7312.79 4090.25 7175.45 4335.51 967.93 5264.71 3430.19 4422.62 6117.19 6014.18 5782.42 5323.02 5128.29 6913.81 5254.87 3502.44 3892.10 7670.23 4373.24 5084.52 1541.98 6412.87 3794.60 1855.73 3785.54 6767.77 3825.51 4853.98 5778.30 2645.85 3697.61 5752.82 3181.24 4108.72 5364.53 3896.82 6194.14 1465.00 4194.15 1876.03 2884.59 8273.18 7418.00 5601.84 711.96 5799.69 3297.78 1287.70 5016.05 3055.38 7851.75 4988.61 1901.95 1542.29 6869.59 7979.61 7302.55 7918.62 0.00 7457.02 5770.99 2014.06 3366.57 6170.78 3763.99 1648.45 5502.66 5246.62 7042.40 4419.56 4948.06 1495.49 4340.37 3542.13 1478.12 3766.62 4349.85 4868.90 3775.25 1661.47 2126.00 1941.98 4727.94 4971.74 2214.08 1699.34 7741.73 5070.89 +6706.10 2229.36 5826.57 6139.63 9162.62 6379.76 5918.16 4451.99 1255.91 8767.36 5548.31 3591.12 5909.27 7910.67 7349.72 902.46 5089.06 7098.98 7418.43 4979.64 5364.61 7012.75 6831.26 6161.86 7151.53 6339.74 8168.08 9573.82 6754.87 5770.07 5186.32 9196.63 5895.50 3928.88 1270.10 7935.24 7441.21 8059.26 6962.19 7773.49 3354.44 2915.80 4423.52 2642.40 7986.83 1004.58 3197.42 9541.77 8016.82 534.27 3321.65 8845.33 8552.36 4418.69 8143.99 8046.15 8375.01 2721.60 3972.41 2772.15 1779.83 6800.18 5282.36 2923.54 6108.03 9478.95 9691.34 3629.71 2315.69 7226.13 7899.71 6819.56 4572.55 1287.71 4314.54 8645.24 7844.59 1708.20 4298.90 8528.43 3940.54 4692.23 7273.57 6370.58 7724.71 8087.38 1909.46 9250.47 3304.92 7559.15 7457.02 0.00 5500.92 9029.40 7722.60 5173.18 9846.89 7599.20 2132.14 9474.29 2161.07 3226.97 12062.97 8847.05 11164.62 4111.41 8756.80 6943.73 10753.15 11601.77 6415.07 7483.63 8871.75 9188.39 2729.08 11730.95 8726.38 8526.83 1196.65 5851.15 +7719.89 4660.42 518.87 1780.81 6984.96 1550.86 1505.83 4643.31 4431.25 6957.40 458.53 2356.16 4585.57 4069.52 1856.75 4665.21 1214.00 2005.51 2401.28 2034.34 2020.10 2123.02 4219.62 7341.49 7725.69 8551.87 5860.38 5228.03 1341.73 5904.76 1614.98 7971.24 1541.80 2751.72 4351.78 3166.16 5047.14 9724.70 7875.77 2945.62 2165.26 2585.13 1078.62 5664.69 2821.79 5827.88 2503.39 5592.46 8814.97 6010.80 5174.43 3814.12 5820.70 1319.26 8817.46 4940.42 8928.54 2951.59 3096.36 3562.26 5081.58 7211.90 2122.95 6438.94 7067.91 5104.62 4703.17 3714.28 3185.88 6670.99 3210.30 4003.09 4371.46 5325.22 2239.79 3378.95 6468.53 4949.32 4993.36 6055.89 6692.85 3367.58 2367.34 8526.88 4592.72 7206.08 3687.01 3815.24 2836.48 2555.60 5770.99 5500.92 0.00 6101.50 3556.88 554.81 5830.23 7045.46 5182.48 4490.75 3557.88 5075.01 8541.43 6421.91 7448.03 3400.90 7203.32 2595.25 6743.38 7713.88 7736.40 6984.95 7885.13 6484.57 4303.36 7846.90 5475.69 5639.31 4804.79 8228.43 +5388.19 6903.02 6454.60 7755.74 1303.19 4630.73 7528.63 4798.18 8666.50 1746.74 6544.22 5912.13 3208.38 2163.01 6191.05 8638.01 5198.57 4600.35 4322.36 4654.69 4388.70 7637.33 2242.35 5474.91 4888.09 7030.68 1089.71 2527.70 5438.16 4249.41 4803.18 2883.61 7574.16 5282.28 8540.48 3649.23 1599.85 7037.18 5323.70 3822.16 7075.64 7101.37 6456.95 7150.57 4489.79 8615.90 6382.88 1760.32 5582.27 9311.55 6188.81 4063.56 501.27 7064.62 5443.95 1168.75 5366.67 7844.40 5123.54 6289.26 7467.04 4574.23 4371.84 7653.61 5176.83 2577.26 4031.12 5400.17 7416.94 3347.39 3515.69 2330.92 4570.77 9678.60 8111.88 4747.80 2277.57 7461.44 5133.61 752.05 6987.38 4358.89 7761.62 6958.21 1527.77 3001.31 8121.93 7295.47 8237.76 7751.23 2014.06 9029.40 6101.50 0.00 2761.77 6602.65 1945.27 3382.08 7235.07 3980.30 8233.31 6214.61 3058.54 786.31 2336.09 4930.23 2152.13 3589.22 2366.85 2859.15 5737.80 3442.24 3111.35 458.54 6347.39 2965.41 705.81 513.91 9119.52 7070.16 +6519.64 5949.61 3827.19 5081.58 3905.92 2009.29 4878.76 4447.39 7030.83 4101.53 3964.61 4177.69 3210.57 600.09 3429.32 7112.36 2952.15 1846.38 1561.59 2761.49 2385.66 4890.83 1928.41 6370.49 6233.51 7906.51 2956.83 1864.80 2702.33 4817.99 2669.73 5268.92 4927.52 3808.70 6916.00 976.54 2401.47 8481.87 6564.49 1099.58 5031.63 5210.73 4169.89 6581.68 1803.75 7604.08 4627.64 2052.25 7198.71 8122.74 5704.11 1770.45 2642.34 4709.14 7121.48 1747.32 7134.06 5877.49 3846.84 5009.32 6523.14 5770.44 2450.56 7268.72 6046.29 1762.52 2292.79 4397.58 5676.19 4749.43 833.98 1694.37 4118.93 8047.87 5734.61 2235.27 4034.13 6460.00 4882.96 2987.29 6968.70 3319.67 5005.96 7851.49 1520.57 4891.26 6363.34 4670.67 6083.93 4989.91 3366.57 7722.60 3556.88 2761.77 0.00 4098.86 2312.81 4999.16 6413.97 2114.48 6383.25 5672.66 4986.49 3303.23 3900.76 3846.09 4453.65 968.47 3245.74 4200.33 6733.22 4995.66 5343.17 3202.34 5393.97 4334.49 2067.15 2404.55 7477.29 7771.14 +7922.57 4548.08 657.03 1496.48 7446.67 2098.84 1200.42 4795.36 4048.93 7391.47 375.20 2318.11 4905.98 4600.45 2204.69 4310.39 1536.85 2555.72 2952.29 2331.66 2394.88 2066.88 4656.58 7518.32 7969.74 8658.13 6313.94 5782.45 1849.27 6134.92 1964.70 8375.26 1221.17 2842.09 3979.51 3720.66 5489.71 9904.70 8091.62 3499.80 1820.24 2282.10 828.04 5583.06 3356.59 5580.47 2358.91 6139.72 9060.37 5694.29 5180.15 4354.02 6305.05 823.89 9074.19 5436.96 9197.88 2536.40 3206.65 3482.51 4921.92 7458.39 2478.59 6349.99 7257.97 5659.15 5241.42 3777.80 2879.20 6992.80 3765.10 4451.86 4548.01 4899.23 1686.75 3891.58 6858.16 4780.98 5114.19 6525.33 6691.48 3591.19 2330.38 8638.10 5084.66 7568.98 3309.16 4078.59 2334.78 2566.88 6170.78 5173.18 554.81 6602.65 4098.86 0.00 6380.21 7376.33 5059.64 5030.47 3147.18 5073.06 9085.18 6893.45 7994.64 3536.53 7621.40 3133.52 7295.34 8265.17 7910.15 7309.48 8268.84 6975.89 4248.32 8398.33 5989.39 6131.77 4398.12 8311.22 +7218.75 7902.88 6048.13 7231.37 3195.56 4281.49 7059.83 6045.07 9254.96 3688.21 6214.72 6393.79 4512.04 1956.71 5333.88 9304.73 5259.85 3944.99 3571.63 4988.74 4632.58 6889.71 3201.21 7241.82 6760.43 8817.15 2905.68 812.15 4812.21 5867.97 4956.76 4796.40 7111.04 5924.25 9136.02 2766.77 3006.18 8949.20 7179.68 2989.70 7329.03 7481.87 6482.67 8361.81 3475.73 9609.88 6857.85 310.23 7508.37 10206.66 7419.82 2710.94 2280.87 7016.95 7376.03 2063.79 7306.21 8167.96 5882.77 7081.85 8483.06 6405.12 4674.85 8964.96 6929.13 923.50 2352.49 6330.78 7916.08 5196.26 2680.91 3121.61 5756.63 10277.97 8035.27 3470.67 4168.94 8444.44 6442.75 2649.17 8452.42 5219.47 6952.96 8748.66 2269.51 4934.31 8614.20 5973.19 8395.37 6871.16 3763.99 9846.89 5830.23 1945.27 2312.81 6380.21 0.00 5280.17 8315.19 2375.49 8655.02 7417.71 2753.57 2730.53 1639.39 5795.19 4093.12 3274.98 935.84 1889.16 7538.43 5329.05 5048.90 2322.61 7334.51 2023.10 1550.31 2077.09 9706.66 8804.96 +2075.86 5387.71 7534.56 8822.75 2468.84 6042.48 8539.40 3257.66 7716.74 1861.07 7492.88 5650.67 2470.70 4531.11 7949.66 7542.74 5850.72 6407.69 6311.96 5044.67 5027.29 9054.33 3158.91 2303.36 1518.40 3754.52 2379.94 5705.87 7019.11 1829.87 5433.41 1662.03 8570.17 4900.21 7592.59 5959.81 2613.04 3669.95 1969.68 6033.97 6975.15 6769.09 6861.83 5132.90 6733.84 6878.22 6021.27 5044.88 2254.82 7702.03 4291.26 6730.27 2999.30 7477.77 2148.67 3489.48 2138.15 7493.78 4563.66 5332.48 5826.41 1302.94 4922.62 5351.06 2072.22 5716.33 7007.18 4391.43 6811.48 404.80 5819.70 3419.08 3278.43 8601.12 8416.66 7231.78 1111.30 5891.01 3312.99 2640.29 4410.14 3899.96 9255.00 3676.94 3550.38 568.23 7422.65 9562.45 8125.97 9350.43 1648.45 7599.20 7045.46 3382.08 4999.16 7376.33 5280.17 0.00 5492.44 6892.72 7649.30 4377.44 5923.19 2653.11 5554.07 4222.55 1577.54 5315.56 5739.70 6092.14 2473.18 119.91 1286.71 3135.60 4968.57 6175.42 3758.69 3211.90 8121.08 3886.90 +4601.12 526.10 5636.03 6380.17 7206.99 5545.75 6104.69 2469.72 2624.03 6767.22 5401.55 2843.36 4032.96 6467.22 6981.73 2322.84 4345.32 6275.42 6514.89 3909.38 4273.25 7112.47 5150.37 4058.26 5026.00 4435.54 6287.97 8178.13 6190.64 3663.49 4263.50 7112.21 6100.32 2747.19 2527.43 6851.78 5636.33 6089.35 4854.28 6734.77 3442.86 2967.81 4231.72 646.51 7113.93 1414.34 2701.50 8004.99 5918.83 2212.61 1201.22 7823.00 6740.75 4523.97 6037.63 6366.94 6263.15 3306.25 2597.53 1636.75 367.25 4668.27 4154.70 1323.66 3986.48 8100.39 8591.56 2017.19 2528.93 5128.90 6783.28 5197.60 2665.78 3276.77 4901.23 7797.36 5818.81 495.56 2235.40 6660.79 2034.18 3117.34 7378.88 4452.53 6082.92 5995.97 2734.85 8971.07 4071.19 7625.06 5502.66 2132.14 5182.48 7235.07 6413.97 5059.64 8315.19 5492.44 0.00 8384.05 3053.86 1118.88 10293.58 6952.19 9478.36 2568.59 6720.59 5810.80 9174.92 9951.59 4334.85 5375.41 6772.88 7334.50 1025.97 10075.23 7033.47 6754.06 2912.22 3969.61 +8562.66 7894.83 4524.53 5478.42 5280.70 3148.64 5376.02 6546.41 8626.17 5651.62 4760.30 5884.42 5316.00 2405.15 3389.80 8770.33 4415.73 2504.07 2125.00 4534.23 4151.31 4938.34 3994.96 8447.15 8229.00 9997.56 4615.77 1569.99 3205.65 6910.07 4288.23 6827.97 5429.53 5677.40 8523.13 1545.87 4295.00 10481.24 8587.58 1701.04 6439.21 6730.41 5411.69 8608.61 1677.23 9482.78 6284.59 2365.03 9137.90 9917.39 7763.65 676.64 4108.16 5803.45 9040.79 3412.26 9023.57 7291.17 5786.87 6879.75 8453.88 7789.44 4255.20 9319.44 8122.52 1474.93 218.50 6388.59 7271.08 6694.82 1602.10 3780.54 6214.86 9608.32 6706.78 1303.88 5840.40 8373.85 6983.90 4503.80 9068.66 5357.23 4942.20 9940.39 3351.77 6687.82 7908.37 3632.66 7307.76 4801.62 5246.62 9474.29 4490.75 3980.30 2114.48 5030.47 2375.49 6892.72 8384.05 0.00 7861.03 7723.20 4917.24 4718.87 3837.36 5843.43 6045.93 2576.82 2968.40 3864.60 8800.40 6908.02 6996.51 4428.53 7358.10 3978.72 3333.04 3854.45 9050.75 9876.07 +7335.04 2735.52 3802.69 3986.85 8665.61 4712.97 3775.20 4412.53 930.45 8393.41 3517.75 2322.46 5468.39 6703.79 5351.86 1258.61 3477.99 5379.29 5741.07 3675.43 4022.81 4873.00 5996.67 6817.32 7630.25 7445.35 7563.01 8239.71 4881.93 5932.42 3714.11 9075.38 3749.82 2979.48 892.39 6376.04 6748.22 9032.02 7567.95 6184.85 1426.56 1173.48 2501.87 3700.01 6261.04 2853.95 1850.59 8367.07 8640.19 2695.00 3869.37 7198.76 7806.83 2344.02 8723.97 7125.77 8918.87 610.78 3217.22 2326.38 2742.33 7184.73 3987.17 4312.91 6664.38 8130.38 8079.27 3258.47 849.58 7246.80 6370.53 5905.86 4371.67 1769.94 2156.10 6878.09 7582.94 2585.52 4473.15 7881.92 5078.59 3993.37 5130.68 7454.82 6772.12 8039.55 322.76 7182.63 1157.63 5420.58 7042.40 2161.07 3557.88 8233.31 6383.25 3147.18 8655.02 7649.30 3053.86 7861.03 0.00 3744.82 11130.40 8236.99 10131.23 3508.73 8483.10 5485.90 9588.91 10507.48 7151.39 7547.48 8828.17 8487.25 2869.11 10640.96 7790.00 7719.63 1251.06 6994.89 +3626.09 1075.27 5570.90 6505.32 6116.87 5118.99 6214.74 1416.44 3526.31 5663.09 5374.23 2754.95 3007.79 5646.40 6757.87 3281.61 4054.28 5822.01 6006.35 3449.22 3767.13 7134.90 4219.65 3094.78 3993.53 3763.67 5233.45 7354.34 5889.33 2547.64 3867.42 5993.48 6220.05 2368.27 3413.46 6228.98 4625.82 5292.31 3869.74 6141.10 3726.85 3311.86 4272.64 946.07 6603.70 2526.07 2802.84 7108.27 4944.36 3331.42 125.34 7210.75 5715.67 4695.13 5046.29 5414.85 5259.18 3839.59 2091.54 1664.69 1449.54 3603.85 3634.10 1597.12 2976.33 7286.93 7921.90 1426.97 3041.74 4011.21 6143.43 4301.56 1667.94 4300.41 5280.37 7282.83 4708.90 1522.71 1127.43 5609.64 1619.98 2365.98 7394.95 3763.04 5156.15 4877.65 3450.55 8738.90 4597.28 7612.38 4419.56 3226.97 5075.01 6214.61 5672.66 5073.06 7417.71 4377.44 1118.88 7723.20 3744.82 0.00 9269.07 5887.29 8495.02 1920.05 5607.00 5193.17 8245.94 8982.63 3413.79 4260.95 5655.92 6285.70 915.67 9103.00 6065.80 5748.17 3876.54 3349.01 +7996.90 9957.35 8784.80 9983.06 3461.83 6991.09 9807.46 7853.03 11634.17 4064.15 8940.26 8816.02 6265.58 4516.35 8076.63 11631.62 7864.50 6694.56 6324.30 7468.18 7147.68 9637.26 5234.57 8201.56 7410.02 9676.12 4058.89 3495.76 7563.78 7180.00 7518.90 4692.63 9858.32 8242.43 11510.04 5520.22 4657.63 9297.34 7871.49 5742.79 9878.96 9970.66 9116.39 10201.58 6215.47 11672.25 9288.98 2957.94 7820.05 12358.94 9240.31 5382.79 3554.60 9679.92 7640.83 4033.12 7484.88 10691.23 8120.20 9305.18 10523.47 7220.29 7162.80 10682.92 7936.22 3621.17 4823.72 8439.73 10342.33 6031.09 5432.40 5268.97 7629.21 12654.56 10714.04 6140.15 4960.00 10515.36 8178.39 3680.74 9962.95 7374.06 9693.31 9597.95 4374.04 5401.84 11049.23 8541.38 10995.10 9600.26 4948.06 12062.97 8541.43 3058.54 4986.49 9085.18 2753.57 5923.19 10293.58 4917.24 11130.40 9269.07 0.00 3457.48 1115.91 7952.76 4363.95 5953.58 1954.13 1102.16 8395.88 6017.06 5094.95 3009.32 9399.13 1024.63 3355.26 3545.32 12088.85 9801.13 +4697.85 6665.64 6814.63 8133.69 602.70 5025.61 7890.55 4484.10 8591.65 961.05 6875.09 5939.21 2940.28 2709.34 6704.57 8528.84 5422.77 5093.65 4853.76 4791.65 4575.94 8092.97 2297.92 4827.79 4170.03 6360.26 682.25 3302.67 5896.31 3723.05 5007.02 2113.80 7933.35 5258.04 8464.25 4243.67 1493.35 6282.95 4615.45 4396.15 7170.70 7142.73 6657.28 6802.59 5087.22 8355.86 6400.07 2545.17 4818.85 9090.22 5847.22 4751.77 661.38 7279.87 4675.38 1566.56 4590.83 7895.86 5050.24 6164.91 7212.07 3890.27 4535.70 7246.91 4542.67 3346.18 4781.88 5233.72 7401.11 2664.87 4104.65 2462.33 4299.21 9586.70 8319.77 5404.77 1575.53 7222.63 4774.02 370.10 6505.99 4269.02 8235.77 6285.63 1867.62 2237.31 8097.02 7931.67 8351.14 8248.73 1495.49 8847.05 6421.91 786.31 3303.23 6893.45 2730.53 2653.11 6952.19 4718.87 8236.99 5887.29 3457.48 0.00 2926.39 4812.95 1366.38 4026.27 3093.00 3463.67 5065.77 2723.46 2326.47 486.05 6127.63 3555.49 1387.11 907.81 9039.43 6431.51 +7616.98 9112.05 7680.48 8870.62 3119.36 5897.19 8697.67 7082.59 10672.63 3722.36 7840.98 7830.78 5492.28 3459.42 6961.27 10689.99 6810.58 5583.40 5211.00 6457.27 6123.03 8521.46 4346.05 7753.77 7071.26 9284.50 3417.00 2383.15 6451.39 6582.75 6479.23 4585.71 8748.73 7292.11 10550.21 4406.03 3875.32 9104.92 7523.62 4629.09 8849.28 8964.13 8053.82 9437.85 5100.26 10831.17 8302.04 1855.89 7623.03 11485.76 8477.51 4278.55 2831.83 8606.62 7459.91 3124.39 7336.37 9673.04 7197.94 8394.40 9686.11 6813.25 6147.56 9967.98 7466.43 2507.92 3758.14 7565.60 9360.08 5590.21 4319.95 4345.06 6833.05 11695.99 9635.14 5037.97 4500.19 9666.53 7437.72 3054.85 9322.07 6475.49 8578.42 9209.36 3439.92 5086.07 10065.24 7469.41 9947.86 8487.43 4340.37 11164.62 7448.03 2336.09 3900.76 7994.64 1639.39 5554.07 9478.36 3837.36 10131.23 8495.02 1115.91 2926.39 0.00 7057.77 4083.21 4869.24 873.77 538.24 7990.46 5632.88 4940.80 2441.38 8547.11 631.73 2448.42 2756.92 11127.09 9357.00 +4407.93 2118.33 3918.07 5031.02 5197.20 3215.59 4734.35 1259.48 3780.77 4893.24 3771.89 1446.76 1961.57 3910.42 4937.97 3719.18 2257.62 3908.10 4086.35 1558.15 1853.13 5521.24 2719.85 3986.04 4516.81 5151.14 4131.00 5617.46 4033.90 2685.14 1999.71 5576.09 4751.50 722.59 3653.18 4329.16 3359.41 6371.19 4591.24 4231.68 2760.96 2550.01 2842.69 2767.92 4683.66 3815.15 1798.79 5486.18 5599.26 4430.29 1983.09 5309.14 4462.86 3404.33 5635.18 3935.98 5785.75 3285.69 353.94 1359.81 2697.66 4017.77 1718.08 3497.12 3734.65 5537.02 6047.15 551.52 2659.16 3817.93 4250.38 2715.44 1038.26 4773.99 4253.63 5363.04 4074.87 2651.20 1592.51 4474.59 3443.97 582.41 5768.06 5125.99 3619.71 4566.49 3327.80 6894.73 3903.43 5951.80 3542.13 4111.41 3400.90 4930.23 3846.09 3536.53 5795.19 4222.55 2568.59 5843.43 3508.73 1920.05 7952.76 4812.95 7057.77 0.00 4974.49 3288.57 6680.28 7503.81 4376.16 4130.38 5346.87 5117.18 1554.33 7631.66 4615.83 4423.36 4227.04 4835.38 +3638.30 6528.36 7644.42 8968.01 966.89 5946.13 8704.94 4305.60 8696.56 405.39 7661.84 6288.05 3016.07 3889.20 7747.21 8575.10 6094.25 6137.99 5949.86 5361.73 5230.35 9039.31 2991.39 3880.03 3046.08 5316.42 1496.90 4664.13 6878.76 3146.49 5665.27 815.77 8743.11 5552.16 8569.28 5424.66 2188.86 5022.14 3507.66 5551.35 7591.29 7476.95 7255.52 6449.79 6257.36 8132.65 6716.51 3911.54 3541.26 8924.66 5540.50 6027.09 1937.84 7886.16 3382.07 2725.79 3272.84 8228.62 5273.23 6249.48 7025.59 2880.24 5158.51 6765.13 3640.04 4703.47 6120.50 5285.21 7633.56 1763.97 5282.51 3224.83 4216.82 9644.41 8894.76 6640.08 915.27 7065.95 4485.35 1542.31 5889.45 4513.72 9206.64 5237.67 2936.78 1038.47 8297.78 9124.01 8775.64 9252.15 1478.12 8756.80 7203.32 2152.13 4453.65 7621.40 4093.12 1577.54 6720.59 6045.93 8483.10 5607.00 4363.95 1366.38 4083.21 4974.49 0.00 5033.63 4387.92 4616.39 4045.20 1681.10 960.91 1785.37 6042.04 4688.56 2720.70 2191.57 9126.89 5463.39 +6585.79 5318.77 2890.25 4172.79 4620.06 1058.72 3955.38 4117.39 6175.95 4719.76 3011.93 3358.30 3177.20 1481.25 2713.59 6284.09 2019.62 1109.51 1008.69 1970.56 1585.00 4067.56 2160.79 6360.07 6388.08 7832.65 3568.10 2765.18 1870.16 4789.09 1786.14 5843.84 4002.59 3101.97 6065.34 1042.08 2861.27 8598.88 6667.53 951.02 4108.13 4319.58 3211.95 6056.11 1522.51 6911.52 3786.32 3019.60 7414.75 7370.50 5243.03 2020.59 3382.44 3742.55 7362.65 2470.58 7408.54 4960.57 3213.35 4306.41 5877.06 5895.59 1682.07 6782.39 6042.45 2651.71 2787.54 3827.02 4814.89 5011.62 974.83 1900.71 3781.88 7183.47 4766.26 2156.45 4472.57 5797.46 4554.77 3679.56 6615.31 2839.41 4210.16 7785.43 2159.76 5306.54 5487.20 4253.65 5133.28 4232.11 3766.62 6943.73 2595.25 3589.22 968.47 3133.52 3274.98 5315.56 5810.80 2576.82 5485.90 5193.17 5953.58 4026.27 4869.24 3288.57 5033.63 0.00 4204.32 5163.98 6742.31 5290.82 5856.14 4004.72 4785.22 5298.00 2926.06 3169.65 6615.75 7639.72 +7754.96 8776.47 6943.50 8099.22 3430.59 5198.55 7938.59 6853.77 10181.56 3997.09 7119.02 7321.72 5288.76 2886.88 6146.98 10225.53 6194.93 4826.47 4443.62 5920.03 5566.13 7712.15 4030.27 7831.97 7251.30 9393.60 3438.60 1565.29 5685.01 6541.94 5892.51 4995.89 7990.42 6837.89 10061.98 3636.28 3714.56 9374.47 7689.42 3861.72 8264.87 8415.98 7414.60 9191.94 4287.28 10489.67 7787.22 1223.41 7905.69 11103.36 8240.96 3430.91 2809.21 7943.82 7756.77 2835.20 7658.72 9103.56 6783.08 7983.71 9355.75 6940.81 5606.38 9769.85 7529.31 1692.45 2885.22 7208.87 8846.03 5714.22 3562.86 3979.32 6578.61 11205.06 8957.53 4186.93 4641.49 9322.88 7236.89 3118.63 9204.07 6100.75 7758.91 9321.74 3094.09 5327.63 9545.38 6598.79 9329.47 7657.74 4349.85 10753.15 6743.38 2366.85 3245.74 7295.34 935.84 5739.70 9174.92 2968.40 9588.91 8245.94 1954.13 3093.00 873.77 6680.28 4387.92 4204.32 0.00 973.83 8102.03 5804.05 5307.46 2621.65 8208.06 1105.39 2217.68 2661.99 10633.90 9420.51 +8155.19 9574.90 7917.18 9071.06 3654.04 6167.27 8911.84 7573.74 11075.09 4258.31 8091.76 8222.24 5986.76 3807.27 7106.40 11104.68 7141.21 5800.22 5416.89 6832.66 6487.40 8672.90 4806.10 8290.47 7609.18 9822.45 3944.52 2533.76 6658.01 7108.45 6827.21 5103.16 8963.72 7708.15 10953.93 4609.66 4374.42 9636.94 8061.73 4835.18 9200.91 9336.44 8369.85 9927.10 5249.60 11293.36 8691.14 2153.51 8154.52 11934.10 8968.32 4369.12 3350.77 8906.10 7990.00 3585.57 7863.43 10033.94 7630.08 8829.66 10151.13 7351.29 6520.39 10469.09 8002.27 2661.03 3757.44 8019.68 9750.46 6127.92 4536.69 4788.45 7317.23 12099.07 9923.72 5117.88 5037.95 10127.18 7936.01 3585.61 9838.49 6921.55 8714.05 9747.37 3885.35 5622.48 10453.18 7471.69 10278.91 8605.72 4868.90 11601.77 7713.88 2859.15 4200.33 8265.17 1889.16 6092.14 9951.59 3864.60 10507.48 8982.63 1102.16 3463.67 538.24 7503.81 4616.39 5163.98 973.83 0.00 8528.34 6171.10 5464.82 2978.32 9008.27 134.26 2919.38 3262.85 11528.80 9893.38 +433.48 4471.28 8255.06 9405.93 4937.75 7172.35 9109.37 3116.84 6918.03 4332.19 8130.68 5738.04 3569.17 6399.12 9068.60 6645.07 6540.93 7718.10 7738.55 5741.46 5888.87 9857.16 4810.66 396.11 1072.21 1294.66 4666.01 7837.46 8120.26 1954.05 6195.02 3949.75 9127.16 5086.46 6809.98 7603.58 4599.25 1995.03 660.21 7616.29 6941.30 6591.00 7211.61 3773.08 8260.63 5508.73 5953.65 7272.53 1613.76 6355.64 3291.15 8501.19 5298.59 7748.12 1762.35 5564.28 2011.65 7197.31 4715.33 4933.88 4702.08 1179.23 5755.25 3651.07 700.59 7823.67 8949.24 4228.23 6412.51 2400.93 7476.09 5038.86 3367.04 7609.63 8501.54 8858.05 3490.51 4820.54 2840.96 4986.03 2574.78 4378.14 10094.61 1220.87 5507.97 3010.66 6861.92 10905.67 7934.95 10255.01 3775.25 6415.07 7736.40 5737.80 6733.22 7910.15 7538.43 2473.18 4334.85 8800.40 7151.39 3413.79 8395.88 5065.77 7990.46 4376.16 4045.20 6742.31 8102.03 8528.34 0.00 2379.14 3518.37 5551.75 4285.87 8617.42 5988.12 5472.46 7238.98 1427.47 +1988.17 5273.71 7476.48 8760.61 2558.88 6001.87 8476.24 3151.01 7607.97 1953.08 7430.89 5562.08 2403.84 4537.22 7912.84 7431.83 5786.90 6378.79 6290.20 4978.14 4968.63 9002.78 3138.91 2199.13 1447.57 3664.82 2424.70 5740.55 6979.43 1713.73 5371.49 1781.84 8506.48 4812.34 7484.03 5952.23 2619.85 3627.15 1892.50 6022.13 6885.82 6674.77 6786.19 5013.82 6719.79 6760.09 5928.66 5089.50 2231.03 7584.53 4174.19 6734.07 3048.93 7400.32 2134.50 3511.74 2138.55 7397.24 4473.12 5228.71 5710.13 1203.96 4862.06 5231.20 1962.32 5748.46 7025.64 4290.50 6710.95 318.29 5812.69 3398.56 3178.05 8489.34 8333.90 7225.68 1165.32 5775.50 3199.93 2696.60 4291.34 3817.79 9205.54 3587.81 3560.60 684.04 7318.93 9541.09 8033.55 9304.36 1661.47 7483.63 6984.95 3442.24 4995.66 7309.48 5329.05 119.91 5375.41 6908.02 7547.48 4260.95 6017.06 2723.46 5632.88 4130.38 1681.10 5290.82 5804.05 6171.10 2379.14 0.00 1405.99 3207.63 4857.69 6255.89 3800.66 3256.42 8011.01 3787.88 +3088.42 6652.73 8348.03 9663.29 1879.39 6715.66 9390.92 4485.21 8945.89 1365.63 8341.63 6736.33 3456.61 4795.42 8562.53 8786.68 6732.11 6965.54 6803.13 5959.96 5877.02 9796.29 3739.90 3437.26 2454.87 4725.20 2406.74 5624.92 7669.61 3109.64 6304.25 433.11 9426.20 5986.36 8820.48 6318.95 2996.08 4203.72 2908.93 6433.84 8058.96 7893.15 7833.70 6419.58 7142.29 8162.73 7135.71 4871.42 2725.11 8984.08 5572.23 6957.90 2891.43 8460.77 2547.11 3642.82 2402.85 8632.51 5672.86 6531.93 7103.28 2441.22 5790.27 6628.52 3257.54 5663.63 7075.02 5575.71 7982.77 1645.70 6176.38 3989.56 4467.45 9849.96 9439.75 7552.39 1418.37 7163.97 4576.01 2494.59 5667.74 4955.77 9976.11 4644.16 3822.94 793.19 8616.06 10009.64 9230.00 10039.04 2126.00 8871.75 7885.13 3111.35 5343.17 8268.84 5048.90 1286.71 6772.88 6996.51 8828.17 5655.92 5094.95 2326.47 4940.80 5346.87 960.91 5856.14 5307.46 5464.82 3518.37 1405.99 0.00 2732.27 6215.69 5526.39 3677.94 3143.38 9358.81 4942.53 +5183.70 7028.56 6851.58 8159.78 875.58 5035.97 7927.36 4874.21 8882.13 1385.35 6931.54 6173.51 3304.18 2602.35 6630.58 8835.92 5543.93 5033.47 4763.93 4962.30 4716.70 8063.80 2495.94 5312.40 4653.37 6846.27 1054.02 2953.53 5863.32 4183.67 5139.33 2474.58 7972.04 5517.43 8755.28 4101.58 1758.15 6753.30 5099.98 4271.40 7370.25 7371.60 6795.26 7210.17 4943.27 8730.32 6640.54 2167.70 5284.15 9448.94 6251.04 4521.43 688.37 7409.79 5136.42 1546.72 5043.53 8120.32 5333.76 6475.89 7583.18 4376.32 4689.98 7675.94 5025.88 3009.85 4473.91 5562.28 7660.43 3150.84 3967.04 2620.74 4671.29 9886.43 8455.35 5206.27 2061.58 7586.92 5182.54 676.33 6957.87 4557.97 8192.92 6771.66 1892.08 2706.54 8361.90 7753.42 8541.92 8188.11 1941.98 9188.39 6484.57 458.54 3202.34 6975.89 2322.61 3135.60 7334.50 4428.53 8487.25 6285.70 3009.32 486.05 2441.38 5117.18 1785.37 4004.72 2621.65 2978.32 5551.75 3207.63 2732.27 0.00 6482.04 3071.13 1161.27 845.33 9332.92 6915.75 +4466.49 568.51 4782.01 5647.89 6433.86 4546.32 5361.06 1740.99 2762.37 6041.26 4567.75 1948.59 3187.36 5463.57 6055.54 2574.18 3379.85 5272.00 5501.28 2895.82 3254.35 6315.20 4202.70 3948.38 4780.23 4679.34 5451.39 7171.60 5231.28 3168.20 3265.62 6517.94 5363.33 1738.79 2641.30 5826.46 4749.51 6193.89 4701.05 5711.07 2820.76 2397.94 3432.04 1370.79 6101.01 2285.09 1925.23 7024.74 5774.60 2967.10 1039.86 6798.65 5861.30 3817.02 5863.08 5424.48 6063.83 2929.81 1571.87 775.18 1148.55 4353.26 3133.66 2145.92 3798.22 7091.35 7565.59 1006.69 2135.00 4579.69 5757.44 4229.69 1843.48 3634.50 4368.57 6784.63 5127.59 1119.42 1669.22 5816.17 2474.41 2117.67 6578.48 4678.56 5125.96 5424.03 2588.26 8046.16 3684.36 6808.11 4727.94 2729.08 4303.36 6347.39 5393.97 4248.32 7334.51 4968.57 1025.97 7358.10 2869.11 915.67 9399.13 6127.63 8547.11 1554.33 6042.04 4785.22 8208.06 9008.27 4285.87 4857.69 6215.69 6482.04 0.00 9134.03 6098.69 5853.87 3154.80 4262.58 +8241.62 9700.41 8048.86 9200.34 3729.11 6300.58 9042.08 7693.08 11207.28 4335.34 8224.11 8354.96 6105.01 3941.18 7231.51 11236.00 7275.47 5931.11 5547.22 6966.03 6621.12 8798.24 4931.49 8383.27 7691.29 9911.05 4048.07 2662.43 6788.09 7213.46 6961.31 5159.40 9094.01 7839.18 11086.04 4740.13 4491.00 9706.23 8145.07 4965.72 9335.01 9470.03 8504.05 10047.10 5375.75 11419.08 8824.00 2287.77 8223.33 12061.92 9087.86 4490.15 3459.37 9040.05 8057.08 3710.35 7927.18 10167.86 7759.59 8958.92 10276.31 7439.55 6653.83 10585.65 8096.83 2789.67 3867.95 8146.46 9883.30 6217.91 4667.95 4916.22 7438.30 12231.26 10057.37 5237.15 5127.86 10253.09 8053.33 3686.52 9948.94 7049.33 8837.89 9835.64 4012.58 5700.00 10586.17 7579.48 10413.17 8727.82 4971.74 11730.95 7846.90 2965.41 4334.49 8398.33 2023.10 6175.42 10075.23 3978.72 10640.96 9103.00 1024.63 3555.49 631.73 7631.66 4688.56 5298.00 1105.39 134.26 8617.42 6255.89 5526.39 3071.13 9134.03 0.00 3042.05 3376.83 11661.05 9986.83 +5670.20 6663.69 5808.78 7098.82 1963.18 3978.14 6878.83 4660.80 8279.14 2322.18 5911.42 5470.24 3081.66 1472.28 5494.22 8277.58 4632.07 3911.39 3624.55 4151.50 3855.77 6953.43 1898.85 5692.58 5221.39 7267.31 1379.64 1966.43 4757.58 4341.26 4253.67 3495.24 6925.40 4887.18 8154.90 2943.70 1497.17 7427.32 5635.37 3118.15 6576.12 6638.51 5894.85 7011.06 3784.00 8382.80 5943.36 1291.81 6003.88 9040.20 6053.98 3375.78 791.01 6490.31 5881.00 680.51 5828.13 7369.69 4769.68 5960.35 7238.05 4857.31 3854.86 7567.80 5380.87 1993.73 3401.04 5118.74 6993.06 3654.29 2810.57 1914.84 4399.14 9299.31 7537.21 4049.00 2652.05 7218.11 5032.90 1186.87 6986.47 4034.28 7072.43 7198.63 1019.91 3454.07 7700.12 6593.31 7719.79 7056.41 2214.08 8726.38 5475.69 705.81 2067.15 5989.39 1550.31 3758.69 7033.47 3333.04 7790.00 6065.80 3355.26 1387.11 2448.42 4615.83 2720.70 2926.06 2217.68 2919.38 5988.12 3800.66 3677.94 1161.27 6098.69 3042.05 0.00 551.34 8733.79 7260.41 +5145.08 6412.15 6007.16 7316.85 1508.19 4194.33 7083.14 4332.89 8153.86 1799.64 6086.21 5398.67 2740.90 1807.32 5820.63 8127.54 4708.33 4215.08 3961.51 4148.58 3889.62 7234.53 1728.78 5186.93 4683.69 6757.36 832.03 2517.15 5034.18 3882.49 4308.00 2980.67 7127.66 4768.68 8027.94 3337.35 1122.36 6881.60 5102.84 3492.89 6567.02 6588.80 5963.43 6688.30 4181.14 8127.71 5869.26 1833.21 5454.26 8815.06 5726.92 3854.41 255.39 6574.81 5330.35 702.77 5276.79 7332.61 4612.37 5781.52 6979.10 4330.65 3868.93 7211.07 4879.35 2542.13 3931.80 4899.06 6903.02 3119.20 3198.82 1818.88 4094.31 9166.66 7621.36 4498.90 2103.32 6970.07 4681.77 649.35 6579.74 3850.08 7368.98 6687.41 1047.21 2902.80 7608.04 7023.86 7731.73 7372.14 1699.34 8526.83 5639.31 513.91 2404.55 6131.77 2077.09 3211.90 6754.06 3854.45 7719.63 5748.17 3545.32 907.81 2756.92 4423.36 2191.57 3169.65 2661.99 3262.85 5472.46 3256.42 3143.38 845.33 5853.87 3376.83 551.34 0.00 8607.05 6766.48 +7486.68 2801.92 5053.33 5173.65 9418.45 5904.44 4979.90 4873.60 454.73 9085.48 4768.26 3312.93 6158.64 7750.03 6602.81 595.52 4640.27 6588.74 6940.96 4724.03 5092.95 6076.95 6879.67 6947.69 7870.03 7312.96 8357.71 9341.80 6122.26 6322.09 4829.89 9647.41 4950.85 3847.09 579.31 7544.56 7575.62 8993.81 7735.29 7361.41 2654.35 2320.44 3741.12 3520.15 7475.22 2142.17 2852.04 9410.78 8806.92 1677.37 3990.19 8395.62 8667.54 3592.18 8916.18 8057.73 9133.08 1861.79 3999.66 2887.94 2547.30 7471.91 5037.91 3953.88 6849.19 9237.11 9269.25 3846.79 1802.18 7729.61 7529.63 6822.83 4915.64 571.39 3289.64 8103.22 8212.89 2420.57 4822.32 8698.38 4894.24 4775.49 6329.70 7335.89 7714.85 8565.84 1143.29 8423.07 2275.63 6624.13 7741.73 1196.65 4804.79 9119.52 7477.29 4398.12 9706.66 8121.08 2912.22 9050.75 1251.06 3876.54 12088.85 9039.43 11127.09 4227.04 9126.89 6615.75 10633.90 11528.80 7238.98 8011.01 9358.81 9332.92 3154.80 11661.05 8733.79 8607.05 0.00 6834.38 +1854.28 4263.35 8742.61 9781.77 6339.47 7911.08 9486.98 3642.33 6584.00 5737.98 8578.82 6021.15 4560.96 7506.10 9739.62 6261.68 7090.34 8525.56 8602.09 6344.82 6562.91 10340.09 5894.36 1604.46 2488.96 493.53 5984.89 9037.61 8810.10 2981.90 6800.75 5374.62 9497.12 5482.24 6492.34 8575.26 5814.72 2242.70 2044.68 8558.35 7073.73 6660.40 7544.80 3331.24 9158.88 4869.84 6131.88 8526.63 2724.05 5681.16 3226.83 9514.18 6611.54 8011.87 2915.92 6780.84 3175.99 7161.02 5132.10 5009.66 4317.20 2584.25 6424.12 2930.73 1893.45 9012.12 10039.99 4533.51 6360.92 3777.42 8457.12 6097.43 3957.26 7116.92 8629.33 9792.21 4864.09 4461.83 3250.35 6322.81 1942.33 5001.35 10591.54 538.58 6679.32 4432.62 6682.41 11655.55 7925.68 10783.26 5070.89 5851.15 8228.43 7070.16 7771.14 8311.22 8804.96 3886.90 3969.61 9876.07 6994.89 3349.01 9801.13 6431.51 9357.00 4835.38 5463.39 7639.72 9420.51 9893.38 1427.47 3787.88 4942.53 6915.75 4262.58 9986.83 7260.41 6766.48 6834.38 0.00 diff --git a/material/aulas/02-03-implementacao-c++/t6-out-4.txt b/material/aulas/02-03-implementacao-c++/t6-out-4.txt new file mode 100644 index 000000000..e69de29bb diff --git a/material/aulas/02-03-implementacao-c++/t6.py b/material/aulas/02-03-implementacao-c++/t6.py new file mode 100644 index 000000000..07f09eebd --- /dev/null +++ b/material/aulas/02-03-implementacao-c++/t6.py @@ -0,0 +1,18 @@ +import numpy as np +import numpy.random +import numpy.linalg + +n_points = [1, 5, 20, 120, 2300] + +for i, n in enumerate(n_points): + mat = np.random.rand(n, 2) * 10000 + with open(f't6-in-{i}.txt', 'w') as f: + print(n, file=f) + for p in mat: + print(p[0], p[1], file=f) + + with open(f't6-out-{i}.txt', 'w') as f: + for i, p in enumerate(mat): + for j, p2 in enumerate(mat): + print(f'{np.linalg.norm(p-p2):.2f}', end=' ', file=f) + print('', file=f) diff --git a/material/aulas/04-profiling/euclides-ingenuo.cpp b/material/aulas/04-profiling/euclides-ingenuo.cpp new file mode 100644 index 000000000..8e5920a89 --- /dev/null +++ b/material/aulas/04-profiling/euclides-ingenuo.cpp @@ -0,0 +1,46 @@ +#include +#include +#include + +typedef std::vector> matriz; + +void calcula_distancias(matriz &mat, std::vector &x, std::vector &y) { + int n = x.size(); + for (int i = 0; i < n; i++) { + std::vector linha; + for (int j = 0; j < n; j++) { + double dx = x[i] - x[j]; + double dy = y[i] - y[j]; + linha.push_back((dx*dx + dy*dy)); + } + mat.push_back(linha); + } +} + +int main() { + matriz mat; + std::vector x, y; + int n; + + std::cin >> n; + x.reserve(n); + y.reserve(n); + for (int i = 0; i < n; i++) { + double xt, yt; + std::cin >> xt >> yt; + x.push_back(xt); + y.push_back(yt); + } + + calcula_distancias(mat, x, y); + + + for (auto &linha : mat) { + for (double el : linha) { + std::cout << el << " "; + } + std::cout << "\n"; + } + + return 0; +} diff --git a/material/aulas/04-profiling/euclides.dSYM/Contents/Info.plist b/material/aulas/04-profiling/euclides.dSYM/Contents/Info.plist new file mode 100644 index 000000000..326148b5b --- /dev/null +++ b/material/aulas/04-profiling/euclides.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.euclides + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/material/aulas/04-profiling/euclides.dSYM/Contents/Resources/DWARF/euclides b/material/aulas/04-profiling/euclides.dSYM/Contents/Resources/DWARF/euclides new file mode 100644 index 000000000..9f8740433 Binary files /dev/null and b/material/aulas/04-profiling/euclides.dSYM/Contents/Resources/DWARF/euclides differ diff --git a/material/aulas/04-profiling/index.md b/material/aulas/04-profiling/index.md new file mode 100644 index 000000000..cdc63b156 --- /dev/null +++ b/material/aulas/04-profiling/index.md @@ -0,0 +1,283 @@ +# 04 - Medição de desempenho + +Apesar de podermos medir o tempo que nosso programa demora usando o comando `time`, não conseguimos nenhuma informação importante de qual parte do programa está consumindo mais tempo. Este processo de dissecar um programa e entender exatamente qual parte demora quanto é chamada de **Profiling**. + +!!! warning "Software" + Para esta aula precisaremos dos seguintes pacotes instalados. + + * `valgrind` - ferramenta de análise de código executável + * `kcachegrind` - visualizador de resultados do `valgrind` + + +## Warm-up: O problema da soma de uma matriz + +O código abaixo apresenta duas formas de realizar a soma de todos os elementos de uma matriz. + +Compile o código e execute. + +Você sabe dizer qual a diferença de `naive_sum` e `improved_sum`? + +```cpp +#include +#include +using namespace std; + +constexpr int M = 2048; +constexpr int N = 2048; + +double naive_sum(const double a[][N]){ + double sum = 0.0; + for(int j = 0; j < N; ++j) { + for(int i = 0; i < M; ++i) + sum += a[i][j]; + } + return sum; +} + +double improved_sum(const double a[][N]) { + double sum = 0.0; + for(int i = 0; i < M; ++i) + for(int j = 0; j < N; ++j) + sum +=a[i][j]; + return sum; +} + +int main() { + static double a[M][N]; + fill_n(&a[0][0], M*N, 1.0 / (M*N)); + cout << naive_sum(a) << endl; + static double b[M][N]; + fill_n(&b[0][0], M*N, 1.0 / (M*N)); + cout << improved_sum(b) << endl; + return 0; +} +``` + +Vamos usar o `Valgrind` para verificar se há diferenças entre `naive_sum` e `improved_sum`. + +Supondo que o seu arquivo se chama `sum.cpp` execute: + +``` +g++ -Wall -O3 -g sum.cpp -o sum +``` + +E execute então programa via `valgrind`: + +``` +valgrind --tool=callgrind ./sum +``` + +O `valgrind` irá retornar algo como: + +``` +==3079146== Callgrind, a call-graph generating cache profiler +==3079146== Copyright (C) 2002-2017, and GNU GPL'd, by Josef Weidendorfer et al. +==3079146== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info +==3079146== Command: ./sum +==3079146== +==3079146== For interactive control, run 'callgrind_control -h'. +1 +1 +==3079146== +==3079146== Events : Ir +==3079146== Collected : 50553796 +==3079146== +==3079146== I refs: 50,553,796 +``` + +Onde `3079146` é o PID da execução. Na sua máquina será um outro valor. Ele também gerou um arquivo `callgrind.out.{PID}`. + +Execute a ferramenta `callgrind_annotate` para verificar o resultado do profiling. + +``` +callgrind_annotate callgrind.out.3079146 sum.cpp +``` + +E seu output será como segue: + +``` +-------------------------------------------------------------------------------- +Profile data file 'callgrind.out.3079146' (creator: callgrind-3.15.0) +-------------------------------------------------------------------------------- +I1 cache: +D1 cache: +LL cache: +Timerange: Basic block 0 - 10863316 +Trigger: Program termination +Profiled target: ./sum (PID 3079146, part 1) +Events recorded: Ir +Events shown: Ir +Event sort order: Ir +Thresholds: 99 +Include dirs: +User annotated: sum.cpp +Auto-annotation: off + +-------------------------------------------------------------------------------- +Ir +-------------------------------------------------------------------------------- +50,553,796 PROGRAM TOTALS + +-------------------------------------------------------------------------------- +Ir file:function +-------------------------------------------------------------------------------- +31,479,818 sum.cpp:main [/home/user/andre/profile/sum] +16,777,221 /usr/include/c++/9/bits/stl_algobase.h:main + 948,840 /build/glibc-eX1tMB/glibc-2.31/elf/dl-lookup.c:_dl_lookup_symbol_x [/usr/lib/x86_64-linux-gnu/ld-2.31.so] + 554,233 /build/glibc-eX1tMB/glibc-2.31/elf/dl-lookup.c:do_lookup_x [/usr/lib/x86_64-linux-gnu/ld-2.31.so] + 273,488 /build/glibc-eX1tMB/glibc-2.31/elf/../sysdeps/x86_64/dl-machine.h:_dl_relocate_object + 117,179 /build/glibc-eX1tMB/glibc-2.31/elf/dl-lookup.c:check_match [/usr/lib/x86_64-linux-gnu/ld-2.31.so] + +-------------------------------------------------------------------------------- +-- User-annotated source: sum.cpp +-------------------------------------------------------------------------------- +Ir + + . #include + . #include + . using namespace std; + . + . constexpr int M = 2048; + . constexpr int N = 2048; + . + . double naive_sum(const double a[][N]){ + 1 double sum = 0.0; + 6,144 for(int j = 0; j < N; ++j) { +12,587,008 for(int i = 0; i < M; ++i) + 4,194,304 sum += a[i][j]; + . } + . return sum; + . } + . + . double improved_sum(const double a[][N]) { + 4,097 double sum = 0.0; + 8,192 for(int i = 0; i < M; ++i) + 4,194,304 for(int j = 0; j < N; ++j) +10,485,760 sum +=a[i][j]; + . return sum; + . } + . + 5 int main() { + . static double a[M][N]; + . fill_n(&a[0][0], M*N, 1.0 / (M*N)); + . cout << naive_sum(a) << endl; + . static double b[M][N]; + . fill_n(&b[0][0], M*N, 1.0 / (M*N)); + . cout << improved_sum(b) << endl; + . return 0; + 6 } + +-------------------------------------------------------------------------------- +Ir +-------------------------------------------------------------------------------- +31,479,821 events annotated + +``` + +O que você pode dizer sobre o desempenho do programa? Por que há diferença de `instruction fetch` (IR) entre `naive_sum` e `improved_sum`? + +!!! tip + Dica: Verifique a discussão no StackOverflow sobre isso. Neste link https://stackoverflow.com/questions/9936132/why-does-the-order-of-the-loops-affect-performance-when-iterating-over-a-2d-arra + + +## Distância: Euclides ingênuo + +Compile o código-fonte da implementação ingênua que fizemos na aula passada, com profiling habilitado para medir os tempos de execução. + +``` +g++ -g euclides-ingenuo.cpp -o euclides-ingenuo +``` + +Após este passo, execute o programa usando o `valgrind` com as opções abaixo. + + +``` +valgrind --tool=callgrind ./seu_exec < entrada > saida +``` + +Para mostrar os resultados usando o `kcachegrind` usamos o seguinte comando. + +``` +kcachegrind callgrind.out.(pid aqui) +``` + +O que tomou mais tempo de execução da versão ingênua? + +## Medindo os tempos no seu próprio programa + +Você vai perceber, ao executar a atividade anterior, que boa parte do tempo é gasto mostrando a saída no terminal. Isto nos leva à primeira conclusão da atividade de hoje: + +!!! info "Entrada e saída de dados são operações muito lentas" + + +!!! example + Faça o teste da demonstração em seu próprio programa e anote abaixo, para as duas versões de `calcula_distancias`, + + 1. o tempo relativo de execução + 1. o número absoluto de instruções executadas + +!!! question + O número absoluto de intruções executadas diminuiu significativamente depois de nossa otimização? Teoricamente só calculamos metade da matriz, esse número é quase metade da versão não otimizada? Você consegue dizer por que? + + ??? details "Resposta" + Deve ter havido uma diminuição, mas não chega nem perto de metade. Isso ocorre por várias razões: + + 1. nosso `for` duplo continua percorrendo a matriz inteira, apesar de só fazer o cálculo em metade das posições. + 2. alocamos a matriz elemento a elemento enquanto fazemos os cálculos. + +Com isso em mente, vamos agora otimizar a função `calcula_distancias`. Já sabemos que o efeito no tempo final não será grande. Nosso objetivo então será verificar a seguinte afirmação. + +!!! info "Dois algoritmos de mesma complexidade computacional podem ter tempos de execução muito diferentes" + +!!! question + A resposta da questão anterior indica que só usar um `if` para evitar o cálculo repetido não é suficiente. Precisamos efetivamente fazer um `for` que percorre só metade da matriz. Supondo que a matriz já esteja inteira alocada, escreva em pseudo-código como fazê-lo. + + ??? note "Resposta" + ``` + para i=1..N: + para j=i..N: + DX = X[i] - X[j] + DY = Y[i] - Y[j] + DIST = sqrt(DX*DX + DY*DY) + D[i,j] = DIST + D[j,i] = DIST + ``` + + + +## Matrizes (versão 2) + +Nossa implementação usando `vector>` tem um problema sério: ela aloca elemento a elemento uma estrutura grande que já sabemos o tamanho de início. Seria muito melhor se pudéssemos alocar todas as $N^2$ posições da matriz de uma só vez! + +Fazemos isso trabalhando com um layout de memória contínuo. Ou seja, armazenaremos a matriz linha a linha como um único vetor de tamanho `n*n`. Temos várias vantagens: + +1. tempo de alocação de memória é reduzido, já que só fazemos uma chamada +1. podemos acessar qualquer posição a qualquer momento +1. melhor desempenho de cache + +A figura abaixo exemplifica esse layout de memória: + +![Matriz "deitada" linha a linha](matriz.png) + +!!! question + Em uma matriz de tamanho `4x7` (4 linhas, 7 colunas), qual é o elemento do vetor que representa a posição `2x5` (linha 3, coluna 6)? + + ??? details + Estamos considerando que começamos a contar as linhas e colunas do zero. A posição do vetor é `19`. Este número é obtido pela expressão + + `i * c + j` + + * `i` é a linha a ser acessada + * `j` é a coluna + * `c` é o número de colunas da matriz + + `19 = 2 * 7 + 5` + +!!! tip + Conseguimos redimensionar um vetor usando o método `resize`, que recebe o novo número de elementos do vetor. + +!!! example + Faça uma terceira versão de `calcula_distancias`, desta vez usando o layout de memória acima. Verifique que o programa continua retornando os mesmos resultados que as versões anteriores. + +!!! question + Rode novamente os testes de profiling e verifique o número de instruções para esta nova versão. Compare este valor com os anteriores e comente. diff --git a/material/aulas/04-profiling/matriz.png b/material/aulas/04-profiling/matriz.png new file mode 100644 index 000000000..238ee48cb Binary files /dev/null and b/material/aulas/04-profiling/matriz.png differ diff --git a/material/aulas/04-profiling/matriz.svg b/material/aulas/04-profiling/matriz.svg new file mode 100644 index 000000000..ed8730e0f --- /dev/null +++ b/material/aulas/04-profiling/matriz.svg @@ -0,0 +1,557 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + 1 Linha = 7 elementos + + Matriz 4x7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Na memória + + + + + + + + + + + + + + + + + .... + + + (1, 3) na posição 10 + + + 1x7 + 3 + + + 28 elementos + + diff --git a/material/aulas/04-profiling/slides.pdf b/material/aulas/04-profiling/slides.pdf new file mode 100644 index 000000000..e7fb2b5f9 Binary files /dev/null and b/material/aulas/04-profiling/slides.pdf differ diff --git a/material/aulas/04-profiling/sum.cpp b/material/aulas/04-profiling/sum.cpp new file mode 100644 index 000000000..318417615 --- /dev/null +++ b/material/aulas/04-profiling/sum.cpp @@ -0,0 +1,33 @@ +#include +#include +using namespace std; + +constexpr int M = 2048; +constexpr int N = 2048; + +double naive_sum(const double a[][N]){ + double sum = 0.0; + for(int j = 0; j < N; ++j) { + for(int i = 0; i < M; ++i) + sum += a[i][j]; + } + return sum; +} + +double improved_sum(const double a[][N]) { + double sum = 0.0; + for(int i = 0; i < M; ++i) + for(int j = 0; j < N; ++j) + sum +=a[i][j]; + return sum; +} + +int main() { + static double a[M][N]; + fill_n(&a[0][0], M*N, 1.0 / (M*N)); + cout << naive_sum(a) << endl; + static double b[M][N]; + fill_n(&b[0][0], M*N, 1.0 / (M*N)); + cout << improved_sum(b) << endl; + return 0; +} diff --git a/material/aulas/05-heuristicas/in1.txt b/material/aulas/05-heuristicas/in1.txt new file mode 100644 index 000000000..b19f8a5ad --- /dev/null +++ b/material/aulas/05-heuristicas/in1.txt @@ -0,0 +1,11 @@ +10 10 +3 70 +8 56 +6 17 +4 91 +5 77 +10 69 +1 98 +9 54 +3 13 +3 54 diff --git a/material/aulas/05-heuristicas/in2.txt b/material/aulas/05-heuristicas/in2.txt new file mode 100644 index 000000000..77003dc51 --- /dev/null +++ b/material/aulas/05-heuristicas/in2.txt @@ -0,0 +1,6 @@ +5 2 +1 50 +1 94 +2 40 +2 39 +1 62 diff --git a/material/aulas/05-heuristicas/in3.txt b/material/aulas/05-heuristicas/in3.txt new file mode 100644 index 000000000..92e5afb70 --- /dev/null +++ b/material/aulas/05-heuristicas/in3.txt @@ -0,0 +1,11 @@ +10 100 +58 95 +90 32 +36 37 +53 54 +8 9 +98 29 +31 43 +37 59 +36 3 +6 98 diff --git a/material/aulas/05-heuristicas/in4.txt b/material/aulas/05-heuristicas/in4.txt new file mode 100644 index 000000000..8dd82dcfa --- /dev/null +++ b/material/aulas/05-heuristicas/in4.txt @@ -0,0 +1,6 @@ +5 10 +1 5 +1 10 +2 5 +1 20 +8 25 \ No newline at end of file diff --git a/material/aulas/05-heuristicas/index.md b/material/aulas/05-heuristicas/index.md new file mode 100644 index 000000000..c1a583185 --- /dev/null +++ b/material/aulas/05-heuristicas/index.md @@ -0,0 +1,101 @@ +# 05 - Heurísticas + +A atividade prática de hoje consiste em implementar heurísticas para a solução do problema da **Mochila binária**. + +## Resumo do problema + +Dados `N` objetos e uma mochila que comporta até `W` quilos, cada um com peso $w_i$ e valor $v_i$, selecionar objetos com o maior valor possível que caibam dentro da mochila. + +**Entrada**: +``` +N W +w1 v1 +.... +wN vN +``` + +**Saída**: +``` +W V opt +o1 ... oT +``` + +* `W` - peso dos objetos selecionados +* `V` - valor dos objetos selecionados +* `opt` + * `0` se for usada uma heurística ou busca local + * `1` se a solução for ótimo global +* `oi` são os índices (*em ordem crescente*) dos objetos selecionados + +!!! tip + Arquivos para verificar a corretude das suas implementações estão disponíveis nesta pasta. Eles estão nomeados como `in-*.txt`, `mais-caro-out-*.txt` e `mais-leve-out-*.txt`. + +## Mais caro primeiro + +A ideia desta heurística é não deixar nenhum objeto valioso para trás! Por isso vamos ser ganaciosos e pegar **primeiro os objetos mais caros**! Se um objeto valioso não couber passamos para os mais baratos e prosseguimos até examinar todos objetos. + +!!! question + Escreva abaixo um algoritmo em pseudo-código para implementar a heurística descrita acima. + + ??? details "Resposta" + ``` + ids = // vetor inicializado com ids[i] = i + ordene os vetores ids, v e w de acordo com o vetor de valores v + peso = 0 + valor = 0 + resposta = //vetor inicializado com 0 + T = 0 // número de objetos selecionados + para i=1..N + se peso + w[i] < W então + resposta[T] = ids[i] + peso += w[i] + valor += v[i] + T += 1 + + print peso, valor, 0 + print resposta[0 .. T] + ``` + + +!!! question + Qual é a complexidade computacional deste algoritmo? Ele é a melhor implementação possível? + + ??? details "Resposta" + Se o algoritmo descrito em sua resposta anterior envolver ordenação, então ele tem complexidade $\mathcal{O}(n\log n)$ e é o melhor possível sim (você consegue explicar por que?). Se você fez um loop duplo que procura pelo maior a cada iteração então seu algoritmo é $\mathcal{O}(n^2)$. + +!!! example + Agora que temos um algoritmo, crie uma implementação do programa acima. + + **Dicas**: + + * C++ já possui um algoritmo de ordenação implementado no cabeçalho [``](http://cplusplus.com/reference/algorithm/sort/). Use-o. + * Busque por ordenação indireta para entender como ordenar os três vetores ao mesmo tempo. + * Pode ser conveniente organizar os dados usando `struct`. + +## Mais leve primeiro + +Vamos testar uma abordagem oposta: **quantidade agora é o foco**. Por isso vamos ser práticos e pegar **o maior número de objetos possível**! Começaremos agora pelos objetos mais leves e vamos torcer para que a quantidade grande de objetos selecionados resulte em uma mochila com alto valor. + +!!! question + Compare esta heurística com a da seção anterior levando em conta o algoritmo em pseudo-código e sua complexidade computacional. + +!!! question + Quais partes do programa da heurística anterior podem ser aproveitadas para implementar a descrita acima? + +!!! example + Implemente agora a heurística do mais leve. Chame seu programa de `mais_leve`, mantendo também o código do anterior. + +## Analisando nossas heurísticas + +!!! question + Crie uma entrada em que a heurística do mais valioso seja muito melhor que a do mais leve. Escreva abaixo as saídas de cada programa. + +!!! question + Crie uma entrada em que a heurística do mais leve seja muito melhor que a do mais valioso. Escreva abaixo as saídas de cada programa. + +!!! question + Com base nas suas respostas acima, em quais situações a heurística do mais valioso é melhor? + +!!! question + Com base nas suas respostas acima, em quais situações a heurística do mais leve é melhor? + diff --git a/material/aulas/05-heuristicas/mais-caro-out-1.txt b/material/aulas/05-heuristicas/mais-caro-out-1.txt new file mode 100644 index 000000000..e1e8ae06b --- /dev/null +++ b/material/aulas/05-heuristicas/mais-caro-out-1.txt @@ -0,0 +1,2 @@ +10 266 0 +3 4 6 diff --git a/material/aulas/05-heuristicas/mais-caro-out-2.txt b/material/aulas/05-heuristicas/mais-caro-out-2.txt new file mode 100644 index 000000000..a61564064 --- /dev/null +++ b/material/aulas/05-heuristicas/mais-caro-out-2.txt @@ -0,0 +1,2 @@ +2 156 0 +1 4 diff --git a/material/aulas/05-heuristicas/mais-caro-out-3.txt b/material/aulas/05-heuristicas/mais-caro-out-3.txt new file mode 100644 index 000000000..0327dcd0d --- /dev/null +++ b/material/aulas/05-heuristicas/mais-caro-out-3.txt @@ -0,0 +1,2 @@ +95 236 0 +0 6 9 diff --git a/material/aulas/05-heuristicas/mais-caro-out-4.txt b/material/aulas/05-heuristicas/mais-caro-out-4.txt new file mode 100644 index 000000000..8e4a8dd54 --- /dev/null +++ b/material/aulas/05-heuristicas/mais-caro-out-4.txt @@ -0,0 +1,2 @@ +10 55 0 +1 3 4 diff --git a/material/aulas/05-heuristicas/mais-leve-out-1.txt b/material/aulas/05-heuristicas/mais-leve-out-1.txt new file mode 100644 index 000000000..85f327911 --- /dev/null +++ b/material/aulas/05-heuristicas/mais-leve-out-1.txt @@ -0,0 +1,2 @@ +10 235 0 +0 6 8 9 diff --git a/material/aulas/05-heuristicas/mais-leve-out-2.txt b/material/aulas/05-heuristicas/mais-leve-out-2.txt new file mode 100644 index 000000000..b2c7f0ec0 --- /dev/null +++ b/material/aulas/05-heuristicas/mais-leve-out-2.txt @@ -0,0 +1,2 @@ +2 144 0 +0 1 diff --git a/material/aulas/05-heuristicas/mais-leve-out-3.txt b/material/aulas/05-heuristicas/mais-leve-out-3.txt new file mode 100644 index 000000000..9476a1353 --- /dev/null +++ b/material/aulas/05-heuristicas/mais-leve-out-3.txt @@ -0,0 +1,2 @@ +81 187 0 +2 4 6 9 diff --git a/material/aulas/05-heuristicas/mais-leve-out-4.txt b/material/aulas/05-heuristicas/mais-leve-out-4.txt new file mode 100644 index 000000000..707823193 --- /dev/null +++ b/material/aulas/05-heuristicas/mais-leve-out-4.txt @@ -0,0 +1,2 @@ +5 40 0 +0 1 2 3 diff --git a/material/aulas/05-heuristicas/slides.pdf b/material/aulas/05-heuristicas/slides.pdf new file mode 100644 index 000000000..facecf86b Binary files /dev/null and b/material/aulas/05-heuristicas/slides.pdf differ diff --git a/material/aulas/06-aleatorizacao/in1.txt b/material/aulas/06-aleatorizacao/in1.txt new file mode 100644 index 000000000..e6e37dadb --- /dev/null +++ b/material/aulas/06-aleatorizacao/in1.txt @@ -0,0 +1,11 @@ +10 8 +4 64 +3 82 +5 19 +3 5 +2 9 +4 76 +4 37 +1 83 +2 58 +3 41 diff --git a/material/aulas/06-aleatorizacao/in2.txt b/material/aulas/06-aleatorizacao/in2.txt new file mode 100644 index 000000000..af9465f99 --- /dev/null +++ b/material/aulas/06-aleatorizacao/in2.txt @@ -0,0 +1,101 @@ +100 70 +34 37 +43 28 +31 69 +27 50 +65 67 +34 47 +57 78 +8 38 +21 0 +60 18 +41 78 +69 86 +27 16 +23 38 +8 17 +51 30 +45 17 +2 58 +38 35 +44 73 +26 40 +53 70 +12 60 +5 34 +30 49 +49 38 +22 81 +51 64 +8 41 +52 57 +39 3 +25 19 +48 84 +49 87 +58 68 +33 75 +10 42 +55 68 +59 58 +3 80 +69 26 +36 96 +28 34 +21 46 +40 11 +16 82 +5 21 +3 59 +59 86 +5 7 +57 73 +9 63 +59 53 +37 19 +51 66 +10 66 +19 58 +7 30 +51 44 +18 11 +68 24 +10 26 +23 49 +52 21 +40 24 +7 73 +46 17 +4 91 +12 6 +7 18 +50 3 +18 26 +51 83 +30 86 +63 36 +43 26 +69 47 +18 65 +59 50 +9 99 +41 87 +15 88 +49 72 +69 34 +8 21 +3 58 +13 18 +33 42 +64 31 +34 80 +51 50 +14 83 +34 19 +9 49 +56 56 +29 75 +21 15 +46 33 +17 10 +26 46 diff --git a/material/aulas/06-aleatorizacao/in3.txt b/material/aulas/06-aleatorizacao/in3.txt new file mode 100644 index 000000000..24c8cc9f3 --- /dev/null +++ b/material/aulas/06-aleatorizacao/in3.txt @@ -0,0 +1,301 @@ +300 100 +22 8 +35 97 +30 74 +5 67 +39 19 +41 56 +99 24 +59 17 +99 92 +28 0 +35 70 +12 65 +97 9 +92 19 +22 57 +76 66 +24 40 +19 92 +41 19 +54 0 +76 15 +7 74 +70 89 +27 2 +38 27 +16 68 +97 97 +7 34 +79 51 +27 98 +21 90 +21 25 +91 68 +100 88 +53 1 +18 94 +34 99 +41 94 +73 69 +69 4 +57 51 +54 66 +62 43 +19 45 +87 22 +56 74 +5 19 +70 1 +100 61 +99 42 +99 47 +60 93 +63 99 +22 87 +51 17 +20 42 +77 65 +82 65 +99 40 +82 97 +48 58 +59 4 +96 16 +20 48 +33 60 +57 18 +18 15 +34 82 +50 75 +99 74 +42 95 +12 55 +63 91 +29 71 +58 93 +86 33 +91 59 +56 98 +4 57 +92 86 +85 58 +66 46 +39 73 +77 11 +65 41 +27 74 +3 81 +80 78 +86 36 +52 53 +56 36 +59 80 +30 4 +91 66 +72 93 +57 56 +43 16 +4 44 +99 32 +11 22 +30 86 +33 11 +69 10 +24 61 +37 22 +50 54 +13 31 +68 8 +66 42 +79 24 +60 80 +16 93 +37 27 +96 48 +14 48 +60 91 +63 16 +6 12 +59 62 +96 31 +84 89 +100 30 +83 99 +77 57 +12 60 +11 67 +32 46 +82 70 +67 73 +12 54 +25 13 +94 36 +47 91 +74 51 +94 89 +55 35 +90 12 +50 53 +42 75 +9 61 +50 59 +49 92 +98 26 +19 34 +27 13 +6 44 +61 85 +46 44 +34 17 +57 17 +25 84 +92 96 +12 68 +88 2 +35 30 +32 65 +47 30 +81 70 +37 77 +76 55 +80 94 +38 86 +97 29 +13 36 +16 41 +53 37 +56 48 +67 12 +64 9 +72 2 +24 19 +82 96 +31 39 +47 94 +53 25 +21 82 +1 77 +54 26 +41 64 +19 30 +81 69 +6 4 +3 57 +1 21 +45 51 +11 43 +44 5 +47 33 +11 63 +20 44 +93 29 +58 14 +61 78 +36 99 +87 45 +31 20 +39 12 +51 52 +65 91 +75 68 +93 8 +72 48 +32 78 +89 71 +27 44 +12 81 +68 53 +16 13 +52 29 +54 51 +8 38 +98 93 +46 32 +92 74 +19 0 +96 63 +66 47 +28 75 +8 28 +59 72 +91 18 +41 93 +74 26 +39 36 +93 28 +34 23 +87 14 +57 95 +18 74 +36 77 +1 91 +81 91 +92 1 +44 31 +52 18 +35 71 +76 43 +49 10 +24 98 +6 58 +70 81 +80 29 +5 78 +67 57 +87 30 +100 97 +17 66 +40 69 +37 43 +96 67 +35 60 +14 71 +67 52 +60 24 +98 41 +54 34 +90 62 +89 43 +60 73 +47 86 +72 68 +58 12 +84 10 +53 42 +78 15 +88 68 +4 73 +31 33 +21 37 +79 31 +39 33 +29 11 +36 7 +88 29 +90 5 +71 24 +49 36 +76 81 +78 62 +90 63 +41 38 +17 12 +43 22 +75 33 +8 40 +36 29 +56 95 +65 72 +94 0 +16 47 +23 50 +5 51 +27 68 +40 5 +68 52 +36 93 +31 46 +24 43 +83 41 +26 7 diff --git a/material/aulas/06-aleatorizacao/index.md b/material/aulas/06-aleatorizacao/index.md new file mode 100644 index 000000000..adb849fb0 --- /dev/null +++ b/material/aulas/06-aleatorizacao/index.md @@ -0,0 +1,104 @@ +# 06 - Algoritmos Aleatorizados + +Um gerador de números pseudo-aleatórios (RNG) é um algoritmo **determinístico** que gera uma sequência de números que **parece** aleatória. Essa frase possui dois termos importantes que precisamos destrinchar: + +* **determinístico**: Um *RNG* tipicamente recebe como entrada um inteiro *seed* (que representa uma sequência de bits "aleatória") e gera uma sequência de números baseada no *seed*. Ou seja, o algoritmo é **determinístico** pois gera sempre a mesma sequência para uma determinada entrada (*seed*). +* **parece aleatória**: Se compararmos duas sequências de números, uma gerada por um *RNG* e outra por uma distribuição uniforme de verdade, não conseguimos dizer qual sequência foi gerada pelo *RNG*. + +Ou seja, ao escolhermos um *seed* a sequência gerada será sempre a mesma, mesmo se executarmos o programa em outras máquinas. Isso torna a utilização de *RNGs* para experimentos bastante interessante: é possível **reproduzir** os resultados feitos por outros desenvolvedores/cientistas. Para isto é necessário + +1. que o programa permita escolher o *seed* da simulação; +1. que o *seed* usado seja publicado junto com os resultados. + +!!! question short + E se quisermos gerar uma sequência diferente a cada execução do programa? Como poderíamos configurar o *seed* para que isto aconteça? + +## Iniciando com RNGs + +Muitas implementações de *RNGs* são divididas em duas partes: + +1. **engine**/**random state**: algoritmo que gera um inteiro cujos bits formam uma sequência pseudo-aleatória. +1. **distribution**: utiliza os bits acima para retornar números que sigam alguma distribuição estatística (como normal ou uniforme). + +!!! question + A biblioteca padrão de *C++* disponibiliza diversas funções para utilização de *RNG*s (cabeçalho `` - documentação [neste link](http://cplusplus.com/reference/random/)). Se você quisesse sortear números aleatórios inteiros entre `-2` e `5` quais funções usaria? + + ??? details "Resposta" + ``` + #include + + ... + + std::default_random_engine generator; + std::uniform_int_distribution distribution(-2,5); + distribution(generator); // gera número + ``` + +!!! question + E se você quisesse sortear um número real entre `0` e `1`? + + ??? details "Resposta" + ``` + #include + + ... + + std::default_random_engine generator; + std::uniform_real_distribution distribution(0.0, 1.0); + distribution(generator); // gera número + ``` + +Agora que você já consegue gerar números aleatórios, vamos implementar nossa primeira versão de uma heurística aleatorizada. + +!!! example + Adicionaremos a seguinte variação na nossa heurística: a cada passo de seleção temos `25%` de chance de selecionar um objeto aleatório que ainda não foi utilizado. Ou seja, cada passo do algoritmo segue a seguinte regra + + 1. Faça um sorteio aleatório + 2. Com probabilidade `75%` pegue o próximo objeto não selecionado de acordo com a heurística (mais leve ou mais caro) + 3. Com probabilidade `25%` selecione um objeto qualquer dos que não foram analisados ainda. + + Note que não mudamos o próximo elemento ao fazer a seleção aleatória. Adote `seed=10` nesta tarefa. + + **Dica**: agora é possível que eu olhe um produto mais de uma vez. Você precisará checar isso no seu programa! + + ??? details "Resposta" + Os arquivos `in-*.txt` contém entradas para teste. Os arquivos `out-caro-(rand-?)*.txt` contém as saídas esperadas para as heurísticas do mais caro. Note que como estamos falando de uma probabilidade, o sorteio deverá ser feito no intervalo `[0, 1]`. + +!!! question short + Rode a heurística aleatorizada 10 vezes (como fazer isso?) e anote os valores das mochilas obtidas. Em média, é melhor ou pior que a heuristca sem aleatorização? + +## Construindo uma solução inteira aleatória + +Vamos agora fazer algo mais absurdo: e se criarmos uma solução toda aleatória? + +!!! question + Como você criaria uma solução aleatoriamente? + + ??? details "Resposta" + Não existe uma resposta certa aqui. Duas soluções são mais comuns: + + 1. passando por cada objeto, pegue-o com probabilidade `50%`. + 2. percorra a lista em ordem aleatória, fazendo o mesmo algoritmo do mais caro/leve. + +!!! example + Tente implementar a abordagem 1 da resposta acima. + +!!! example + Tente implementar a abordagem 2 da resposta acima. + +!!! question + Rode ambos programas acima com vários seeds diferentes e anote abaixo os resultados. + +!!! question medium + Anote aqui comentários sobre a qualidade das soluções aleatórias. Considere tanto o valor dos objetos selecionados quanto o peso. + +!!! warning + Iremos discutir esses resultados na próxima aula. + + +## Algoritmos Genéticos + +Nesta aula também abordamos o trade-off entre exploration e exploitation. Para isso, foi possível conhecer uma implementação por algoritmos genéticos para o problema da Mochila Binária em Python. Caso queira executar essa solução, acesse esse [link](https://colab.research.google.com/drive/1MTY0mbwvULHcHUMMi-5FunB0R9jHj9QP?usp=sharing). + +!!! question + Implemente essa solução em C++. Explore as taxas de seleção, cross-over e mutação. Escreva um pequeno relatório (de até 1 página) e comente os principais pontos observados. A entrega desse exercício pode lhe render 0,5 ponto extra, a ser computado ao final da disciplina. diff --git a/material/aulas/06-aleatorizacao/out-caro-1.txt b/material/aulas/06-aleatorizacao/out-caro-1.txt new file mode 100644 index 000000000..7533f6eec --- /dev/null +++ b/material/aulas/06-aleatorizacao/out-caro-1.txt @@ -0,0 +1,2 @@ +6 223 0 +1 7 8 diff --git a/material/aulas/06-aleatorizacao/out-caro-2.txt b/material/aulas/06-aleatorizacao/out-caro-2.txt new file mode 100644 index 000000000..723d2bf74 --- /dev/null +++ b/material/aulas/06-aleatorizacao/out-caro-2.txt @@ -0,0 +1,2 @@ +69 512 0 +17 39 41 67 79 81 \ No newline at end of file diff --git a/material/aulas/06-aleatorizacao/out-caro-3.txt b/material/aulas/06-aleatorizacao/out-caro-3.txt new file mode 100644 index 000000000..bb76cc4af --- /dev/null +++ b/material/aulas/06-aleatorizacao/out-caro-3.txt @@ -0,0 +1,2 @@ +99 198 0 +52 193 diff --git a/material/aulas/06-aleatorizacao/out-caro-rand-1.txt b/material/aulas/06-aleatorizacao/out-caro-rand-1.txt new file mode 100644 index 000000000..e3d3da56f --- /dev/null +++ b/material/aulas/06-aleatorizacao/out-caro-rand-1.txt @@ -0,0 +1,2 @@ +7 178 0 +6 7 8 diff --git a/material/aulas/06-aleatorizacao/out-caro-rand-2.txt b/material/aulas/06-aleatorizacao/out-caro-rand-2.txt new file mode 100644 index 000000000..1ec48f704 --- /dev/null +++ b/material/aulas/06-aleatorizacao/out-caro-rand-2.txt @@ -0,0 +1,2 @@ +69 524 0 +39 42 47 65 67 79 81 diff --git a/material/aulas/06-aleatorizacao/out-caro-rand-3.txt b/material/aulas/06-aleatorizacao/out-caro-rand-3.txt new file mode 100644 index 000000000..9a01eed63 --- /dev/null +++ b/material/aulas/06-aleatorizacao/out-caro-rand-3.txt @@ -0,0 +1,2 @@ +99 265 0 +52 143 164 230 diff --git a/material/aulas/06-aleatorizacao/slides.pdf b/material/aulas/06-aleatorizacao/slides.pdf new file mode 100644 index 000000000..245d4400d Binary files /dev/null and b/material/aulas/06-aleatorizacao/slides.pdf differ diff --git a/material/aulas/07-busca-local/index.md b/material/aulas/07-busca-local/index.md new file mode 100644 index 000000000..dd0439600 --- /dev/null +++ b/material/aulas/07-busca-local/index.md @@ -0,0 +1,75 @@ +# 07 - Busca local + +Nesta aula trabalharemos com um algoritmo chamado "Busca local", que consiste basicamente em fazer pequenas atualizações que melhoram sucessivamente uma solução. + +## Solução aleatorizada + +Vamos iniciar criando soluções aleatórias. Isto nos permitiria criar uma grande quantidade de soluções e, eventualmente, pegar a melhor delas. Apesar de ser muito mais simples que a busca heurística, a quantidade massiva de soluções geradas tem potencial de encontrar boas soluções. + +Vamos trabalhar com um algoritmo bem simples para gerar soluções aleatórias: + +* Para cada objeto, selecione-o com probabilidade `0.5`. +* Se o objeto for selecionado, coloque-o na mochila se couber. + +!!! question short + Supondo que só existe uma solução ótima global, qual é a chance de a encontrarmos repetindo o algoritmo acima? + +!!! question short + Supondo que todos os objetos caibam na mochila, quantos são selecionados em média? + +!!! example + Implemente o algoritmo acima. Use `seed=10`. + +!!! example + Repita o algoritmo 10 vezes e pegue somente a melhor solução. + +!!! tip + Use os arquivos de entrada/saída disponibilizados nas aulas passadas. + +## Busca local + +Vamos agora implementar uma busca local para a Mochila Binária seguindo os dois algoritmos vistos na expositiva. + +### Mochila cheia + +Para implementar a *Mochila cheia* iremos adotar a seguinte estratégia: + +1. Gere uma solução aleatória. +2. Percorra novamente todos os objetos (na ordem da entrada) +3. Se um objeto couber na mochila, inclua-o. + +!!! example + Implemente o algoritmo acima. + +!!! example + Rode a *Mochila cheia* 10 vezes e retorne a melhor solução. + +!!! question + Houve melhoria em relação ao aleatório sozinho? Foi significativa? + + + +## Fechamento + +!!! question + Como você avalia os ganhos obtidos pela busca local em relação ao aleatório? E em relação a heurística? diff --git a/material/aulas/07-busca-local/slides.pdf b/material/aulas/07-busca-local/slides.pdf new file mode 100644 index 000000000..1284487c8 Binary files /dev/null and b/material/aulas/07-busca-local/slides.pdf differ diff --git a/material/aulas/08-busca-global/in-aula.txt b/material/aulas/08-busca-global/in-aula.txt new file mode 100644 index 000000000..24eb55a03 --- /dev/null +++ b/material/aulas/08-busca-global/in-aula.txt @@ -0,0 +1,6 @@ +5 15 +12 4 +2 2 +1 2 +1 1 +4 10 diff --git a/material/aulas/08-busca-global/index.md b/material/aulas/08-busca-global/index.md new file mode 100644 index 000000000..4ae674019 --- /dev/null +++ b/material/aulas/08-busca-global/index.md @@ -0,0 +1,37 @@ +# 08 - Busca exaustiva + +## Pseudo-código + +Vamos iniciar tentando escrever um algoritmo em pseudo-código para a seguinte ideia: + +* Iniciando com o objeto 0: + * Não inclua ele na mochila: resolva o problema com o restante dos objetos e retorne esse resultado + * Inclua ele na mochila: resolva o problema com o restante dos objetos e uma mochila de capacidade `C - p[0]`. Retorne o resultado `+ v[0]`. + * Escolhe a melhor das duas opções acima e retorne. + + +!!! tip + Note que pedimos para resolver o problema de novo, mas com menos objetos. Parece que esse é um algoritmo recursivo! + +!!! question long + Escreva um algoritmo recursivo em pseudo-código para resolver o problema da mochila. Seu algoritmo deverá retornar o valor da mochila ótima, mas **NÃO** precisa ainda retornar a mochila que tem esse valor. + +!!! question long + Adapte seu algoritmo acima para, além de retornar a melhor solução, também retornar a mochila que tem esse valor. + + **Dica**: pode ser útil passar um vetor para guardar a melhor solução encontrada. + +## Implementação + +Vamos agora tentar implementar o algoritmo de busca global que fizemos. + +!!! example + Implemente em C++ seu algoritmo acima. + +!!! question + Teste o seu programa com a entrada `in-aula.txt` (que é a entrada dos slides). Você consegue agora responder à pergunta **Existe mochila com valor maior que 13**? + +## Fechamento + +!!! question + Como você avalia os ganhos obtidos pela busca global em relação à busca local? diff --git a/material/aulas/08-busca-global/minimax/MiniMax.class b/material/aulas/08-busca-global/minimax/MiniMax.class new file mode 100644 index 000000000..2b248c0ef Binary files /dev/null and b/material/aulas/08-busca-global/minimax/MiniMax.class differ diff --git a/material/aulas/08-busca-global/minimax/MiniMax.java b/material/aulas/08-busca-global/minimax/MiniMax.java new file mode 100644 index 000000000..617b1a9ad --- /dev/null +++ b/material/aulas/08-busca-global/minimax/MiniMax.java @@ -0,0 +1,234 @@ + + + +/* + * CLASSE MINIMAX - ALGORITMO DE BUSCA COMPETITIVA + */ + + + +import java.util.ArrayList; +import java.util.Collections; + +public class MiniMax +{ + /* + * Lista de Sucessores. Esta lista é armazenada utilizando + * um ArrayList + */ + static ArrayList sucessores = new ArrayList (); + int tam, maxProf; + + /* + * Construtor recebe o tamanho do tabuleiro e a profundidade máxima da busca + */ + public MiniMax (int tam, int maxProf) + { + this.tam = tam; + if (maxProf > 0) + this.maxProf = maxProf; + else + this.maxProf = Integer.MAX_VALUE; //Recebe o maior valor de um inteiro. + } + + /* + * Metodo de decisao do MiniMax + */ + public int[][] decisao_minimax (int[][] tab) + { + /* + * Limpa os sucessores + */ + sucessores.clear (); + + /* + * Recebe a utilidade máxima + */ + int v = valor_max (tab, true, 1); + + /* + * Percorre a lista em busca do primeiro sucessor com utilidade máxima + */ + for (Sucessor s: sucessores) + if (s.utilidade == v) + return s.tabuleiro; + + return tab; + } + + public int valor_max (int[][] tab, boolean prim, int prof) + { + /* + * Se a profundidade for maior que a máxima ou o jogo acabou, retorna a + * utilidade + */ + if (prof++ > maxProf || teste_terminal (tab)) + return utilidade (tab); + + /* + * Atribui o menor valor de um inteiro para v ( - infinito) + */ + int v = Integer.MIN_VALUE; + + /* + * Percorre os n�s sucessores de MAX + */ + for (Sucessor s: gerar_sucessores (tab, 1)) + { + v = Math.max(v, valor_min (s.tabuleiro, prof)); + s.utilidade = v; + /* + * Se forem os primeiros sucessores, adiciona na lista de sucessores... + */ + if (prim) + sucessores.add(s); + } + + return v; + } + + public int valor_min (int[][] tab, int prof) + { + /* + * Se a profundidade for maior que a m�xima ou o jogo acabou, retorna a + * utilidade + */ + if (prof++ > maxProf || teste_terminal (tab)) + return utilidade (tab); + + /* + * Atribui +Infinito + */ + int v = Integer.MAX_VALUE; + + /* + * Percorre os n�s sucessores de MIN + */ + for (Sucessor s: gerar_sucessores (tab, -1)) + { + v = Math.min(v, valor_max (s.tabuleiro, false, prof)); + s.utilidade = v; + } + + return v; + } + + /* + * Gera os sucessores de um jogador, a partir do estado atual + */ + public ArrayList gerar_sucessores (int[][] tab, int v) + { + ArrayList suc = new ArrayList (); + for (int i = 0; i < tam; i++) + { + for (int j = 0; j < tam; j++) + { + if (tab[i][j] == 0) + { + tab[i][j] = v; + suc.add(new Sucessor (tab)); + tab[i][j] = 0; + } + } + } + + return suc; + } + + /* + * Verifica se chegou em algum estado terminal e caso afirmativo finaliza o jogo + */ + public boolean teste_terminal (int[][] tab) + { + return (ganhou (tab, 1) || ganhou (tab, -1) || semEspaco (tab)); + } + + /* + * Retorna a utilidade + */ + public int utilidade (int[][] tab) + { + if (ganhou (tab, 1)) + return 1; + else if (ganhou (tab, -1)) + return -1; + else + return 0; + } + + /* + * Verifica se jogador ganhou + */ + public boolean ganhou (int[][] tab, int v) + { + for (int i = 0; i < tam; i++) + if (ganhouLinha (tab, i, v) || ganhouColuna (tab, i, v)) + return true; + + if (ganhouDiag1(tab, v) || ganhouDiag2 (tab, v)) + return true; + + return false; + } + + /* + * Ganhou na sequencia de linhas? + */ + private boolean ganhouLinha (int[][] tab, int l, int v) + { + for (int i = 0; i < tam; i++) + if (tab[l][i] != v) + return false; + + return true; + } + + /* + * Ganhou na sequencia de colunas? + */ + private boolean ganhouColuna (int[][] tab, int c, int v) + { + for (int i = 0; i < tam; i++) + if (tab[i][c] != v) + return false; + + return true; + } + + /* + * Ganhou na sequencia diagonal principal? + */ + private boolean ganhouDiag1 (int[][] tab, int v) + { + for (int i = 0; i < tam; i++) + if (tab[i][i] != v) + return false; + + return true; + } + + /* + * Ganhou na sequencia diagonal secundaria? + */ + private boolean ganhouDiag2 (int[][] tab, int v) + { + for (int i = 0; i < tam; i++) + if (tab[(tam-1)-i][i] != v) + return false; + + return true; + } + + /* + * Nao tem mais espacos restantes no tabuleiro.. + */ + public boolean semEspaco (int[][] tab) + { + for (int l = 0; l < tam; l++) + for (int c = 0; c < tam; c++) + if (tab[l][c] == 0) + return false; + + return true; + } +} diff --git a/material/aulas/08-busca-global/minimax/Sucessor.class b/material/aulas/08-busca-global/minimax/Sucessor.class new file mode 100644 index 000000000..950a2994f Binary files /dev/null and b/material/aulas/08-busca-global/minimax/Sucessor.class differ diff --git a/material/aulas/08-busca-global/minimax/Sucessor.java b/material/aulas/08-busca-global/minimax/Sucessor.java new file mode 100644 index 000000000..dfcbddd2f --- /dev/null +++ b/material/aulas/08-busca-global/minimax/Sucessor.java @@ -0,0 +1,28 @@ + + + +/* + * CLASSE SUCESSOR - GERA OS ESTADOS DO JOGO DA VELHA + */ + +public class Sucessor +{ + int[][] tabuleiro; + int utilidade; + + /* + * Metodo Construtor + */ + public Sucessor (int[][] tab) + { + /* + * Cria um novo tabuleiro, baseado no que foi passado + */ + int tam = tab.length; + tabuleiro = new int[tam][tam]; + + for (int i = 0; i < tam; i++) + for (int j = 0; j < tam; j++) + tabuleiro[i][j] = tab[i][j]; + } +} diff --git a/material/aulas/08-busca-global/minimax/Tabuleiro.class b/material/aulas/08-busca-global/minimax/Tabuleiro.class new file mode 100644 index 000000000..0999f04c5 Binary files /dev/null and b/material/aulas/08-busca-global/minimax/Tabuleiro.class differ diff --git a/material/aulas/08-busca-global/minimax/Tabuleiro.java b/material/aulas/08-busca-global/minimax/Tabuleiro.java new file mode 100644 index 000000000..6a61f7126 --- /dev/null +++ b/material/aulas/08-busca-global/minimax/Tabuleiro.java @@ -0,0 +1,42 @@ +public class Tabuleiro { + + static char[] conversao = {'O', ' ', 'X'}; + static int[][] tabuleiro; + int tam; + String divisor; + + public Tabuleiro (int tam){ + this.tam = tam; + tabuleiro = new int[tam][tam]; + divisor = gerarDivisor(); + } + + public void fazerJogada(int l, int c){ + if(tabuleiro[l][c] == 0) + tabuleiro[l][c] = -1; + else + System.out.println("Posição ja sendo usada"); + } + + public void imprimir(){ + for(int i = 0; i < tam; i++){ + for(int j = 0; j < tam; j++){ + System.out.printf(" %c %c", conversao[tabuleiro[i][j] + 1], j == tam-1 ? ' ' : '|'); + } + if(i != (tam-1)) + System.out.println(divisor); + } + System.out.println("\r\n"); + } + + public String gerarDivisor(){ + String d = "\r\n"; + + for(int i = 0; i< (tam-1); i++){ + d+= "---+"; + } + d+= "---"; + return d; + } +} + diff --git a/material/aulas/08-busca-global/minimax/Velha.class b/material/aulas/08-busca-global/minimax/Velha.class new file mode 100644 index 000000000..b17722103 Binary files /dev/null and b/material/aulas/08-busca-global/minimax/Velha.class differ diff --git a/material/aulas/08-busca-global/minimax/Velha.java b/material/aulas/08-busca-global/minimax/Velha.java new file mode 100644 index 000000000..560da2d80 --- /dev/null +++ b/material/aulas/08-busca-global/minimax/Velha.java @@ -0,0 +1,61 @@ + + +/* + * CLASSE VELHA - CLASSE PRINCIPAL DA APLICACAO + */ + + +//Biblioteca Scanner para captura da jogada do usu�rio +import java.util.Scanner; + +public class Velha +{ + /* + * CONSTANTES UTILIDAZAS + * TAM -> Tamanho do Tabuleiro + * PROF -> Profundidade m�xima da busca no MiniMax. Se PROF = -1 o algoritmo + * minimax ir� buscar at� um estado terminal. + */ + static int TAM = 3, PROF = -1; + + public static void main (String[] args) + { + Scanner ent = new Scanner (System.in); + //Objeto da Classe Tabuleiro + if(args.length > 0){ + TAM = Integer.parseInt(args[0]); + } + Tabuleiro t = new Tabuleiro (TAM); + //Objeto da Classe Minimax + MiniMax mm = new MiniMax (TAM, PROF); + System.out.println("J2VELHA\nBem vindo ao Jogo!\nBoa Sorte!\n\n"); + //Imprime o tabuleiro na Tela + t.imprimir (); + do + { //Captura jogada do usu�rio + int l, c; + System.out.printf ("Sua jogada:\r\nLinha [0 - %d]: ", (TAM-1)); + l = ent.nextInt (); + System.out.printf ("Coluna [0 - %d]: ", (TAM-1)); + c = ent.nextInt (); + //Realiza jogada do usu�rio + t.fazerJogada(l, c); + t.imprimir (); + //Verifica se n�o � um estado terminal + if (!mm.teste_terminal(t.tabuleiro)) + { + //Aplica o algoritmo minimax ao tabuleiro + t.tabuleiro = mm.decisao_minimax(t.tabuleiro); + System.out.println ("Jogada do Computador:"); + t.imprimir (); + } + } while (!mm.teste_terminal(t.tabuleiro)); + //Verifica o ganhador, ou um empate + if (mm.ganhou(t.tabuleiro, 1)) + System.out.println("O computador ganhou!"); + else if (mm.ganhou(t.tabuleiro, -1)) + System.out.println("Voc� ganhou!"); + else + System.out.println("Empate!"); + } +} diff --git a/material/aulas/08-busca-global/slides.pdf b/material/aulas/08-busca-global/slides.pdf new file mode 100644 index 000000000..bbc146f81 Binary files /dev/null and b/material/aulas/08-busca-global/slides.pdf differ diff --git a/material/aulas/09-busca-global-II/in-aula.txt b/material/aulas/09-busca-global-II/in-aula.txt new file mode 100644 index 000000000..24eb55a03 --- /dev/null +++ b/material/aulas/09-busca-global-II/in-aula.txt @@ -0,0 +1,6 @@ +5 15 +12 4 +2 2 +1 2 +1 1 +4 10 diff --git a/material/aulas/09-busca-global-II/in1.txt b/material/aulas/09-busca-global-II/in1.txt new file mode 100644 index 000000000..b19f8a5ad --- /dev/null +++ b/material/aulas/09-busca-global-II/in1.txt @@ -0,0 +1,11 @@ +10 10 +3 70 +8 56 +6 17 +4 91 +5 77 +10 69 +1 98 +9 54 +3 13 +3 54 diff --git a/material/aulas/09-busca-global-II/in2.txt b/material/aulas/09-busca-global-II/in2.txt new file mode 100644 index 000000000..77003dc51 --- /dev/null +++ b/material/aulas/09-busca-global-II/in2.txt @@ -0,0 +1,6 @@ +5 2 +1 50 +1 94 +2 40 +2 39 +1 62 diff --git a/material/aulas/09-busca-global-II/in3.txt b/material/aulas/09-busca-global-II/in3.txt new file mode 100644 index 000000000..92e5afb70 --- /dev/null +++ b/material/aulas/09-busca-global-II/in3.txt @@ -0,0 +1,11 @@ +10 100 +58 95 +90 32 +36 37 +53 54 +8 9 +98 29 +31 43 +37 59 +36 3 +6 98 diff --git a/material/aulas/09-busca-global-II/in4.txt b/material/aulas/09-busca-global-II/in4.txt new file mode 100644 index 000000000..8dd82dcfa --- /dev/null +++ b/material/aulas/09-busca-global-II/in4.txt @@ -0,0 +1,6 @@ +5 10 +1 5 +1 10 +2 5 +1 20 +8 25 \ No newline at end of file diff --git a/material/aulas/09-busca-global-II/in5.txt b/material/aulas/09-busca-global-II/in5.txt new file mode 100644 index 000000000..af9465f99 --- /dev/null +++ b/material/aulas/09-busca-global-II/in5.txt @@ -0,0 +1,101 @@ +100 70 +34 37 +43 28 +31 69 +27 50 +65 67 +34 47 +57 78 +8 38 +21 0 +60 18 +41 78 +69 86 +27 16 +23 38 +8 17 +51 30 +45 17 +2 58 +38 35 +44 73 +26 40 +53 70 +12 60 +5 34 +30 49 +49 38 +22 81 +51 64 +8 41 +52 57 +39 3 +25 19 +48 84 +49 87 +58 68 +33 75 +10 42 +55 68 +59 58 +3 80 +69 26 +36 96 +28 34 +21 46 +40 11 +16 82 +5 21 +3 59 +59 86 +5 7 +57 73 +9 63 +59 53 +37 19 +51 66 +10 66 +19 58 +7 30 +51 44 +18 11 +68 24 +10 26 +23 49 +52 21 +40 24 +7 73 +46 17 +4 91 +12 6 +7 18 +50 3 +18 26 +51 83 +30 86 +63 36 +43 26 +69 47 +18 65 +59 50 +9 99 +41 87 +15 88 +49 72 +69 34 +8 21 +3 58 +13 18 +33 42 +64 31 +34 80 +51 50 +14 83 +34 19 +9 49 +56 56 +29 75 +21 15 +46 33 +17 10 +26 46 diff --git a/material/aulas/09-busca-global-II/index.md b/material/aulas/09-busca-global-II/index.md new file mode 100644 index 000000000..3fb52e277 --- /dev/null +++ b/material/aulas/09-busca-global-II/index.md @@ -0,0 +1,69 @@ +# 09 - Comparação de resultados + +Já implementamos diversos algoritmos para o problema da mochila binária e chegou a hora de compararmos os resultados por eles obtidos. Nossa ideia aqui é exercitar nossa capacidade de responder perguntas abertas com base em dados. + +#### Até qual tamanho de mochila a busca global resolve rápido? + +#### O algoritmo de busca local é melhor que as heurísticas? + +#### Vale a pena esperar pela busca global? Até que ponto? + +## Formulando a pergunta com precisão + +Todas as perguntas acima são abertas. Elas admitem diferentes respostas dependendo de nossa interpretação. Nesta seção iremos aprender a reformulá-las de maneira (mais) precisa e a planejar uma série de experimentos que possam apoiar nossa resposta. + +!!! question short + Escolha uma das questões acima para trabalhar nesta questão. + +!!! question medium + Alguns qualificadores comumente usados em discursos informais são considerados "vazios" quanto usados em um contexto mais científico, onde é importante ser preciso nas mensagens. Expressões como + + * "A melhor que B" + * "rápido, devagar, significativo" + * "vale a pena" + + são ruins pois não deixam explícito as expectativas de quem as escreveu. Por exemplo, poderíamos ainda perguntar: + + * "A é melhor que B"** sob qual métrica**? + * **O que é considerado** "rápido, devagar ou significativo"? **1 minuto é rápido ou devagar** (depende da aplicação) + * **Qual é o critério usado para** "valer a pena"? Tempo? Valor da mochila? O quão próximo do ótimo vale a pena? + + Reescreva a pergunta escolhida agora especificando exatamente o que você gostaria de responder. + +!!! warning "Importante" + Não existe resposta certa para a pergunta acima. Desde que você seja preciso em sua formulação a resposta está correta. Ou seja, **neste momento não estamos questionando se a pergunta faz sentido**, somente **se ela está bem formulada**. + +Agora que temos uma pergunta mais precisamente formulada, vamos planejar + +!!! question medium + Como você usaria um gerador para gerar dados que te ajudem a responder a pergunta escolhida? Especifique tamanhos de entrada e comente por que você faria estes testes. + +!!! question medium + Com os dados da questão acima em mãos, que ferramentas visuais você usaria para facilitar a comunicação dos resultados? + + * Se sua resposta incluir tabelas, diga o que será mostrado em cada eixo e qual sua interpretação dos dados. + * Se sua resposta incluir gráficos, explique qual tipo e qual informação você estaria colocando em evidência. + +## Implementando de maneira reprodutível + +Vamos agora tentar implementar seu plano acima de maneira reprodutível. Ou seja, qualquer pessoa com a infra necessária poderia reexecutar seus experimentos e obter os mesmos dados que você. + +!!! example + Reúna todos os arquivos de entrada usados em uma pasta *in*. + +!!! example + Crie um script python que executa seu programa para todas as entradas acima. + + **Dicas**: + + * reveja a nossa [aula 01](https://insper.github.io/supercomp/aulas/01-introducao/) e relembre como criar testes reprodutíveis. + +!!! example + Salve os resultados acima em um dataframe do *Pandas*. Se quiser, salve seus resultados correntes para um arquivo *CSV*. + +!!! example + Crie tabelas ou gráficos a partir do dataframe criado. + +!!! question medium + Usando as tabelas e gráficos criados, responda à pergunta escolhida no início do handout. + diff --git a/material/aulas/09-busca-global-II/out-aula.txt b/material/aulas/09-busca-global-II/out-aula.txt new file mode 100644 index 000000000..6e82911bc --- /dev/null +++ b/material/aulas/09-busca-global-II/out-aula.txt @@ -0,0 +1,2 @@ +8 15 1 +1 2 3 4 diff --git a/material/aulas/09-busca-global-II/out1.txt b/material/aulas/09-busca-global-II/out1.txt new file mode 100644 index 000000000..f0350c931 --- /dev/null +++ b/material/aulas/09-busca-global-II/out1.txt @@ -0,0 +1,2 @@ +10 266 1 +3 4 6 diff --git a/material/aulas/09-busca-global-II/out2.txt b/material/aulas/09-busca-global-II/out2.txt new file mode 100644 index 000000000..ded2c2259 --- /dev/null +++ b/material/aulas/09-busca-global-II/out2.txt @@ -0,0 +1,2 @@ +2 156 1 +1 4 diff --git a/material/aulas/09-busca-global-II/out3.txt b/material/aulas/09-busca-global-II/out3.txt new file mode 100644 index 000000000..35bbbba66 --- /dev/null +++ b/material/aulas/09-busca-global-II/out3.txt @@ -0,0 +1,2 @@ +95 236 1 +0 6 9 diff --git a/material/aulas/09-busca-global-II/out4.txt b/material/aulas/09-busca-global-II/out4.txt new file mode 100644 index 000000000..ecb59cd5f --- /dev/null +++ b/material/aulas/09-busca-global-II/out4.txt @@ -0,0 +1,2 @@ +10 55 1 +1 3 4 diff --git a/material/aulas/09-busca-global-II/out5.txt b/material/aulas/09-busca-global-II/out5.txt new file mode 100644 index 000000000..ce03cf0aa --- /dev/null +++ b/material/aulas/09-busca-global-II/out5.txt @@ -0,0 +1,2 @@ +70 769 1 +17 23 39 47 51 55 65 67 79 81 85 diff --git a/material/aulas/10-branch-and-bound/in150.txt b/material/aulas/10-branch-and-bound/in150.txt new file mode 100644 index 000000000..5a94d836a --- /dev/null +++ b/material/aulas/10-branch-and-bound/in150.txt @@ -0,0 +1,151 @@ +150 60 +19 71 +20 98 +15 64 +58 10 +42 57 +47 82 +25 13 +16 36 +17 82 +38 87 +19 91 +26 92 +15 17 +19 64 +27 20 +20 91 +56 81 +53 43 +27 8 +43 95 +59 24 +2 20 +2 69 +58 31 +52 12 +22 81 +39 91 +3 29 +40 24 +40 90 +34 51 +10 83 +16 25 +15 61 +6 65 +22 31 +42 2 +24 97 +17 90 +58 42 +23 14 +30 60 +8 77 +5 76 +7 5 +2 71 +40 64 +58 52 +52 68 +51 72 +52 27 +6 32 +24 7 +34 24 +49 22 +33 87 +53 20 +22 42 +45 12 +23 56 +14 39 +46 47 +6 18 +34 11 +30 45 +60 44 +57 88 +26 15 +29 37 +5 4 +49 58 +49 58 +16 19 +44 11 +8 53 +3 22 +48 32 +51 57 +1 46 +35 82 +46 20 +13 92 +40 61 +32 27 +4 83 +18 18 +47 19 +34 66 +4 74 +10 44 +1 40 +5 47 +14 79 +35 94 +50 38 +45 37 +28 49 +32 70 +34 61 +20 24 +11 56 +20 5 +13 85 +29 21 +6 88 +22 62 +57 62 +56 88 +58 82 +10 84 +23 54 +4 50 +25 54 +42 52 +14 86 +53 63 +19 2 +33 27 +55 94 +27 26 +57 91 +29 71 +33 72 +28 21 +37 25 +12 54 +26 15 +8 94 +54 81 +33 13 +5 26 +34 23 +2 21 +52 12 +3 11 +56 79 +25 15 +23 12 +14 45 +23 13 +34 65 +37 16 +27 65 +4 98 +16 5 +26 0 +33 73 +56 51 +46 95 +23 51 diff --git a/material/aulas/10-branch-and-bound/index.md b/material/aulas/10-branch-and-bound/index.md new file mode 100644 index 000000000..ebac90bf3 --- /dev/null +++ b/material/aulas/10-branch-and-bound/index.md @@ -0,0 +1,80 @@ +# 10 - Branch and Bound + +Vamos começar nossa atividade instrumentando nossa busca exaustiva. Dado que a promessa do nosso algoritmo *Branch and Bound* é evitar chegar até o fim de uma solução parcial que não tem chance de ser ótima, faz todo sentido então contarmos quantas vezes chegamos até o fim. + +!!! example + Vamos adicionar dois contadores ao nosso programa + + 1. `num_leaf` conta quantas vezes uma solução completa foi comparada com a melhor possível + 2. `num_copy` conta quantas vezes foi encontrada uma solução melhor que a atual. + +!!! question short + Rode para o exemplo `in150.txt` e anote os valores obtidos abaixo. + +## Um bound simples: ignorar peso + +Nesta seção implementaremos um *Branch and Bound* simples com a seguinte ideia: + +!!! quote "BOUND" + Complete uma solução parcial incluindo na mochila todos os objetos não selecionados. Isto é equivalente a **relaxar a restrição do peso**. + +!!! question short + Os contadores `num_leaf` e `num_copy` se modificariam ao implementar o *Branch and Bound*? Se sim, quais deles? + + ??? tip "Resposta" + Somente `num_leaf`, já que deixamos de chegar em folhas que não tem chance de serem ótimos globais. `num_copy` continua igual, já que conta o número de vezes que o melhor foi atualizado. + +!!! example + Implemente no seu código o *Branch and Bound* usando o *Bound* acima. Ou seja, você deverá, ao chegar em um objeto + + 1. Checar se a soma da solução atual mais o bound é melhor que o melhor possível. + 2. Se não for retorna + 3. Se for prossegue fazendo a escolha para o objeto atual. + +!!! example + Adicione ao seu programa um contador `num_bounds` que conta o número de vezes em que evitamos de testar uma solução parcial até o fim. + +!!! question short + Teste seu programa novamente com a entrada `in150.txt`. Anote abaixo os contadores e interprete seu resultado. + +## Analisando nosso bound + +Conseguimos algum ganho de desempenho ao criar o último bound. Vamos agora descobrir se ele é bom mesmo. + +!!! question short +Como você mediria a altura em que o bound agiu? Seria melhor cortar mais para cima ou mais para baixo? + +O valor `num_bound` não ajuda muito a entender se o bound é bom, já que cortar muito pode significar fazê-lo próximo das folhas (e isto gera ganho pequeno de desempenho). + +!!! example +Faça seu programa contar o número de vezes em que o bound é ativado em cada nível da recursão. Mostre esses valores no terminal. + +!!! question short +Interprete os resultados acima. + +## Implementação eficiente do bound + +!!! question short + O bound *Ignorar peso* depende das escolhas feitas até o momento? Ou seja, se tenho 4 objetos, o bound da solução parcial `(1, 0, -, -)` é igual ou diferente do bound da solução parcial `(1, 1, -, -)`? + +!!! question short + Como você poderia economizar trabalho ao calcular o bound? É possível pré-calcular algo? + +!!! example + Reimplemente seu bound, desta vez pré-calculando tudo antes de iniciar a busca_exaustiva. + +!!! question short + Rode novamente com a entrada `in150.txt` e verifique se houve ganho de tempo de execução. + +## Avançado: o quão justo é um bound? + +Podemos medir quão justo é um bound verificando a diferença entre seu valor e o valor *real* da melhor solução da subárvore de recursão atual. Ou seja, comparamos nossa estimativa otimista com o que aconteceu de verdade ao examinar todas essas soluções. + +!!! example + Faça seu programa guardar a diferença média entre o valor do bound (que é uma estimativa da qualidade final de uma solução) e o melhor valor encontrado para aquele ramo da recursão. + + **Dica**: você vai precisar retornar o valor da melhor mochila encontrada em cada parte. + +!!! question + Interprete os resultados acima. + diff --git a/material/aulas/10-branch-and-bound/revisao.md b/material/aulas/10-branch-and-bound/revisao.md new file mode 100644 index 000000000..093cff040 --- /dev/null +++ b/material/aulas/10-branch-and-bound/revisao.md @@ -0,0 +1,23 @@ +# Revisão para P1 + +Um investidor possui um orçamento de R$ 100.000,00 para aplicar no mercado de ações. Uma instituição financeira lhe dá as seguintes opções para construir o seu portifólio de investimentos, a ser composto por lotes de ações: + +| **AÇÃO** | **VALOR DO LOTE** | **RETORNO DO LOTE** | **IMPOSTO A PAGAR** | +|:--------:|:-----------------:|:-------------------:|:-------------------:| +| PETR4 | R$ 30.000,00 | R$ 2.700,00 | R$ 640,00 | +| DELL6 | R$ 60.000,00 | R$ 4.500,00 | R$ 900,00 | +| MICR7 | R$ 30.000,00 | R$ 6.400,00 | R$ 1.200,00 | +| IBMC3 | R$ 40.000,00 | R$ 4.600,00 | R$ 940,00 | + +Não é possível comprar ações fracionadas, somente o lote inteiro. Com base neste cenário: + + +1. Modele este problema como um problema de otimização. +2. Crie uma entrada de dados para a instância do problema como mostrado acima. +3. Implemente em C++ uma busca exaustiva para montar uma proposta de portifólio para o cliente. +4. Implemente uma estratégia do tipo branch-and-bound em C++ para a busca exaustiva da questão 3. +5. Implemente em C++ uma heurística para acelerar a busca exaustiva da questão 3. +6. Obtenha e compare os tempos de execução das três implementações anteriores. + + + diff --git a/material/aulas/10-branch-and-bound/slides.pdf b/material/aulas/10-branch-and-bound/slides.pdf new file mode 100644 index 000000000..b6188ba10 Binary files /dev/null and b/material/aulas/10-branch-and-bound/slides.pdf differ diff --git a/material/aulas/11-paralelismo/exercicio1.cpp b/material/aulas/11-paralelismo/exercicio1.cpp new file mode 100644 index 000000000..a2cec2e8f --- /dev/null +++ b/material/aulas/11-paralelismo/exercicio1.cpp @@ -0,0 +1,21 @@ +#include +#include + +double funcao1() { + sleep(4); + return 47; +} + +double funcao2() { + sleep(1); + return -11.5; +} + +int main() { + double res_func1, res_func2; + + res_func1 = funcao1(); + res_func2 = funcao2(); + + std::cout << res_func1 << " " << res_func2 << "\n"; +} diff --git a/material/aulas/11-paralelismo/index.md b/material/aulas/11-paralelismo/index.md new file mode 100644 index 000000000..0fda43f67 --- /dev/null +++ b/material/aulas/11-paralelismo/index.md @@ -0,0 +1,103 @@ +# 12 - Introdução a paralelismo + +OpenMP é uma tecnologia de computação multi-core usada para paralelizar programas. Sua principal vantagem é oferecer uma transição suave entre código sequencial e código paralelo. + +Fizemos em sala de aula uma série de programas básicos no OpenMP e agora é a hora de praticar. + +## Cálculo do PI por meio de uma série infinita de Leibniz + +Você sabia que é possível calcular o valor do PI por meio de uma série infinita de Leibniz? Veja abaixo: + +$$ 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \dots = \frac{\pi}{4} $$ + + +$$ \sum_{0}^{\infty} = \frac{(-1)^n}{2n + 1} = \frac{\pi}{4} $$ + +Essa série converge muito lentamente, o que é bom para nós. + +### Sua tarefa + +Implemente a versão serial do cálculo do PI a partir da série infinita de Leibniz. Faça `n = 1000000000`. + + +Após implementar a versão serial e calcular o tempo de sua execução, implemente a versão em `openmp`. Você deve fazer sua implementação de duas formas: + +a) A primeira implementação você deve trabalhar com `2` threads e a partir do `id` da thread, você deve dividir a soma em duas partes, cada thread executando a sua porção. + +b) A segunda implementação você deve trabalhar com `for` do openmp e tratar como uma `redução` do valor de PI. Calcule o tempo de execução. + + +O speedup é uma métrica que representa a razão entre o tempo de execução de um programa sequencial e o tempo de execução de sua versão paralela. Por isso, trata-se de uma boa medida para avaliarmos quantitativamente a melhoria trazida pela versão paralela de um programa paralelo em relação à sua versão sequencial. Calcule também o speed up de cada uma das soluções. + +## Tasks (tarefas) em OpenMP + +Vamos agora criar *tarefas* que podem ser executadas em paralelo. + +!!! tip "Definição" + Uma **tarefa** é um bloco de código que é rodado de maneira paralela usando OpenMP. *Tarefas* são agendadas para cada uma das *threads* criadas em um região paralela. Não existe uma associação **1-1** entre *threads* e *tarefas*. Posso ter mais *tarefas* que *threads* e mais *threads* que *tarefas*. + +Veja abaixo um exemplo de criação de tarefas. + +```cpp +#pragma omp parallel +{ + #pragma omp task + { + std::cout << "Estou rodando na tarefa " << omp_get_thread_num() << "\n"; + } +} +std::cout << "eu só rodo quanto TODAS tarefas acabarem.\n"; +``` + +!!! question choice + O exemplo acima cria quantas tarefas, supondo que `OMP_NUM_THREADS=4`? + + - [ ] 1 + - [x] 4, uma para cada thread + - [ ] Nenhuma das anteriores + + + !!! details + Como cada thread roda o código da região paralela, cada uma cria exatamente um tarefa. + + +Para controlar a criação de tarefas em geral usamos a diretiva `master`, que executa somente na thread de índice `0`. Assim conseguimos criar código legível e que deixa bem claro quantas e quais tarefas são criadas. + +```cpp +#pragma omp parallel +{ + #pragma omp master + { + std::cout << "só roda uma vez na thread:" << omp_get_thread_num() << "\n"; + #pragma omp task + { + std::cout << "Estou rodando na thread:" << omp_get_thread_num() << "\n"; + } + } +} +``` + +Somente lendo o código acima, responda as questões abaixo. + +!!! question choice + Quantas tarefas são criadas no exemplo acima? + + - [x] 1 + - [ ] N, uma para cada thread + - [ ] Nenhuma das anteriores + +!!! question choice + A(s) tarefa(s) criada(s) roda(m) em qual thread? + + - [ ] 0 + - [ ] 1 + - [x] Impossível dizer. Em cada execução rodará em uma thread diferente. + +!!! example + Complete *exercicio1.cpp* criando duas tarefas. A primeira deverá rodar `funcao1` e a segunda `funcao2`. Salve seus resultados nas variáveis indicadas no código. + +!!! question short + Leia o código e responda. Quanto tempo o código sequencial demora? E o paralelo? Verifique que sua implementação está de acordo com suas expectativas. + + !!! details + Sequencial demora a soma dos tempos das duas funções. Paralelo demora o tempo da maior delas. diff --git a/material/aulas/11-paralelismo/slides.pdf b/material/aulas/11-paralelismo/slides.pdf new file mode 100644 index 000000000..4f9ef705e Binary files /dev/null and b/material/aulas/11-paralelismo/slides.pdf differ diff --git a/material/aulas/12-efeitos-colaterais/index.md b/material/aulas/12-efeitos-colaterais/index.md new file mode 100644 index 000000000..f7b893d4c --- /dev/null +++ b/material/aulas/12-efeitos-colaterais/index.md @@ -0,0 +1,319 @@ +# 15 - Scheduling e Efeitos Colaterais + +# Scheduling + +Vamos começar compreendendo melhor os `schedulers` que existem no openmp. +No github, obtenha o arquivo `omp_schedulers.cpp`, compile e execute-o. Você deverá obter um output similar ao abaixo. Verifique na documentação do OpenMP ([link](https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/optimization-and-programming-guide/openmp-support/worksharing-using-openmp.html)) e busque compreender melhor como funciona cada scheduler. + +```C++ + +default: +**************** + **************** + **************** + **************** + +schedule(static): +**************** + **************** + **************** + **************** + +schedule(static, 4): +**** **** **** **** + **** **** **** **** + **** **** **** **** + **** **** **** **** + +schedule(static, 8): +******** ******** + ******** ******** + ******** ******** + ******** ******** + +schedule(dynamic): +** ******** ** ***** * ** ****** * * **** * * ** * * * + * * * * * * ** * + * * * * * ** ** * * ** * + * * + +schedule(dynamic, 1): +* ** ** * ** * * * * * ** * * *** * * * ******* * * * + * * * * * ** * * ** * + * * * * *** ** * * * * * * * * * * + + +schedule(dynamic, 4): +**** ******************************** ******************** + **** + + **** + +schedule(dynamic, 8): +******** **************************************** + ******** + ******** + + +schedule(guided): +**************** **************** *************** + ************ + + ***** + +schedule(guided, 2): +**************** *************************** + ************ + ********* + + +schedule(guided, 4): +**************** ************************************ + + ************ + + +schedule(guided, 8): + ************ ************************ + ********* +**************** *** + + +schedule(auto): +**************** + **************** + **************** + **************** + +schedule(runtime): +**************** + **************** + **************** + **************** + +``` + +# Revisitando `Parallel for`, `tasks` e `sections` + +Agora que já conseguimos resolver problemas simples usando três abordagens diferentes, vamos aumentar a complexidade dos problemas tratados. Vimos três abordagens + +* `parallel for` - útil para quando precisamos executar a mesma operação em um conjunto grande de dados. +* `tasks` - útil para paralelizar tarefas heterogêneas. +* `sections` - permite paralelizar tarefas heterogênas, com o controle adicional que uma `section` é executada apenas por uma thread. + +Teremos então dois desafios relacionados a paralelizar programas que não são obviamente paralelizáveis. + +## Cálculo do `pi` recursivo + +Vamos iniciar com um código recursivo para cálculo do pi. + +!!! example + Examine o código em *pi_recursivo.cpp*. Procure entender bem o que está acontecendo antes de prosseguir. + +!!! question short + Onde estão as oportunidades de paralelismo? O código tem dependências? + +!!! question medium + Se o código tiver dependências, é possível refatorá-lo para eliminá-las? + +!!! question medium + Quantas níveis de chamadas recursivas são feitas? Quando o programa para de chamar recursivamente e faz sequencial? + +Vamos agora tentar paralelizar o programa usando as duas técnicas. + +### Usando `for` paralelo + +!!! question short + Em quais linhas pode haver oportunidade para usar `parallel for`? + +!!! example + Crie uma implementação do *pi_recursivo* usando for paralelo. Meça seu tempo e anote. + +!!! example + O número `MIN_BLK` afeta seu algoritmo? É melhor aumentá-lo ou diminuí-lo? + +!!! question short + Os ganhos de desempenho foram significativos? + +!!! question short + Como você fez o paralelismo? Precisou definir o número do `for` manualmente ou conseguiu realizar a divisão automaticamente? Comente abaixo sua implementação. + + +### Usando `task` + +Agora vamos usar `task`. Neste caso é vamos adotar a seguinte estratégia: usaremos tarefas para paralelizar as chamadas recursivas feitas em *pi_recursivo.cpp*. + +!!! example + Crie uma implementação do *pi_recursivo* usando tarefas. Meça seu tempo e anote. + + **Dica**: se você precisar esperar tarefas pode usar a diretiva `#pragma omp taskwait`. Ela espera por todas as tarefas criadas pela thread atual. + +!!! question short + Os ganhos de desempenho foram significativos? + +!!! question short + Quantas tarefas foram criadas? Você escolheu essa valor como? + +!!! example + Tente números diferentes de tarefas e verifique se o desempenho melhora ou piora. Anote suas conclusões abaixo. + +### Comparação + +!!! question short + Compare seus resultados das duas abordagens. Anote abaixo seus resultados. + +!!! warning + É possível conseguir tempos muito parecidos com ambas, então se uma delas ficou muito mais lenta é hora de rever o que foi feito. + + +# Efeitos Colaterais + +Agora que já conseguimos resolver um problema um pouco mais complexo usando abordagens diferentes, vamos aumentar um pouco mais a complexidade dos problemas tratados. + +No código `pi_recursivo.cpp` tínhamos uma variável global que podia ser eliminada do código mudando a função recursiva. Isso, porém, nem sempre é possível e precisamos lidar com estas situações. + +## Um primeiro teste + +Vamos iniciar trabalhando com o seguinte trecho de código (arquivo `vetor_insert.cpp`): + +```cpp +std::vector vec; +for (int i = 0; i < N; i++) { + vec.push_back(conta_complexa(i)); +} +``` + +Vamos supor agora que usaremos o seguinte comando para paralelizar o código acima usando OpenMP: + +``` +#pragma omp parallel for +``` + +!!! question choice + A variável `i` é + + - [ ] shared + - [x] private + - [ ] firstprivate + +!!! question choice + A variável `vec` é + + - [x] shared + - [ ] private + - [ ] firstprivate + +!!! question choice + O código paralelizado rodaria sem dar erros? Os resultados seriam os esperados? + + - [ ] Sim, o `vector` é capaz de gerenciar os acessos simultâneos + - [ ] O código acima roda sem erros, mas o conteúdo do vetor pode não estar correto ao fim do programa + - [x] Não, o código acima dá erro ao executar. + + !!! details "Resposta" + Rode e veja o que acontece ;) + +!!! progress + Clique após rodar o programa + +Agora que vimos o que acontece, vamos consertar isso! + +!!! danger + Nosso código dá erro pois a operação `push_back` **modifica o vetor**! + + +Vamos ver então duas abordagens importantes para contornar esse problema. + +## Seções críticas + +Antes de começar, vamos aprender mais um aspecto de OpenMP: diretivas para compartilhamento de dados. Já vimos as 3 principais opções: + +- `shared` - compartilhado entre threads +- `private` - privados entre threads +- `firstprivate` - Especifica que cada thread deve ter sua própria instância de uma variável e que a variável deve ser inicializada com o valor da variável antes da seção paralela. + + Podemos forçar a especificação de diretivas de compartilhamento para **todas** as variáveis usadas nas construções `omp parallel`, `omp task` e `omp parallel for`. + +!!! tip + Ao adicionarmos `default(none)` logo após as diretivas acima precisaremos especificar, para cada variável usada, sua diretiva de compartilhamento. Isso torna muito mais fácil identificar casos de compartilhamento indevido de dados. + + A partir desse ponto estaremos supondo que todo código criado usará `default(none)`. + +A primeira abordagem usada terá a missão de indicar que um conjunto de linhas contém uma operação que possui efeitos colaterais. Dessa maneira, podemos evitar conflitos se **só permitirmos que essa região rode em uma thread por vez**. + +Fazemos isso usando a diretiva `omp critical`: + +```cpp +#pragma omp critical +{ + // código aqui dentro roda somente em uma thread por vez. +} +``` + +Se duas threads chegam ao mesmo tempo no bloco `critical`, uma delas ficará esperando até a outra acabar o bloco. Quando isso ocorrer a thread que esperou poderá prosseguir. Vamos tentar aplicar isso ao código de `vetor_insert.cpp`. + +!!! example + Use `omp critical` para solucionar os problemas de concorrência do código acima. + +!!! question short + Escreva abaixo o tempo que seu código levou para rodar. + +!!! progress + Clique após rodar seu código + +Se sua implementação se parecer com o código abaixo, então é bem provável que a versão paralela na verdade tenha demorado o mesmo tempo ou mais que o original. + +```cpp +.... +#pragma omp parallel for default(none) shared(vec) +for (int i = 0; i < N; i++) { + #pragma omp critical + { + vec.push_back(conta_complexa(i)); + } +} +.... +``` + +!!! question short + Analise o código novamente e tente explicar por que o programa não ganhou velocidade. + + !!! details "Resposta" + A operação que produz efeitos colaterais é `vec.push_back`, mas nossa seção crítica envolve também a chamada `conta_complexa(i)`. + +!!! example + Modifique seu código de acordo com a resposta acima. Meça o desempenho e veja que agora há melhora. + +Vamos analisar agora a ordem dos dados em `vec`. + +!!! question short + A ordem se mantém igual ao programa sequencial? Você consegue explicar por que? + + !!! details "Resposta" + Não se mantém. Cada thread chega ao `push_back` em um momento diferente, logo a ordem em que os dados são adicionados no vetor muda. + +## Manejo de conflitos usando pré-alocação de memória + +Seções críticas são muito úteis quando não conseguimos evitar o compartilhamento de dados. Porém, elas são caras e e feitas especialmente para situações em que região crítica é pequena e chamada um número relativamente pequeno de vezes. + +!!! danger "Como regra, desejamos entrar na região crítica o menor número possível de vezes." + +!!! question short + Reveja o código do inicial da seção de efeitos colaterais. Seria possível reescrevê-lo para não usar `push_back`? + + !!! details "Resposta" + Sim, bastaria alocar o vetor com tamanho `N` ao criá-lo. Assim poderíamos atribuir `conta_complexa` direto para a posição de memória desejada. + +A estratégia acima é muito importante em alto desempenho e representa uma maneira de evitar seções críticas e sincronização. + +!!! done "É sempre melhor alocar memória em blocos grandes antes do paralelismo do que alocar memória frequentemente dentro de regiões paralelas." + +Note que fizemos isso na parte de tarefas: ao criarmos variáveis para cada tarefa preencher evitamos a necessidade de usar sincronização. + +!!! example + Modifique o programa para usar a ideia da questão anterior. Meça o desempenho e verifique que tudo funciona normalmente e mais rápido que o original. + + +# Dica + +A Microsoft possui uma página bem completa sobre o `OpenMP`. Vale a pena conferir neste [link](https://docs.microsoft.com/pt-br/cpp/parallel/openmp/reference/openmp-library-reference?view=msvc-160). \ No newline at end of file diff --git a/material/aulas/12-efeitos-colaterais/pi_recursivo.cpp b/material/aulas/12-efeitos-colaterais/pi_recursivo.cpp new file mode 100644 index 000000000..9192a1396 --- /dev/null +++ b/material/aulas/12-efeitos-colaterais/pi_recursivo.cpp @@ -0,0 +1,35 @@ +#include +#include +#include +static long num_steps = 1024l*1024*1024*2; + +#define MIN_BLK 1024*1024*256 + +double sum = 0; + +void pi_r(long Nstart, long Nfinish, double step) { + long i,iblk; + if (Nfinish-Nstart < MIN_BLK){ + for (i = Nstart; i < Nfinish; i++){ + double x = (i+0.5)*step; + sum += 4.0/(1.0+x*x); + } + } else { + iblk = Nfinish-Nstart; + pi_r(Nstart, Nfinish-iblk/2,step); + pi_r(Nfinish-iblk/2, Nfinish, step); + } +} + +int main () { + long i; + double step, pi; + double init_time, final_time; + step = 1.0/(double) num_steps; + init_time = omp_get_wtime(); + pi_r(0, num_steps, step); + pi = step * sum; + final_time = omp_get_wtime() - init_time; + + std::cout << "for " << num_steps << " steps pi = " << std::setprecision(15) << pi << " in " << final_time << " secs\n"; +} diff --git a/material/aulas/12-efeitos-colaterais/slides.pdf b/material/aulas/12-efeitos-colaterais/slides.pdf new file mode 100644 index 000000000..8bbfd7e1c Binary files /dev/null and b/material/aulas/12-efeitos-colaterais/slides.pdf differ diff --git a/material/aulas/12-efeitos-colaterais/vetor_insert.cpp b/material/aulas/12-efeitos-colaterais/vetor_insert.cpp new file mode 100644 index 000000000..fb3c2e0db --- /dev/null +++ b/material/aulas/12-efeitos-colaterais/vetor_insert.cpp @@ -0,0 +1,22 @@ +#include +#include +#include + + +double conta_complexa(int i) { + return 2 * i; +} + +int main() { + int N = 10000; + std::vector vec; + for (int i = 0; i < N; i++) { + vec.push_back(conta_complexa(i)); + } + + for (int i = 0; i < N; i++) { + std::cout << i << " "; + } + + return 0; +} diff --git a/material/aulas/13-efeitos-colaterais-II/index.md b/material/aulas/13-efeitos-colaterais-II/index.md new file mode 100644 index 000000000..9780d4cfa --- /dev/null +++ b/material/aulas/13-efeitos-colaterais-II/index.md @@ -0,0 +1,112 @@ +# 16 - efeitos colaterais II + +Na aula de hoje iremos trabalhar com um algoritmo de sorteios aleatórios para calcular o `pi`. Ele é baseado em uma técnica de Otimização, Simulação e Estimação Paramétrica chamada [Monte Carlo](https://en.wikipedia.org/wiki/Monte_Carlo_method). + +O algoritmo sequencial se baseia em sorteios de pontos dentro de um quadrado de lado `2`. Se a distância entre o ponto e o centro do quadrado for menor que 1 então o ponto cai dentro do círculo inscrito no quadrado. A quantidade de pontos que caem dentro do quadrado é proporcional a $\pi$. Veja abaixo um resumo do algoritmo. + +![https://upload.wikimedia.org/wikipedia/commons/8/84/Pi_30K.gif](https://upload.wikimedia.org/wikipedia/commons/8/84/Pi_30K.gif) + +1. `sum = 0` +1. De `i=0` até `N`: + 1. sorteie pontos $x,y \in [0,1]$ + 1. se $x^2 + y^2 \leq 1$, `sum += 1` +1. devolva `4 * sum / N` + +!!! example + Faça uma implementação sequencial desse algoritmo. Chama seu programa de `pi_montecarlo.cpp`. Para fins de *debug* das próximas versões, mostre o valor de `sum` na saída de erros. Adote `N=100 000`. + +## É possível paralelizar o problema? + +Vamos iniciar pensando um pouco sobre o problema acima. + +!!! question short + O algoritmo acima é paralelizável? Qual técnica você utilizaria para paralelizá-lo? + + !!! details "Resposta" + O `for` paralelo parece encaixar muito bem neste problema, com a variável `sum` sendo usada na opção `reduction` + +!!! question short + Além da variável `sum`, existe outra operação que gera efeitos colaterais no código acima? Qual? + + !!! details "Resposta" + O sorteio de pontos! Lembramos da aula 06 que a geração de números aleatórios é um processo sequencial que depende dos números anteriormente sorteados. + +!!! progress + Continuar + +Agora que sabemos que gerar números aleatórios é um processo sequencial, vamos considerar o quanto isso atrapalha nosso programa. Nas próximas questões leve em conta que o gerador de números aleatórios é uma variável compartilhada. + +!!! question short + Como evitaríamos problemas ao compartilhar o gerador de números aleatórios? + + !!! details "Resposta" + Podemos envolver o passo *2a* do algoritmo em uma seção crítica usando `omp critical` + +!!! question short + Se o `for` acima rodar em uma ordem completamente diferente os resultados se alterarão? + + !!! details "Resposta" + Desde de que os pares `x,y` sorteados sejam os mesmos então não haverá problema. + +!!! example + Com base em todas as suas respostas dos exercícios anteriores, faça uma implementação paralela do `pi_montecarlo.cpp`. Verifique que o valor de `sum` é igual ao sequencial. Por enquanto, **não se preocupe com o tempo de execução**. + +!!! question short + Anote o tempo de execução sequencial e paralelo para o programa acima. + +!!! progress + Vamos discutir esse resultado juntos! + +## Paralelizando processos inerentemente sequenciais + +Como discutimos agora há pouco, a geração de números aleatórios é um processo inerentemente sequencial. Não é que seja impossível paralelizá-lo eficientemente, é que é impossível paralelizá-lo *at all*. Vamos tentar contornar isso então usando a resposta da *Questão 4*: + + +!!! quote "O `for` do algoritmo depende dos pontos gerados, não da ordem que eles foram gerados." + +Vamos então adotar uma solução simples: a cada iteração do `for` criamos um novo gerador de números aleatórios e sorteamos um par de pontos dele. + +### Primeira tentativa + +!!! question short + Sabemos que um gerador de números aleatórios gera sempre a mesma sequência de números, dado um parâmetro `seed` fixo. O quê acontece se usarmos o mesmo `seed` em todas as iterações? Como consertar isso? + + !!! details "Resposta" + Sortearemos o mesmo ponto em todas as iterações. Para consertar isso podemos fazer o `seed` ser baseado no `i` da iteração atual. + +!!! example + Crie uma implementação baseada na ideia acima. + +!!! question short + Anote abaixo o valor do pi encontrado e o tempo de execução. + +!!! question short + Os resultados obtidos são idênticos aos do programa original? São próximos? + +!!! progress + Vamos discutir esse resultado. + +### Segunda tentativa + +O problema da nossa tentativa anterior é que não temos *de verdade* sequências de pontos aleatórias. Bom, na verdade nunca temos, mas o problema é que violamos a promessa que o `RNG` faz. Ele promete que + +!!! quote "dado um seed fixo, a sequência de números geradas é indistinguível de uma sequência aleatória de verdade" + +Ele não promete que, se criarmos vários `RNG`s, **a sequência formada pelo primeiro par de números gerados por cada um será aleatória.** + +Vamos agora tentar uma nova ideia: + +!!! quote "Cada thread irá gerar `N/NUM_THREADS` números aleatórios, atualizando `sum` com os pontos dentro do semi-círculo." + +!!! question short + Como esta ideia melhora o algoritmo acima? + + !!! details "Resposta" + Agora teremos `NUM_THREADS` sequências pseudo-aleatórias "válidas" e juntá-las passa a ser um problema menor. Continuamos precisando usar uma `seed` para cada, mas ao menos agora temos um número pequeno de `RNG`s. + +!!! example + Faça uma implementação da ideia acima. Você pode usar os comandos do OpenMP que quiser. + +!!! question short + Anote o tempo de execução e o pi encontrado. + diff --git a/gpu/22-introducao/exemplo1-criacao-iteracao.cu b/material/aulas/14-intro-gpu/exemplo1-criacao-iteracao.cu similarity index 52% rename from gpu/22-introducao/exemplo1-criacao-iteracao.cu rename to material/aulas/14-intro-gpu/exemplo1-criacao-iteracao.cu index f6c6c642e..22504a3ed 100644 --- a/gpu/22-introducao/exemplo1-criacao-iteracao.cu +++ b/material/aulas/14-intro-gpu/exemplo1-criacao-iteracao.cu @@ -3,22 +3,23 @@ #include int main() { - thrust::host_vector host(10, 0); - host[9] = 35; + thrust::host_vector host(5, 0); + host[4] = 35; + /* na linha abaixo os dados são copiados + para GPU */ + thrust::device_vector dev(host); + /* a linha abaixo só muda o vetor na CPU */ + host[2] = 12; + printf("Host vector: "); - for (thrust::host_vector::iterator i = host.begin(); i != host.end(); i++) { + for (auto i = host.begin(); i != host.end(); i++) { std::cout << *i << " "; // este acesso é rápido -- CPU } printf("\n"); - - thrust::device_vector dev(host); - - host[2] = 12; - printf("Device vector: "); - for (thrust::device_vector::iterator i = dev.begin(); i != dev.end(); i++) { + for (auto i = dev.begin(); i != dev.end(); i++) { std::cout << *i << " "; // este acesso é lento! -- GPU } printf("\n"); diff --git a/gpu/22-introducao/exemplo2-transform.cu b/material/aulas/14-intro-gpu/exemplo2-transform.cu similarity index 100% rename from gpu/22-introducao/exemplo2-transform.cu rename to material/aulas/14-intro-gpu/exemplo2-transform.cu diff --git a/material/aulas/14-intro-gpu/index.md b/material/aulas/14-intro-gpu/index.md new file mode 100644 index 000000000..62ac307b4 --- /dev/null +++ b/material/aulas/14-intro-gpu/index.md @@ -0,0 +1,161 @@ +# 17 - Introdução a GPU + +Como visto em aula, programação para GPU requer ferramentas especializadas capazes de gerar código que rode parte na CPU (chamada de *host*) e parte na GPU (chamada de *target*). Nesta parte introdutória usaremos a biblioteca `cuda::thrust`. Ela possui um pequeno conjunto de operações otimizadas para GPU e que podem ser customizadas para diversos propósitos. + +!!! note "Documentação oficial" + A documentação oficial da Thrust está disponível no endereço [https://thrust.github.io/doc/modules.html](https://thrust.github.io/doc/modules.html). + +Também vamos focar em usar máquinas pré-configuradas. + +## Compilação para GPU + +Para compilar programas para rodar na GPU devemos usar o compilador `nvcc`. Ele identifica quais porções do código deverão ser compiladas para a GPU. O restante do código, que roda exclusivamente na CPU, é passado diretamente para um compilador *C++* regular e um único executável é gerado contendo o código para CPU e chamadas inseridas pelo `nvcc` para invocar as funções que rodam na GPU. + +O `nvcc` e todas as bibliotecas que precisamos estão disponíveis no pacote `nvidia-cuda-toolkit` pronto para instalação via *apt*. A versão disponibilizada não é a mais atual, mas tudo funciona de maneira integrada e não é necessário instalar nada manualmente. + +!!! warning "Se você usar as VMs do Insper então não precisa fazer nada. Todas as ferramentas já estão instaladas lá e a VM já vem pronta para uso." + +!!! example + Verifique que sua instalação funciona compilando o arquivo abaixo. + + >$ nvcc -arch=sm_70 -std=c++14 exemplo1-criacao-iteracao.cu -o exemplo1 + +Se der tudo certo a execução do programa acima deverá gerar um executável `exemplo1` que roda e produz o seguinte resultado. + +``` +Host vector: 0 0 12 0 35 +Device vector 0 0 0 0 35 +``` + +## Compilação para CPU + +Se você ainda não tem uma GPU pode usar o suporte da `thrust` para OpenMP nas nossas primeiras aulas. + +!!! danger "Todos os trabalhos serão corrigidos usando GPU usando `nvcc`. Esta alternativa é importante somente para as primeiras aulas, em que nem todos terão acesso ainda a uma GPU. Usaremos isso somente para facilitar o primeiro contato, mas essa opção não é válida para avaliações." + +1. baixar o código fonte da `thrust` [no github](https://github.com/NVIDIA/thrust). +2. adicionar as seguintes flags no g++ + * `-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP`: diz que a paralelização de `device_vetor` será usando OpenMP + * `-I/home/....`: o caminho passado será usado na busca por `include`s. Coloque o caminho do repositório da `thrust` + * `-fopenmp`: já conhecemos este ;) + * `-x c++`: força a compilação de arquivos `.cu` como código fonte C++ + +!!! example + Verifique que sua instalação funciona compilando o arquivo abaixo. + + >$ g++ -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP -I/caminho/para/thrust/ -fopenmp -x c++ exemplo1-criacao-iteracao.cu -o exemplo1-cpu + +Se der tudo certo a execução do programa acima deverá gerar um executável `exemplo1-cpu` que roda e produz o seguinte resultado. + +``` +Host vector: 0 0 12 0 35 +Device vector 0 0 0 0 35 +``` + +!!! danger "Nem tudo o que roda usando thrust/OpenMP roda em GPU. Por essa razão, esse recurso será usado somente para testes e nunca para avaliação." + +## Transferência de dados + +Como visto na expositiva, a CPU e a GPU possuem espaços de endereçamento completamente distintos. Ou seja, a CPU não consegue acessar os dados na memória da GPU e vice-versa. A `thrust` disponibiliza somente um tipo de container (`vector`) e facilita este gerenciamento deixando explícito se ele está alocado na CPU (`host`) ou na GPU (`device`). A cópia CPU$\leftrightarrow$ GPU é feita implicitamente quando criamos um `device_vector` ou quando usamos a operação de atribuição entre `host_vector` e `device_vector`. Veja o exemplo abaixo: + +```cpp +thrust::host_vector vec_cpu(10); // alocado na CPU + +vec1[0] = 20; +vec2[1] = 30; + +// aloca vetor na GPU e transfere dados CPU->GPU +thrust::device_vector vec_gpu (vec_cpu); + +//processa vec_gpu + +vec_cpu = vec_gpu; // copia dados GPU -> CPU +``` + +A `thrust` usa iteradores em todas as suas funções. Pense em um iterador como um ponteiro para os elementos do array. Porém, um iterador é mais esperto: ele guarda também o tipo do vetor original e suporta operações `++` e `*` para qualquer tipo de dado iterado de maneira transparente. + +Vetores `thrust` aceitam os métodos `v.begin()` para retornar um iterador para o começo do vetor e `v.end()` para um iterador para o fim (depois do último elemento). Podemos também somar um valor `n` a um iterador. Isto é equivalente a fazer `n` vezes a operação `++`. Veja abaixo um exemplo de uso das funções `fill` e `sequence` para preencher valores em um vetor de maneira eficiente. + +```cpp +thrust::device_vector v(5, 0); // vetor de 5 ints zerado +// v = {0, 0, 0, 0, 0} +thrust::sequence(v.begin(), v.end()); // preenche com 0, 1, 2, .... +// v = {0, 1, 2, 3, 4} +thrust::fill(v.begin(), v.begin()+2, 13); // dois primeiros elementos = 13 +// v = {13, 13, 2, 3, 4} +``` + +!!! question + Consulte o arquivo *exemplo1-criacao-iteracao.cu* para um exemplo completo de alocação e transferência de dados e do uso de iteradores. + +!!! example + O fluxo de trabalho "normal" de aplicações usando GPU é receber os dados em um vetor na CPU e copiá-los para a GPU para fazer processamentos. Crie um programa que lê uma sequência de `double`s da entrada padrão em um `thrust::host_vector` e os copia para um `thrust::device_vector`. Teste seu programa com o arquivo *stocks-google.txt*, que contém o preço das ações do Google nos últimos 10 anos. + +!!! example + A criação de um `device_vector` é demorada. Meça o tempo que a operação de alocação e cópia demora e imprima na saída de erros. (Use `std::chrono`). + +## Operações de redução + +Uma operação genérica de *redução* transforma um vetor em um único valor. Exemplos clássicos de operações de redução incluem *soma*, *média* e *mínimo/máximo* de um vetor. + +A `thrust` disponibiliza este tipo de operação otimizada em *GPU* usando a função `thrust::reduce`: + +```cpp +val = thrust::reduce(iter_comeco, iter_fim, inicial, op); +// iter_comeco: iterador para o começo dos dados +// iter_fim: iterador para o fim dos dados +// inicial: valor inicial +// op: operação a ser feita. +``` + +Um exemplo de uso de redução para computar o máximo pode ser visto [aqui](http://thrust.github.io/doc/group__reductions_ga5e9cef4919927834bec50fc4829f6e6b.html#ga5e9cef4919927834bec50fc4829f6e6b). A lista completa de funções que podem ser usadas no lugar de `op` pode ser vista [neste link](http://thrust.github.io/doc/group__predefined__function__objects.html). + +!!! example + Continuando o exercício anterior, calcule as seguintes medidas. Não se esqueça de passar o `device_vector` para a sua função `reduce` + + 1. O preço médio das ações nos últimos 10 anos. + 1. O preço médio das ações no último ano (365 dias atrás). + 1. O maior e o menor preço da sequência inteira e do último ano. + +Você pode consultar todos os tipos de reduções disponíveis no [site da thrust](https://thrust.github.io/doc/group__reductions.html). + + +## Transformações ponto a ponto + +Além de operações de redução também podemos fazer operações ponto a ponto em somente um vetor (como negar todas as componentes ou calcular os quadrados) quanto entre dois vetores (como somar dois vetores componente por componente ou comparar cada elemento com seu correspondente em outro vetor). A `thrust` dá o nome de `transformation` para este tipo de operação. + +```cpp +// para operações entre dois vetores iter1 e iter2. resultado armazenado em out +thrust::transform(iter1_comeco, iter1_fim, iter2_comeco, out_comeco, op); +// iter1_comeco: iterador para o começo de iter1 +// iter1_fim: iterador para o fim de iter1 +// iter2_comeco: iterador para o começo de iter2 +// out_comeco: iterador para o começo de out +// op: operação a ser realizada. +``` + +Um exemplo concreto pode ser visto abaixo. O código completo está em `exemplo2-transform.cu` + +```cpp +thrust::device_vector V1(10, 0); +thrust::device_vector V2(10, 0); +thrust::device_vector V3(10, 0); +thrust::device_vector V4(10, 0); +// inicializa V1 e V2 aqui + +//soma V1 e V2 +thrust::transform(V1.begin(), V1.end(), V2.begin(), V3.begin(), thrust::plus()); + +// multiplica V1 por 0.5 +thrust::transform(V1.begin(), V1.end(), + thrust::constant_iterator(0.5), + V4.begin(), thrust::multiplies()); +``` + +As operações que foram usadas no `reduce` também podem ser usadas em um `transform`. Não se esqueça de consultar [a lista de operações](http://thrust.github.io/doc/group__predefined__function__objects.html) para fazer este exercício. + +!!! example + Vamos agora trabalhar com o arquivo `stocks2.csv`. Ele contém a série histórica de ações da Apple e da Microsoft. Seu objetivo é calcular a diferença média entre os preços das ações AAPL e MSFT. + + **Dica**: quebre o problema em duas partes. Primeiro calcule a diferença entre os preços e guarde isto em um vetor. Depois compute a média deste vetor. + diff --git a/material/aulas/14-intro-gpu/slides.pdf b/material/aulas/14-intro-gpu/slides.pdf new file mode 100644 index 000000000..b802e6626 Binary files /dev/null and b/material/aulas/14-intro-gpu/slides.pdf differ diff --git a/material/aulas/14-intro-gpu/stocks.cu b/material/aulas/14-intro-gpu/stocks.cu new file mode 100644 index 000000000..c550cfa6d --- /dev/null +++ b/material/aulas/14-intro-gpu/stocks.cu @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include + +int main() { + // Alocação do vetor na CPU e leitura de dados da entrada-padrão + thrust::host_vector vcpu(2518); + for(int i=0;i<2518;i++) + std::cin>>vcpu[i]; + + // Alocação do vetor na GPU e inicialização de dados + thrust::device_vector vgpu(vcpu); + + // Percurso do vetor na CPU - RÁPIDO + std::cout <<"CPU: "; + for (thrust::host_vector::iterator elem = vcpu.begin(); elem != vcpu.end(); elem++) { + std::cout << *elem << " "; + } + + // Maneira mais compacta de percorrer o vetor + std::cout <<"\nCPU: "; + thrust::copy(vcpu.begin(), vcpu.end(), std::ostream_iterator(std::cout, " ")); + + + // Percurso do vetor na GPU - LENTO + std::cout <<"\nGPU: "; + for (thrust::device_vector::iterator elem = vgpu.begin(); elem != vgpu.end(); elem++) { + std::cout << *elem << " "; + } + + // Soma todos os elementos do vetor na GPU + double soma=thrust::reduce(vgpu.begin(), vgpu.end(), (double) 0, thrust::plus()); + std::cout<<"\nSoma: "<< soma; +} diff --git a/gpu/22-introducao/stocks-google.txt b/material/aulas/14-intro-gpu/stocks.txt similarity index 100% rename from gpu/22-introducao/stocks-google.txt rename to material/aulas/14-intro-gpu/stocks.txt diff --git a/gpu/22-introducao/stocks2.csv b/material/aulas/14-intro-gpu/stocks2.csv similarity index 100% rename from gpu/22-introducao/stocks2.csv rename to material/aulas/14-intro-gpu/stocks2.csv diff --git a/material/aulas/15-gpu-iteradores/index.md b/material/aulas/15-gpu-iteradores/index.md new file mode 100644 index 000000000..d64d8042c --- /dev/null +++ b/material/aulas/15-gpu-iteradores/index.md @@ -0,0 +1,71 @@ +# 18 - Iteradores em Thrust + +Na última aula conseguimos rodar algumas funções em GPU e medir o custo de transferência de dados. Chegamos a conclusão de que, para valer a pena usar a GPU, ou precisamos tratar muitos dados ou precisamos fazer tratamentos pesados. + +!!! warning + Nesta aula trabalharemos extensivamente com a API da `thrust` e pediremos para que vocês consultem a [documentação oficial](https://thrust.github.io/doc/modules.html) da biblioteca. Também pode ser útil ver a [seção de exemplos](https://github.com/NVIDIA/thrust/tree/master/examples) do repositório. + +## Iteradores + +Continuando a partir do último item da aula anterior, suponha que você deseja calcular a variância das diferenças. Agora que já temos a média, a fórmula da variância é dada por + +$$\frac{1}{n}\sum_{i=0}^n (x_i - \mu)^2$$ + +!!! example + Já sabemos tudo o que precisamos para fazer este cálculo. Crie um vetor em que todas as componentes sejam iguais a média (usando `thrust::fill`) e compute a variância usando a fórmula acima. + +Apesar do código acima funcionar, ele tem um problema grave: é preciso alocar um vetor inteiro somente para preenchê-lo com valores iguais! Se estivermos trabalhando com muitos dados isto significa diminuir bastante a quantidade de dados que conseguimos tratar antes de acabar com a memória da GPU. Podemos contornar isso usando iteradores, que são vetores gerados dinamicamente pela thrust a partir de um valor único ou a partir de outros vetores. + +!!! example + Pesquise a documentação de [thrust::constant_iterator](https://thrust.github.io/doc/classthrust_1_1constant__iterator.html) e use-o para substituir a alocação de memória extra no exercício acima. + +Vamos agora nos preparar para a parte 2 criando um programa novamente em cima do arquivo `stocks.txt`. + +!!! example + Leia o arquivo `stocks.txt` e crie um vetor contendo a diferença entre o dia atual e o anterior. Ou seja, dado que o vetor de saída tenha nome `ganho_diario` e o de entrada `stocks`, temos que + + ```ganho_diario[i] = stocks[i+1] - stocks[i]``` + + Claramente `ganho_diario.size() == stocks.size() - 1`. Leve isto em conta ao utilizar a operação `transform` para criar o vetor `ganho_diario`. + + +## Operações customizáveis + +Com o vetor `ganho_diario` acima conseguimos saber se o valor da ação subiu ou caiu de um dia para o outro! Duas perguntas se seguem: + +1. quantas vezes o valor subiu? +2. qual é o aumento médio, considerando só as vezes em que o valor aumentou de fato? + +Podemos implementar essas lógicas usando operações customizadas. Apesar de ser possível escrever essas funções do zero, a `thrust` já possui diversas funções de reduções customizáveis. + +!!! warning + É sempre importante consultar a documentação para entender como essa função será aplicada. Em alguns casos é necessário que a função passada obedeça algumas restrições para que os resultados obtidos façam sentido. + +!!! question short + A `thrust` já tem suporte a operações de redução que são contagens. Veja sua documentação oficial [neste link](https://thrust.github.io/doc/group__counting.html). Qual função dessa página você usaria para contar somente os elementos positivos de `ganhos_diarios`? + +!!! warning + A função `count_if` está atualmente com um erro em sua documentação ([link da issue](https://github.com/thrust/thrust/issues/1148)). Não se esqueça de colocar `const` no parâmetro de `operator()`. + +!!! example + Use a função acima para calcular quantas vezes o valor da ação subiu. + + ??? details "Resposta" + `1309` + +Vamos agora para o segundo item: "Calcular o aumento médio, considerando somente as vezes em que o valor aumentou de fato". Uma estratégia possível é **zerar** todos os elementos negativos do vetor e depois calcular sua soma. + +!!! question short + A [documentação sobre transformações](https://thrust.github.io/doc/group__transformations.html) é bastante vasta. Você consegue encontrar alguma função que possa **substituir** elementos de um vetor baseado em uma condição booleana? + + !!! details + `replace_if` + +!!! example + Use a função acima para substituir todos os valores negativos por `0` em `ganhos_diarios`. +ß +!!! example + Calcule agora e média dos valores positivos do vetor. Você já tem todos os que são positivos no exercício acima e a quantidade de valores positivos. + + ??? details "Resposta" + `5,25179` diff --git a/material/aulas/15-gpu-iteradores/slides.pdf b/material/aulas/15-gpu-iteradores/slides.pdf new file mode 100644 index 000000000..2cf751ccd Binary files /dev/null and b/material/aulas/15-gpu-iteradores/slides.pdf differ diff --git a/material/aulas/16-gpu-customizacao/index.md b/material/aulas/16-gpu-customizacao/index.md new file mode 100644 index 000000000..3d19a9169 --- /dev/null +++ b/material/aulas/16-gpu-customizacao/index.md @@ -0,0 +1,209 @@ +# Thrust - Operações customizadas + +Vamos conhecer como criar operações customizadas com Thrust. Para isso, vamos resolver um problema clássico denominado `Saxpy`, o que significa `Single precision A X plus Y` . Na prática, consiste em calcular um valor `z`, que é dado por `ax + y`, onde `a` é uma constante e `x` e `y` são vetores. + +O código-fonte abaixo resolve o `Saxpy` em C++/Thrust. Vamos avaliá-lo. + +```c++ + #include + #include + #include + #include + #include + #include + #include + #include + #include + + using namespace std; + +struct saxpy +{ + int a; + saxpy(int a_) : a(a_) {}; + __host__ __device__ + double operator()(const int& x, const int& y) { + return a * x + y; + } +}; + +int main(int argc, char* argv[]) { + if (argc != 3) { + cerr << + "***Numero incorreto de argumentos ***\n"; + return 1; + } + + int n = atoi(argv[1]); + int m = atoi(argv[2]); + + //gerar numeros aleatorios + thrust::host_vector a(n); + thrust::host_vector b(n); + thrust::host_vector c(n); + thrust::generate(a.begin(), a.end(), rand); + thrust::generate(b.begin(), b.end(), rand); + + //transferimos para a GPU + thrust::device_vector d_a = a; + thrust::device_vector d_b = b; + + //transformacao + + thrust::transform(d_a.begin(), d_a.end(), + d_b.begin(), d_b.end(), + saxpy(m)); + + thrust::copy(d_b.begin(), d_b.end(), + c.begin()); + + for (int i = 0; i < n; i++ ) + cout << setw(6) << c[i] << " = " + << setw(2) << m + << "*" << setw(5) << a[i] + << "+" << setw(5) << b[i] + << endl; + +} + + + +``` + + + +## Operações customizadas em `transform` + +Para criar nossas próprias operações usamos a seguinte sintaxe: + +```.cpp +struct custom_transform +{ + // essas marcações indicam que o código deve ser compilado para CPU (host) + // e GPU (device) + // IMPORTANTE: somente código com a marcação __device__ é compilado para GPU + __host__ __device__ + + double operator()(const double& x, const double& y) { + // isto pode ser usado com um transform que usa dois vetores + // e coloca o resultado em um terceiro. + + // x é um elemento do primeiro vetor + // y é o elemento correspondente do segundo vetor + + // o valor retornado é colocado no vetor de resultados + + // para fazer operações unárias basta receber somente um argumento. + } +}; +``` + +A operação acima seria aceita em um transform como o abaixo: + + +```cpp +thrust::device_vector A, B, C; +thrust::transform(A.begin(), A.end(), B.begin(), C.begin(), custom_transform()); +``` + +Note que os tipos dos vetores devem bater com os tipos declarados no `struct`. Por vezes precisamos receber parâmetros para a operação customizada funcionar. Um truque comum é adicionar atributos no `struct` usado como operação: + +```cpp +struct T { + int attr; + + T(int a): attr(a) {}; + + // TODO: operação customizada aqui +}; +``` + +O valor `attr` estará disponível para uso dentro da operação customizada. A linha `T(int a): attr(a) {}` declara o construtor do `struct T`. Ela faz com que o atributo `attr` seja inicializado com o valor do parâmetro `a`. Se houver mais de uma atribuição parâmetro - atributo é só usar `,` para separar as inicializações. + + +# Calculando a norma / magnitude de um vetor + +A magnitude de um vetor consiste na raiz quadrada da soma do quadrado de seus elementos. Dessa forma, você deve complementar o código abaixo, de modo a criar uma transformação customizada `square`, a qual faz uma transformação no vetor transformando os seus elementos ao quadrado, e posteriormente você deve fazer uma redução, de modo a obter a magnitude do vetor. + +```c++ + #include + #include + #include + #include + #include + #include +//INSIRA AS IMPORTACOES NECESSARIAS DA THRUST + #include + #include + + using namespace std::chrono; + + void reportTime(const char* msg, steady_clock::duration span) { + auto ms = duration_cast(span); + std::cout << msg << " - levou - " << + ms.count() << " milisegundos" << std::endl; + } + + // CRIE UMA FUNCTOR PARA CALCULAR A SQUARE + + + + // IMPLEMENTE O CALCULO DA MAGNITUDE COM THRUST + float magnitude( ) { + float result; + + // ... add Thrust calls + // AQUI VAO AS CHAMADAS THRUST + + return result; + } + + int main(int argc, char** argv) { + if (argc != 2) { + std::cerr << argv[0] << ": numero invalido de argumentos\n"; + std::cerr << "uso: " << argv[0] << " tamanho do vetor\n"; + return 1; + } + int n = std::atoi(argv[1]); //numero de elementos + steady_clock::time_point ts, te; + + // Faça um vector em thrust + + + + // inicilize o vector + ts = steady_clock::now(); + + std::generate( , , std::rand); + + + te = steady_clock::now(); + reportTime("Inicializacao", te - ts); + + // Calcule a magnitude do vetor + ts = steady_clock::now(); + float len = magnitude(v_d); + te = steady_clock::now(); + reportTime("Tempo para calculo", te - ts); + + + std::cout << std::fixed << std::setprecision(4); + std::cout << "Magnitude : " << len << std::endl; + } + + +``` + +# Fusion + +Há operações de transformação e redução feitas anteriormente que realizam muita troca de dados. Seria possível otimizar isso? + +A resposta é sim. A Thrust possui o conceito de `fusion kernel`, o que representa uma estratégia para otimizar transformações e reduções. Modifique o código anteriormente desenvolvido, agora fazendo uso da transformação abaixo: + +```c++ + +std::sqrt(thrust::transform_reduce( v.begin(), v.end(), unary_op, init, binary_op)); + +``` + +Pergunta: para o problema da magnitude, quem é a `unary_op` e a `binary_op`? Qual o valor de `init`? \ No newline at end of file diff --git a/material/aulas/17-gpu-aleatoriedade/index.md b/material/aulas/17-gpu-aleatoriedade/index.md new file mode 100644 index 000000000..f0dbfe158 --- /dev/null +++ b/material/aulas/17-gpu-aleatoriedade/index.md @@ -0,0 +1,120 @@ +# 17 - GPU e números aleatórios + +## Revisão de números aleatórios + +Um gerador de números pseudo-aleatórios (RNG) é um algoritmo **determinístico** que gera uma sequência de números que **parece** aleatória. Essa frase possui dois termos importantes que precisamos destrinchar: + +* **determinístico**: Um *RNG* tipicamente recebe como entrada um inteiro *seed* (que representa uma sequência de bits "aleatória") e gera uma sequência de números baseada no *seed*. Ou seja, o algoritmo é **determinístico** pois gera sempre a mesma sequência para uma determinada entrada (*seed*). +* **parece aleatória**: Se compararmos duas sequências de números, uma gerada por um *RNG* e outra por uma distribuição uniforme de verdade, não conseguimos dizer qual distribuição foi gerada pelo *RNG*. + +Ou seja, ao escolhermos um *seed* a sequência gerada será sempre a mesma, mesmo se executarmos o programa em outras máquinas. Isso torna a utilização de *RNGs* para experimentos bastante interessante: é possível **reproduzir** os resultados feitos por outros desenvolvedores/cientistas. Para isto é necessário + +1. que o programa permita escolher o *seed* da simulação; +1. que o *seed* usado seja publicado junto com os resultados. + +Muitas implementações de *RNGs* são divididas em duas partes: + +1. **engine**: algoritmo que gera um inteiro cujos bits formam uma sequência pseudo-aleatória. +1. **distribution**: utiliza os bits acima para retornar números que sigam alguma distribuição estatística (como normal ou uniforme). + +A `thrust` contém uma API de geração de números aleatórios muito parecida com a API da biblioteca padrão de C++. + +!!! question short + Consulte a [documentação oficial](https://thrust.github.io/doc/modules.html) da `thrust` e encontre as páginas que descrevem os **engines** e **distributions** implementados. + + + + !!! details "Resposta" + Abaixo temos um trecho de um código-fonte que nos mostra como gerar números aleatórios com thrust. +``` +#include +#include +#include +#include +#include + +int main() { +thrust::default_random_engine eng(10); +thrust::uniform_real_distribution d(20, 30); + +for (int i = 0; i < 10; i++) { + std::cout << d(eng) << "\n"; +} + +} +``` + + +Vamos agora fazer um uso básico dessas funções. + +!!! example + Crie um programa que leia um inteiro *seed* do terminal e: + + 1. crie um objeto `default_random_engine` que o utilize como seed. + 1. mostre no terminal uma sequência de 10 números fracionários tirados de uma distribuição uniforme `[25, 40]`. + + Seu programa deverá estar implementado usando os tipos definidos em `thrust::random`. + +Um ponto importante da API `thrust` para geração de números aleatórios é que essas funções podem ser chamadas dentro de operações customizadas! Nosso próximo exercício trata justamente deste uso. + +!!! example + Faça um programa que cria um vetor com 10 elementos e aplica uma operação customizada que seta cada elemento com um valor aleatório. Use as mesmas configurações do exercício anterior. + !!! details "Resposta" + Use o trecho de código disponibilizado neste [gist](https://gist.github.com/andrefmb/df1f7d24077fb1a510c680cfffcdee75) para ver a estrutura da sua função customizada e como você pode criar uma transformação que a invoca para cada elemento de um vetor. + +!!! warning + Você pode prosseguir mesmo se seu vetor tem 10 números iguais. + +## Gerando números pseudo-aleatórios em GPU + +Um desafio em programas paralelos é gerar sequências pseudo-aleatórias de qualidade. Se não tormarmos cuidado acabamos gerando os mesmos números em threads diferentes e desperdiçamos grande quantidade de trabalho! + +!!! question short + Que abordagem você usou para gerar números aleatórios em paralelo com OpenMP? + + !!! details "Resposta" + Se você realizou todas as tarefas, deve ter criado um gerador de números pseudo-aleatórios para cada thread para calcular o valor de $\pi$ usando Monte Carlo. + +!!! question short + Você acha que poderíamos aplicar a mesma abordagem para geração de números aleatórios em GPU? Por quê? + + !!! details "Resposta" + Sem cuidados adicionais, não obteríamos bons resultados. A abordagem usada na aula de openMP pressupõe um número relativamente pequeno de threads, de forma que a sequência criada por cada gerador é menor, porém grande o suficiente para ter qualidade. No caso de usarmos uma GPU, o número de threads pode ser muito grande, de forma que cada gerador geraria sequências muito curtas, e por isso perderíamos em qualidade da sequência. + +## Seeds em programas massivamente paralelos + +Em computação massivamente paralela, em geral, existem duas abordagens. + +**Abordagem 1**: usar *seeds* diferentes em cada thread. + +**Abordagem 2**: usar a mesma *seed* em todas as threads, mas cada uma começa em um ponto diferente da sequência daquela seed. + +Note que em ambos os casos os resultados dependem do número de threads usadas! Como vimos em aulas anteriores, um *RNG* tem estado interno e não pode ser facilmente compartilhado entre várias threads. + + +!!! example + Implemente a abordagem 1 no exercício da parte anterior. Para isto você pode usar a estratégia de acesso direto aos dados e usar o índice recebido como *seed*. Lembre-se que a seed é definida ao criar o `default_random_engine`. No exemplo abaixo, você pode ver que ela é definida com o valor `10`. +```c++ + thrust::default_random_engine eng(10); +``` +Você deve ter percebido que todos os números gerados são parecidos, mas não idênticos. Isso ocorre pois geradores com *seed*s próximos geram sequências que são inicialmente parecidas (e depois diferem). Podemos consertar isto usando seeds mais distantes. + +!!! example + Multiplique `i` por um valor grande e tente de novo. Verifique que agora os números são diferentes + + +## Exercício prático + +Vamos trabalhar com um método probabilístico de estimação do `pi` neste último exercício. O algoritmo sequencial se baseia em sorteios de pontos dentro de um quadrado de lado `2`. Se a distância entre o ponto e o centro do quadrado for menor que 1 então o ponto cai dentro do círculo inscrito no quadrado. A quantidade de pontos que caem dentro do quadrado é proporcional a $\pi$. + +1. `sum = 0` +1. De `i=0` até `N`: + 1. sorteie pontos $x,y \in [0,1]$ + 1. se $x^2 + y^2 \leq 1$, `sum += 1` +1. devolva `4 * sum / N` + +!!! example + Resgate a implementação sequencial deste algoritmo realizada na aula (disponível neste [gist](https://gist.github.com/andrefmb/ce5e282c6b9cdf80b5fcbbd71642d497)) e rode-a para `N=100000000` + +!!! example + Paralelize o código acima em GPU. Use ambas as abordagens acima em programas distintos para lidar com os geradores de números aleatórios. \ No newline at end of file diff --git a/material/config.yml b/material/config.yml new file mode 100644 index 000000000..e0b379470 --- /dev/null +++ b/material/config.yml @@ -0,0 +1,14 @@ +extensions: + - translate-admonitions + - quiz + - short-questions + - progress-check + - slides + - counter + +config: + short-questions: + text: "Validar" + counter: + - question + - tip diff --git a/material/css/cabecalho.png b/material/css/cabecalho.png new file mode 100644 index 000000000..d31193493 Binary files /dev/null and b/material/css/cabecalho.png differ diff --git a/material/css/extra.css b/material/css/extra.css new file mode 100644 index 000000000..d04359e0c --- /dev/null +++ b/material/css/extra.css @@ -0,0 +1,3 @@ +.md-content a { + text-decoration: underline; +} diff --git a/material/css/logo.png b/material/css/logo.png new file mode 100644 index 000000000..535257cd0 Binary files /dev/null and b/material/css/logo.png differ diff --git a/material/css/printing.css b/material/css/printing.css new file mode 100644 index 000000000..e7e4df13f --- /dev/null +++ b/material/css/printing.css @@ -0,0 +1,84 @@ +.md-printing-header { + display: none; +} + + +@media print { + .no-print { + display: none; + } + + .admonition.note.short, .admonition.question.short { + padding-bottom: 100px; + } + + .admonition.note.medium, .admonition.question.medium { + padding-bottom: 200px; + } + + + .admonition.note.long, .admonition.question.long { + padding-bottom: 300px; + } + + .admonition, .codehilite { + break-inside: avoid; + } + + .md-printing-header { + margin-top: 0px; + display: block; + width: 100%; + + font-family: "Roboto","Helvetica Neue",Helvetica,Arial,sans-serif; + color: rgba(0,0,0,.54); + } + + + .md-printing-header .cabecalho { + position: absolute; + right: 0px; + max-width: 7cm; + } + + .md-printing-header .logo { + max-width: 3cm; + margin-top: 1cm; + margin-left: 1cm; + } + + .md-printing-header .frontmatter { + width: 20cm; + text-align: center; + margin-left: auto; + margin-right: auto; + } + + .md-printing-header .frontmatter .materia { + font-size: 20pt; + } + + .md-printing-header .frontmatter .professor { + font-size: 18pt; + } + + .md-printing-header .frontmatter .semestre { + font-size: 15pt; + } + + .md-content { + margin-right: 1.5cm; + margin-left: 1.5cm; + } + + @page + { + size: auto; + margin: 0mm 0mm 0mm 0mm; + } + +} + + + + diff --git a/material/index.md b/material/index.md new file mode 100644 index 000000000..229b2a5c0 --- /dev/null +++ b/material/index.md @@ -0,0 +1,33 @@ +# SuperComputação + +Bem vindo ao curso de SuperComputação 2022/2. + +* **Professores**: + * Luciano Pereira Soares + +* **Horário das aulas**: + * TER - 9:45 + * SEX - 13:30 + * Atendimento TER - 15:30 + + +## Avaliação + +A avaliação da disciplina será composta por provas, projetos e atividades de acompanhamentos: + +* Provas Intermediária (PI) e Final (PF) serão compostas por exercícios práticos a serem feitos durante o tempo de prova; +* O projeto da disciplina será composto por múltiplas partes. [Mais detalhes na página de projetos](projetos) + +A média final é dada por + +* 55% Projeto +* 45% média de Provas + +!!! warning "Condições de barreira" + * Média de provas >= 4,5 + * PI, PF >= 4,0 + * Projeto >= 5 (não serão aceitos projetos atrasados) + + Caso estas condições não sejam cumpridas ver detalhes na [aula 01](aulas/01-introducao/slides.pdf) + +!!! failure "Mesmo que todas as condições acima sejam satisfeitas é possível reprovar. Um desempenho abaixo do esperado em uma atividade precisa ser compensado com um desempenho melhor em outra atividade." diff --git a/material/js/counter.js b/material/js/counter.js new file mode 100644 index 000000000..793605a49 --- /dev/null +++ b/material/js/counter.js @@ -0,0 +1,13 @@ +{ + let admonitions_for_counting = ["question", "example"]; + + for (const admonition_type of admonitions_for_counting) { + let elements = document.querySelectorAll(".admonition." + admonition_type); + let count = 1; + for (const element of elements) { + let title = element.querySelector(".admonition-title"); + title.innerHTML += " " + count; + count++; + } + } +} \ No newline at end of file diff --git a/material/js/markdown-enhancer.js b/material/js/markdown-enhancer.js new file mode 100644 index 000000000..cbfccad98 --- /dev/null +++ b/material/js/markdown-enhancer.js @@ -0,0 +1,21 @@ +{ + // HACK: depends on mkdocs-material + let home_link = document.querySelector(".md-header a.md-header-nav__button.md-logo"); + window.site_url = home_link.href; + console.log(window.site_url + "config.yml"); + fetch(window.site_url + "config.yml").then((resp) => { + return resp.text(); + }).then((text) => { + let obj = jsyaml.load(text); + obj.extensions.forEach((ext) => { + let scr = document.createElement("script"); + scr.type = "text/javascript"; + scr.src = window.site_url + "js/" + ext + ".js"; + + document.body.appendChild(scr); + }); + + window.ihandout_config = obj.config; + }); + +} \ No newline at end of file diff --git a/material/js/progress-check.js b/material/js/progress-check.js new file mode 100644 index 000000000..e6900016b --- /dev/null +++ b/material/js/progress-check.js @@ -0,0 +1,72 @@ +{ + // HACK: depends on mkdocs-material styles + let style_progress = document.head.appendChild(document.createElement("style")); + style_progress.innerText = ` + article input[type=button].checkpoint { + margin-left: auto; + margin-right: auto; + display: block; + + background-color: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); + font-size: 0.8rem; + padding: 10px; + border-radius: 3px; + } + `; + + let document_addr = document.location.pathname; + + let all_checkpoints = document.querySelectorAll(".admonition.progress"); + if (all_checkpoints.length > 0) { + let next = all_checkpoints[0].nextElementSibling; + while (next != null) { + next.style.display = "none"; + next = next.nextElementSibling; + } + } + + all_checkpoints.forEach((item, k) => { + let text = item.querySelector('p:not(.admonition-title)').innerText; + let but = document.createElement("input"); + but.type = "button"; + but.value = text; + but.classList.add("checkpoint"); + but.style.display = item.style.display; + let storage_key = document_addr + "/checkpoint-" + k; + + item.parentElement.replaceChild(but, item); + but.addEventListener("click", (evt) => { + let prev = but.previousElementSibling; + while (prev != null) { + if (prev.dataset.answered !== undefined && + prev.dataset.answered === "false") { + return; + } + prev = prev.previousElementSibling; + } + + localStorage[storage_key] = true; + + let next = but.nextElementSibling; + while (next != null) { + next.style.display = ""; + if (next.classList.contains("checkpoint")) { + break; + } + next = next.nextElementSibling; + } + + but.remove(); + }); + }); + + let all_checkpoint_buttons = document.querySelectorAll(".checkpoint"); + all_checkpoint_buttons.forEach((item, k) => { + let storage_key = document_addr + "/checkpoint-" + k; + if (localStorage[storage_key] == "true") { + item.click(); + } + }); + +} \ No newline at end of file diff --git a/material/js/quiz.js b/material/js/quiz.js new file mode 100644 index 000000000..8de17ddeb --- /dev/null +++ b/material/js/quiz.js @@ -0,0 +1,103 @@ +{ + function toggle_disabled(form_quiz_choices, disable=false, uncheck=false) { + form_quiz_choices.forEach((item) => { + let checkbox = item.querySelector("input[type=checkbox]"); + if (uncheck) checkbox.checked = false; + checkbox.disabled = disable; + }); + } + + // HACK: depends on pymdownx.tasklist and mkdocs-material (custom checkbox) + let style_quiz = document.head.appendChild(document.createElement("style")); + style_quiz.innerHTML = ` + input[type=checkbox].wrong-answer + .task-list-indicator::before { + background-color: #DD1111 !important; + } + `; + + let document_addr = document.location.pathname; + let multiple_choice_questions = document.querySelectorAll(".admonition.question.choice"); + + multiple_choice_questions.forEach((item, k) => { + item.dataset.answered = false; + let storage_key = document_addr + "/choice-" + k; + let previous_answer = localStorage.getItem(storage_key); + + let choices_ul = item.querySelector(".task-list"); + let choices_original = item.querySelectorAll(".task-list-item"); + let correct_choice = null; + + choices_ul.remove(); + + let form_quiz = document.createElement("form"); + let form_quiz_ul = choices_ul.cloneNode(true); + let form_quiz_choices = form_quiz_ul.querySelectorAll(".task-list-item"); + form_quiz.appendChild(form_quiz_ul); + + let answer = item.querySelector(".admonition.details"); + if (answer) { + answer.remove(); + answer.style.display = "none"; + form_quiz.appendChild(answer); + } + + toggle_disabled(form_quiz_choices, false, false); + + for (let i = 0; i < choices_original.length; i++) { + let check_original = choices_original[i].querySelector("input[type=checkbox]"); + let check_quiz = form_quiz_choices[i].querySelector("input[type=checkbox]"); + + if (check_original.checked) { + correct_choice = form_quiz_choices[i]; + check_quiz.checked = false; + } + + + if (previous_answer === null) { + form_quiz_choices[i].addEventListener("click", (evt) => { + if (check_quiz.disabled) return false; + evt.preventDefault(); + check_quiz.checked = true; + let choice = form_quiz_choices[i]; + + correct_choice.querySelector("input[type=checkbox]").checked = true; + if (choice != correct_choice) { + check_quiz.classList.add("wrong-answer"); + } + + localStorage[storage_key] = i; + + toggle_disabled(form_quiz_choices, true); + + if (answer) { + answer.style.display = ""; + } + + item.dataset.answered = true; + + return true; + }); + } else { + check_quiz.disabled = true; + } + } + + if (previous_answer !== null) { + correct_choice.querySelector("input[type=checkbox]").checked = true; + let idx = parseInt(previous_answer); + if (form_quiz_choices[idx] != correct_choice) { + let checkbox = form_quiz_choices[idx].querySelector("input[type=checkbox]") + checkbox.checked = true; + checkbox.classList.add("wrong-answer"); + } + + if (answer) { + answer.style.display = ""; + } + + item.dataset.answered = true; + } + + item.appendChild(form_quiz); + }); +} \ No newline at end of file diff --git a/material/js/short-questions.js b/material/js/short-questions.js new file mode 100644 index 000000000..35626a3d2 --- /dev/null +++ b/material/js/short-questions.js @@ -0,0 +1,85 @@ +{ + // HACK: depends on mkdocs-material + let style_short_questions = document.head.appendChild(document.createElement("style")); + style_short_questions.innerText = ` + .admonition.question.short input[type=text] { + border: 1px solid #555555; + border-radius: 3px; + } + + .admonition.question.short input[type=button] { + background-color: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); + + margin-left: 10px; + margin-right: 10px; + padding: 5px; + border-radius: 3px; + } + + .admonition.question.short > .answer-line { + display: flex; + flex-direction: row; + width: 100%; + } + + .answer-line > input[type=text] { + flex-grow: 4; + } + `; + + + let document_addr = document.location.pathname; + + let button_text = "Validate"; + if (window.ihandout_config["short-questions"]) { + button_text = window.ihandout_config["short-questions"]["text"]; + } + + let short_questions = document.querySelectorAll(".admonition.question.short"); + + short_questions.forEach((item, k) => { + let answer = item.querySelector(".details"); + if (!answer) return; + answer.remove(); + item.dataset.answered = false; + + let storage_key = document_addr + "/short-question-" + k; + let previous_answer = localStorage.getItem(storage_key); + + let answer_line = document.createElement("div"); + answer_line.classList.add("answer-line"); + item.appendChild(answer_line); + + let text = document.createElement("input"); + text.type = "text"; + + if (previous_answer) { + text.value = previous_answer; + text.disabled = true; + answer_line.appendChild(text); + item.appendChild(answer); + item.dataset.answered = true; + } else { + let validate_button = document.createElement("input"); + validate_button.type = "button"; + validate_button.value = button_text; + + answer_line.appendChild(text); + answer_line.appendChild(validate_button); + + validate_button.addEventListener("click", (evt) => { + let student_answer = text.value.trim(); + if (student_answer != "") { + item.appendChild(answer); + localStorage[storage_key] = student_answer; + text.disabled = true; + validate_button.remove(); + item.dataset.answered = true; + } + + }); + } + + }); +} \ No newline at end of file diff --git a/material/js/slides.js b/material/js/slides.js new file mode 100644 index 000000000..b38f37b13 --- /dev/null +++ b/material/js/slides.js @@ -0,0 +1,32 @@ +{ + let current_document = window.location.href; + let last_slash = current_document.lastIndexOf("/"); + + let slide_path = ""; + if (last_slash == current_document.length-1) { + slide_path = current_document + "slides.pdf"; + } else { + slide_path = current_document.substring(0, last_slash) + "/slides.pdf"; + } + + let xhr = new XMLHttpRequest(); + xhr.addEventListener("load", function(ev) { + if (xhr.status == 200) { + let emb = document.createElement("embed"); + emb.src = slide_path; + emb.width = 500; + emb.height = 375; + emb.type = "application/pdf"; + + let div_center = document.createElement("div"); + div_center.style = "text-align: center"; + div_center.className = "no-print"; + div_center.appendChild(emb); + + document.querySelector("h1").insertAdjacentElement("afterend", div_center); + } + }); + xhr.open("head", slide_path); + xhr.send(); + +} \ No newline at end of file diff --git a/material/projetos/2021-2/bb.png b/material/projetos/2021-2/bb.png new file mode 100644 index 000000000..47d642d56 Binary files /dev/null and b/material/projetos/2021-2/bb.png differ diff --git a/material/projetos/2021-2/busca-exaustiva.md b/material/projetos/2021-2/busca-exaustiva.md new file mode 100644 index 000000000..8fa937b3b --- /dev/null +++ b/material/projetos/2021-2/busca-exaustiva.md @@ -0,0 +1,10 @@ +# Solução Busca exaustiva - Branch and Bound + + +Faça agora uma implementação de busca exaustiva para o problema do min-set-cover. Assuma inicialmente que todos os subconjuntos são necessários. Para cada subconjunto da solução, remova ele a solução em questão e verifique se a propriedade de cobertura é mantida. Faça isso para todos os elementos na ordem do vetor de soluções, enquanto a propriedade for válida. Se a propriedade ficar inválida, você deve interromper essa linha de processamento, executando então uma nova estrutura de possibilidades em que considera esse conjunto vital para a continuidade do problema. + +Para auxiliar na sua implementação, você pode se basear no pseudocódigo abaixo. Assuma que custos é um vetor unitário de cardinalidade igual ao vetor que armazena os subconjuntos. Há um programa Python disponibilizado neste [link](https://colab.research.google.com/drive/1PdJo7henY_P4BnDBKGm9b0himbm8MPMd?usp=sharing) para que você possa simular a implementação desse pseudocódigo. + +Avalie: Há garantia de que o resultado ótimo é obtido? Justifique. + +![bb.png](bb.png) \ No newline at end of file diff --git a/material/projetos/2021-2/busca-local.md b/material/projetos/2021-2/busca-local.md new file mode 100644 index 000000000..3dcc71f64 --- /dev/null +++ b/material/projetos/2021-2/busca-local.md @@ -0,0 +1,75 @@ +# Solução Busca local + + + + +A busca local consiste em uma metaheurística usada para resolver problemas de otimização computacionalmente difíceis. Esse tipo de algoritmo percorre o espaço de busca movendo-se iterativamente de uma solução candidata para outra, seguindo um caminho através da relação de vizinhança, até que uma solução considerada boa o suficiente seja encontrada ou um limite de tempo decorrido. Normalmente todo candidato possui mais de uma solução de vizinho e a escolha entre elas é feita com o auxílio de informações locais e experiência anterior. + +A solução por busca local tenta maximizar o número de elementos com o mínimo de subconjuntos possível. Precisamos capturar esse critério por meio de uma função de *fitness*. Uma maneira possível de fazer isso é construir uma função de *fitness* calculando o número de elementos capturados pelos subconjuntos de uma solução candidata e, em seguida, dividindo-o pelo número de subconjuntos que contém. Essa função de pontuação favorecerá as soluções que acumulam a maioria dos elementos do universo U com o mínimo de subconjuntos. + + +Para isso, implemente as seguintes alterações em seu projeto: + +1. Gerar uma solução aleatória para o problema do min-set-cover; +2. Percorra novamente os conjuntos os elementos da sua solução e, de maneira randômica, troque até r (r entre 1 e 3) elementos da sua solução por subconjuntos que ficaram de fora da solução. +3. Se a solução tiver melhor escore, mantenha ela. + +Para verificar o desempenho, construa um cenário com ao menos 200 elementos e 80 subconjuntos, de até 40 elementos cada. Faça três variações desse cenário (elementos, subconjuntos, número de elementos em subconjuntos) e avalie o desempenho e a efetividade em encontrar uma solução ótima. + + +Para a entrega, usaremos o site **codePost**, você recebeu na sala de aula o link para criar sua conta. A submissão será feita unicamente por ele. Caso tenha alguma dúvida, entre em contato. diff --git a/material/projetos/2021-2/heuristico.md b/material/projetos/2021-2/heuristico.md new file mode 100644 index 000000000..f09ac4692 --- /dev/null +++ b/material/projetos/2021-2/heuristico.md @@ -0,0 +1,18 @@ +# Solução heurística + +Um dos melhores estratégias para resolução do problema min-set-cover é a estratégia gulosa. O algoritmo guloso encontra uma solução para o problema de cobertura de conjunto escolhendo iterativamente um conjunto que cobre o maior número possível de variáveis descobertas restantes. + +Sua tarefa: implemente a estratégia gulosa para o problema do min-set-cover. A cada iteração, **o algoritmo deve selecionar o subconjunto de F que irá cobrir o maior número de elementos de U que estavam descobertos**. + + +Veja abaixo um pseudo-código da estratégia gulosa que você deve implementar. + +![greedy](https://i.stack.imgur.com/v55Gn.png) + + + + Faça testes para diversos tipos de entradas, e foque principalmente em uma grande quantidade de elementos e subconjuntos (n > 250). + +Você deve entregar, além de código-fonte e todas as entradas e saídas geradas para o seu programa, um arquivo contendo o resultado do programa `verify` ( que você implementou ) e comentar sobre o número de vezes em que você conseguiu encontrar uma solução para o problema. Comente também sobre o tempo de execução de sua implementação. + +Para a entrega, usaremos o site **codePost**, você recebeu na sala de aula o link para criar sua conta. A submissão será feita unicamente por ele. Caso tenha alguma dúvida, entre em contato. diff --git a/material/projetos/2021-2/index.md b/material/projetos/2021-2/index.md new file mode 100644 index 000000000..670534c0a --- /dev/null +++ b/material/projetos/2021-2/index.md @@ -0,0 +1,145 @@ +# Alinhamento de Sequencias de DNA + +Em Bioinformática, o problema de **alinhamento de sequências de DNA** consiste no processo de comparar duas ou mais sequências de bases de forma a se observar seu nível de similaridade. Trata-se de um problema extremamente importante no contexto atual, pois permite comparar sequencias virais de SARS-COV2 em bancos de dados genômicos para detecção de novas mutações. + +O nível de similaridade pode ser calculado com base em **acertos (match)** e **erros (gap e mismatch)**. Os acertos contribuem com sinal positivo (+) para o nível de similaridade e, os erros, com sinal negativo (-). Abaixo temos um exemplo de cálculo do nível similaridade: + +![image](alignment.png) + +Vamos associar a pontuação **+1 (match)** e as penalidades **-1 (gap)** e **-4 (mismatch)**. Assim, teremos o seguinte nível de similaridade: + +23 matches x (+1) + 4 gaps x (-1) + 3 mismatches x (-4) = 23-4-12 = 7 + +Neste contexto, o problema de alinhamento de sequencias de DNA pode ser colocado da seguinte forma: + +``` +Dadas duas sequencias de DNA, com as bases A,T,G,C e - para indicar gap, +encontrar o alinhamento que maximize o nível de similaridade. +``` + + +Neste projeto, seu objetivo será construir programas para encontrar este alinhamento de nível máximo de similaridade, utilizando várias estratégias. + +Cada um dos seus programas tomará como entrada a seguinte estrutura: a primeira linha contém dois números `n` e `m`, onde `n` é o tamanho da primeira sequencia e, `m`, o tamanho da segunda. Assuma `n ≤ 200` e `m ≤ 200`. A segunda linha contém as bases da primeira sequencia e, a terceira linha, as bases da segunda. + +``` +5 7 +AT-CC +TTTCCAA +``` + +A saída deve ser uma linha com um número inteiro indicando o nível máximo de similaridade. + +``` +2 +``` +Neste caso, este nível máximo de similaridade pode ser associado ao alinhamento T-CC/TTCC (1-1+1+1=2) ou a CC/CC(1+1=2). Você pode usar o código python abaixo para gerar instâncias aleatórias para seus testes. + +```python +import random +n = 10 # tamanho da primeira sequência +m = 40 # tamanho da segunda sequência +file = 'dna.seq' # nome do arquivo a ser gerado +f = open(file, 'w') +seq=[str(n)+'\n', + str(m)+'\n', + ''.join(random.choices(['A','T','C','G','-'],k=n))+'\n', + ''.join(random.choices(['A','T','C','G','-'],k=m))] +f.writelines(seq) +f.close() +print(''.join(seq)) + +``` + +Um possível output para este código acima é: + +``` +10 +40 +TGGCGAT--C +AGC-TCTCTTC--ATT--CAC-TACACCGACA-CGC-G-A +``` + + + +## Estratégias a serem estudadas e correção automática + +Para cada estratégia que vamos estudar, implementaremos um programa correspondente no projeto. Veja abaixo as datas de entrega e descrições de cada estratégia a ser implementada. Em geral, o enunciado de uma parte é liberado após a data de entrega da parte anterior. + +1. Solução Heurística (18/03) +2. Busca Local (01/04) +3. Busca Exaustiva (15/04) +4. Relatório Preliminar (29/04) +5. Paralelismo Multicore (13/05) +6. Paralelismo GPU (27/05) +7. Relatório Final (03/06) + + + + +## Avaliação + +O projeto será avaliado usando rubricas para as entregas básicas. As rubricas de avaliação dos relatórios estarão descritas em suas páginas de entrega. + +### Conceito D + +Algum dos seguintes itens não foi entregue corretamente ou possui problemas sérios (no caso do relatório final). + +1. Solução heurística +2. Busca local +3. Busca exaustiva +4. Busca local paralela (CPU) +5. Busca local paralela (GPU) +6. Relatório preliminar +7. Relatório final + + +### Conceito C + +Todas as atividades abaixo foram validadas pelo corretor e (no caso do relatório final) alcançaram qualidade mínima exigida. + +1. Solução heurística +2. Busca local +3. Busca exaustiva +4. Busca local paralela (CPU) +5. Busca local paralela (GPU) +6. Relatório preliminar +7. Relatório final + +### Conceito C+ + +Além do já validado no conceito **C**, os relatórios entregues não tinham nenhum ponto **em desenvolvimento** ou **insatisfatório** na rubrica do relatório. + +### Conceitos avançados + +A partir do conceito **C+** cada atividade avançada vale meio conceito. Elas serão listadas aqui conforme o semestre avança e serão testadas pela checagem de resultados disponível no repositório de entregas. \ No newline at end of file diff --git a/material/projetos/2021-2/paralelismo-gpu.md b/material/projetos/2021-2/paralelismo-gpu.md new file mode 100644 index 000000000..751069a8d --- /dev/null +++ b/material/projetos/2021-2/paralelismo-gpu.md @@ -0,0 +1,20 @@ +# Paralelismo em GPU + +Seu trabalho nesta atividade será criar uma implementação paralela em GPU do algoritmo de busca local. + +## Compilação do programa + +Você deverá colocar o código de seu programa em um arquivo com extensão *.cu* na pasta da busca local. Este programa será compilado com `nvcc -O3`. + +Para a entrega, usaremos o site **codePost**. + + + + + + --> diff --git a/material/projetos/2021-2/paralelismo-multicore.md b/material/projetos/2021-2/paralelismo-multicore.md new file mode 100644 index 000000000..b38b73255 --- /dev/null +++ b/material/projetos/2021-2/paralelismo-multicore.md @@ -0,0 +1,26 @@ +# Paralelismo multi-core + +Seu trabalho nesta atividade será criar uma implementação paralela do algoritmo de busca local. + +## Compilação do programa + +Seu programa multi-core deverá ser gerado a partir do mesmo código fonte do sequencial. Ou seja, compilar com `-fopenmp` habilita o programa paralelo. Compilar sem essa flag obtem os resultados sequenciais. Caso seu programa use as chamadas do OpenMP para códigos auxiliares (alocação de memória, etc), você pode checar se seu programa foi compilado com esta flag seguindo o exemplo abaixo. + +```cpp +#ifdef _OPENMP + // código específico para multi-core aqui +#else + // código específico para sequencia aqui +#endif +``` + +Para a entrega, usaremos o site **codePost**. + diff --git a/material/projetos/2021-2/relatorio-1.md b/material/projetos/2021-2/relatorio-1.md new file mode 100644 index 000000000..8a5d7c67f --- /dev/null +++ b/material/projetos/2021-2/relatorio-1.md @@ -0,0 +1,15 @@ +# Relatório - v1 + +Nesta primeira parte do relatório iremos analisar as implementações já criadas com relação a sua velocidade e qualidade da solução. Os objetivos deste relatório são + +* criar entradas de tamanho adequado para os propósitos dos testes +* estudar o efeito do número de pessoas e do número de objetos nas medidas de interesse (tempo e qualidade da solução) +* comparar o desempenho dos algoritmos implementados até o momento em relação a essas duas medidas. + +Seu trabalhou deverá ser entregue como um arquivo *PDF* chamado *relatorio-intermediario.pdf* na pasta *relatorios* do repositório. Ele poderá ser gerado a partir de um Jupyter notebook (como feito na [aula 01](/aulas/01-introducao)) ou usando a ferramenta [pweave](https://mpastell.com/pweave/) (**recomendado**). A rubrica de avaliação está disponível abaixo e [também neste link](rubrica-relatorio.pdf). + +Data de entrega: 31/10/2021, pelo blackboard. + + + + diff --git a/material/projetos/2021-2/rubrica-relatorio.pdf b/material/projetos/2021-2/rubrica-relatorio.pdf new file mode 100644 index 000000000..c754ec25a Binary files /dev/null and b/material/projetos/2021-2/rubrica-relatorio.pdf differ diff --git a/material/projetos/2021-2/rubrica.ods b/material/projetos/2021-2/rubrica.ods new file mode 100644 index 000000000..0012b82e5 Binary files /dev/null and b/material/projetos/2021-2/rubrica.ods differ diff --git a/material/projetos/2022-1/README.md b/material/projetos/2022-1/README.md new file mode 100644 index 000000000..faa56036a --- /dev/null +++ b/material/projetos/2022-1/README.md @@ -0,0 +1 @@ +# Enunciados dos projetos de Supercomputação do 1o. Semestre/2022 diff --git a/material/projetos/2022-1/SequenceGenerator.ipynb b/material/projetos/2022-1/SequenceGenerator.ipynb new file mode 100644 index 000000000..9c981c515 --- /dev/null +++ b/material/projetos/2022-1/SequenceGenerator.ipynb @@ -0,0 +1,74 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "SequenceGenerator.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "**GERADOR DE INSTÂNCIAS PARA COMPARAÇÃO DE SEQUENCIAS DE DNA**\n", + "\n", + "Para usar este gerador, você deve fornecer três parâmetros:\n", + "\n", + "n = tamanho da primeira sequencia \n", + "\n", + "m = tamanho da segunda instância \n", + "\n", + "file = nome do arquivo da instância a ser gerada" + ], + "metadata": { + "id": "L2gAYBjX_MBM" + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_s7Cbahf_LId", + "outputId": "1ac73e4b-1f04-4170-d159-bb3a861bc4d6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "10\n", + "40\n", + "TGGCGAT--C\n", + "AGC-TCTCTTC--ATT--CAC-TACACCGACA-CGC-G-A\n" + ] + } + ], + "source": [ + "import random\n", + "n = 10\n", + "m = 40\n", + "file = 'dna.seq'\n", + "f = open(file, 'w')\n", + "seq=[str(n)+'\\n',\n", + " str(m)+'\\n',\n", + " ''.join(random.choices(['A','T','C','G','-'],k=n))+'\\n',\n", + " ''.join(random.choices(['A','T','C','G','-'],k=m))]\n", + "f.writelines(seq)\n", + "f.close()\n", + "print(''.join(seq))" + ] + } + ] +} \ No newline at end of file diff --git a/material/projetos/2022-1/alignment.png b/material/projetos/2022-1/alignment.png new file mode 100644 index 000000000..8d047cd14 Binary files /dev/null and b/material/projetos/2022-1/alignment.png differ diff --git a/material/projetos/2022-1/heuristico.md b/material/projetos/2022-1/heuristico.md new file mode 100644 index 000000000..27191eec9 --- /dev/null +++ b/material/projetos/2022-1/heuristico.md @@ -0,0 +1,64 @@ + +# Heurística de Alinhamento Local de Smith-Waterman + +Um algoritmo ingênuo para fazer o alinhamento local de duas sequencias de DNA poderia ser: + +1. Gere todas as subsequências, de tamanho 1 até o tamanho total de cada sequência +2. Compare todos os pares de subsequencias, sempre escolhendo uma subsequencia de um DNA e do outro DNA, calculado seus scores +3. Escolha uma que produza o score máximo + +Nao é difícil ver que este algoritmo ingênuo pode demorar muito tempo para executar quando aumentamos o tamanho das sequencias de DNA. + +Uma heurística sequencial bastante interessante para reduzir o tempo de obtenção dos alinhamentos foi proposta por Smith e Waterman (1981), utilizando programação dinâmica. +Abaixo, temos a descrição do algoritmo desta estratégia: +
+ALGORITMO SMITH-WATERMAN
+Entrada: Duas sequencias de DNA a[i] e b[j], de tamanhos n e m respectivamente
+Saída: score máximo de alinhamento 
+
+1. Inicializar H[i,0]=0, 0≤i≤n
+2. Inicializar H[0,j]=0, 0≤j≤m
+3. Para cada 1≤i≤n e 1≤j≤m:
+4.     Calcular diagonal = H[i-1,j-1] + w(a[i],b[j]), onde w(a[i],b[j])=2 se houve match, 
+                           w(a[i],b[j])= -1 se houve mismatch e  
+                           w(a[i],b[j])= -1 se houve gap
+5.     Calcular deleção  = H[i-1,j] - 1
+6.     Calcular inserção = H[i,j-1] - 1
+7.     Calcular H[i,j]=máximo (0, diagonal, deleção, inserção)
+9. Retornar o máximo de H[_,_]
+
+ +Os passos diagonal, deleção e inserção são chamados, respectivamente, de salto em diagonal, salto de cima para baixo e salto da esquerda para a direita, e representam movimentações para obtenção do alinhamento local ótimo. + +No link abaixo, é possível simular este algoritmo para diversos valores de pesos: + +http://rna.informatik.uni-freiburg.de/Teaching/index.jsp?toolName=Smith-Waterman + + +Abaixo temos um exemplo da matriz H calculada para as sequências AGCACACA e ACACACTA: + +![image](smith.png) + +Para obter o alinhamento local ótimo, começamos com o maior valor na matriz (i,j). Então, nós vamos para trás para uma das posições (i-1,j), (i,j-1) ou (i-1,j-1), dependendo da direção de movimento usado para construir a matriz. Mantemos o processo até chegar a um célula da matriz com valor zero, ou o valor na posição (0,0). + +No exemplo, o valor mais alto corresponde à célula na posição (8,8). A caminhada de volta corresponde a (8,8), (7,7), (7,6), (6,5), (5,4), (4,3), (3,2), (2,1), (1,1), e (0,0), + +Uma vez que tenhamos terminado, reconstruimos o alinhamento da seguinte forma: Começando com o último valor, chegamos a (i,j) usando o caminho previamente calculado. Um salto na diagonal implica que há um alinhamento (ou uma correspondência ou uma não correspondência). Um salto de cima para baixo implica que há uma deleção. Um salto da esquerda para a direita implica que há uma inserção. *Assim, para a reconstrução, é importante guardar durante a montagem da tabela H qual o tipo de salto foi utilizado.* + +Para o exemplo das sequencias acima, obtemos o seguinte alinhamento local ótimo (em relação aos pesos dados para match, mismatch e gap): + +
+Sequência 1 = A-CACACTA
+Sequência 2 = AGCACAC-A
+
+ +A partir desta descrição, nosso primeiro projeto terá duas tarefas: + +
    +
  • Implementar um programa C++ para ler um arquivo contendo os tamanhos de duas sequencias de DNA, seguidos das duas sequencias, uma por linha. Calcular o score máximo de alinhamento local usando a heurística de Smith-Waterman. As informações para reconstrução deverão ser armazenadas no formato de struct. +
  • a partir do score máximo, reconstruir e exibir o alinhamento local ótimo das duas sequencias. +
+ +No diretório do projeto, há um gerador de entradas disponibilizado como um notebook Python. + +Para quem estiver interessado no artigo original da heurística de Smith-Waterman, basta consultar o link http://arep.med.harvard.edu/pdf/Smith81.pdf. diff --git a/material/projetos/2022-1/index.md b/material/projetos/2022-1/index.md new file mode 100644 index 000000000..107361bbe --- /dev/null +++ b/material/projetos/2022-1/index.md @@ -0,0 +1,120 @@ +# Alinhamento de Sequencias de DNA + +Em Bioinformática, o problema de **alinhamento de sequências de DNA** consiste no processo de comparar duas ou mais sequências de bases de forma a se observar seu nível de similaridade. Trata-se de um problema extremamente importante no contexto atual, pois permite comparar sequencias virais de SARS-COV2 em bancos de dados genômicos para detecção de novas mutações. + +O nível de similaridade pode ser calculado com base em **acertos (match)** e **erros (gap e mismatch)**. Os acertos contribuem com sinal positivo (+) para o nível de similaridade e, os erros, com sinal negativo (-). Abaixo temos um exemplo de cálculo do nível similaridade: + +![image](alignment.png) + +Vamos associar a pontuação **+1 (match)** e as penalidades **-1 (gap)** e **-4 (mismatch)**. Assim, teremos o seguinte nível de similaridade: + +23 matches x (+1) + 4 gaps x (-1) + 3 mismatches x (-4) = 23-4-12 = 7 + +Neste contexto, o problema de alinhamento de sequencias de DNA pode ser colocado da seguinte forma: + +``` +Dadas duas sequencias de DNA, com as bases A,T,G,C e - para indicar gap, +encontrar o alinhamento que maximize o nível de similaridade. +``` + + +Neste projeto, seu objetivo será construir programas para encontrar este alinhamento de nível máximo de similaridade, utilizando várias estratégias. + +Cada um dos seus programas tomará como entrada a seguinte estrutura: a primeira linha contém dois números `n` e `m`, onde `n` é o tamanho da primeira sequencia e, `m`, o tamanho da segunda. Assuma `n ≤ 200` e `m ≤ 200`. A segunda linha contém as bases da primeira sequencia e, a terceira linha, as bases da segunda. + +``` +5 7 +AT-CC +TTTCCAA +``` + +A saída deve ser uma linha com um número inteiro indicando o nível máximo de similaridade. + +``` +2 +``` +Neste caso, este nível máximo de similaridade pode ser associado ao alinhamento T-CC/TTCC (1-1+1+1=2) ou a CC/CC(1+1=2). Você pode usar o notebook SequenceGenerator.ipynb para gerar instâncias aleatórias para seus testes. + + + +## Estratégias a serem estudadas e correção automática + +Para cada estratégia que vamos estudar, implementaremos um programa correspondente no projeto. Veja abaixo as datas de entrega e descrições de cada estratégia a ser implementada. Em geral, o enunciado de uma parte é liberado após a data de entrega da parte anterior. + +1. [Solução Heurística](heuristico.md) (18/03) +2. [Busca Local](busca-local)(01/04) +3. [Busca Exaustiva](busca-exaustiva)(15/04) +4. [Relatório Preliminar](relatorio-1) (29/04) +5. [Paralelismo Multicore](paralelismo-multicore) (13/05) +6. [Paralelismo GPU](paralelismo-gpu) (27/05) +7. [Relatório Final](relatorio-2) (03/06) + + + + +## Avaliação + +O projeto será avaliado usando rubricas para as entregas básicas. As rubricas de avaliação dos relatórios estarão descritas em suas páginas de entrega. + +### Conceito D + +Algum dos seguintes itens não foi entregue corretamente ou possui problemas sérios (no caso do relatório final). + +1. Solução heurística +2. Busca local +3. Busca exaustiva +4. Busca local paralela (CPU) +5. Busca local paralela (GPU) +6. Relatório preliminar +7. Relatório final + + +### Conceito C + +Todas as atividades abaixo foram validadas pelo corretor e (no caso do relatório final) alcançaram qualidade mínima exigida. + +1. Solução heurística +2. Busca local +3. Busca exaustiva +4. Busca local paralela (CPU) +5. Busca local paralela (GPU) +6. Relatório preliminar +7. Relatório final + +### Conceito C+ + +Além do já validado no conceito **C**, os relatórios entregues não tinham nenhum ponto **em desenvolvimento** ou **insatisfatório** na rubrica do relatório. + +### Conceitos avançados + +A partir do conceito **C+** cada atividade avançada vale meio conceito. Elas serão listadas aqui conforme o semestre avança e serão testadas pela checagem de resultados disponível no repositório de entregas. diff --git a/material/projetos/2022-1/smith.png b/material/projetos/2022-1/smith.png new file mode 100644 index 000000000..181d30458 Binary files /dev/null and b/material/projetos/2022-1/smith.png differ diff --git a/material/projetos/alignment.png b/material/projetos/alignment.png new file mode 100644 index 000000000..8d047cd14 Binary files /dev/null and b/material/projetos/alignment.png differ diff --git a/material/projetos/exaustiva.md b/material/projetos/exaustiva.md new file mode 100644 index 000000000..8d8074f29 --- /dev/null +++ b/material/projetos/exaustiva.md @@ -0,0 +1,34 @@ +# Busca Exaustiva para Alinhamento de Sequencias + +A busca exaustiva, conforme vista aula, gera todas as soluções viáveis para um problema e, de acordo com um critério de otimalidade, elege uma +solução ótima para o problema. Especificamente para o problema de alinhamento de sequencias, ele pode ser especificado da seguinte forma: + + + ALGORITMO BUSCA EXAUSTIVA + Entrada: Duas sequencias de DNA a e b + Pesos wmat, wmis e wgap para match, mismatch e gap respectivamente + Saída: Score de um alinhamento das sequencias + Subsequencias alinhadas + + 1. Gerar todas as subsequencias a´ e b´ não-nulas de a e b, respectivamente. + 2. Calcular os alinhamentos de cada par de subsequencias (a´, b´) com os pesos wmat, wmis e wgap + 3. Devolver o score máximo m entre os scores do passo (2) e as subsequencias associadas a ele + + +Observe que, no passo (2), as subsequencias podem não ter o mesmo tamanho. Assim, não será possível calcular diretamente um score simples. Podemos usar, por exemplo: + +
    +
  • a estratégia vista no primeiro projeto (Alinhamento Local de Smith-Waterman) para comparar duas subsequencias +
  • um truncamento da subsequencia maior pelo tamanho da subsequencia menor e calcular o score simples entre as duas subsequencias resultantes +
  • o Alinhamento Local de Smith-Waterman quando as subsequencias forem de tamanhos diferentes e, quando forem de tamanho igual, a estratégia aleatória do Projeto II. +
+ + +A partir desta descrição, nosso terceiro projeto terá duas tarefas: + +
    +
  • Implementar um programa C++ para ler um arquivo contendo os tamanhos de duas sequencias de DNA, seguidos das duas sequencias, uma por linha. Calcular o score máximo utilizando o algoritmo acima, assim como as subsequencias associadas a ele. +
  • Implementar duas estratégias diferentes para calcular os alinhamentos entre os pares de subsequencias do passo (2). + +No diretório do projeto, há um gerador de entradas disponibilizado como um notebook Python. Como se trata de uma busca exaustiva, recomenda-se começar a testar com tamanhos pequenos e + ir aumentando gradativamente até atingir o tamanho máximo que a sua plataforma ainda consiga executar. diff --git a/material/projetos/gpu.md b/material/projetos/gpu.md new file mode 100644 index 000000000..17796f9c6 --- /dev/null +++ b/material/projetos/gpu.md @@ -0,0 +1,69 @@ +# Paralelismo com GPU + +Neste último projeto, vamos explorar os mecanismos de paralelismo multicore com GPU. Para tanto, vamos considerar a implementação da busca exaustiva que vimos, na análise realizada +no relatório parcial, ter o desempenho bastante comprometido quando trabalhamos com tamanhos de sequencias de DNA muito grandes. + +Na busca exaustiva, existe um procedimento básico que é realizado para cada par de subsequencias que estão sendo analisadas: cálculo do score. Relembrando o algoritmo de Smith-Waterman, nós temos que o score de alinhamento entre duas sequências S1 e S2 é dado por: + +$$ +S_{i,j} = max\begin{Bmatrix} +S_{i-1, j-1} + 2, & a_i = b_j \\ +S_{i-1, j-1} - 1, & a_i \neq b_j\\ +S_{i-1, j} - 1 & b_j = -\\ +S_{i, j-1} - 1 & a_i = -\\ +0 & +\end{Bmatrix} +$$ + +A operação `max` é associativa e comutativa, o que indica que nós podemos calcula de maneira paralelizada. Na prática, observe que o cálculo do score só depende da linha anterior, de modo que não é preciso ter toda a matriz carregada na memória, quando nosso objetivo é obter o melhor score. + +Podemos dividir esse cálculo de score em duas fases, a partir da linha anterior. Para isso, precisamos de duas estrututas de armazenamento, uma estrutura para armazenar o resultado do cálculo da linha anterior, e uma estrutura para receber temporariamente o resultado (primeira fase), e posteriormente ser atualizada (segunda fase). + + +A primeira fase poderia ser chamada de $S_{temp}$ e poderia ser calculada da seguinte maneira: + +$$ +S_{temp}(i,j) = max\begin{Bmatrix} +S_{i-1, j-1} + 2, & a_i = b_j \\ +S_{i-1, j-1} - 1, & a_i \neq b_j\\ +S_{i, j-1} - 1 & b_j = -\\ +0 & +\end{Bmatrix} +$$ + +Você pode implementar essa primeira fase como uma transformação. A segunda fase seria então fazer calcular o máximo entre $S_{temp}$ e a lateral direita: + +$$ +S_{i,j} = max\begin{Bmatrix} +S_{temp}(i,j) & \\ +S_{temp}(i-1, j) - 1 & \\ +0 & +\end{Bmatrix} +$$ + +Dessa forma, podemos: + + +
      +
    • usar thrust::transform para calcular a primeira fase e armazenar em uma estrutura temporaria o seu resultado +
    • podemos usar thrust::inclusive_scan para atualizar o resultado temporário obtido na fase anterior +
    + +O procedimento acima calcula, de maneira paralela, o score entre duas sequencias S1 e S2. Porém, quantos pares de sequencias podemos ocupar simultaneamente a GPU ? Este é o + desafio que deverá ser resolvido neste projeto. Lembre-se que você não precisa armazenar a matriz inteira na GPU. Como mostramos no algoritmo acima, a última linha da matriz é necessária. Você também deve buscar formas de realizar o cálculo entre múltiplos pares. Assim, seu código não deve apenas ser otimizado para obter o score, mas calcular o score entre diversos pares simultaneamente. + + +O que entregar: + +
      +
    • código-fonte da implementação exaustiva e da implementação paralela de GPU. A implementação paralela deverá seguir o cálculo do score descrito acima e, adicionalmente, + conter a implementação da estratégia de ocupação da GPU pelas sequencias. +
    • arquivos de testes utilizados +
    • pequeno relatório descrevendo a estratégia usada para ocupação da GPU +
    • resultados dos testes +
    + +Um detalhe importante é que, como agora estamos trabalhando com paralelismo em GPU, os tamanhos dos arquivos de testes precisam ser bem maiores como em OpenMP. Muitas vezes, os resultados de speedup +aparecem a partir de grandes instâncias do problema. + +Caso você considere necessário, pode refatorar a sua implementação da busca exaustiva para poder explorar mais mecanismos da biblioteca TRUST em GPU. \ No newline at end of file diff --git a/material/projetos/heuristico.md b/material/projetos/heuristico.md new file mode 100644 index 000000000..27191eec9 --- /dev/null +++ b/material/projetos/heuristico.md @@ -0,0 +1,64 @@ + +# Heurística de Alinhamento Local de Smith-Waterman + +Um algoritmo ingênuo para fazer o alinhamento local de duas sequencias de DNA poderia ser: + +1. Gere todas as subsequências, de tamanho 1 até o tamanho total de cada sequência +2. Compare todos os pares de subsequencias, sempre escolhendo uma subsequencia de um DNA e do outro DNA, calculado seus scores +3. Escolha uma que produza o score máximo + +Nao é difícil ver que este algoritmo ingênuo pode demorar muito tempo para executar quando aumentamos o tamanho das sequencias de DNA. + +Uma heurística sequencial bastante interessante para reduzir o tempo de obtenção dos alinhamentos foi proposta por Smith e Waterman (1981), utilizando programação dinâmica. +Abaixo, temos a descrição do algoritmo desta estratégia: +
    +ALGORITMO SMITH-WATERMAN
    +Entrada: Duas sequencias de DNA a[i] e b[j], de tamanhos n e m respectivamente
    +Saída: score máximo de alinhamento 
    +
    +1. Inicializar H[i,0]=0, 0≤i≤n
    +2. Inicializar H[0,j]=0, 0≤j≤m
    +3. Para cada 1≤i≤n e 1≤j≤m:
    +4.     Calcular diagonal = H[i-1,j-1] + w(a[i],b[j]), onde w(a[i],b[j])=2 se houve match, 
    +                           w(a[i],b[j])= -1 se houve mismatch e  
    +                           w(a[i],b[j])= -1 se houve gap
    +5.     Calcular deleção  = H[i-1,j] - 1
    +6.     Calcular inserção = H[i,j-1] - 1
    +7.     Calcular H[i,j]=máximo (0, diagonal, deleção, inserção)
    +9. Retornar o máximo de H[_,_]
    +
    + +Os passos diagonal, deleção e inserção são chamados, respectivamente, de salto em diagonal, salto de cima para baixo e salto da esquerda para a direita, e representam movimentações para obtenção do alinhamento local ótimo. + +No link abaixo, é possível simular este algoritmo para diversos valores de pesos: + +http://rna.informatik.uni-freiburg.de/Teaching/index.jsp?toolName=Smith-Waterman + + +Abaixo temos um exemplo da matriz H calculada para as sequências AGCACACA e ACACACTA: + +![image](smith.png) + +Para obter o alinhamento local ótimo, começamos com o maior valor na matriz (i,j). Então, nós vamos para trás para uma das posições (i-1,j), (i,j-1) ou (i-1,j-1), dependendo da direção de movimento usado para construir a matriz. Mantemos o processo até chegar a um célula da matriz com valor zero, ou o valor na posição (0,0). + +No exemplo, o valor mais alto corresponde à célula na posição (8,8). A caminhada de volta corresponde a (8,8), (7,7), (7,6), (6,5), (5,4), (4,3), (3,2), (2,1), (1,1), e (0,0), + +Uma vez que tenhamos terminado, reconstruimos o alinhamento da seguinte forma: Começando com o último valor, chegamos a (i,j) usando o caminho previamente calculado. Um salto na diagonal implica que há um alinhamento (ou uma correspondência ou uma não correspondência). Um salto de cima para baixo implica que há uma deleção. Um salto da esquerda para a direita implica que há uma inserção. *Assim, para a reconstrução, é importante guardar durante a montagem da tabela H qual o tipo de salto foi utilizado.* + +Para o exemplo das sequencias acima, obtemos o seguinte alinhamento local ótimo (em relação aos pesos dados para match, mismatch e gap): + +
    +Sequência 1 = A-CACACTA
    +Sequência 2 = AGCACAC-A
    +
    + +A partir desta descrição, nosso primeiro projeto terá duas tarefas: + +
      +
    • Implementar um programa C++ para ler um arquivo contendo os tamanhos de duas sequencias de DNA, seguidos das duas sequencias, uma por linha. Calcular o score máximo de alinhamento local usando a heurística de Smith-Waterman. As informações para reconstrução deverão ser armazenadas no formato de struct. +
    • a partir do score máximo, reconstruir e exibir o alinhamento local ótimo das duas sequencias. +
    + +No diretório do projeto, há um gerador de entradas disponibilizado como um notebook Python. + +Para quem estiver interessado no artigo original da heurística de Smith-Waterman, basta consultar o link http://arep.med.harvard.edu/pdf/Smith81.pdf. diff --git a/material/projetos/index.md b/material/projetos/index.md new file mode 100644 index 000000000..990aac113 --- /dev/null +++ b/material/projetos/index.md @@ -0,0 +1 @@ +# A definir \ No newline at end of file diff --git a/material/projetos/local.md b/material/projetos/local.md new file mode 100644 index 000000000..ebbd218a6 --- /dev/null +++ b/material/projetos/local.md @@ -0,0 +1,33 @@ +# Um algoritmo Local para Alinhamento + +Como vimos em aula, aleatoriedade é uma estratégia bastante comum para construção de algoritmos de busca local, podendo ser usada +de forma isolada ou de forma complementar a outra estratégia de varredura de um espaço de soluções. Em problemas de alinhamento, +varreduras suportadas por aleatoriedade tem produzido algoritmos bastante efetivos. + +Dentro deste contexto, vamos considerar o algoritmo proposto abaixo: + + +ALGORITMO BUSCA LOCAL COM ALEATORIEDADE + +Entrada: Duas sequencias de DNA a[i] e b[j], de tamanhos n e m respectivamente,pesos wmat, wmis e wgap para match, mismatch e gap respectivamente + +Saída: Score de um alinhamento das sequencias + Subsequencias alinhadas + + 1. Gerar uma subsequencia sb=b[j,j+1,...,j+k] de b, de tamanho aleatório k, 1<=k<=m, e 0<=j<=m + 2. Gerar um número aleatório inteiro positivo p + 3. Gerar p subsequencias sa=a[i,i+1,...,i+k] de a, com tamanho k calculado no passo (1), 0<=i<=n + 4. Calcular os scores de cada par (sa,sb) com os pesos wmat, wmis e wgap + 5. Devolver o score máximo m entre os scores do passo (4) e as subsequencias associadas a ele + + + + +A partir desta descrição, nosso primeiro projeto terá duas tarefas: + +
      +
    • Implementar um programa C++ para ler um arquivo contendo os tamanhos de duas sequencias de DNA, seguidos das duas sequencias, uma por linha. Calcular o score máximo utilizando o algoritmo acima, assim como as subsequencias associadas a ele. +
    • Testar o algoritmo diversas vezes e comparar seus resultados com a heurística do primeiro projeto observando, principalmente, o seu comportamento em relação aos valores aleatórios k e p. Estes resultados e sua comparação deverão estar presentes no relatório a ser entregue posteriormente. +
    + +No diretório do projeto, há um gerador de entradas disponibilizado como um notebook Python. diff --git a/material/projetos/openmp.md b/material/projetos/openmp.md new file mode 100644 index 000000000..09b7aed59 --- /dev/null +++ b/material/projetos/openmp.md @@ -0,0 +1,29 @@ +# Paralelismo com OpenMP + +Experimentamos, até agora, três estratégias sequenciais para o problema de alinhamento de sequencias de DNA: busca heurística, busca local e busca exaustiva. +Com os experimentos do primeiro relatório, pudemos comparar o desempenho sequencial de cada um deles. Agora vamos começar a explorar estratégias de paralelismo nos dois projetos finais. +Faremos isto com dois modelos paralelos: multicore(CPU) e manycore(GPU). + +No presente projeto, exploraremos estratégias de programação multicore com OpenMP. Para tanto, você terá as seguintes tarefas: + +
      +
    • analisar as suas três implementações de estratégias sequenciais para identificar pontos passíveis de paralelização com OpenMP +
    • escolher, dentre uma das três estratégias que você implementou, aquela que poderia produzir o melhor speedup com OpenMP +
    • implementar a paralelização com OpenMP, explorando mecanismos como parallel for, parallel task, scheduling ou outro mecanismo que você tenha estudado em OpenMP +
    + +O que entregar: + +
      +
    • código-fonte da implementação sequencial e da implementação paralela +
    • arquivos de testes utilizados +
    • pequeno relatório justificando a escolha da implementação sequencial que foi paralelizada +
    • resultados dos testes +
    + +Um detalhe importante é que, como agora estamos trabalhando com paralelismo, os tamanhos dos arquivos de testes precisam ser bem maiores. Muitas vezes, os resultados de speedup +aparecem a partir de grandes instâncias do problema. + +Caso você considere necessário, pode refatorar a sua implementação sequencial para poder explorar mais mecanismos de OpenMP. + + diff --git a/material/projetos/smith.png b/material/projetos/smith.png new file mode 100644 index 000000000..181d30458 Binary files /dev/null and b/material/projetos/smith.png differ diff --git a/material/sobre.md b/material/sobre.md new file mode 100644 index 000000000..f8acfe1a2 --- /dev/null +++ b/material/sobre.md @@ -0,0 +1,39 @@ + + +# Burocracias + +??? note "Plano de aulas" + | Data | Questão/Problema | Conteúdo/Atividade | + |------------|----------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| + | 15/08/22 | Introdução ao curso e a tecnologias de alto desempenho | Introdução ao curso; Princípios de C++ | + | 18/08/22 | Introdução ao curso e a tecnologias de alto desempenho | Implementação de algoritmos simples; Passagem de argumentos por referência e valor; Recursos de C++ | + | 22/08/22 | Considerações na implementação de programas de alto desempenho | C++, Vectors | + | 25/08/22 | Considerações na implementação de programas de alto desempenho | Utilização de ferramentas de profiling para identificar pontos quentes em um programa | + | 04/09/22 | Estratégias para solução de problemas difíceis | Apresentação do projeto da disciplina; Heurística, busca local e global | + | 08/09/22 | Soluções sub-ótimas usando a busca local | Propriedades da solução ótima; vizinhança de soluções | + | 11/09/22 | Soluções sub-ótimas usando a busca local | Propriedades de geradores de números pseudo-aleatórios; Algoritmos baseados em sorteios aleatórios; Exploration vs Exploitation | + | 15/09/22 | Buscando uma solução globalmente ótima | Busca global vs Busca local; Enumeração exaustiva e sua classe de problemas computacionais; Backtracking | + | 18/09/22 | Buscando uma solução globalmente ótima | gap de otimalidade; Simetrias; Comunicação de resultados de desempenho | + | 22/09/22 | Acelerando a busca local | Estimando a qualidade de uma solução parcial; Medindo a efetividade de uma estimativa | + | 25/09/22 | Indo além: best-first search, simetrias, competição de desempenho | Aula expositiva sobre melhorias possívies além do branch-and-bound | + | 29/09/22 | Aula estúdio para projeto | Aula estúdio para projeto | + | 01/10/22 | Prova intermediária | Prova intermediária | + | 05/10/22 | Prova intermediária | Prova intermediária | + | 08/10/22 | Aula estúdio para projeto | Aula estúdio para projeto | + | 12/10/22 | Programação multi-core: como dividir tarefas e ganhar tempo | Introdução a OpenMP | + | 19/10/22 | Programação multi-core: como dividir tarefas e ganhar tempo | Código thread-safe e reentrância | + | 26/10/22 | Programação multi-core: como dividir tarefas e ganhar tempo | Introdução a problemas IO bound; Construções de alto nível do OpenMP; Sincronização usando mutex e semáforos | + | 29/10/22 | Programação multi-core: como dividir tarefas e ganhar tempo | Introdução a problemas IO bound; Construções de alto nível do OpenMP; Sincronização usando mutex e semáforos | + | 03/11/22 | Programação multi-core: como dividir tarefas e ganhar tempo | Aula estúdio para projeto | + | 06/11/22 | Programação multi-core: como dividir tarefas e ganhar tempo | Aula estúdio para projeto | + | 10/11/22 | Programação em GPU e quais problemas são massivamente paralelizáveis | Introdução a GPGPU | + | 13/11/22 | Programação em GPU e quais problemas são massivamente paralelizáveis | Introdução a GPGPU | + | 17/11/22 | Programação em GPU e quais problemas são massivamente paralelizáveis | Programando para GPU, Nvidia Thrust | + | 20/11/22 | Programação em GPU e quais problemas são massivamente paralelizáveis | Programando para GPU, Nvidia Thrust | + | 24/11/22 | Programação em GPU e quais problemas são massivamente paralelizáveis | Exercícios de programação em GPGPU | + | 27/11/22 | Quiz para a PF | Quiz para a PF | + | 31/11/22 | Aula estúdio para projeto | Aula estúdio para projeto | + | 03/12/22 | Aula estúdio para projeto | Aula estúdio para projeto | + | 07/12/22 | Aula estúdio para projeto | Aula estúdio para projeto + | 10/12/22 | Prova Final | Prova Final | + | 14/12/22 | Prova Final | Prova Final diff --git a/material/translate-admonitions.js b/material/translate-admonitions.js new file mode 100644 index 000000000..bbd073b98 --- /dev/null +++ b/material/translate-admonitions.js @@ -0,0 +1,57 @@ + +// Tradução dos admonitions +let en_pt = { + "Note": "Aviso", + "Tip": "Dica", + "Question": "Pergunta", + "Warning": "Cuidado", + "Example": "Tarefa", + "Important": "Importante" +}; + +let admonitions_to_translate = document.querySelectorAll(".admonition-title"); +for (var i = 0; i < admonitions_to_translate.length; i++) { + let el = admonitions_to_translate[i]; + + if (el.innerText in en_pt) { + el.innerText = en_pt[el.innerText]; + } +} + + +/* Contagem automática de tarefas e perguntas */ +let counters = ["example", "question"]; +counters.forEach(function (admo_type) { + let elements = document.querySelectorAll(".admonition." + admo_type + " > .admonition-title"); + for (let i = 0; i < elements.length; i++) { + let el = elements[i]; + el.innerText += " " + (i+1); + } +}); + + +// Adicionar embed dos slides se existir +let nome_aula = window.location.href; +nome_aula = nome_aula.split("/"); +nome_aula = nome_aula[nome_aula.length - 2]; +nome_aula = site_url + "aulas/" + nome_aula + "/slides.pdf"; +let xhr = new XMLHttpRequest(); +xhr.addEventListener("load", function(ev) { + if (xhr.status == 200) { + let emb = document.createElement("embed"); + emb.src = nome_aula; + emb.width = 500; + emb.height = 375; + emb.type = "application/pdf"; + + let div_center = document.createElement("div"); + div_center.style = "text-align: center"; + div_center.className = "no-print"; + div_center.appendChild(emb); + + document.querySelector("article.md-typeset h1").insertAdjacentElement("afterend", div_center); + } +}); +xhr.open("head", nome_aula); +xhr.send(); + \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 000000000..4a03c125a --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,100 @@ +site_name: SuperComputação - 2022/2 +site_author: + +extra: + materia: SuperComputação + professor: Luciano Pereira Soares + semestre: 2022/2 + url_acompanhamentos: http://localhost:8081 + id_curso: 1 + +theme: + feature: + tabs: true + name: active-handout-theme + +docs_dir: material +site_dir: docs + +repo_url: https://github.com/insper/supercomp +repo_name: "SuperComp" +site_url: https://insper.github.io/supercomp/ + + +nav: + - Home: index.md + - Burocracias: sobre.md + + - Aulas: + - "01 - Introdução": aulas/01-introducao/index.ipynb + - "02 e 03 - C++": aulas/02-03-implementacao-c++/index.md + # - "04 - Profiling": aulas/04-profiling/index.md + # - "05 - Heurísticas": aulas/05-heuristicas/index.md + # - "06 - Aleatorização": aulas/06-aleatorizacao/index.md + # - "07 - Busca Local": aulas/07-busca-local/index.md + # - "08 - Busca Exaustiva": aulas/08-busca-global/index.md + # - "09 - Comparação de desempenho": aulas/09-busca-global-II/index.md + # - "10 - Branch and Bound": aulas/10-branch-and-bound/index.md + # - "Revisão para P1": aulas/10-branch-and-bound/revisao.md + # - "11 - Paralelismo": aulas/11-paralelismo/index.md + # - "12 - Paralelismo - Exercício / Efeitos Colaterais" : aulas/12-efeitos-colaterais/index.md + # - "13 - Paralelismo - Efeitos Colaterais II": aulas/13-efeitos-colaterais-II/index.md + # - "14 - GPU - Introdução": aulas/14-intro-gpu/index.md + # - "15 - GPU - Iteradores": aulas/15-gpu-iteradores/index.md + # - "16 - GPU - Customização": aulas/16-gpu-customizacao/index.md + # - "17 - GPU - Aleatoriedade": aulas/17-gpu-aleatoriedade/index.md + # - aulas/13-paralelismo-tarefas-dados/index.md + # - aulas/14-exercicios/index.md + # - aulas/15-efeitos-colaterais/index.md + # - aulas/16-efeitos-colaterais-II/index.md + + - Projeto: + - projetos/index.md + #- projetos/heuristico.md + #- projetos/local.md + #- projetos/exaustiva.md + #- projetos/openmp.md + #- projetos/gpu.md + # - projetos/relatorio-1.md + # - projetos/paralelismo-multicore.md + # - projetos/paralelismo-gpu.md + + +extra_javascript: + - https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML + - https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.0.0/js-yaml.min.js + +extra_css: + - css/printing.css + - css/extra.css + +markdown_extensions: + - active-handout-plugins + - markdown.extensions.admonition + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.details + - pymdownx.tabbed: + alternate_style: true + - pymdownx.superfences + - pymdownx.magiclink + - pymdownx.critic: + mode: view + - pymdownx.betterem: + smart_enable: all + - pymdownx.caret + - pymdownx.mark + - pymdownx.tilde + - pymdownx.smartsymbols + - pymdownx.emoji: + emoji_generator: !!python/name:pymdownx.emoji.to_svg + - attr_list + - pymdownx.tilde + - pymdownx.snippets: + base_path: code + check_paths: true + + +plugins: + - search + - mknotebooks diff --git a/multi-core/02-fork-join/02-slides-modelo-fork-join.pdf b/multi-core/02-fork-join/02-slides-modelo-fork-join.pdf deleted file mode 100644 index 235f9285e..000000000 Binary files a/multi-core/02-fork-join/02-slides-modelo-fork-join.pdf and /dev/null differ diff --git a/multi-core/02-fork-join/exemplo1-threads.cpp b/multi-core/02-fork-join/exemplo1-threads.cpp deleted file mode 100644 index 9de1b3d2a..000000000 --- a/multi-core/02-fork-join/exemplo1-threads.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -void funcao_rodando_em_paralelo(int a, int *b) { - std::cout << "a=" << a << std::endl; - *b = 5; -} - - -int main() { - int b = 10; - - // Cria thread e a executa. - // Primeiro argumento é a função a ser executada. - - // Os argumentos em seguida são passados diretamente - // para a função passada no primeiro argumento. - std::thread t1(funcao_rodando_em_paralelo, 15, &b); - - - std::cout << "Antes do join b=" << b << std::endl; - - // Espera até que a função acabe de executar. - t1.join(); - - std::cout << "Depois do join b=" << b << std::endl; -} diff --git a/multi-core/02-fork-join/roteiro.pdf b/multi-core/02-fork-join/roteiro.pdf deleted file mode 100644 index ac0814664..000000000 Binary files a/multi-core/02-fork-join/roteiro.pdf and /dev/null differ diff --git a/multi-core/03-intro-omp/calculo_pi.cpp b/multi-core/03-intro-omp/calculo_pi.cpp deleted file mode 100644 index 973a8e156..000000000 --- a/multi-core/03-intro-omp/calculo_pi.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - -This program will numerically compute the integral of - - 4/(1+x*x) - -from 0 to 1. The value of this integral is pi -- which -is great since it gives us an easy way to check the answer. - -The is the original sequential program. It uses the timer -from the OpenMP runtime library - -History: Written by Tim Mattson, 11/99. - Updated by Luciano Soares -*/ -#include -#include -static long num_steps = 1000000000; -double step; -int main () { - - int i; - double x, pi, sum = 0.0; - double start_time, run_time; - - step = 1.0/(double) num_steps; - - start_time = omp_get_wtime(); - - for (i=1;i<= num_steps; i++) { - x = (i-0.5)*step; - sum = sum + 4.0/(1.0+x*x); - } - - pi = step * sum; - run_time = omp_get_wtime() - start_time; - printf("\n pi with %ld steps is %.12lf in %lf seconds\n ",num_steps,pi,run_time); - return 0; -} diff --git a/multi-core/03-intro-omp/exemplo1.cpp b/multi-core/03-intro-omp/exemplo1.cpp deleted file mode 100644 index 77df29c14..000000000 --- a/multi-core/03-intro-omp/exemplo1.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -int main() { - #pragma omp parallel - { - std::cout << "ID:" << omp_get_thread_num() << "/" << - omp_get_num_threads() << "\n"; - } - std::cout << "Join implicito no fim do bloco!" << "\n"; - return 0; -} diff --git a/multi-core/03-intro-omp/roteiro.pdf b/multi-core/03-intro-omp/roteiro.pdf deleted file mode 100644 index 2059ee58f..000000000 Binary files a/multi-core/03-intro-omp/roteiro.pdf and /dev/null differ diff --git a/multi-core/03-intro-omp/slides.pdf b/multi-core/03-intro-omp/slides.pdf deleted file mode 100644 index 3212a4777..000000000 Binary files a/multi-core/03-intro-omp/slides.pdf and /dev/null differ diff --git a/multi-core/04-projeto/04-slides.pdf b/multi-core/04-projeto/04-slides.pdf deleted file mode 100644 index b341baa88..000000000 Binary files a/multi-core/04-projeto/04-slides.pdf and /dev/null differ diff --git a/multi-core/04-projeto/enunciado.pdf b/multi-core/04-projeto/enunciado.pdf deleted file mode 100644 index 111474db3..000000000 Binary files a/multi-core/04-projeto/enunciado.pdf and /dev/null differ diff --git a/multi-core/04-projeto/visualizador/CMakeLists.txt b/multi-core/04-projeto/visualizador/CMakeLists.txt deleted file mode 100644 index 4242174fd..000000000 --- a/multi-core/04-projeto/visualizador/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -project(visualizador) -cmake_minimum_required(VERSION 2.8) - -# Point to our own cmake modules -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) - -find_package(PkgConfig REQUIRED) -# Find SDL2 - -pkg_search_module(SDL2 REQUIRED sdl2) -pkg_search_module(SDL2_gfx REQUIRED SDL2_gfx) - -# Add global definitions -add_definitions("-Wall") -include_directories(${SDL2_INCLUDE_DIR} ${SDL2_gfx_INCLUDE_DIR}) - -add_executable(visualizador main.cpp visualizador.cpp) -target_link_libraries(visualizador ${SDL2_LIBRARIES} ${SDL2_gfx_LIBRARIES}) diff --git a/multi-core/04-projeto/visualizador/README.md b/multi-core/04-projeto/visualizador/README.md deleted file mode 100644 index 149ee7fc2..000000000 --- a/multi-core/04-projeto/visualizador/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Visualizador simplificado de dinâmica 2D - -Este visualizador foi criado para a Disciplina de SuperComputação do INSPER (2018/2) -para o projeto 1. Ele é implementado em *SDL2* e usa CMake para compilação. - -Se você não conhece CMake, leia [este tutorial](https://cmake.org/cmake-tutorial/). Este outro texto ([CMake by Example](http://derekmolloy.ie/hello-world-introductions-to-cmake/)) também é interessante e pode ser uma introdução um pouco mais prática a esta ferramenta. - - -O código do visualizador pode ser modificado por vocês. - -Limitações: - -1. O código desenha bolinhas quando o método `draw()` é chamado. O ideal seria usar - recursos de hardware para os desenhos. -2. Não é feito nenhum controle de tempo nem existe nenhum mostrador do tempo da simulação - e sua relação com o tempo do relógio. - -### Dependências de compilação - -* SDL2 -* SDL2_gfx - diff --git a/multi-core/04-projeto/visualizador/body.h b/multi-core/04-projeto/visualizador/body.h deleted file mode 100644 index e659aeeed..000000000 --- a/multi-core/04-projeto/visualizador/body.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2018 Igor Montagner igordsm@gmail.com - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* Este arquivo deve conter a definição da sua estrutura/classe que - * representa um corpo na simulação. A estrutura abaixo é somente um exemplo - * que deve ser alterado para que seu programa seja integrado com o - * visualizador. - */ - - -typedef struct _ball { - double x, y; - double vx, vy; - double mass, radius; -} ball; diff --git a/multi-core/04-projeto/visualizador/main.cpp b/multi-core/04-projeto/visualizador/main.cpp deleted file mode 100644 index 81a678e97..000000000 --- a/multi-core/04-projeto/visualizador/main.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018 Igor Montagner igordsm@gmail.com - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "visualizador.h" - -#include - -int main(int argc, char ** argv) { - - std::vector balls(100 * 100); - for (int i = 0; i < 100; i++) { - for (int j = 0; j < 100; j++) { - balls[i*100 + j].x = i*10; - balls[i*100 + j].y = j*10; - balls[i*100 + j].radius = 4; - } - } - Visualizador v(balls, 1000, 1000, 0.01); - - v.run(); - - return 0; -} diff --git a/multi-core/04-projeto/visualizador/visualizador.cpp b/multi-core/04-projeto/visualizador/visualizador.cpp deleted file mode 100644 index 4dfb81090..000000000 --- a/multi-core/04-projeto/visualizador/visualizador.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2018 Igor Montagner igordsm@gmail.com - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "visualizador.h" -#include "SDL2/SDL.h" -#include "SDL2/SDL2_gfxPrimitives.h" - -#include - -#include - -typedef std::chrono::high_resolution_clock Time; - - -Visualizador::Visualizador(std::vector &bodies, int field_width, int field_height, double delta_t) : - delta_t(delta_t), - field_width(field_width), - field_height(field_height), - bodies(bodies) { - SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS); - - double ratio = (double) field_width / field_height; - if (ratio > 1) { - win_width = max_dimension; - win_height = max_dimension / ratio; - } else { - win_width = max_dimension * ratio; - win_height = max_dimension; - } - win = SDL_CreateWindow("Visualizador SUPERCOMP", SDL_WINDOWPOS_CENTERED, - SDL_WINDOWPOS_CENTERED, win_width, win_height, 0); - renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED); - iter = 0; -} - -Visualizador::~Visualizador() { - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(win); - SDL_Quit(); -} - - -void Visualizador::draw() { - SDL_SetRenderDrawColor(renderer, 160, 160, 185, 255); - SDL_RenderClear(renderer); - for (auto i = bodies.begin(); i != bodies.end(); i++) { - filledCircleRGBA(renderer, i->x / field_width * win_width, - i->y / field_height* win_height, - i->radius / field_width * win_width, - 255, 0 ,0, 255); - } - SDL_RenderPresent(renderer); -} - - -void Visualizador::run() { - SDL_ShowWindow(win); - draw(); - while (!SDL_QuitRequested()) { - do_iteration(); - draw(); - } -} - -void Visualizador::do_iteration() { - /* TODO: me implemente! */ - iter++; -} - - - - diff --git a/multi-core/04-projeto/visualizador/visualizador.h b/multi-core/04-projeto/visualizador/visualizador.h deleted file mode 100644 index 8eb33381e..000000000 --- a/multi-core/04-projeto/visualizador/visualizador.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2018 Igor Montagner igordsm@gmail.com - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef VISUALIZADOR_H -#define VISUALIZADOR_H - -#include "SDL2/SDL.h" -#include "body.h" -#include - -/** - * Visualizador simplificado para a disciplina de Super Computação do INSPER - 2018/2. - * - * Este Visualizador recebe um vector de corpos circulares com massa, raio, posição e - * velocidade, as dimensões do campo de simulação e o passo da simulação. A cada frame - * da simulação a função `do_iteration` é executada. Coloque o código da sua simulação - * neste método. Você pode escolher criar uma subclasse ou simplesmente escrever seu - * código neste método. Criar uma subclasse tem a vantagem de poder criar visualizadores - * para os diferentes modelos de física. - * - */ -class Visualizador -{ -public: - long iter; - double delta_t; - - Visualizador(std::vector &bodies, int field_width, int field_height, double delta_t); - ~Visualizador(); - - void do_iteration(); - void run(); - -private: - SDL_Window *win; - SDL_Renderer *renderer; - int win_width, win_height; - int field_width, field_height; - std::vector &bodies; - - const int max_dimension = 700; - - void draw(); - -}; - -#endif // VISUALIZADOR_H diff --git a/multi-core/05-for-paralelo/mandel.cpp b/multi-core/05-for-paralelo/mandel.cpp deleted file mode 100644 index c29fa203f..000000000 --- a/multi-core/05-for-paralelo/mandel.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -#include -#include - -# define NPOINTS 1000 -# define MAXITER 1000 - -void testpoint(void); - -struct d_complex{ - double r; - double i; -}; - -struct d_complex c; -int numoutside = 0; - -void testpoint(void){ - struct d_complex z; - int iter; - double temp; - z=c; - for (iter=0; iter4.0) { - numoutside++; - break; - } - } -} - - -int main(){ - int i, j; - double area, error, eps = 1.0e-5; - #pragma omp parallel for default(shared) - for (i=0; i -#include "pi-omp-critical.cpp" - -int main () { - long num_steps = 1000000000; - double pi; - double start_time, run_time; - - start_time = omp_get_wtime(); - pi = pi_omp_critical(num_steps); - run_time = omp_get_wtime() - start_time; - printf("\n pi with %ld steps is %.12lf in %lf seconds\n ",num_steps,pi,run_time); - return 0; -} diff --git a/multi-core/05-for-paralelo/pi-omp-critical.cpp b/multi-core/05-for-paralelo/pi-omp-critical.cpp deleted file mode 100644 index cdb7e32bd..000000000 --- a/multi-core/05-for-paralelo/pi-omp-critical.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include - -double pi_omp_critical(long num_steps) { - double step = 1.0/(double) num_steps; - double sum = 0; - - #pragma omp parallel - { - int id = omp_get_thread_num(); - long nt = omp_get_num_threads(); - double d = 0; - for (long i = id; i < num_steps; i+=nt) { - double x = (i-0.5)*step; - d += 4.0/(1.0+x*x); - } - #pragma omp critical - { - sum += d; - } - } - - return sum * step; -} - diff --git a/multi-core/05-for-paralelo/roteiro.pdf b/multi-core/05-for-paralelo/roteiro.pdf deleted file mode 100644 index 00cf2113d..000000000 Binary files a/multi-core/05-for-paralelo/roteiro.pdf and /dev/null differ diff --git a/multi-core/05-for-paralelo/slides.pdf b/multi-core/05-for-paralelo/slides.pdf deleted file mode 100644 index 16fbf0fae..000000000 Binary files a/multi-core/05-for-paralelo/slides.pdf and /dev/null differ diff --git a/multi-core/06-thread-safety/pi_mc.c b/multi-core/06-thread-safety/pi_mc.c deleted file mode 100644 index d401ca40a..000000000 --- a/multi-core/06-thread-safety/pi_mc.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - -NAME: - Pi_mc: PI Monte Carlo - -Purpose: - This program uses a Monte Carlo algorithm to compute PI as an - example of how random number generators are used to solve problems. - Note that if your goal is to find digits of pi, there are much - better algorithms you could use. - -Usage: - To keep the program as simple as possible, you must edit the file - and change the value of num_trials to change the number of samples - used. Then compile and run the program. - -Algorithm: - The basic idea behind the algorithm is easy to visualize. Draw a - square on a wall. Inside the square, draw a circle. Now randomly throw - darts at the wall. some darts will land inside the square. Of those, - some will fall inside the circle. The probability of landing inside - the circle or the square is proportional to their areas. - - We can use a random number generator to "throw the darts" and count - how many "darts" fall inside the square and how many inside the - cicle. Dividing these two numbers gives us the ratio of their areas - and from that we can compute pi. - -Algorithm details: - To turn this into code, I need a bit more detail. Assume the circle - is centered inside the square. the circle will have a radius of r and - each side of the square will be of area 2*r (i.e. the diameter of the - circle). - - A(circle) = pi * r^2 - A(square) = (2*r)*(2*r) = 4*r^2 - - ratio = A(circle)/A(square) = pi/4 - - Since the probability (P) of a dart falling inside a figure (i.e. the square - or the circle) is proportional to the area, we have - - ratio = P(circle)/P(square) = pi/4 - - If I throw N darts as computed by random numbers evenly distributed - over the area of the square - - P(sqaure) = N/N .... i.e. every dart lands in the square - P(circle) = N(circle)/N - - ratio = (N(circle)/N)/(N/N) = N(circle)/N - - Hence, to find the area, I compute N random "darts" and count how many fall - inside the circle. The equation for a circle is - - x^2 + y^2 = r^2 - - So I randomly compute "x" and "y" evenly distributed from -r to r and - count the "dart" as falling inside the cicle if - - x^2 + y^2 < or = r - -Results: - Remember, our goal is to demonstrate a simple monte carlo algorithm, - not compute pi. But just for the record, here are some results (Intel - compiler version 10.0, Windows XP, core duo laptop) - - 100 3.160000 - 1000 3.148000 - 10000 3.154000 - 100000 3.139920 - 1000000 3.141456 - 10000000 3.141590 - 100000000 3.141581 - - As a point of reference, the first 7 digits of the true value of pi - is 3.141592 - - -History: - Written by Tim Mattson, 9/2007. - -*/ -#include -#include -#include "random.h" - -// -// The monte carlo pi program -// - -static long num_trials = 100000000; - -int main () -{ - long i; long Ncirc = 0; - double pi, x, y, test; - double r = 1.0; // radius of circle. Side of squrare is 2*r - - seed(-r, r); // The circle and square are centered at the origin - double time = omp_get_wtime(); - for(i=0;i -#include "boost/filesystem.hpp" - -using namespace boost::filesystem; - -int main(int argc, char **argv) { - - path p("."); - - for (auto &entry : directory_iterator(p)) { - std::cout << entry.path().string() << is_regular_file(entry.path()) << "\n"; - - } - - return 0; -} diff --git a/multi-core/10-alto-nivel-omp/roteiro.pdf b/multi-core/10-alto-nivel-omp/roteiro.pdf deleted file mode 100644 index 305675564..000000000 Binary files a/multi-core/10-alto-nivel-omp/roteiro.pdf and /dev/null differ diff --git a/multi-core/10-alto-nivel-omp/slides.pdf b/multi-core/10-alto-nivel-omp/slides.pdf deleted file mode 100644 index e7fca231b..000000000 Binary files a/multi-core/10-alto-nivel-omp/slides.pdf and /dev/null differ diff --git a/multi-core/11-granularidade/make-big-file.py b/multi-core/11-granularidade/make-big-file.py deleted file mode 100644 index 87e14db33..000000000 --- a/multi-core/11-granularidade/make-big-file.py +++ /dev/null @@ -1,18 +0,0 @@ -import random -import string -import sys - -def random_big_file(num_lines, name): - lw = string.ascii_letters + ' ' * 7 - content = '' - with open(name, 'w') as f: - for i in range(num_lines): - content += ''.join([random.choice(lw) for i in range(100)]) - f.write(content) - -if __name__ == '__main__': - num_lines = int(sys.argv[1]) - num_files = int(sys.argv[2]) - output_dir = sys.argv[3] - for i in range(num_files): - random_big_file(num_lines, '{}/{}.txt'.format(output_dir, i)) diff --git a/multi-core/11-granularidade/make-small-files.py b/multi-core/11-granularidade/make-small-files.py deleted file mode 100644 index 10020d553..000000000 --- a/multi-core/11-granularidade/make-small-files.py +++ /dev/null @@ -1,14 +0,0 @@ -import random -import string -import sys - -def small_file(name): - lw = string.ascii_letters + ' ' * 7 - with open(name, 'w') as f: - f.write(''.join([random.choice(lw) for i in range(100)])) - -if __name__ == '__main__': - num_files = int(sys.argv[1]) - output_dir = sys.argv[2] - for i in range(num_files): - small_file('{}/small-{}.txt'.format(output_dir, i)) diff --git a/multi-core/11-granularidade/roteiro.pdf b/multi-core/11-granularidade/roteiro.pdf deleted file mode 100644 index 07ce988eb..000000000 Binary files a/multi-core/11-granularidade/roteiro.pdf and /dev/null differ diff --git a/multi-core/11-granularidade/slides.pdf b/multi-core/11-granularidade/slides.pdf deleted file mode 100644 index bf77e8a75..000000000 Binary files a/multi-core/11-granularidade/slides.pdf and /dev/null differ diff --git a/multi-core/12-suporte/exemplo_fs.cpp b/multi-core/12-suporte/exemplo_fs.cpp deleted file mode 100644 index be048a81f..000000000 --- a/multi-core/12-suporte/exemplo_fs.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include "boost/filesystem.hpp" - -using namespace boost::filesystem; - -void busca_no_arquivo(std::string path, std::string term) { - std::string temp; - int line = 0; - ifstream f(path); - while (std::getline(f, temp)) { - if (temp.find("the") >= 0) { - std::cout << path << ":" << line << "\n"; - line++; - } - } -} - -int main(int argc, char **argv) { - - path p("."); - for (auto entry : directory_iterator(p)) { - std::string path_str = entry.path().string(); - busca_no_arquivo(path_str, "the"); - } - return 0; -} diff --git a/multi-core/12-suporte/roteiro.pdf b/multi-core/12-suporte/roteiro.pdf deleted file mode 100644 index 312c7f964..000000000 Binary files a/multi-core/12-suporte/roteiro.pdf and /dev/null differ diff --git a/multi-core/12-suporte/teste_omp.cpp b/multi-core/12-suporte/teste_omp.cpp deleted file mode 100644 index 05ac0cda9..000000000 --- a/multi-core/12-suporte/teste_omp.cpp +++ /dev/null @@ -1,12 +0,0 @@ - -#include -#include - -int main() { - -#pragma omp parallel -{ - std::cout << "ID:" << omp_get_thread_num() << "\n"; -} - return 0; -} diff --git a/multi-core/13-14-sincronizacao/cond_var.cpp b/multi-core/13-14-sincronizacao/cond_var.cpp deleted file mode 100644 index aad8546c5..000000000 --- a/multi-core/13-14-sincronizacao/cond_var.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include -#include -#include -#include - -void thread0(int &resultado_para_thread1) { - // faz trabalho longo - std::this_thread::sleep_for(std::chrono::milliseconds(300)); - - resultado_para_thread1 = 10; - - // faz trabalho longo - std::this_thread::sleep_for(std::chrono::milliseconds(1300)); - std::cout << "Fim thread0!" << std::endl; -} - -void thread1(int const &resultado_da_thread0, int &resultado_para_thread2) { - // faz trabalho long com resultado de thread0 - std::this_thread::sleep_for(std::chrono::milliseconds(1500)); - - // finja que isto depende da thread0 - resultado_para_thread2 = 20; - - std::cout << "Fim thread1!" << std::endl; -} - -void thread2(int const &resultado_thread_0, int const &resultado_thread_1) { - // faz trabalho longo com resultado de thread0 - std::this_thread::sleep_for(std::chrono::milliseconds(1500)); - - // faz trabalho longo com resultado de thread1 - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - - - std::cout << "thread2:" << resultado_thread_0 + resultado_thread_1 << "\n"; - std::cout << "Fim thread2!" << std::endl; -} - -int main(int argc, char **argv) { - int res_t0, res_t1; - - thread0(res_t0); - thread1(res_t0, res_t1); - thread2(res_t0, res_t1); - - return 0; -} diff --git a/multi-core/13-14-sincronizacao/rdv.cpp b/multi-core/13-14-sincronizacao/rdv.cpp deleted file mode 100644 index 843c9d853..000000000 --- a/multi-core/13-14-sincronizacao/rdv.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include -#include -#include -#include - -std::mutex A, B; -std::condition_variable cA, cB; - -void tarefaA() { - - std::cout << "Faz trabalho A" << std::endl; - - { - std::unique_lock lk(A); - cA.notify_one(); - } - - { - std::unique_lock lk(B); - cB.wait(lk); - } - - -// DESEJO ESPERAR POR B AQUI! - std::cout << "Fim trabalho A" << std::endl; -} - -void tarefaB() { - - std::cout << "Faz trabalho B" << std::endl; - { - std::unique_lock lk(B); - cB.notify_one(); - } - { - std::unique_lock lk(A); - cA.wait(lk); - } -// DESEJO ESPERAR POR A AQUI! - std::cout << "Fim trabalho B" << std::endl; -} - -int main(int argc, char *argv[]) { - std::thread t1(tarefaA); - std::thread t2(tarefaB); - - - t1.join(); - t2.join(); - return 0; -} diff --git a/multi-core/13-14-sincronizacao/roteiro.md b/multi-core/13-14-sincronizacao/roteiro.md deleted file mode 100644 index 2dc4721e5..000000000 --- a/multi-core/13-14-sincronizacao/roteiro.md +++ /dev/null @@ -1,99 +0,0 @@ -% 13 - Sincronização -% Super Computação 2018/2 -% Igor Montagner, Luciano Soares - -**Entrega**: 24/09 - -# Parte 1 - Sincronização em C++ threads - -No roteiro 03 criamos threads e as executamos usando o pacote `` adicionado após C++11. Neste módulo do curso vamos deixar o OpenMP de lado e voltar a usar esta API. - -**Exercício**: crie um arquivo *thread1.cpp* com uma função `main` que cria 4 threads. Cada thread deverá rodar uma função que imprime um id entre 0 e 3 passado pelo `main`. - -Se for necessário, revise o conteúdo do roteiro 03. - -## Mutex - -Você deve ter notado que, por vezes, os prints do seu programa aparecem embaralhados. Já sabemos que isto ocorre pois a saída padrão é um recurso que está sendo compartilhado por várias threads. Na expositiva vimos que devemos guardar a seção que utiliza recursos compartilhados usando um *Mutex*. - -**Exercício**: C++11 possui um objeto do tipo `std::mutex`, mas ele não é muito usado. Em contrapartida, são usados `std::lock_guard` e `std::unique_lock`. Por que? \vspace{7.5em} - ------ - -**Exercício**: conserte o problema dos prints embaralhados usando sua pesquisa acima. Qual a vantagem da técnica usada em comparação do uso direto de um `std::mutex`? - -**Dica**: se você está com problemas em passar seu mutex para função da thread, isto ocorre pois ele não pode ser *copiado*, apenas passado como referência para outras threads. Para usar referências em conjunto com o construtor de `std::thread` você precisa passar seu mutex usando `std::ref` ([documentação](https://en.cppreference.com/w/cpp/thread/thread/thread) - seção Notes). - -**Dica 2**: se você está usando um mutex global, pare de fazer isto e veja a dica 1. - -## Condition Variable - -Neste módulo estamos tratando de paralelismo **por tarefas**. Agora nosso foco não é mais dividir os dados em várias partes e processá-los em paralelo, mas sim processar tarefas inteiras (possivelmente complexas) de maneira paralela **quando possível**. C++11 possui uma implementação de variáveis de condição fácil de usar. Nesta seção iremos sincronizar tarefas que dependem parcialmente umas das outras (ou seja, parte de uma tarefa depende de um resultado de outra enquanto o restante é independente). Ao executarmos as partes independentes de maneira paralela podemos obter grandes ganhos de desempenho em processos longos. - -Trabalharemos primeiro no arquivo *rdv.cpp*. Queremos sincronizar as duas funções para que elas se sincronizem em um certo ponto e depois progridam de maneira independente. - -**Exercício**: Foi feita uma tentativa de uso de variáveis de condição para resolver este problema, porém ela está dando resultados estranhos. Execute *rdv.cpp* diversas vezes e relate qual o problema que ocorre. Você consegue entender a causa deste problema? \vspace{7em} - - -Uma maneira de consertar o problema acima é pedir para a variável de condição checar *explicitamente* a condição que ela guarda. Ou seja, ela é capaz de checar se a condição é verdadeira quando *wait* é chamado e **não** bloquear. A função *notify_one* neste caso acorda uma thread para que ela cheque *explicitamente* se a condição é verdadeira. - -Para isto devemos chamar uma versão de `wait` que aceita um *lambda* que faz a checagem da condição, como no exemplo abaixo. Ao ser notificada (e na primeira chamada a `wait`) a função é executada e, se a condição for verdadeira o código continua a ser executado. - -~~~{.cpp} -cv.wait(lk, []{return cond == true; }); -~~~ - -A sintaxe de *lambda* é um pouco estranha, então é sugerido olhar [este link](https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11) antes de prosseguir. - -**Exercício**: Modifique *rdv.cpp* para ter o comportamento correto usando a técnica descrita acima. - -**Dica**: antes de fazer este exercício leia a [documentação](https://en.cppreference.com/w/cpp/thread/condition_variable) sobre variáveis de condição. - ------ - -Vamos agora trabalhar no arquivo *cond_var.cpp*, em que usaremos variáveis de condição para sincronizar o progresso de três funções cujas tarefas podem ser parcialmente feitas em paralelo. - -**Exercício**: quanto tempo a execução sequencial das três funções demorará? \vspace{2em} - -**Exercício**: algumas partes das tarefas poderiam ser feitas de modo concorrente. Desenhe abaixo um gráfico mostrando qual seria a execução de menor tempo das três tarefas acima. \vspace{5em} - ----- - -Este tipo de processamento é chamado de **pipeline**: cada tarefa avisa as tarefas que dependem dela que seu trabalho foi concluído. Se duas tarefas são independentes elas podem rodar em paralelo. Note que usamos referências constantes (`int const&`) para os resultados calculados por outras tarefas. Isto significa que uma vez calculado este resultado não pode ser modificado por outras tarefas que dependem dele. - -Vamos agora nos concentrar no uso de variáveis de condição para que as threads executem da maneira desenhada no exercício anterior. Precisamos nos atentar aos seguintes detalhes: - -1. Cada variável de condição precisa de um *mutex* associado a ela e este *mutex* protege o acesso às variáveis usadas na checagem de sua condição. -1. Uma variável de condição é responsável por sinalizar que um recurso específico foi produzido. Se existe mais de um recurso possivelmente será necessário usar mais de uma variável de condição. -1. Não se esqueça que variáveis de condição não guardam *notify*s. Ou seja, se não tem ninguém esperando *notify_one* é perdido, o que pode implicar em um programa em *deadlock*. - -**Exercício**: Modifique o programa *cond_var.cpp* para que a execução seja feita da maneira desenhada no exercício anterior. - -## Semaphores - -C++ não possui uma implementação padrão de semáforos, mas é bastante fácil criar uma. Sua tarefa neste exercício será criar uma implementação de semáforos usando as primitivas de sincronização acima. Você deverá implementar uma classe *Semaphore* contendo os métodos `void acquire()` e `void release()`. - -**Exercício**: Quais primitivas de sincronização são necessárias para implementar um semáforo? Como elas devem ser usadas? \vspace{7em} - -**Exercício**: escreva, em pseudo-código, qual deverá ser o comportamento do método `void acquire()`. \vspace{7em} - -**Exercício**: escreva, em pseudo-código, qual deverá ser o comportamento do método `void release()`.\vspace{7em} - -**Exercício**: implemente a classe *Semaphore* e use sua implementação para criar uma versão mais simples do *rdv.cpp*. - ----- - -**Atenção**: existem implementações prontas de semáforos em C++ pela internet. Entregar um código que não corresponda às respostas acima pode implicar em nota 0 nesta atividade. - ----- - -# Parte 2 - Produtor Consumidor - -Na expositiva vimos o modelo de computação concorrente *Produtor-Consumidor*. Usando os conhecimentos adquiridos até agora, implemente este modelo usando C++11 threads. Seu programa deve possuir: - -1. uma fila de tarefas contendo inteiros; -1. uma função `void produce()` que irá produzir inteiros aleatórios entre 0 e 100; -1. uma função `void consume()` que irá tirar inteiros da fila de tarefas e imprimir seu quadrado; - -Para melhorar seus testes você deve incluir no seu código alguns `sleep` para que fique mais claro o que está acontecendo. - diff --git a/multi-core/13-14-sincronizacao/roteiro.pdf b/multi-core/13-14-sincronizacao/roteiro.pdf deleted file mode 100644 index 00526bb5c..000000000 Binary files a/multi-core/13-14-sincronizacao/roteiro.pdf and /dev/null differ diff --git a/multi-core/13-14-sincronizacao/slides.pdf b/multi-core/13-14-sincronizacao/slides.pdf deleted file mode 100644 index c2d85de00..000000000 Binary files a/multi-core/13-14-sincronizacao/slides.pdf and /dev/null differ diff --git a/multi-core/14-projeto-2/enunciado.pdf b/multi-core/14-projeto-2/enunciado.pdf deleted file mode 100644 index 37433135a..000000000 Binary files a/multi-core/14-projeto-2/enunciado.pdf and /dev/null differ diff --git a/multi-core/15-modelos-concorrencia/fila_finita.cpp b/multi-core/15-modelos-concorrencia/fila_finita.cpp deleted file mode 100644 index d58cfad45..000000000 --- a/multi-core/15-modelos-concorrencia/fila_finita.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* Código de exemplo para a disciplina SuperComputação - * - * Aviso: este não é um bom exemplo de práticas de programação em C++ - * nem uma boa implementação de fila. O código abaixo não funciona e é - * usado somente para explicar conceitos de programação concorrente. - * - * Autores: Igor Montagner, Luciano Soares - */ - -#include - -template class FilaFinita { -private: - T *data; - int to_consume, to_produce; - int size; - -public: - FilaFinita(int s); - ~FilaFinita(); - - void add(T elem); - T get(); -}; - - -template FilaFinita::FilaFinita(int s): - size(s) { - to_produce = 0; // espaço para colocar o próximo elemento - to_consume = 0; // espaço contendo o próximo elemento a ser consumido - data = new T[s]; -} - -template FilaFinita::~FilaFinita() { - ~data; -} - -template void FilaFinita::add(T elem) { - data[to_produce] = elem; - to_produce = (to_produce + 1) % size; - assert(to_consume != to_produce); -} - -template T FilaFinita::get() { - assert(to_consume != to_produce); - T elem = data[to_consume]; - to_consume = (to_consume + 1) % size; - return elem; -} diff --git a/multi-core/15-modelos-concorrencia/fila_infinita.cpp b/multi-core/15-modelos-concorrencia/fila_infinita.cpp deleted file mode 100644 index 1e24e8db6..000000000 --- a/multi-core/15-modelos-concorrencia/fila_infinita.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* Código de exemplo para a disciplina SuperComputação - * - * Aviso: este não é um bom exemplo de práticas de programação em C++ - * nem uma boa implementação de fila. O código abaixo não funciona e é - * usado somente para explicar conceitos de programação concorrente. - * - * Autores: Igor Montagner, Luciano Soares - */ - -#include - -template class FilaInfinita { -private: - T *data; - int to_consume, to_produce; - -public: - FilaInfinita(); - - void add(T elem); - T get(); -}; - - -template FilaInfinita::FilaInfinita() { - to_produce = 0; // espaço para colocar o próximo elemento - to_consume = 0; // espaço contendo o próximo elemento a ser consumido - // supomos que data é magicamente alocado e contém espaço infinito -} - -template void FilaInfinita::add(T elem) { - data[to_produce] = elem; - to_produce++; -} - -template T FilaInfinita::get() { - assert(to_consume < to_produce); - T elem = data[to_consume]; - to_consume++; - return elem; -} diff --git a/multi-core/15-modelos-concorrencia/slides.pdf b/multi-core/15-modelos-concorrencia/slides.pdf deleted file mode 100644 index d0512ee91..000000000 Binary files a/multi-core/15-modelos-concorrencia/slides.pdf and /dev/null differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..73de7b441 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +pymdown-extensions +mknotebooks +mkdocs-material +git+https://github.com/insper-education/active-handout-plugins-py.git@v0.3b diff --git a/simd/01-roteiro.pdf b/simd/01-roteiro.pdf deleted file mode 100644 index 228fa97a9..000000000 Binary files a/simd/01-roteiro.pdf and /dev/null differ diff --git a/simd/01-slides.pdf b/simd/01-slides.pdf deleted file mode 100644 index 98b0f7c18..000000000 Binary files a/simd/01-slides.pdf and /dev/null differ diff --git a/simd/funcs.cpp b/simd/funcs.cpp deleted file mode 100644 index 6705c590b..000000000 --- a/simd/funcs.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include - -double inner_prod(double *a, double *b, unsigned long n) { - double sum = 0; - for (unsigned long i = 0; i < n; i++) { - sum += a[i] * b[i]; - } - return sqrt(sum); -} - -double sum_positive(double *a, unsigned long n) { - double s = 0; - for (unsigned long i = 0; i < n; i++) { - if (a[i] > 0) { - s += a[i]; - } - } - return s; -} - -void sqrt_element(double *a, unsigned long n) { - for (unsigned long i = 0; i < n; i++) { - a[i] = sqrt(a[i]); - } -} - -void exp_element(double *a, unsigned long n) { - for (unsigned long i = 0; i < n; i++) { - a[i] = exp(a[i]); - } -} - -void log_element(double *a, unsigned long n) { - for (unsigned long i = 0; i < n; i++) { - a[i] = log(a[i]); - } -} - -void gauss(double *a, double *b, unsigned long n) { - double p = 1 / sqrt(2.0 * M_PI); - for (unsigned long i = 0; i < n; i++) { - b[i] = p * exp(-a[i]*a[i]/2); - } -} diff --git a/simd/tarefa1.cpp b/simd/tarefa1.cpp deleted file mode 100644 index 5a872103c..000000000 --- a/simd/tarefa1.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// Original: Nicolas Brailovsky - -#define SIZE (400) -long sum(int v[SIZE]) throw() { - int s = 0; // este exemplo eh didatico. soma de ints deveria ser long ;) - for (unsigned i=0; i