Initial commit

This commit is contained in:
Aéna Aria 2025-12-06 09:41:23 +01:00
commit b1394d905a
18 changed files with 6496 additions and 0 deletions

12
day1/1.py Normal file
View file

@ -0,0 +1,12 @@
with open(r'day1/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
count = 0
curr = 50
for line in lines:
rot,num = line[0],int(line[1:])
curr += num if rot == "R" else -num
if curr%100 == 0: count += 1
print(count)

22
day1/2.py Normal file
View file

@ -0,0 +1,22 @@
with open(r'day1/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
count = 0
curr = 50
for line in lines:
rot,num = line[0],int(line[1:])
tmp = curr == 0
curr += num if rot == "R" else -num
if curr < 0:
timesbelow = abs(curr//100)
count += timesbelow - (1 if tmp else 0)
curr += timesbelow * 100
if curr == 0:
count += 1
if curr > 0:
count += curr//100
curr = curr%100
print(curr, count)
print(count)

4768
day1/input.txt Normal file

File diff suppressed because it is too large Load diff

14
day2/1.py Normal file
View file

@ -0,0 +1,14 @@
with open(r'day2/input.txt', 'r') as input:
ranges = input.read().split(',')
sum = 0
for i in range (0,1000000):
invalid = int(str(i)*2)
for range in ranges:
low,high = int(range.split('-')[0]), int(range.split('-')[1])
if invalid >= low and invalid <= high:
sum += invalid
print(invalid)
print(sum)

17
day2/2.py Normal file
View file

@ -0,0 +1,17 @@
with open(r'day2/input.txt', 'r') as input:
ranges = input.read().split(',')
sum = 0
invalids = []
for i in range(0,100000):
for j in range(2,12):
invalid = int(str(i)*j)
for rang in ranges:
low,high = int(rang.split('-')[0]), int(rang.split('-')[1])
if invalid >= low and invalid <= high and invalid not in invalids:
sum += invalid
invalids.append(invalid)
print(invalid)
print(sum)

1
day2/input.txt Normal file
View file

@ -0,0 +1 @@
3299143-3378031,97290-131156,525485-660941,7606-10180,961703-1031105,6856273537-6856492968,403537-451118,5330-7241,274725-384313,27212572-27307438,926609-954003,3035-3822,161-238,22625-31241,38327962-38415781,778-1155,141513-192427,2-14,47639-60595,4745616404-4745679582,1296-1852,80-102,284-392,4207561-4292448,404-483,708177-776613,65404-87389,5757541911-5757673432,21-38,485-731,1328256-1444696,11453498-11629572,41-66,2147-3014,714670445-714760965,531505304-531554460,4029-5268,3131222053-3131390224

16
day3/1.py Normal file
View file

@ -0,0 +1,16 @@
with open(r'day3/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
sum = 0
for line in lines:
# Transforming line to array of digits
numbers = list(map(lambda x: int(x), list(line)))
# Since the first digis is the most important, we can chose the best (careful to leave a single digit at the end to leave a second choice!)
best1 = max(numbers[:-1])
besti = numbers.index(best1) # first occurence of best digit
best2 = max(numbers[besti+1:])
sum += best1*10+best2
print(sum)

23
day3/2.py Normal file
View file

@ -0,0 +1,23 @@
with open(r'day3/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
sum = 0
for line in lines:
# Transforming line to array of digits
numbers = list(map(lambda x: int(x), list(line)))
besti = -1 # -1 to give 0 to the start of the allowed ranges
linejolt = '' # value buffer
for i in range(12):
# Allowed is the list of elements we can choose from while not compromising future choices
# 100 magic number to prevent 11-i from becoming negative, hence excluding last number if list has one single element remaining
allowed = numbers[besti+1:-(11-i) if 11-i > 0 else 100]
best = max(allowed)
# slicing here to prevent chosing index from a previous allowed range
besti = numbers[besti+1:].index(best)+besti+1
linejolt += str(best)
sum += int(linejolt)
print(sum)

200
day3/input.txt Normal file
View file

@ -0,0 +1,200 @@
2223223335223234342422322225224113422423142441542233322124236224232234222242262232142124444266221211
3212232222232221322223222223212232212152222232122241322222221423224112231222323221231222221312222322
3332444245543363143381512535862762325623248235232164657435326426367633324333853333536333733833357539
1428334335286325923334483344456444262728834114184434543245641731323522323329484556444432628721132422
3222252232322132222212222331222544222232112226432225232222222222141222231221723311115233222222621232
3334361223233442334383233243363325336422522453533442133322433124632333233345243431333523322423233644
2331213393322533432233222222223222332232228161223221222231231421222112212312222222336222212521822329
4424634252414231624436422344333647824261241544534543323434244331532526224251224423222322431237443234
2222212212234222414222212211222222224222222122313112221123221223222122222212121221222222122321323221
1334564426427754756937573533536596455557669575684398856456516737537737544566473376353445574252465657
3431335522633579533353663455599554136366636432554396334483536335333833456345234365161365247284333326
3233332263133622523133337333723333633433333333473336233333633663211223332232332323233634363354633233
2555215432231513242422234132321242221112114355254443455553144331333113515321335141132125412525426789
2522263366242341236362483135612572333385673743536237532353268137268663213235361555318521117236242265
8675685646565776656579676584567958666668482459782884664865656977685666666593757976769464386397686457
3242432212235232355212223112322232223223223223292311232222333123163232422222223224332232213223322234
4343233412126432332524334425254337333435222232316332322335426234313633424332232334533436333324426435
3333333232333423343153323333343333424223132342333343323233333633323132233332332334322332233232233433
8248498668593334334643677856462769286475635469634638448854544673339244344554535444673764446965595944
2222422222242442232224222422228221212233212211231412522222221231132152222222121426222327822224225211
1521223122131223222112122222323333442223133232323141132222162231222222222312212433222432122321521422
6333233442242243413346363338354347422333143323333332622344322335336534333345322432823243321433334343
2345353556434528345436673543454146472446233467554347175833675346363535263443726465444746213483435426
8152242444321223322225266232547313422222354656222535362133323224231122315221321445282552531315621143
2754556585776644486847569459348578443564657566438595549358486936834546556926845474573749453884436556
1221122122222422222122232222222222222231221322325222112232423313131222212221122222231222223342212222
3223222212312231222222333234234221322213432114222313223122132221321323223232232424222332322322343222
2224131123322333233232333722221323341332332333223323332223325212332324342223242423123352212243232364
6677525377545476473346854744776362554678677566724566555479352565547638357674454585556346561764554586
2563641556623344561443336126144546452643143223262363235113553156556354655135434626261111244616232789
2321312112122352332641222222612239811222432732271216125212122111232221322217415121422222223222122232
3335334233223352324422234533133323184533332333414225151855243334343491433334135363443533835332533344
7462577822755463546334474578668747776762866564754774579447653988743765677565696577465655424435766774
3332331433412222422233538342325552235274255434451542533313322533322353322356543222423535313442532432
5763447444466445354745337425444625653352126154376636577576434546571863565532213563451655355664635363
3113267323362243543215455254352152534512214221453456554133434555524524311233431354223626232212566124
2212232222273231211221423222222422321122212222122222422322125123234113135343222123222223422323242221
3212514355223522233223313242234442323326221322344343212342243134223233324231233332227221344548432622
3355233133283328422433343353333237653341432323331422225236324122323824233234533345522344342332322413
4232353222314335124422422434322225124531332223223263321532222524334123322232323233212323423332122112
6444335243543835432334338264343324533233323334634532332236233344163333463446343235423344435143123333
2433135224222223224122222232332511231222222271432512212322126922222172213223122222242122222133133142
3644533334356335334334432353525333533325334333233333435353553632353415345331322325433315533333335324
3226212312253224522222212243222322141322241132122321222212122212412135361112222423432222161121222442
2524252251424335243534534364432222234232334552443342362224452732434326423275342354534334824222272532
2532635253642423275443555371282162333445212356545546827372544243352615544455625242443653452324142335
6349665566544595579978637598365749655456889646496655665756455444856944676549878559544596647352743966
3222121332223222213242333221233425314122333238433342323232222332211121323123122322322232232232242832
3223213224311432134112222243222432124222113532513742222511114225224224322123422225221232321232442221
3537272582727253348355376358436273373533773385355724935635363336773537577256376673356273955439631555
1122242422472422241224213214424112113214222322242422221212322221522121622272312422221622222166234212
4956226652866413454319564564583233236262484311567784546255435963633752376243332332336672332223421227
6373727431323233163532733436345332454662224433733463333492238672322676455462533216243543533239123125
3682223534443223446276582453431235543245252384543225671462146226323262143662235322645434243522353352
3454754454533554359655356525423343349526825122342285545443622233352533233242652482537845436245365242
5243432234333453144224223334263423445514545322433234337424333943344433334242474443224242222434444232
5141246122142234134223432225255236222223232224622225342263432221261432224336233115161132213213322322
5153322821127427142226343222353322222175262117282482322222438523322422328222225263325131211151221522
7122312132227525252134522522226712122321221621332121681222222132223422212132222522222312223222622222
3122423222222226122222214221222413525242212251122222222313212222225144453221235465122221231224222242
2334233134233323323234342424333433122232333243353133222232322352312322222332223333423323223333335222
9746424635656553275544444735345465275747335664645744443744747346777744677477765755677636252776337767
2236541343756637327652455672864231465483626423861537366524855524665545574864752564528646455554538548
4154532244412292224624323447483344642542163375252125312234449216334444424258564632392442442364126224
2151222222322112221224131212332222132212243222142122422222223326211212221222241224212232312223124132
2214251212612227511311511121522222141622222922211222171373322322221251422232112224141422342222232222
3232213212312222324321223323222322223212212531221222222221233222222222222222123122222233234625231211
2222222245221223213224433342121622232212231221132362132242414232232323223552232432233234341211222132
7816573332197181566834245672366262483692255371456476542429557618855286124655162634242443252386356243
2182222233222222222222226131222311222222323122232222122222222222221212222222222263212222222232422222
4233118133222529235222285224212422922225329232112262241422252254212222812324223332242422271244523822
5625214743364436243366428526484632542435278432437625622564732732563352335763453677615356653289347154
2156488574942321544632343543435543335533234443331483534346433572139534535443565353545243376347664355
2331462322263222132323232262233124312252123222332425422432221463222532343342534131332232221413326321
4233666622454235332244741542543133536444333355852363444846444436344634334655527316522835252375435726
4323341443331332443352284321423343363222627221433342421223222232323341443232632234733262325433312324
2212222232253125212211223122222221222222625222222222121211222213622421222222222122222232422212212122
4552552626433645265552353456442252452664442266344566646563536666522433562153323442644354315213646543
5633213563424433234255331442441343532532133225433354333554323344333555332353324335272543235315214215
3322312345342322322321243225223223123322323335213332333343212352123222352232232455243223332233225122
2331662555922345724546982624437584257526455145125634544632466125443859762244246234925224254222942388
4445423342361423232424362433444232224414323442324346444457345463454344224342474344433442432344443444
3332222321323343333233321324333345233132233523332234213332222742323333253529532433337534213123333332
8674767866677657666858876799866775567777796686458765578746757657755847496687644473968766578565557597
2523336353323331323223333332421332332422343332332355222243732133333635343333223322334531432337334216
6866676634297646662727576257767795786466978587748686464987595677654678687357764287656977867787566776
2545832333238426668222233365622336655523323286282134226233825221245225221374432973335454832244152412
4546224336637433463345246344663636654332663336455324546254657454526546144643342242424234673538435654
2333234424546343361313272335334423433623433433434324432452633333416433442433464333482533143453354343
3597555278447566954564354355675875345734245587663724326454565345264465555576327644454656544675467246
5232432233463333653433123533322341322232322461211322263333453333332132632633313333641243361352333433
5643255524216615442555635535542426342464562742263354543343654656154322464534455446524655546654645463
2342233381322332233243441334221323211332252342353533424223343126143333432222323334334442432232346333
1333222312132262222223232223222222122112243122252222223222313221121222222132333322221122222231222342
1721222425522522223436222221624236234186223643322234422762354367262221527282522124222754272344123552
4431373341322236342943334536253232263232623313223333334122333332232322232364333328343728321328331232
5647347545544733648542285444572378225682255332796255371529593355266167544345523321632464617555372492
3232212323223213226252324323222324221222221214224222231221122222222422222222342222112222222223344422
1232214222722344423521213826461333223441112121622222224522231242412232232322649522212122621244722223
5342395463265345333131331436649435352231235866675524543323314324968493451238234433423363222336322523
6233334233534463343634334423421344333434223124244623134355643433453432333333313323325426623344233232
7535735767664565553367856758545735455445564376655636256568778475253675474753672686726564575532223747
4658487474954939247435416384223735557443444548345525444844947474517563442645579617224344554394448454
7559596988765957888579598556777897595757997468587759798975956896856533989497929439744776878746774519
2315229227652262224221428331232123227231253214848122348248213232237624252521222262214226245222912111
2232235221323312242632223334421345224226422222232216123322231323222324422232522242221222331232121312
2336246843443833453146337544347544233423433332333464243333344444343428434234443333326345433134338443
5224236334232323524225233312321332332323265232242251223343333353323434333522445331324323223324333333
3444333333333323533322333323723223333333232463434333333322313133343332432323335233333335133333233234
2322222222373212317322111223522612222214222611412212113132322222413222222123212421322222227121221221
2222312121221214122222522122122122122222323112111224222222222232242522112223132222222253221222424241
3232232122421331343293332634244223543133543233323222213321244253533312332343223222333324231443232324
2223322431122134313222323344241123223123542223431231222432332212222222222222232622222232232271222223
4233533522142454454574532355354425524432542245144552521233251235255243425425435314343541444217431432
2521344225537233436442326445235513229233631422364832211133823323832233425564523332222522221216687527
2222222526232321124221222221223312322221232136323332223333322222222233622223231222322132322222252322
4224124542353342222335236522934334423423322244534322742334432424445422133433453451523246344213124455
2622426234241225525223311322254342513433535252222252212121221235423215513432234521225138223423133424
3344444633723434434443333332364443743464443344253434234333351443243444334343343244444432328423333433
1453686476543954765833856359546669846569645984867573335446564645965857535749557654777788665655667846
6343232513154333353232233322223322214233733222521333234522152753362421433342431223531224222223223153
6732336323443563447347625754343524342526544446644344525247442445564642713835524444534576624544664433
8584755457662528535376664566485845678687635686634465266585744652876286832776543557846765545485845688
4373722628373252856333732734343332367233953623343333335542476253293422344433433377543772533355333336
4225465665552574764251352686377385384465577266144232241663534636764474564564685646737686756461645434
2422242322222433112222234322212352211223221222322222242221223221122242222122222222222522422222232245
3235416435349524344598636556525856361374536533233675937343939563955534646382977456756682855364264644
5345587176637557458333642354335748882353222333454435487766552732568355462144646767577262494632466353
3373443425933333333653143633313324127345344413234344235434233253325236124253334234443324363334336225
4225614822264775992771225424677843373224646225893565692238127227422662221298242861721377223529365422
6414436642526353552876542543323146555555724936236584514534354364543652744563545432694553375423254453
4463333443334343333435433543335322523533443534433324543355435435343333333535247353344434444442345433
3414244442446323459792532222524643673464346333635426322363636364432735463261263544673443454524245636
2533226122332122433222222232122252332423132422212222234232262222312132315323222212435112123212332124
3222322222322212222221422322222224222222522222322222132224412421232112522322122222224222122211222232
5997967599799643946859668685748887589666577775668499873639367985697744796865649499958867377987244967
2421212142222212223422322222412221222421252132822322221122222224231222222245222522222414322122222225
2221223227412213254214125222222246221235222222212122212212222122232242344235222545221121442223112313
6735137136823633322322133232173232325163347254333439313376523532423223214832321333232323432313133222
3315217642224222212475698478642222442392211122261652172221337622233289435228827122522232455223469222
2232222253221127225234122222522222122222211712162222224122723222422222222322322223271282122322242753
4333232443464123226443934644423326434434423322243333465234733594414634436573348464523223334224322443
3825214423554384235562452445415242552322222213723254591445542342364232423323434224155945432552292242
3224582343332352534454524222353552735222321252365336521355524454323524545342722363655244525352425352
4342623384342436426333439337727523914543294542423281427246455846426315361931376321476252357922777237
2135662525666283756692565435516533367556555261564652486374242663676987532437656555366554646366666245
3444444123443542233433243332343114232442424424232332244334642324342321152223442435323433145254333322
5132252322143221432233121213522441532321122132322464232324243322424143214262324242231223331421123242
3423373444442444343353444443544443444143444444334443444454344434444445444414442543415444334744444534
6337485485727338651245535336333546436764373323833336433533327233646533566515434353373555335463435363
3222122324222122122122112232422222323121233224262223212215212222262221122222217222333132421222231232
2332222222324524432232141212244432223122222321222222222233222222223323322123123332221214132322242242
4323122322222223313235412112332222122222343412132222221212123333336222232211222122222242322235122324
5233445463534233447443543246343334433444344433313441432445323344423444124343434444432244352424321344
5651236357455662755753246453326834245334371456551246434645528545632435422515452264246354452255331445
2122212232222222222222222212249212242212245511222113222121224123221222242212131112223243222432121422
5546445335534335556633644443336363554375636446836756617334464254543455756464335556453375332333365632
6253455271651564641757713715324667721626335124766374245461514545461747374215156324375543457671751189
7447323831628545246226435562562283531476444334534429543244834333575248664477447263328324644385273483
1323421832244223143346212212326224232223222231424255524422222322312122342222113225235232233622232245
5655357243433551244666643155744552354553355244543335555374633423653432554424542544434853333445542463
3324753332223353327322354333323462333142543331331424142153453223223113363413323333323454533624633332
9835367235766552648696984946936674792617626456841582362395689525587276396183585648766386857339588629
3853353333542522345313443424355453825958353242232474335349435434272327482344533325433453444342333235
5532817143183416633858483648251215475687732421412212432542476717478173874733384835412331253336768229
2533135145333353352334533534335313322331333321193333333324334232237331333344133326152433533335333153
4532443654757254533354474421774355334354724517434625345232436443753431285473644636354383537477532743
3224133226422234121232363235213612133321222265311322336224242114364362532522652122334352521822325326
2324325232132223222222122212322122122212213122224112221223121221322223122312122222224472422212222212
2244213223142224444211243123112313311222432221311124414442222314323123414424244123142123343134456789
2632243223333373233224222243234413653324264132363224223322332227232234233252336242153323263271132333
3632644722546643447248363234566652422734724585265223674656253555262743262767645142337721772225263337
2222512222211122222231222123233312222232372222222232242322313142222162522292222212621223222223322232
4243434335442346443344472473445444344443445334444444444434433244244332414147443444433443444333333232
3342532333333432423322233133334231332233343233333333433343333322343234323333333333232333333333344323
3212442332233323242212124132213164234335223332223222234224222322133321213322543123342324121423122333
5428343232256385333393534726275532454464533313753365458374235632214535243445555665555646543535334933
2844464776525384963544368735353785434857766294356355276438816725422433348855733367844644334882478444
2432442623352816246342442735726342744223275421323767544763622332332588283249535723574731464329434633
2322222112112112232225223335232221353243322122523223223223222212232213212314433222222311322332224325
2239623244435323354742443322225455353321334253344422245555345594265652444434131583433944444576342535
5444454475454524463341454424455347545488744488343893434434635447337455447344444444463338843334343645
4222221122221225622223252223222154211723282223222252353222221232321241222262222222422222223223252222
2331231213333165233323325732332232262532523152532223373322134211334273134363922356222232333185324642
2242655663235262822276521625376536242442226233274284345459542252112253564411222458191271622275623832
2334442352238631332624333223243223239633333342222232432422232126434324124326834212823442127242343224
5335533333235453645333423253345363335353332723343453454565542435385436545513953558523335343551454534
3222242213222222321422222512223212122221212622122224414242232122241232222121212222121146222212222222
3222222133222222222241242221121322151332222321222222212211332123223212221321211212122221222222225221
6428533643929433544934485363555253735773453454525435653434955743954347555385554533533342523267353533
2222232253522141142265222422411622212222212122121222262322326212222222212832122223622122221112241522
3223242212513132221252852412423222332428222233222222422222223244522382322221213832312422822331323821
5223221414223223423543213243222123424225613422224412454225223522222222324344322222251442224143382524
6343743586333353664437346455433536613338242235422333322735343333534375343313347632453625333763327477
2243232313531231639113212312332362431233333184382253232933329321223322729321271347333324227223312323
3222312221211114222322232112221111274152522122222212142344222622122145211342262422335333512224312212
1325252333223212246132332512232322523212323223232222226221521354343354241122122235224223213339321224
4374434233423334332332233232332721443483444373244322523421332238223253333423233331232333343333233433
4122142122224222221222112212272211412322242122222122223222212222221221322122225212222222212222323221
3213222333211321222223232122222322321232222332234212232412212322224233422422322232232122231312322243

2
day4/1.py Normal file
View file

@ -0,0 +1,2 @@
with open(r'day5/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]

2
day4/2.py Normal file
View file

@ -0,0 +1,2 @@
with open(r'day5/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]

140
day4/input.txt Normal file
View file

@ -0,0 +1,140 @@
@@.@..@@@@@@..@@.@...@.@.@.@@@..@.@@@@@.@..@@@.@@@@.@.@@@@@@..@.@@@..@@@@@.@@@@@@@@@@@.@@..@@@@@@@@@.@@@.@@@@@...@@@..@@@...@@@.@@@@@....@@@
@.@@@.@@..@@@.@...@@..@.@@@@@@@@@@@@.@@@@....@@@.@@@@.@@.@..@@.@@@@@@@@@@@.@.@.@...@.@.@.@.@@..@.@@..@@@@@.@@@@@@..@@@@@...@..@@@@@.@..@@.@@
@.@....@@@@.@@@@..@.@...@.@@@@@.@@@@@.@.@.@@@.@.@@@@@@@@...@@@@@@..@@..@@@@@@@@@@.@.@...@@@..@@.@@@..@@.@.@..@.@@@@@@.@@@@.@.@.@@.@@@.@@@.@@
@@@@@@@@@@..@@.@@@@@@@@@@@@@@@@@.@@@@@....@.@......@.@.@.@..@@@.@.@@@.@...@@@@@@@@..@.@.@@..@@@@@@@@@.@@@@@@@@.@@@..@@.@.@@@@@..@@@.@@@@.@@.
@@@.@..@@..@..@@..@@.@....@@@@..@@@@@....@.@@@.@@.@..@@@@.@@....@@.@@.@@.@@.@.@@@.@@@..@@..@.@..@@@@@@@@@@.@@@..@@.@@@.@@..@@@..@@@@@@@@.@@@
@.@@@@@@.@@@@.@@@..@....@.@@@@@@@@@@@...@@.@@.@@@@@@..@@@@@@@...@.@@@@@@.@@@@@.@@@@@@@..@@@.@@@@@@@.@@@@@..@.@@..@@@.@.@@@@@@...@@.@@.@.@@..
.@@@@.@.@..@@@@@.@@@@@.@@@@@.@.@@@.@@@@.@@@@@@..@@@@@@.@...@..@.@@@..@.@@.@@@@.@@.@@@..@@@..@@@@@.@@..@.@@@@.@.@@@.@..@..@@.@@@@...@@@.@@@@@
..@.@@@@@@.@@@.@....@@@@@..@.@@@@..@@.@@@@.@..@@@@@@..@@.@@.@.@@@.@@.@@.@@@.@@@@@@.@..@@@@@@.@@@...@@@@@.@@@@@@@@....@.@@@@@@@@@@@..@@@.@@@@
.@..@@.@@@.@@@@@.@@......@@@@@@@@.@@.@..@@..@@.@......@@..@@@@@..@@.@@...@..@@.@@@..@@.@@.@@@@@@@@@.@@@@@@.@@@.@@.@@.@...@@@@@@@.@@@@.@.@@@.
@....@@@...@..@..@@@.@@.@@@@@@.@@@@@.@@@@.@@@@.@@@@@@@@@@..@@@@@@..@.@.@@..@.@@.@@..@.@@@.@.@.@@@@@.@.@..@@@@..@.@@..@@.@..@..@@.@....@@.@..
@@..@@@@@@@@@@@.@.@@.@...@@@...@.@.@@@..@@.@@@@..@..@@@@@@@@@@@.@.@...@@.@@@@.@@@.@@...@@@@@.@.@.@@@.@@.@@.@.@@..@.@....@@.@.@@@@@@...@..@.@
.@@@@..@@@@@@.@.@.@@.@@@.@@.@@.@@@@@.@.@.@.@@.@.@...@@@.@@..@.@..@@.@@.@@.@@..@@.@@@.@@.@.@@.@.@.@@@@@@@@.@..@@@@..@@.@@@.@.@.@@.@.@@..@@@@.
@@@.@@@.@@@@@@@@@.@@@@..@@@.@@...@@.@...@@@.@.@@@...@@@.@@.@@@.@@@@@@@.@@@@.@.@@@@@@..@.@.@.@@...@@@@@@.@.@.@@@...@.@@@@@@@...@.@...@@@@@@@@
@@@@@...@@@@.@@@..@@@@.@@@@.@.@...@.@@.@@@.@@@@.@..@@@...@.@@.@@@.@@.@.@.@@..@@@.@.@.@..@@..@.@@.@@.@..@@@.@..@.@@@@.@@@@.@@.@.@@@@@@@.@@.@@
..@@...@@.@@.@@.@@@@@@@@@.@@.@@.@...@@@@@@@@@.@.@@@.....@@@@@@.@.@@..@..@@.......@.@@@@@@.@@@..@@@.@.@@@@@@@.@.@@..@@.@.@@@@.@@@.@@@@@@@..@@
@@@.@@@.@@.@@..@.@.@.@@.@....@...@.@@.@@@.@@@@@..@@@@@@@@@.@@@@@@@@@@..@@...@.@@@@@@@.@@@.@@..@@@@@.@@.@..@..@@.@.@...@@.@.@@@@@@.@.@@@@@@.@
@@@@.@@@..@@@.@.@.@@@@.@.@.@@.@@@@@@@..@@.@@@@@..@@@.@.@@@@.@@@..@@@@@@@...@@@@.@...@.@.@.@@@@@@@@@@@...@@@@@@@@@.@.@@@.@.@.@@@@@@@@@@@@@@.@
...@@@@.@@.@@@@@@.@@@@@.@@@@@@@..@@@@@@.@...@..@@@....@@@@@@@..@@@@..@@.@@..@..@@@.@.@.@..@...@@@@@@@.@.@@@@@....@.@..@@@.@.@.@...@..@@@@@@@
@@@@...@@...@.@.@@@@@.@@.@@..@...@@@@@@@@.@@@..@@.@@@@.@@@.@.@@..@..@@@@@@@@@...@@@.@@..@.@@@@.@@.@.@.@@@@@.@.@@@.@@@.@@@.@.@@@@@.@@@@.@@.@@
@@.@@@.@@@@....@@@@@@@.@@@@@@.@@@@@....@.@@@@@.@@.@..@.@@.@@.@@.@@@@@@@.@@.@@...@..@.@@@.@@.@@@@.@@@@@@@.@.@.@@@@@.@.@..@@..@@@@.@@.@@@@@.@@
@....@.@@.@@.@@..@.@@.@@@@@@@@@.@.@.@..@.@..@.@.@@.@@@@@.@@@.@..@@.@.@@@@@@@@..@@.@..@.@@@..@.@..@@@@.@@@@@@.@..@@@@@@.@@@@@...@..@.@@@...@.
.@@@@.@@@.@.@@.@@@@@@...@@..@@.@..@@@.@.@..@@.@...@.@@@@.@@@.@..@@...@@...@@@@@@.@@.@@.....@@.@@@@@@@@@..@.@@@@@@@@.@@..@@.@.@@.@@@..@..@.@@
@@@..@@@@......@@.@..@.@@.@@.@.@@@@@.@.....@@..@@.@@@@.@@@@@.@@.@@@@@@@@@@..@@@@@@@@@@@@@.@...@@@.@.@@@@@@@@@.@.@@@.@@.@@.@@@@.@@@@@@@@..@@@
.@@@@@.@.@@@@@@@@.@.@@@...@@@.@@@...@@@@@.@.@.@@.@@..@@@@.@..@.@@@.@@@@@@@@@@@@.@@@..@.@.@@@@@.@@@.@@.@@.@@..@@@@@.@.@@@@.@@@@@...@@@@@@@@.@
@.@.@@....@@@@@@.@..@@.@@.@@@@@@@@@.@@@@...@...@@..@@@@@.@@@@.@.@@.@@@@@.@@.@@....@@.@@.@@@@@@@.@@@@@.@@...@@.@@.@.@.@.@@.@@.@@.@..@@.@...@.
@@....@..@@@@@@@@.@..@.@@.@@.@.@...@...@@..@@@@@@.@.@@.@@@@.@@.@.@@@@..@.@....@.@@..@@..@@@@@.@.@@@..@@@@@@.@@@@@@@.@.@@@@@@@@@@@@@@@@@@.@@.
@@..@@.....@@@@@@@..@@@.....@@.@..@@@....@@@@@.@.@.@@.@..@@@@@@.@@@..@@..@@@....@.@.@@@@@...@@@@....@.@@@.@@.@@@@@.@.@..@@.@.@...@@.@..@@@@@
@@@@..@..@.@.@@.@@@.@..@@.@@@@@@@..@@.@@..@@@.@@@@.@.@@@@@@@.@@..@@@@@@@.@@@@@@@.@@.@@..@@@@@@@@@..@..@@..@.@@.@.@.@@@@@.@@@@@@.@....@@..@@.
@@....@@@.@.@..@@.@.@@.@.@@@...@.@@...@@@@@@.@@@@.@.@@@.@..@@@@..@@@@@@@@@@@.@@.@@@@@@@.@.@@@@.@.@@@@....@@..@@.@@..@.@@...@@..@..@.@@@@...@
@@@@@@@@..@@.@@....@@@@.@@@.@@@@@@.@.@@..@@@@@@.@@@@.@@.@@@@.@@@.@.@@..@@@@@@@@@@@@...@..@.@..@@@.@.@@@..@@@.@.@@@@@@@@@@@@..@@@@.@.@@.@.@.@
@@.@@@@..@@@..@.@.@.@@@.@.@@@@...@@@@@.@.@@...@@@@@..@.@@.@.@@@@.@.@@..@.@.@@@...@...@...@.@@@@@@..@@.@..@@.@.@..@@@@@@.@@@@@@@@@@@@@@@.@.@@
@.@@@.@@@...@.@@@@@@@@@@@@..@@@@.@.@@....@@@.@.@@@@.@@..@@@.@@@@@..@.@@@@...@.@@..@@.@@.@@@@@..@@.@.....@@..@@..@@@.@.@.@@@@@@@@@.@@@..@@@.@
..@.@@..@@..@@.@@..@.@@.@..@@..@@@@@..@@@@.@.@@.@@@@@@@.@@.@.@@@@@.@@.@@..@.@@@.@..@@@.@@.@.@@@@....@.@@@..@@..@.@@...@@@..@@..@@@@@@@@@@@.@
@@.@@@@..@@@@@@.@@@..@.@@..@..@@@..@.@@@@@@@@..@.@@..@@@.@@...@@@.@@@@.@@.@@@@.@.@@@@.@@@.@@@@@.@@@@@.@.@@.....@@@@@..@@.@.@@@@.@@@@.@@@@@@@
@@@@.@..@@@@@@@@..@@@..@@@@@@@@@.@@@..@@.@@.@..@@.@@@@.@@@@@@@@@@@@@..@@@..@@@@.@@@@@@@@@@@@@..@@.@.@.@..@.@.@..@.@@.@@@.@@@@.@.@@.....@....
@.@..@@.@@@@.@@@.@@...@@.@@.@@@...@@..@@.@@@@.@..@@@@@@@@@@.@@@@@@@@@@@@@@..@.@.@.@@@@@@.@@@@...@@@@@@@@@..@@.@@.@@.@@@..@@@@@....@.@..@@@@.
...@.@@@@@...@@@@@@@@@.@..@.@@..@.@@@@@.@.@@.@...@@@@@..@..@@@@@.@@@@@@@@@@@@....@@.@@.@@.@.@@@@.@@@@..@.@@@@@@@@@.@@@@..@@@@@@@@@@.@@@.@.@@
@@@..@.@@@@@@@@@.@@@....@@@@@@@.@@@@@.....@@@..@@@@@.@@@@@@@@.@@@@@@.@@.@..@..@@@@@.@.@......@@@@@@@.@.@@.@@@@@@@@@.@@@@@@.@@@.@@@@.@.@.@.@.
@..@@....@@.@.@@@@@@..@@...@@.@...@@.@.@....@@.@@@.@@...@@.@@.@.@@@@.@.@@@@@.@@.@.@@...@@.@@@@...@@@@@.@@..@.@@@@@..@@@@@@@.@@.@.@@@@@@@@@@@
..@.@@@@@@.@.@@.@@..@@@....@.@@..@.@@.@.@@@@@@..@@@.@@.@@@.@@@@@...@@@@@.@.@@.@@@@..@.@@@.@.@@@.@@@.@@..@@@@@@@@..@@@@@@@@@..@.@.@@@@..@@@@.
@@@@@.@.@@@@@.@@@@..@..@.@.@@@@.@@@@@@..@@@@@..@@@@...@@@..@@@.@@@.@@@@..@..@.@.@...@@@.@@@@.@...@@@.@@@....@@@@@@...@.@@@..@.@.@@@.@...@.@@
@@@@@...@@@.@@.@@.@.@@.@@.@@@.@@@@@.@@..@@.@@@@@@@@@.@@.@@@.@@@.@@.@@.@@@@@..@.@@.@..@@...@...@@..@@.@@.@@.@@@@.@.@@@@.@@@.@@..@.@@.@..@@.@@
..@@.@@..@....@@@..@.@.@@..@.@@.@.@@@.@@@.@.@.@@@@@...@.@@@.@@@@@..@.@@.@..@@@@.@@@@@@@@@.@@@@.@@.....@@@..@@@...@@@.@@@@@@@..@.@@@.@@@.@.@@
..@@@@@..@@@.@.@@..@@@@@.@@@@@@@@@@.@@@@@.@@@..@..@@@.@@@.@.@@.@@@@@.@@@..@@@.@..@..@.@.@@.@.@@@@@@.@..@.@@@@@.@@@@@..@@.@@@@@..@@@@@@@.@@@@
@.@@@.@.@@@..@@@@@...@.@@@@@.@@@@@@.@@@@..@.@@.@@.@.@@@@...@@@@@@@@.@@@@..@....@@@@@@.@.@@@..@.@.@.@@@.@.@@.@@.@@@@@..@@.@.@@@.@...@@@.@@.@@
@@@@@..@@.@@@@@@@@@@@@@....@@@@@@@.@.@@@@.@@@@.@.@@@@@@@@.@.@@@.@@.@.@.@@.@.@..@@@@@@@@@@@@@.@...@@@@@.@@..@.@@@@@@@@.@@@.@@@@@@.@.@..@.@@@@
@...@@.@@@@@@.@@@@@.@@@.@@@@@@.@@@@@@.@@.@...@@.@@@@..@@.@@@.@.@@@@@.@@@...@@@@@@@@@@@.@@@@.@..@..@@@@@@@@@..@@.@.@..@@@@@@@.@..@@@@..@.@.@.
.@..@@...@.@.@@.@.@...@@@@@....@@@.@...@.@@.@@@.@..@.@..@.@.@@@.@@.@@@@@@@.@@.@.@.@@...@@@@@.@@@@@@@.@..@@.@.@.@.@..@..@@.@@.@.@.@@@.@.@@@@@
@@@.@@@@.@@.@@@..@@.@@@@.@.@@.@.@.@@..@@@@.@.@@@@.@@..@@@...@.@@@@@@.@@@.@..@.@@@@@.@..@@...@.@@.@@@..@.@.@..@@@.@@@..@@@@@@.@@@.@@.@@@@@@@@
@@@@..@.@@@@@@.....@@.@@@..@.@@.@.@@@@.@...@@@.@@@.@..@.@.@@@.@.@@@..@@@@@@@.@@.@@.@@@@@.@@....@@.@@.@@..@@@.@@@.@.@@@.@@@@@@@@.@@@.@....@@@
@@@@@@.....@..@@@@@@@.@@.@@@@@.@.@@@@..@@@....@...@.@@..@@.@@...@.@.@.@@@.@.@@@@@..@.@@@@..@@@@@.@@@.@@.@@@..@@@@@..@@@.@@..@@@@.@@@...@.@@@
@@@@@@..@.@@@@@@@@@.@@@@@.@@.@.@@@@@@@@@@@@@@.@..@@@@....@@@@.@.@.@@@.@@.@...@@@@@@@...@@@...@@.@@@@@@.@@@@@.@@...@.@@@@@@@@.@@.@@@@@@@@.@@@
@...@.@@@.@@@@@@..@@...@@@.@..@@.@@@@@.@...@..@@@.@@@@@.@.@@@@@.@@@@@@@@@@.@@.@....@@@@@..@@@..@@@@..@@...@@@@.@@@@@.@.@..@@@@.@@.@@..@@@.@@
@.@@..@@@.@.@.@@.@@.@@@@@@@.@@.@.@@.@@.@.@...@@@@@.@..@@@@.@..@.@@.@.@@@@...@@...@@@@.@...@.@.@@@..@@..@@@....@@@@.@..@..@@@@.@@@@@@.@.@@.@.
@@@@.@.@@@@..@.@@....@@@..@@@@@.@@..@..@@.@@..@@.@@...@...@@@@..@@...@@@@@@@@@@..@@@.@@@.@@@@@@.@@..@@@.@@@.@@@.@.@.@@.@.@.@@.@@@@@@..@..@.@
@@@@.@.@@.@@.@...@@@@@@@.@.@@@@...@@@.@@@@@.@@@@@.@.@@@@@@@..@@.@@..@@.@@@@@@..@@@.@@@.@....@@@@.@....@@@@@@.@.@@@@@@@.@.@@..@@@@@@@@..@@@@@
@..@...@@@@..@.@...@@@@.@@@..@@@..@@.@@...@@@@@@@@..@@@.@@@@@@@@@@@...@...@@@@.@.@@@@@@@.@.@.@@....@@@@.@.@@@@..@.@@@..@..@.@@@.@.@...@@@.@.
..@@@.@.@@@@.@.@@@@@@@@@@@@@.@.@@@@@@@@@@@.@@@@@@.@@@@@.@@.@@@.@@@.@@@@.@.@@.@@..@@..@.@@@.@@@@@@@.@@.@@@...@@.@@@@@...@..@@@@@@.@@@@@.@@@@@
@@@@@@@..@@..@@.@@@.@@@.@....@@@@@.@@@.@@@@.@..@@@@.@@.@@@.@@@@@.@@@@@@@@@..@@@@@@@...@.....@@.@@@@@@@..@.@.@.@@@.@@.@@@@..@@.@@@.@.@@.@@..@
@@.@@...@@@@@@.@@@@.@.@.@.@.@@.@...@@@@.@.@@@@....@@.@.@@@@@@@.@@@...@..@@.@..@@@.@.@.@.@.@.@@..@@@@@.@@..@@.@..@@@.@@@.@.@...@.@@@.@@@@.@@@
.@.@.@.@@.@@.@..@@@.@.@@@.@@@...@.@...@@@...@@.@@@.@@@@@@.@.@...@...@@....@@....@.@@...@@.@@@@.@.@@@@@@@@@.@@@@@.@@@@@..@@.@@@@@.@@@@@@@.@@@
@@@.@.@..@@@@@@@@@@@@@.@@@.@@@@@@.@@@..@.@...@@@@@.@.@@.@@.@......@.@.@@.@@@@.@@@...@@@@@@@@@@.@.@@.@.@@@@@@@@.@@@@@..@@.@@.@@@.@.@@.@.@@.@.
@@..@@@@@.@.@.@@@@.@@.@.@@...@.@@..@@@@@@@@@@.@@@@@.@@@..@.@.@@@@@.@.@@@....@.@@.@..@..@@..@@.@@@..@@...@@.@.@@@.@@..@@@@@@@..@@@@@@.@.@.@@@
@..@@.@.@.@@.@@@...@@.@..@@@@.@.@@@...@..@@.@.@.@@@..@@@@.@@@@@@@@.@@@@@@@..@.@@@@@@.@@@@...@@@@.@@.@@.@.@..@.@@..@.@.@@@.@@.@@@.@.@..@@@@@@
@@..@.@.@..@.@@@@.@@@@@.@...@@@.@....@..@@@@@@@@@.@@..@.@.@@@@@@.@@..@@@@.@.@.@...@@..@@..@@@@@@@...@@@@@.@.@...@@@@...@@..@@@..@@..@@.@@..@
@@@@....@..@@@...@@.@@@@@.@@@@.@...@@@@@@@@@@...@.@.@@@@.@@.@@@@@..@@@@@.@.@..@..@@@@.@@.@@@@@@@@.@@@@@@.....@@@@@...@.@....@@@@@@@@@@@@@..@
@@.@@@.@@..@@.@@@..@@@.@@..@..@...@@@@@@@..@@@@@@@.@@.@@@@@.@@.@@@@.@.@@@..@@@.@..@@@@@..@.@@@@..@@@@...@@@@@@@..@..@.@@@..@.@@@@@@@@@@.@@.@
@@@@....@@@.@@@@..@@@@@@..@@.@@.@@.@@@@@..@.@@..@..@@.@@@.@..@@@.@@@@@@.@@@.@@@..@@@@..@@@.@@@@..@@.@@@@..@@@..@@.@@@..@@@@@@@@@...@@@.@@@@@
@@.@.@@@.@@@@..@@.@@@.@@@@.@.@@.@....@.@@@@.@@@@@@.@@@@@..@@@.@@@@@@.@@@.@@@@@@@.@@@@@@@@@@@.@.@@@.@....@.@..@.@@@..@.@...@@.@.@@@.@.@@@@@@@
@@@@@@@.@.@@@.@@.@@.@...@@.@@.@@@@..@.@@.@@@.@..@@.@..@..@.@..@@@@@@.@.@...@@@@.@@@..@@@@..@@@.@@@@@@..@@@@@@@@.@@@@@@.@..@.@@@@@..@@@.@@@@@
.@@.@.@@@..@@.@@.@.@@@...@@.@@@@@.@@@@@@..@@@.@.@@@.@@@....@...@@@.@.@@@.@@@@@@.@@@@..@.@.@.@.@@@@@.@@@@.@@@@.@@@...@@@@...@@.@.@@@..@@@.@@@
...@.@.@@@.@@@@@.@@....@.@@@.@.@@.@...@@@.@.@@@@.@..@@.@@@@@@.@@@@@.@@@@@@@@.@@@@..@.@@....@@.@@@@@@..@..@@@@.@@..@.@@@@@@@@@@.@..@.@@@@@@@@
@@.@..@@@@.@@@@@@.@@.@@@@@.@@.@.@@@..@@..@..@@.@.@@@@@.@@@@@@@@@.@@.@@..@.@@@@@@.@@@@@@.@@@.@@@.@@.@.@@.@@@@@@....@..@@@..@@@.@@@@.@@@@@@.@@
@@@.@.@@@.@@.@.@.@@..@@@@.@.@@@.@.@...@..@..@..@.@@@.@@.@@@.@@@.@@@@@@@@@@..@@..@@.@....@@@.@.@@..@.@@.@.@@@@@@..@@.@@.@..@.@@....@.@.@@@.@@
.@.@@.@..@..@@.@@.@@@@@@@@@@@@@..@.@@@@@@.@@@.@@@@@....@@..@@..@...@@..@.@.@@.@@@@.@@.@@@..@@@....@@@..@.@.@.@@@..@....@@.@@@@@.@@@....@@@@@
@...@@.@..@@@@@@..@@@@.@@@...@@@..@@@.@@.@@@@.@..@@@@..@..@.....@@@.@@@.@@..@..@@@@.@.@@.@@.@@@@.@@.@.@.@...@@@.@@@.@..@@.@@..@@@.@...@@@@@@
@.@@@.@@@.@...@@@@@@@@@@.@@@@@@.@.@..@....@@@...@@@.@@@@@..@@.@....@..@@.@.@..@@@@.@@@.@.@@@@@@@.@@@@@@@@@.@@@@@@.@@@@@@@.@..@@@@@@@@.@@..@.
@@..@@@@.@@@@@.@@@.@.@@@.@@.@.@.@@@@@@@...@...@.@.@@.@@@@@@@.@.@...@@@@@@.@@.@@...@@@..@@@@@@@.@.@.@@..@....@@.@@.@@@@.@@@@@@@..@.@@....@.@.
.@..@.@..@@@@...@..@@@.@@.@@@.@@@@.@.@@@@@@.@@@@@@@..@@@@.@..@@@.@@.@.@.@@.@@@@.@@@.@@.....@.@@@@@.@....@@@.....@@.@..@@@.@@@.@@..@.@@@@.@@.
@@.@.@...@....@.@..@@.@@..@.@.@@@@.@.@@...@@@.@.@.@@..@@@.@@.@@.@@@.@@@@@...@@.@@@.@..@..@..@@@@@..@@@.@@..@@.@@@@..@@@.@@@@.@.@.@@.@@@@@@..
.@@.@@.@.@..@..@@..@.@@.....@@@@@.@@@@@@.@..@..@@@@.@.@.@@@.@.@.@.@.@@...@@.@@.@.@@.@@@.@@@@@@.@.@@@@@@@@@.@.@@@@@..@@@@@.@.@@@@@.@...@@....
@...@.@@@@.@@@@.@@@.@.@@@..@@@@...@@@.@@@@@@@.@@@.@.@@@.@@@.@@..@..@.@.@@@@.@@@.@.@@.@@...@...@@@@@@@.@@@@@.@@.@@@..@@@..@@@@@@@@@@..@.@.@.@
@@@@..@.@.@@@..@@@@@..@@@@@..@@@@..@.@@.@@.....@..@@.@.@@...@@@.@.@..@@..@@@@.@..@@@@@@@@@@.@...@@.@@....@.@@@@@@...@.@.@@..@@@@.@.@@@@...@@
.@@@@..@@.@@..@@..@..@.@..@@.@@.@.@@@.@.@..@.@...@.@.@@@@...@@@.@@..@.@.@@@@@@@@.....@@@@.@@@.@...@@@@@.@@.@@.@@....@@@@.@.@@@.@@@@..@@@@@@@
.@......@@@@@@...@.@.@..@..@@.@@.@@@@@.@@@@@@@.@@@@@@.@@@.@.@.@@.@@.@@@.@@..@@@@@.@@@@@@.@.@.@.@@.@@@.@@..@.@.@.@...@.@.@.@......@.@.@.@@@.@
@@@@@..@@@.@@@@@.@.@@@.@@@@@@@@@@@@@.@@..@@@@@.@@.@@..@@@@@@@@@@..@@@@@.@@.@@@.@@..@@..@.@@.@@@.@@@@.@.@.@....@@@@.@@@@@@@@@@@@@@@..@.@@.@.@
.@.@@@@@.@@@@@@@@@@@@@@@@.@..@.@@@@.@@..@@@@..@.@.@.@.@.@.@@@@@@.@...@@@@@...@...@@.@@@@@@@@@@@@@.@@..@@@@@@@@@.@@.@.@@@@@@@@@@@@@@@@@@@@@@.
@@..@.@@@.@@@@.@@@.@@..@.@@@@@@@...@@@@@.@@@@.@.@@@@@@..@@@@.@@@@@@@@...@@@...@@...@@.@.@@@.@..@@.@@@@.@@@...@@..@@@@@@@@..@@...@..@@.@@@..@
@@..@@@...@.@@@@@@@@@.@..@@@.@.@@.@@..@@.@.@.@.@@..@@@@.@..@..@.@@@@@@.@.@..@@@@.@.@@.@.@@@...@.@@@@@@@.@..@@@@.@@@.@@.@@@@.@@.@.@.@@.@@@@@@
.@@.@.@@.@@..@@@@@..@@.@@..@..@.@...@@.@@@@@.@.@@@@@@.@..@@.@@@@@@@@@.@@@@@..@...@.@.@@@@@....@@@@@@@@@.@@.@@.@@.@.@@.@@..@@@@..@@@.@@@@.@@@
.@..@@@.@.@@.@@@@...@.@@@@@.@@@@.@.@.@@@.@.@@@@.@.@@@..@.....@@.@@@@@@.@@@.@@.@.@@@@@@@@@@..@..@@@@..@@.@@@@@.@..@@@@@@@@.@@.@.@.@@@@@@..@.@
@@@@@.@.@@@@@@@@@@@.@@@.@@...@...@@@@@.@...@@@@@.@@@@..@@@@@.@...@.@@@@@.@@@@.@@@@.@@@.@@...@@@..@@.@@@.@.@@@@.@@@@@.@@@@.@@@@@.@@@@@@@@@@.@
@@@@@@.@.@..@@@.@..@.@.@.@@.@..@..@@@@@@.@.@.@@...@@..@@@@@.@@......@.@@@@@@.@@@.@@.@.@@@@...@.@..@@@@..@@@.@@@.@.@.@@@@@@@@@@@.@@@.@@.@.@@@
@.@...@.@@@.@..@.@@..@@.@.@.@@@.@@@...@@@.@@.@@@.@@@.@.@@@.@@@.@..@@..@.@.@@@@@@@..@@@@@@@@..@.@@@@@..@.@@@@@@@@@....@@@@@@..@.@.@.@@@.@@...
@.@@@@@.@@@.@@@@..@@.@@.@@@.@@@@@.@@@.@.@@@@.@@@@@@@@....@@.@@@.@..@@.@@@.@@@.@.@@@..@.@..@@@.@@@@..@.....@@.@@@@.@@...@@@@..@@..@..@@@..@@@
@@@@@..@.@.@.@@@@.@@...@@@@@@@..@..@@@@@@@.@@@@..@@.@@@@.@@@@....@@.@@.....@.@@....@@.@@@@@@.@.....@.@.@@@..@@.....@@@..@@@.@@..@@@@@.@.@.@.
@@.@..@@@.@.@@@@@@.@@@@@@.@@@...@@@@@@..@@@..@@@@@@@.@.@@@@.@@@.@@@@@@.@@@@@@@.@..@.@@@@@.@@.@@@..@.@@.@@@...@@.@@@.@@.@@@@.@@@@@@@.@.@.@..@
.@.@..@@@...@@@.@@@@@..@@@.@..@..@@@@.@@@.@@@@@.@@@..@@@@.@.@@.@@@@..@..@.@.@@@@.@.@.@@@@@@@@@.@@@@@.@.@.@@.@@@.@@.@....@.@@@..@@.@@..@.@...
.@@@@@.@@@..@@.@.@@.@.@@@@@@@..@@..@.@.@@@.@@@@@@@@.@@..@@@...@@@@@..@@.@@@@.@@.@.@@@.@..@@.@@..@....@@.@@@@.@.@@@.@.@.@.@@@.@@.@@.@@@.@..@@
@@....@@@@@.@@.@..@@@@.@@.@.@@@...@.@...@..@@..@@.@@@@@.@.@..@...@.@@@@@@.@@..@.@.@.@@.@@@..@@@.@@.@..@@@.@@@@@.@@.@..@.@@@.@.@..@@.@@@@.@@.
@@@@.@@@..@.@.@..@@@@@@.@@..@@.@.@@.@..@@@@..@@.@.@@.@@..@.@...@.@.@@@@@@.@@@@@@.@.@@@.....@@.@@@@@@@.@@@@.@@@@@@@@@@@@@@@.@.@.@@@@@@@.@@@@.
.@@@..@@@....@@@@@@@.@@@@@@.@@..@@..@@@@.@@@@....@@...@.@.@@@@@.@@@..@.@.@@@@.@@@@..@.@.@@.@@.@@...@..@.@@@..@@...@.@.@@...@.@..@@@@@@@.@.@.
@.@@@@.@@.@.@@@.@.@.@@@.@@@.@.@@..@@@@@@@@@@@@@@.@@@@@@@@.....@@@@@.@@@@@@@@@...@@.@..@.@@@@@.@..@@@..@.@@.@@@.@@.@.@@@@@@@@@@@....@@@@@@.@@
@@.@@@@@@.@@@.@.@@.@@@@.@@...@@@@@@@.@@.@.@@@.@@@@@@..@@@@@..@.@.@@@@.@@@..@@@@@@.@@@@@@@..@@.@@.@@@@....@@@..@@@@..@@.@@@..@@@...@@@@.@@@..
.@@@.@.@.@..@@@@@@@.@.@.@@..@.@.@.@@@@.@..@.@@@....@@@.@@@.@.@@@@@...@.@@@.@@@..@.@@@...@@@@@@..@@.@.@.@@@.@@@@.@@@.@@@@@..@@.@@@@@@.@@@.@@@
@@.@....@.@@@@@@..@@...@@@@@@@@@@@@@@@@@.@@@.@@..@.@.@@@@@.@@.@.@@@..@..@@@.@@@@@.@.@@@@@@@.@@.@@.@@.@@@.@.@@..@@@.@@@.@@.@@@...@@@@@@@.@@@.
@..@@@.@@.@@@@@...@....@@.@@.@@@@@@@@@..@...@@@@...@.@@@.@.@.@@.@@@@@@@@.@@@@@@@@.@@.@@.@.@@@.@.@@@.@@@@@.@.@.@@@@@..@@@@@..@.@.@@@@@@@@@.@@
@@..@@@@@@@@@@@...@@@@@@@@@@@@@.@...@@.@@@..@@@@@@@@@@@@@@..@@@@@..@@.@@@@@@......@@@@.@@@.@@.@@@@..@.@@..@@..@..@.@@.@@@.@@.@@@@@@@@..@.@@@
@@.@.@@@@@.@..@@.@@@...@@..@@.@..@@@.@@@.@....@@...@@.@@@@.@.@.@@@@.@@@.@.....@.@.@@@@@.@.@@@..@@@@@.@@@...@@@@..@@.@@.@@.@@.@@.@...@@@@.@@@
@@.@.@@@.@@..@@..@@.@.@@@.@@@@@.@.@@..@.@..@...@@@@@@@...@..@@@@@@@@@@@...@@.@@.@@@@.@.@@@@@@@@.@.@@.@@.@@@...@@.@...@@@@...@@@@@.@@.@@@@.@@
@@@@@.@@@.....@...@@.@@@@.@.@.@.@.@.@@.@..@.@@@@.@@.@@@@@.@.@@@.@@@..@@...@@@@@.@@.@@@@@@@@@@@@@.@@.@@@.@.@.@.@@@.@.@.@@@@@@@@@.@.@@@@.@@@@@
@.@@..@@@.@.@.@@.@@@@..@@@@@.@.@@.@@@.@@@.@....@@@..@.@.@@@..@@.@@@.@@@@@@@...@.@@@@@....@@@.@@...@.@.@..@@@..@@.@.@@.@....@@@@@@@@@@.@@@..@
....@.@@@@.@@@@@.@..@@.@.@.@@@@@.@@@@.@@@...@@.@.@@@@.@.@@@..@.@@.@@.@@.@@.@@@@@..@@@.@@@..@@.....@.@@@@@..@@.@.@...@@.@.@@.@..@@@@@@@.@@@@.
@@@@.@@@.@@.@@@@@.....@@@@@@..@@.@@@..@@@.@.@@@@..@@.@.@.@@@@@@..@..@@@@.@@@@@@..@.@@@@@@@..@@@@...@@@@....@@.@@@..@@.@..@@@@@@@@@@@@@@@@@..
@.@@@@.@@.@@@..@@@...@@@@@@@@..@@@.@@@@@@....@@.@@.@@@.@@@@@@@@@@@@@@@.@.@@.@@.@@.@...@@@@.@@.@.@@@....@.@@@@@.@@@@..@@@@..@.@..@..@@@.@@@.@
@..@.@......@@...@@....@@@.@@@..@@..@.@.@@....@.@@..@@@@.@@@@.@@@@@@@.@.@.@@..@@@.@@.@.@...@@.@@@@@@@..@@.@@@@..@@@@..@@@@.@.@@@.@@..@@.@@..
@....@.@.@@@.@@..@...@@@@@@.@@..@.@@.@.@@@@@@@@@@@..@@@.@@@..@@@@@.@@@@.@..@@.@@@@.@@@@@.@...@@@@@@@@@@..@@@@.@.@.@@.@@@@.@@@@@@@...@.@.@.@@
@@.@.@.@@.@@..@..@@@@@@@..@.@@@@@.@.@@.@@@..@@.@@@@@@@.@@.@@.@@.@@@@@.@@@..@@..@.@.@@..@@.@.@@@.@.@@@.@@@.@@@@@.@@@.@@@@@....@.@@....@.@@@@@
.@...@.@@@.@@@@@@.@.@@.@@@@@.@..@@@@@@@.@@.@@@@.@.@@@@..@..@@@@.@@@@@.@.@.@@@@@....@.@@.@@@.@@@@@.@@.@@@.@@@.@.@@@.@..@@.@...@@@@@@@@@.@@@@@
@@..@.@@...@@@@@@@@@@@..@.@.@.@@..@.@.@.@.@@..@@.@@@@@@@@@@.@@.@@@@@@@@.@@@@@.@@.@@@.@@@.@@@.@@@@.@...@@@@...@@@@@@.@..@@@..@..@.@@..@....@.
..@.@.@@...@@..@.@@@@@@@@@..@@@@..@.@@@@@@@.@.@..@@@.@.@@@@.@..@@.@@..@.@.@@...@@@..@@@@...@..@..@@.@..@@@@@..@@.@@...@@.@@@.@@.@..@..@@@@@@
@@..@@.@.@@@@@@..@.@@.@.@@@...@..@@@@@.@@@@..@@@@.@@@@@@@@.@.@@@.@@@@@@.@.@@@@.@.@...@@.@@@..@......@@.@@...@@@@.@..@.@@@@@@@.@@......@.@.@@
@.@..@@@@@.@@@@@@@.@.@@@@@.@..@.@@...@@@@@..@@@@@@..@@....@@.@@@@@@.@@.@.@..@@@@@@.@@.@.@.@@@@..@.@.@@@@@.@@@..@@.@@..@...@@@@@...@@.@.@@@@@
.@@@.@.@@@@.@@@..@@@@@..@@.@@.@..@.@@@@@.@@.@...@....@.@..@..@@.@@@@@@@.@@@@.@.@@@.@@@@@@@@@@@@.@.@@@@@@@@@.@.@.@@.@.@@@@@@.@..@@@@@...@@..@
@.@.@@@@@..@...@.@@@@@.@@.@..@@...@@.@@@@.@..@@@.@.@@..@.@@.@.@..@.@.@@@..@@.@@.@@..@.@@..@@.@@..@.@.@@@@.@.@@@.@.@.@@@@@@.@.@@@.@@@.@@.@@@@
@@..@.@@@..@@@@@.@@.@.@.@@@@@..@...@.@@@.@@.@@@@.@@@@@@@@@..@@@@@@@@...@@...@@@.@@@.@@.@.@@...@.@.@.@.@@@.@@@@@.@@@.@@@@..@@@@@..@.@@@.@@@@@
...@@..@.@@@@@@@@@@.@@.@@@.@@..@@.@@@@@..@@@@@@@..@.@@..@@@.@@@@.@@@@@@@...@..@@..@@@@.@.@...@@.@@@@@@.@.@..@.@@@.@@@.@@@@@@.@.@@..@@@@@@@@@
@@@@.@..@@@@@@@@.@.@.@@@.@@...@@@@@@@@@.@..@@@@@@@@@@@@@@..@@@@@@@.@.@...@..@@@.@@...@.@..@@@.@@@@..@.@@@@@....@.@@@..@@@@@@@@...@@@@.@.@@@@
@@@@@@.@@@@@..@@@@.@@@@.@@..@@@@@@.@@@@@...@...@@@.@.@@@@.@@@.@@..@@.@..@@@@@@@@@@@@.@@@.@.@@@.@@.@@.@..@@@.@@@@@@@@@@.@.@@@@@@.@@@@.@@@@@@.
.@.@@@@@@@@@@@@@@.@@.@@@.@@.@@.@@@.@....@@@@@.@.@@@@...@@@.@@.@@@@..@@.@@.@@.@.@@@.@.@@@.@.@@@@@@@@@.@@@....@@.@@@@@@.@.@@@.@@...@@.@.@.@@@@
.@.@@@.@@@@@@@@.@@@.@@@@...@@@@@@@@..@@@.@@@@@@.@.@@@@.@.@@..@@@@@@.@....@.@@@@@@@..@@@.@@@@@@@@.@@...@@@@@.@@.@@.@@@@@@@@...@.@@@@@@..@@@@@
@@.@..@@.@@@@@.@@@@@.@@@@@@@@@@@@@@..@@@.@@.@.@@.@@@@.@@@@@@@@@@@.@.@@@@...@.@.@@@@@.@.@.@...@@@.@.@@@@@..@@@@@@@@@..@.@@.....@@@@@@.@.@.@@@
@.@..@.@.@.@@@@@..@@@@..@@@@@@.@.@@.@@@.@@@@.@@@@@@@@@@@...@@.@@.@@.@@@@@@@.@@.@@@.@@@@@...@@.@@..@.@@@.@@.@..@@.@@.@@@@..@@@.@@@@@.@@@@@@.@
@@.@@.@@.@@@@@@@@@@@@@.@.@@@.@@.@.@@@@.@@@..@@@@.@@@.@@@.@@@@@@@@@..@@.@....@@@@@.@.@@@.@@...@@@..@@@@@..@.@@@@@.@@@@.@@@@.@@@.@@@@@@...@@@.
....@@...@@.@@@@@@...@..@@.@..@.@...@..@@@@@@.@@@@@@@@@@..@..@@.@.@.@@@.@@@@@@.@@.@...@.@..@.@@@@.@.@.@@@@@@@@.@@@@@.@@@..@@@.@@@@.@@@@.@@@.
@.@@@@@.@@.@.@@@@@@@@@..@@.@@@.@@@@@@@.@@.@@..@@..@@.@@@.@@@@@.@@@@@.@@..@.@...@.@@@@@....@.@@.@@@@@@@@@@@@@.@.@@.@.@..@@@@@@.@@@.@.@.@@@@@@
...@@.@@@@@@@....@.@@@@.@..@@....@@.@.@@.@@@.@@@@@@.@.@@@@@.@@..@@@.@@.@..@..@@.@@.@@..@@@@@@.@@@.@@@@.@@@@.@@@....@.@@@.@@.@@..@.@@@@@@.@@@
.@@@.@@@...@@.@@@@@..@.@@@@@@@@@.@.@@@.@@@@@@@@@@.@.@@@@.@@@@@..@...@@.@@..@@.@.@@@@@@@.@@@@@@@@@@@.@@@@@@..@@.....@@.@@@@.@@@..@@@@...@@@@.
@.@@@@..@@.@@@@@.@.@..@.@.@@..@@..@@@@.@@@@@..@@@@..@@@..@@@@.@@@@@..@..@@....@@@.@.@@@.@.@@@...@@@@@@@@@@@.@@@@@.@.@@..@@.@@..@@@.@.@@@@@.@
@@.@@@@@.@...@@@@@@@.@@@.@@@....@@@@@@@..@@@.@@.@.....@.@@@@@@.@.@.@@@@....@@.@@@..@@@@...@.@@@@@@@@.@@@.@@.@..@.@@@@@@@.@.@.@@@@@..@@.@.@@.

22
day5/1.py Normal file
View file

@ -0,0 +1,22 @@
with open(r'day5/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
blank = lines.index('')
ranges = []
for i in range(blank):
ranges.append(list(map(lambda x: int(x), lines[i].split('-'))))
print(ranges)
sum = 0
for i in range(blank+1,len(lines)):
id = int(lines[i])
for range in ranges:
if range[0] <= id and range[1] >= id:
sum+=1
break
print(sum)

19
day5/2.py Normal file
View file

@ -0,0 +1,19 @@
with open(r'day5/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
blank = lines.index('')
ranges = [list(map(lambda x: int(x), lines[i].split('-'))) for i in range(blank)]
ranges.sort(key=lambda x: x[0])
sum = 0
while ranges != []:
maxi = ranges[0][1]
mini = ranges[0][0]
ranges.pop(0)
while ranges != [] and ranges[0][0] <= maxi :
maxi = max(ranges[0][1],maxi)
ranges.pop(0)
sum += maxi-mini +1
print(sum)

1174
day5/input.txt Normal file

File diff suppressed because it is too large Load diff

19
day6/1.py Normal file
View file

@ -0,0 +1,19 @@
def mult(a,b):
return a*b
def add(a,b):
return a+b
with open(r'day6/input.txt', 'r') as input:
lines = list(map(lambda x: x.split(), input.read().split('\n')[:-1]))
sum = 0
for i in range(len(lines[0])):
op = add if lines[-1][i] == '+' else mult
res = int(lines[0][i])
for j in range(1,len(lines)-1):
res = op(res,int(lines[j][i]))
sum += res
print(sum)

40
day6/2.py Normal file
View file

@ -0,0 +1,40 @@
def mult(a, b):
return a*b
def add(a, b):
return a+b
with open(r'day6/input.txt', 'r') as input:
lines = input.read().split('\n')[:-1]
op_pos = []
for i, char in enumerate(lines[-1]):
if char != ' ':
op_pos.append(i)
op_pos.append(len(lines[-1])+1)
sum = 0
for k in range(len(op_pos)-1):
op = mult if lines[-1][op_pos[k]] == '*' else add
res = 1 if op == mult else 0
for i in range(op_pos[k], op_pos[k+1]-1):
current_number = ''
for j in range(len(lines)-1):
current_number += lines[j][i]
print(current_number)
res = op(res, int(current_number.strip()))
sum += res
print(sum)

5
day6/input.txt Normal file
View file

@ -0,0 +1,5 @@
563 334 22 38 2624 77 49 73 39 49 85 2 98 977 98 581 73 7 91 84 965 78 93 5932 67 4 965 8739 21 232 272 32 19 351 9 11 58 71 416 226 149 5234 2799 334 739 136 256 857 34 35 591 778 758 587 38 6 38 688 126 96 44 8763 3 9 15 84 619 856 635 52 2 345 91 42 96 597 996 8 649 25 88 6 814 63 77 644 3 627 43 6 15 31 82 93 355 22 48 63 8513 19 255 518 35 92 244 51 5 889 66 5 241 2468 24 47 77 5 5 332 5 6276 762 68 231 369 959 16 45 3552 376 14 47 68 23 467 7 984 33 49 348 51 516 687 163 83 8718 742 58 32 484 74 8 1 95 72 65 322 4464 6294 655 76 5153 7923 4459 33 6275 5159 84 752 17 9595 69 63 858 7715 554 42 8 5 39 75 74 17 4 929 48 897 158 9 29 516 2269 21 2 4 481 451 11 455 38 33 187 59 616 765 69 88 12 15 739 462 41 39 7 15 361 4 73 96 6 13 94 97 7 72 71 92 849 59 739 52 5 3 47 86 59 2 24 6 611 882 35 576 391 2452 2 1746 32 9 252 56 955 977 7838 92 7461 434 9 98 429 71 4 12 12 26 8395 911 57 78 168 14 934 525 28 37 64 79 31 539 552 3 593 329 3958 796 75 844 6 57 7686 971 9 1 9 58 36 176 7938 7 22 295 68 8968 99 9 62 43 3 5894 61 48 216 7994 52 3 234 97 779 9 87 34 96 756 846 138 2 65 696 93 5 36 14 85 58 4 12 9 23 262 23 47 89 41 7 6953 294 614 913 4 8 2 21 469 78 3 4 51 3 18 335 43 899 359 33 19 954 841 7 3 146 318 97 357 3623 7 2 8 17 417 63 68 563 655 397 67 5 75 17 1 2 4 4822 624 859 18 17 4 7388 59 25 151 4 9343 7 3 8441 7 64 36 2 69 389 34 85 63 43 38 29 43 44 77 97 453 86 48 387 57 635 79 4 226 4 215 413 462 215 646 3 9 4652 39 49 31 5 64 788 59 5533 6 8 27 555 417 929 455 421 43 2 56 7 5 9 12 4 47 3 881 41 59 5 922 88 298 684 7 39 7177 41 16 59 7 343 2 8515 78 432 711 97 39 54 369 923 64 874 749 9 238 19 753 5437 87 15 6 3 342 21 35 38 3 26 21 599 82 697 4 565 165 58 67 429 1 46 54 64 4 96 25 9337 5 65 988 47 643 72 112 1 352 6726 915 814 8 8 41 389 81 441 2828 76 86 64 1 87 549 851 5 3 517 36 73 1 95 4 868 1633 2424 37 58 84 7698 6614 5 75 79 321 723 151 692 53 4184 151 27 2 34 9 18 77 23 7 51 432 97 984 35 18 72 8 834 816 29 14 7 83 9 769 9 126 59 66 15 24 43 3896 7 8942 6744 8 5 12 1472 73 15 71 93 592 151 23 74 49 66 873 8 72 5 286 727 217 28 514 95 376 2 8593 875 71 39 7 138 692 91 91 66 37 148 19 869 17 15 1 78 62 78 1 37 7 1 97 344 345 25 956 6 86 48 15 88 7457 82 95 4 391 521 36 67 154 4 65 6836 911 1225 34 14 412 8 15 213 84 27 84 321 141 4 6 988 7 33 47 44 8 9298 764 54 223 627 1 14 77 72 6667 8134 5341 41 314 55 812 153 48 41 8671 1 3 31 3 649 91 494 5 56 766 84 41 25 44 35 56 1449 71 42 58 21 65 6 62 1 531 869 67 64 371 53 9217 77 8 3 16 23 692 46 16 9 528 831 15 9 57 1272 8 9 43 11 782 495 3134 311 125 719 3 5619 859 7 468 1979 1 96 77 6 531 5 46 84 2 119 5 4 91 135 26 57 535 69 14 66 3187 82 45 5 641 897 2 1955 8424 586 2778 13 383 9 3849 879 347 84 93 29 22 4984 22 376 45 4 243 283 5 11 145 957 76 686 18 4 12 379 22 69 132 31 55 6 4 646 492 392 8 63 68 92 584 9652 758 1461 43 689 68 8 15 141 13 896 29 7 7167 92 231 45 2 647 7 84 4 585 823 9461 31 4695 134 112 296 15 4 2 54 8 216 3484 64 246 814 5 955 97 261 27 975 92 686 7 5 8285 3 44 69 94 741 89 19 71 97 579 42 8361 695 72 8 18 27 9453 849 5 544 62 64 99 1 26 7 293 8 23 23 537 65 4 22 92 95 92 524 42 68 835 23 79 23 83 432 16 72 686 248 39 8 7264 8 195 91 834 545 42 71 729 6 6318 81 334 535 29 31 997 8 83 7255 1 48 356 189 135 6273 1 275 658 48 65 32 8
396 6981 61 88 8878 496 22 56 189 23 58 934 89 78 74 587 87 47 52 837 792 9199 34 4329 15 5 767 2593 54 252 673 76 79 191 3 472 53 69 128 419 7978 8749 3714 276 382 476 458 183 57 216 364 77 76 774 82 69 64 42 762 67 17 1661 3 74 38 22 962 437 624 898 7 928 69 22 65 119 8764 23 637 49 59 75 387 95 27 164 6 573 5 19 2 55 99 19 899 55 36 236 1827 71 535 177 36 34 195 52 96 565 17 751 986 5514 17 62 57 46 73 158 2 7413 396 228 475 749 832 76 16 6381 446 236 4 211 788 642 9 995 28 744 423 34 429 34 814 23 6734 225 34 982 639 36 69 77 465 27 75 72 1458 4194 349 71 2653 1885 619 85 6466 7585 336 385 92 2126 28 341 593 7242 184 13 732 28 739 22 314 368 27 797 61 91 191 76 49 924 7167 738 46 85 621 715 762 767 68 94 124 69 229 348 63 61 77 93 867 658 21 43 3 28 132 7 32 64 7 281 42 498 125 37 53 61 549 61 312 19 45 9 67 65 29 372 58 3 1679 741 31 732 547 2693 137 5645 817 44 573 26 352 444 9195 75 6522 264 65 92 822 87 496 4 85 34 6916 459 18 6694 478 33 244 595 36 59 762 13 98 526 527 277 72 283 9177 794 28 696 18 283 1529 631 23 34 6 18 694 249 377 28 33 369 39 5746 67 35 69 32 771 9879 96 83 121 2225 88 73 616 96 938 51 421 86 25 748 872 388 337 74 716 563 4 99 93 53 254 4 67 67 58 848 724 84 78 3 69 111 792 537 385 7 75 82 378 565 12 94 451 57 3 26 355 85 682 867 38 478 32 972 5 63 1162 75 63 325 9775 8 65 9 7137 513 94 83 86 679 221 77 67 55 25 24 827 6 4982 356 986 2863 81 3 553 177 75 748 7 6657 4 12 1572 4 63 76 85 66 837 79 75 56 17 82 24 85 74 36 451 79 88 28 658 97 352 533 3 924 59 98 884 495 963 442 28 49 4481 38 46 77 89 83 8559 63 1787 3 34 17 845 3788 632 186 475 34 45 21 11 636 61 91 3 792 2 258 11 15 4 378 59 847 785 25 49 866 46 28 787 341 528 73 6817 51 458 778 25 45 28 1416 234 15 963 131 2 865 59 13 3167 765 38 64 93 223 37 18 6349 4 272 78 9134 132 363 793 315 11 76 57 626 76 63 871 42 32 8938 795 4197 6 12 9 74 92 256 529 26 417 3384 872 289 43 465 487 568 54 327 9195 268 33 67 35 84 178 338 52 1 268 6595 465 2 23 41 543 1385 1697 24 21 16 3917 9122 31 43 39 798 357 911 698 93 5892 344 55 44 1724 74 97 483 558 152 17 543 49 595 83 86 14 8 955 862 9169 85 5 45 127 964 58 278 11 33 439 15 14 4581 89 254 8391 8 64 75 2883 42 11 27 261 223 978 28 58 74 72 465 94 43 12 553 737 912 265 432 1 226 49 654 736 59 67 76 523 986 47 52 69 26 499 34 27 38 52 71 96 99 4 15 97 24 4 33 985 647 44 191 4 79 56 337 865 3121 71 34 9 227 496 74 965 115 3 76 8241 259 2937 54 57 984 99 69 9219 98 67 35 783 239 9 16 663 16 74 46 54 15 2827 524 12 123 53 35 91 33 232 2865 3212 3495 74 849 65 163 1387 847 93 4113 19 3 46 28 769 19 753 7 79 678 28 36 65 28 557 413 2553 79 84 37 96 839 74 43 5 234 649 38 525 92 78 1864 39 1 4 92 85 638 41 54 17 338 498 35 22 66 2886 25 9 55 562 681 216 2574 947 396 983 632 4662 739 24 48 5684 2 4 4357 5 925 4 43 14 86 24 38 21 49 96 47 77 815 62 16 9 1172 43 14 34 827 611 52 5746 2635 136 5443 11 996 4 2653 485 376 37 46 59 15 7239 353 725 55 43 155 847 76 19 658 271 84 441 38 28 14 336 88 25 871 611 4 43 73 459 998 326 79 72 628 776 323 4119 182 3675 53 68 827 49 29 287 12 5546 11 79 7423 91 233 65 1 438 45 44 49 877 41 5329 64 7984 899 928 351 58 39 7 6 62 135 134 26 823 383 16 536 11 517 684 414 39 13 32 7 787 2 23 622 71 216 93 72 76 31 843 58 859 378 75 2 52 545 4994 795 2 432 96 16 586 44 54 6 729 12 8868 86 459 51 7 6672 55 96 66 682 62 732 727 45 57 92 22 26 76 15 233 584 19 97 8584 9 237 92 971 965 81 98 927 3 9937 14 426 936 28 45 664 4 44 342 19 936 569 223 937 991 134 857 493 11 11 55 28
287 3485 83 17 3576 929 26 31 133 49 42 912 7 77 3 477 16 1449 16 145 52 1593 91 1745 34 43 76 4991 82 23 2 86 34 81 33 343 82 27 662 232 9188 593 8421 178 917 41 688 561 8 254 157 17 1 693 8 848 92 99 148 47 25 7314 28 513 37 6 946 92 185 1577 4937 37 4 93 42 159 6525 22 48 15 661 69 45 848 63 973 46 157 2 52 9 24 11 38 743 35 93 414 7349 31 45 56 457 57 878 12 47 313 21 549 852 277 72 86 55 6624 639 763 94 7174 882 756 71 447 481 11 93 6553 4573 1835 1 332 932 235 64 83 43 365 774 52 928 83 12 22 7954 36 756 5272 858 28 611 82 157 65 48 6 575 571 157 54 2812 259 323 16 6364 1376 297 868 39 18 33 1492 997 85 112 71 4165 112 584 316 183 884 153 351 23 29 163 128 673 167 5286 853 92 85 611 496 991 321 7 63 393 72 226 627 76 38 21 99 981 796 1 62 12 228 78 42 48 65 9 834 27 7625 7723 63 48 646 99 14 851 53 367 97 54 92 58 481 57 46 3649 346 69 34 969 1217 686 581 425 227 932 88 997 689 4768 61 622 751 26 375 73 81 711 3 78 6 1999 811 84 2175 669 2 53 523 65 86 571 42 21 448 31 581 4 597 9782 262 12 958 87 4263 392 377 86 826 94 46 658 798 791 31 41 764 96 9615 43 52 35 51 772 934 4695 1 295 86 816 52 481 34 92 58 583 97 31 664 984 515 279 67 18 283 24 3 28 18 2934 31 68 68 17 572 751 19 94 2 68 981 154 89 186 58 13 74 361 6794 21 68 581 73 93 77 51 323 996 844 62 985 95 212 98 826 6213 17 942 63 482 1 34 17 1553 1 599 87 16 55 477 4 53 1 93 39 218 35 822 387 74 7311 966 71 144 1637 81 688 18 9365 8 31 1951 875 36 11 25 89 767 12 41 18 82 296 86 75 67 39 498 57 66 952 352 53 31 215 21 423 44 94 744 148 268 269 52 171 5419 86 81 348 74 87 5596 36 745 84 127 47 937 9351 679 772 17 14 35 78 96 156 24 91 75 673 45 69 55 5 861 3 74 13 64 78 46 575 98 4125 245 145 618 597 5584 1 965 345 32 9 83 9814 6 446 815 561 17 55 45 63 7376 768 38 97 94 775 98 2 9176 42 395 65 7864 466 554 496 392 58 2194 25 694 21 98 763 85 33 4344 122 9679 222 15 9 25 6 317 526 51 59 636 99 821 36 696 259 62 78 167 8493 194 55 414 679 11 379 538 32 66 858 7347 541 87 33 92 694 717 359 96 42 16 517 8269 69 21 28 576 576 235 78 797 1597 728 16 87 9596 53 34 926 288 687 1 295 57 79 62 43 63 54 771 4117 8497 22 76 56 981 252 616 12 57 11 886 45 88 2221 423 516 576 71 783 14 7377 39 54 82 364 148 296 97 94 39 18 24 75 93 68 26 466 987 754 8 8 385 638 654 125 35 97 13 192 516 277 54 84 89 823 48 43 87 86 87 83 54 9 388 39 79 58 56 434 747 76 26 57 99 96 994 5289 8665 17 73 48 298 234 731 617 351 624 42 1234 92 937 7 65 578 967 187 4781 24 984 45 29 457 89 63 8 518 77 99 26 32 478 158 34 124 65 87 66 38 759 6429 277 7571 564 65 86 58 6591 872 129 753 89 8 91 81 788 28 367 82 15 55 12 67 77 13 3537 812 6434 42 92 2839 89 764 79 42 84 276 45 59 915 74 61 944 68 55 93 5 55 982 74 64 34 287 7419 16 646 78 9412 54 91 82 617 25 854 9969 682 296 688 995 344 9339 28 78 9378 28 6 6685 6 719 96 1161 681 45 63 51 84 69 14 83 1 617 1 57 8 6199 97 2467 839 788 374 92 55 94 595 345 936 6824 64 3733 143 94 133 31 98 54 3694 941 963 38 64 115 155 855 329 314 859 448 469 12 73 57 292 22 87 424 5775 6 438 57 663 457 933 37 42 7656 961 7 9384 589 589 71 68 597 99 17 266 47 3274 84 88 676 43 5 35 9 36 68 73 319 884 45 191 18 972 691 218 213 11 56 79 5 22 37 454 32 37 926 76 53 18 83 612 585 8 49 168 243 969 1 75 927 44 87 78 15 275 67 315 71 613 579 88 45 88 735 436 1 44 879 81 49 457 413 6 26 215 53 1154 34 251 843 192 7845 2762 46 21 81 416 194 155 24 49 61 26 79 58 187 546 43 76 189 467 97 991 29 5 396 94 38 648 24 4964 2 464 26 224 45 19 253 51 612 92 2164 9758 141 942 52 5588 215 691 78 43 99 155
655 4247 97 83 257 518 33 78 634 552 54 596 4 9 8 347 17 4926 84 975 2 5732 892 49 12 76 71 3211 87 9 4 6 57 4 66 247 5 92 981 268 1935 139 758 86 476 17 436 974 1 652 774 32 7 615 2 831 74 4 763 18 3 37 51 3741 2 2 323 41 644 5638 8931 66 6 33 35 231 7234 28 1 35 946 58 98 225 48 8 51 6 5 386 8 81 8 61 16 9488 65 134 2172 2 55 12 723 97 66 7 58 272 9 443 767 9 63 28 1 6675 262 187 23 211 693 518 3 3 259 9 68 223 2931 2831 4 977 128 136 68 31 89 691 491 23 75 93 71 86 522 23 813 6798 75 6 126 46 872 93 23 9 446 299 82 2 37 23 993 45 498 65 434 65 5 1 41 2858 592 15 896 54 8294 5257 956 526 235 982 925 821 71 82 19 837 869 65 927 334 53 176 382 241 172 573 7 6 83 4 272 1 14 78 62 32 26 131 4 19 9728 673 6 99 48 97 33 113 9 7892 7575 4 29 188 4 83 639 9 314 97 57 48 87 561 8 29 9553 6 27 5 73 3546 635 73 655 197 918 3 1 57 3765 61 57 6 92 471 45 83 547 5 93 7 595 393 2 2998 847 1 4 399 39 65 951 72 8 264 89 892 3 766 61 165 82 45 34 5443 155 92 89 663 96 39 728 36 7 69 75 51 35 4435 35 76 21 95 6329 97 1772 4 127 7 692 672 33 49 59 75 644 83 235 844 582 177 318 6 6 229 55 9 89 1 3785 97 31 59 24 669 395 54 52 4 47 7 88 52 447 84 38 58 433 9843 95 81 998 4 44 6 2 362 1 17 1 514 8 8765 29 112 9446 4 485 3 756 19 34 997 8317 4 651 12 1 58 62 7 26 8 3 61 551 75 98 8 4 5867 379 27 559 3553 7 124 51 913 48 64 135 892 14 25 76 49 9 88 1 93 26 226 85 22 76 44 781 9 112 831 91 5 89 919 61 489 47 5 456 173 74 134 38 416 64 93 8 341 85 79 5687 83 32 81 836 82 911 5331 82 24 38 83 83 92 34 959 363 59 51 218 48 19 46 5 655 7 9 9 33 15 7 634 616 8376 931 736 958 965 967 1 43 525 76 7 88 3866 5 634 642 95 46 4 96 9 2391 299 46 14 99 237 42 3 6281 87 1439 75 9758 131 81 762 167 8 1914 3 855 75 79 578 15 37 7134 792 325 424 9 7 66 4 227 31 551 36 38 31 444 99 5229 317 41 75 491 366 854 31 255 972 96 925 24 55 26 43 2432 611 26 23 27 48 63 65 17 39 43 93 22 41 4 68 579 957 649 7 976 5 453 23 54 3677 39 9 834 7843 167 1 242 32 11 84 92 66 53 6195 7362 8389 7 41 71 672 796 284 5 4 83 8787 76 8 4855 485 56 684 14 512 5 278 86 4 27 835 6 23 72 7 627 78 28 89 2 54 1 73 3 6339 5 5 912 984 861 79 8 24 268 925 99 397 567 52 18 63 12 97 3 39 56 9 56 5 972 2 95 86 61 461 781 1 12 38 26 38 979 6975 833 8 74 87 671 49 648 358 32 342 3 814 38 753 6 9 89 737 748 4943 96 1688 73 87 162 86 84 5 374 25 31 466 1943 83 376 653 56 9 69 37 1 743 89 53 16 882 1 67 89 8594 626 253 92 75 34 48 87 722 1 289 65 9 44 13 25 13 51 3568 271 3211 96 8 8488 34 813 26 95 83 33 4 4 336 49 73 75 88 44 159 7 86 561 45 43 89 93 4616 66 328 96 16 45 92 41 943 41 362 437 72 571 774 884 58 8381 66 45 89 27 5 1467 99 791 81 7139 5578 24 9 57 34 21 7 187 8 768 6 16 1 8551 37 1539 229 421 3 62 23 21 855 41 999 4795 13 84 13 79 165 7 72 23 2 627 39 16 215 185 44 385 216 755 24 847 51 96 12 12 24 8 1 359 7156 5 719 64 23 647 153 65 87 2848 286 7 8455 837 82 49 9 292 71 1 474 5 9336 66 29 157 6 4 21 11 14 77 6 474 289 33 94 4 83 183 95 278 9 19 77 6 79 52 78 67 99 8 39 24 32 7 775 49 5 3 531 578 511 59 23 794 22 15 84 48 363 83 5331 8 81 692 5 85 59 598 687 1 99 896 5 7 694 551 4 68 72 17 3623 59 6 491 827 2732 3721 66 93 72 676 156 6 95 11 44 46 22 4 323 74 91 8 315 34 12 3 1 8 194 34 11 1 47 5538 1 79 9 152 27 46 329 5 314 86 5955 1963 53 799 41 1292 814 91 49 46 95 429
* + * + + * * + + + + * * * * * * + * + * + * + + * * + + * + * * * + * * + * * + + + + * * * * + * * * * * * + * + * + * + * + + * * * + + + + + * + * + + * * + + * * * + + * + * + + * * + + * * + * + + * * + * + * * + * + * + + + + * * + * * * + * * * + + + * * * * + + * + + + * * + * + * * + + * * * + + + * + + * * + + + + + + * * * + + + * + * * + + * * * * * + + * * + * * + + * + * * * * * * + * + * + * * * * * + * + + * + * + + * * + + + * + * * * * * + + + + + + + + * * * * + * + + * + * * * + + + + * * * * * * + + + + * + + * + + * * + + * * * * * * + + + + + + + * + * + * * + + * * * + + + + + * + + + * * + * + * * * * * + * * * + * + * * * * + * + * + * * * * * * + + + * * * + + * + + * * * + * + * + * * + + + + * * + * * + + * * * + + + + * + * * * * * * + * + * * + + * + + * * * + * * + + + * * * + * + + * * * + + * * * * * * + * + * + * * * * * * * * + * + * * * + * + * + + + + * * + * * * * + + * + * * * * + + * * * * * * + * + + + * * + * * * * * * + * + * * * * + * + + * + * * + + + * + * + * * + + * + * * + + + * + + * + * * + * + * * + * + * * * + * * * + + + + * + + + * + * * + + * + + * + + * + * + + * * + + + + + + + * + + + * + + + * * * + * + * + * + + + + * + * * + + * + + + + + + + + + + * + + * * * + * + * * + * * + * * * + + * + * * + + + + * * + * * * * * + * * * * * * + * + + * * * * * * * + * + + + + * * * + * * * * + + * + * * * * + + * + * * * * + * * + * * + + + + * + * + * * + + + * + * * + * + + * + + * * * * * * + * * * * + * + * * + + * + + * * * + * * + + * * + + * * * * + * + * + * + * * + + * + + + * * + + + * + + + + + * * * + + * * * * * + * * * + + * + * + * * * + + + + + * + + + * * + * * + + * + * * * * * * * * + + + + * * + + + + * + * * + * + * + + * + * + + * * * * + + + + * + * * + * * * + * * + + * + * + + * * + * + * + * * + + * + * + * * + * * + * + + * * * + * * + + + * * + * + + * * * * + + * * + + * + * + + * + + * + * * + + * * + * + * + + * * + + * * * + * * + * * + * + * * + * * * + + + + * + + + * * * + + *